diff --git a/package/CHANGELOG.md b/package/CHANGELOG.md index e69de29bb..477798321 100755 --- a/package/CHANGELOG.md +++ b/package/CHANGELOG.md @@ -0,0 +1,6 @@ +# Changelog + +## [1.0.0-preview.1] - 2019-02-28 + +- Fixed bug where modifications on prefabs could not be reverted for vector properties when using context menu in Inspector. +- Fixed structure of the package for internal validation diff --git a/package/Documentation~/mathematics.md b/package/Documentation~/mathematics.md new file mode 100755 index 000000000..51a77503a --- /dev/null +++ b/package/Documentation~/mathematics.md @@ -0,0 +1,79 @@ +# Unity.Mathematics + +A C# math library providing vector types and math functions with a shader like +syntax. Used by the Burst compiler to compile C#/IL to highly efficient +native code. + +The main goal of this library is to provide a friendly Math API familiar to SIMD and graphic/shaders developers, using the well known `float4`, `float3` types...etc. with all intrinsics functions provided by a static class `math` that can be imported easily into your C# program with `using static Unity.Mathematics.math`. + +In addition to this, the Burst compiler is able to recognize these types and provide the optimized SIMD type for the running CPU on all supported platforms (x64, ARMv7a...etc.) + +NOTICE: The API is a work in progress and we may introduce breaking changes (API and underlying behavior) + +## Usage + +You can use this library in your Unity game by using the Package Manager and referencing the package `com.unity.mathematics`. See the forum [Welcome](https://forum.unity.com/threads/welcome.522627) page for more details. + +```C# +using static Unity.Mathematics.math; +namespace MyNamespace +{ + using Unity.Mathematics; + + ... + var v1 = float3(1,2,3); + var v2 = float3(4,5,6); + v1 = normalize(v1); + v2 = normalize(v2); + var v3 = dot(v1, v2); + ... +} +``` + +## Building + +Open the `src\Unity.Mathematics.sln` under Visual Studio 2015 or MonoDevelop and compile in Debug\Release. + +## Contributing + +We don't yet accept PR on this repository. See the FAQ below. + +The project is using [editorconfig](http://editorconfig.org/) to keep files correctly formatted for EOL and spaces. + +We assume that your IDE has support for `editorconfig`, you can download the following extensions if your IDE is listed: + +- [VS2015/VS2017 EditorConfig extension](https://marketplace.visualstudio.com/items?itemName=EditorConfigTeam.EditorConfig) +- [Visual Studio Code EditorConfig extension](https://marketplace.visualstudio.com/items?itemName=EditorConfig.EditorConfig) +- [SublimeText EditorConfig extension](https://github.com/sindresorhus/editorconfig-sublime) + +## Frequently Asked Question + +### Why developing another Math library instead of using existing Unity Vector3...etc.? + +After years of feedback and experience with the previous API, we believe that providing an API that is closer to the way graphics developers have been using math libraries should better help its adoption and the ease of its usage. HLSL / GLSL math library is a very well designed, well understood math library leading to greater consistency. + +### Why not using `System.Numerics.Vectors`? + +Mainly for the reason mentioned above, `System.Numerics.Vectors` is in many ways similar to our previous Vector library (more object oriented than graphics programming oriented). +Also the fact that our Burst compiler is able to recognize a lot more patterns for SIMD types and math intrinsics makes it easier to work with a dedicated API that reflects this ability. + +### Naming convention + +In C# `int` and `float` are considered builtin types. Burst extends this set of bultin types to also include vectors, matrices and quaternions. These types are bultin in the sense that Burst knows about them and is be able to generate better code using these types than what would be possible with equivalent code using custom types. + +To signify that these types are bultin their type names are in all lower case. The operators on these bultin types found in `Unity.Mathematics.math` are considered intrinsics and are thus always in lower case. + +There are no plans to extend the set of intrinsic types beyond the current set of vectors (`typeN`), matrices (`typeNxN`) and quaternions (`quaternion`). + +This convention has the added benefit of making the library highly compatible with shader code and makes porting or sharing code between the two almost frictionless. + +### Why can't we send a PR yet? + +We are working on providing a Contributor License Agreement (CLA) with a sign-over functionality and our UCL License doesn't cover this yet. + +## Licensing + +Unity Companion License (“License”) Software Copyright © 2017 Unity Technologies ApS + +For licensing details see [LICENSE.md](LICENSE.md) + diff --git a/package/Documentation~/mathematics.md.meta b/package/Documentation~/mathematics.md.meta new file mode 100755 index 000000000..10f22f41a --- /dev/null +++ b/package/Documentation~/mathematics.md.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: d177df5c52517492b85d4191425323a9 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/package/Tests.meta b/package/Tests.meta index 2bf1110f3..d34a23741 100755 --- a/package/Tests.meta +++ b/package/Tests.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 720aed96426d349c3be9c9c5373edeca +guid: e3503cbca3a6645cb8298d5cecf03cec folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/package/Tests/TestCompilerAttribute.cs b/package/Tests/TestCompilerAttribute.cs new file mode 100755 index 000000000..044abbe6c --- /dev/null +++ b/package/Tests/TestCompilerAttribute.cs @@ -0,0 +1,19 @@ +using System; +using NUnit.Framework; +using NUnit.Framework.Interfaces; + +namespace Burst.Compiler.IL.Tests +{ + [AttributeUsage(AttributeTargets.Method, AllowMultiple = false)] + public class WindowsOnlyAttribute : Attribute + { + public WindowsOnlyAttribute(string reason) + { + } + } + + [AttributeUsage(AttributeTargets.Method, AllowMultiple = true, Inherited = false)] + public sealed class TestCompilerAttribute : TestCaseAttribute, ITestBuilder + { + } +} \ No newline at end of file diff --git a/package/Tests/TestCompilerAttribute.cs.meta b/package/Tests/TestCompilerAttribute.cs.meta new file mode 100755 index 000000000..48e087e10 --- /dev/null +++ b/package/Tests/TestCompilerAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 5b16d5a4bfd93114385ecd01f00a6914 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/package/Tests/Tests.meta b/package/Tests/Tests.meta new file mode 100755 index 000000000..a145b33d0 --- /dev/null +++ b/package/Tests/Tests.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: bccfda2dc5ad3b84eb3a644147ea0010 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/package/Tests/Tests/Shared.meta b/package/Tests/Tests/Shared.meta new file mode 100755 index 000000000..10cf1f266 --- /dev/null +++ b/package/Tests/Tests/Shared.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 1d6d62c94d82bf748b95682fa88ef3b9 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/package/Tests/Tests/Shared/TestBitmanipulation.cs b/package/Tests/Tests/Shared/TestBitmanipulation.cs new file mode 100755 index 000000000..3f2d5b928 --- /dev/null +++ b/package/Tests/Tests/Shared/TestBitmanipulation.cs @@ -0,0 +1,531 @@ +using NUnit.Framework; +using static Unity.Mathematics.math; +using Burst.Compiler.IL.Tests; + +namespace Unity.Mathematics.Tests +{ + [TestFixture] + public class TestBitmanipulation + { + [TestCompiler] + public static void countbits_int1() + { + TestUtils.AreEqual(countbits( 0x01234567), 12); + TestUtils.AreEqual(countbits( 0x456789AB), 16); + TestUtils.AreEqual(countbits(-0x01234567), 21); + TestUtils.AreEqual(countbits(-0x456789AB), 17); + TestUtils.AreEqual(countbits(-1), 32); + } + + [TestCompiler] + public static void countbits_int2() + { + TestUtils.AreEqual(countbits(int2(0, 0x01234567)), int2(0, 12)); + TestUtils.AreEqual(countbits(int2(0x456789AB, -0x01234567)), int2(16, 21)); + TestUtils.AreEqual(countbits(int2(-0x456789AB, -1)), int2(17, 32)); + } + + [TestCompiler] + public static void countbits_int3() + { + TestUtils.AreEqual(countbits(int3(0, 0x01234567, 0x456789AB)), int3(0, 12, 16)); + TestUtils.AreEqual(countbits(int3(-0x01234567, -0x456789AB, -1)), int3(21, 17, 32)); + } + + [TestCompiler] + public static void countbits_int4() + { + TestUtils.AreEqual(countbits(int4(0, 0x01234567, 0x456789AB, -0x01234567)), int4(0, 12, 16, 21)); + TestUtils.AreEqual(countbits(int4(-0x456789AB, -1, -7, -15)), int4(17, 32, 30, 29)); + } + + [TestCompiler] + public static void countbits_uint() + { + TestUtils.AreEqual(countbits(0u), 0); + TestUtils.AreEqual(countbits(0x01234567u), 12); + TestUtils.AreEqual(countbits(0x456789ABu), 16); + TestUtils.AreEqual(countbits(0x89ABCDEFu), 20); + TestUtils.AreEqual(countbits(0xCDEF0123u), 16); + TestUtils.AreEqual(countbits(0xFFFFFFFFu), 32); + } + + [TestCompiler] + public static void countbits_uint2() + { + TestUtils.AreEqual(countbits(uint2(0, 0x01234567)), int2(0, 12)); + TestUtils.AreEqual(countbits(uint2(0x456789AB, 0x89ABCDEFu)), int2(16, 20)); + TestUtils.AreEqual(countbits(uint2(0xCDEF0123u, 0xFFFFFFFFu)), int2(16, 32)); + } + + [TestCompiler] + public static void countbits_uint3() + { + TestUtils.AreEqual(countbits(uint3(0, 0x01234567, 0x456789AB)), int3(0, 12, 16)); + TestUtils.AreEqual(countbits(uint3(0x89ABCDEFu, 0xCDEF0123u, 0xFFFFFFFFu)), int3(20, 16, 32)); + } + + [TestCompiler] + public static void countbits_uint4() + { + TestUtils.AreEqual(countbits(uint4(0, 0x01234567, 0x456789AB, 0x89ABCDEFu)), int4(0, 12, 16, 20)); + TestUtils.AreEqual(countbits(uint4(0xCDEF0123u, 0xFFFFFFFFu, 0xFFFFFFF5u, 0xFFFFFFF1u)), int4(16, 32, 30, 29)); + } + + [TestCompiler] + public static void countbits_long() + { + TestUtils.AreEqual(countbits(0L), 0); + TestUtils.AreEqual(countbits(0x0123456789ABCDEFL), 32); + TestUtils.AreEqual(countbits(-0x0123456789ABCDEFL), 33); + TestUtils.AreEqual(countbits(-1L), 64); + } + + [TestCompiler] + public static void countbits_ulong() + { + TestUtils.AreEqual(countbits(0UL), 0); + TestUtils.AreEqual(countbits(0x0123456789ABCDEFUL), 32); + TestUtils.AreEqual(countbits(0x89ABCDEF01234567UL), 32); + TestUtils.AreEqual(countbits(0xFFFFFFFFFFFFFFFFUL), 64); + } + + [TestCompiler] + public static void lzcnt_int() + { + TestUtils.AreEqual(lzcnt(0), 32); + TestUtils.AreEqual(lzcnt(1), 31); + TestUtils.AreEqual(lzcnt(2), 30); + TestUtils.AreEqual(lzcnt(3), 30); + TestUtils.AreEqual(lzcnt(0x5321), 17); + TestUtils.AreEqual(lzcnt(0x04435321), 5); + TestUtils.AreEqual(lzcnt(-1), 0); + TestUtils.AreEqual(lzcnt(-2147483648), 0); + } + + [TestCompiler] + public static void lzcnt_int2() + { + TestUtils.AreEqual(lzcnt(int2(0, 1)), int2(32, 31)); + TestUtils.AreEqual(lzcnt(int2(2, 3)), int2(30, 30)); + TestUtils.AreEqual(lzcnt(int2(0x5321, 0x04435321)), int2(17, 5)); + TestUtils.AreEqual(lzcnt(int2(-1, -2147483648)), int2(0, 0)); + } + + [TestCompiler] + public static void lzcnt_int3() + { + TestUtils.AreEqual(lzcnt(int3(0, 1, 2)), int3(32, 31, 30)); + TestUtils.AreEqual(lzcnt(int3(3, 0x5321, 0x04435321)), int3(30, 17, 5)); + TestUtils.AreEqual(lzcnt(int3(-1, -2147483648, 17)), int3(0, 0, 27)); + } + + [TestCompiler] + public static void lzcnt_int4() + { + TestUtils.AreEqual(lzcnt(int4(0, 1, 2, 3)), int4(32, 31, 30, 30)); + TestUtils.AreEqual(lzcnt(int4(0x5321, 0x04435321, -1, -2147483648)), int4(17, 5, 0, 0)); + } + + [TestCompiler] + public static void lzcnt_uint() + { + TestUtils.AreEqual(lzcnt(0u), 32); + TestUtils.AreEqual(lzcnt(1u), 31); + TestUtils.AreEqual(lzcnt(2u), 30); + TestUtils.AreEqual(lzcnt(3u), 30); + TestUtils.AreEqual(lzcnt(0x5321u), 17); + TestUtils.AreEqual(lzcnt(0x04435321u), 5); + TestUtils.AreEqual(lzcnt(0x84435320u), 0); + TestUtils.AreEqual(lzcnt(0xFFFFFFFFu), 0); + } + + [TestCompiler] + public static void lzcnt_uint2() + { + TestUtils.AreEqual(lzcnt(uint2(0u, 1u)), int2(32, 31)); + TestUtils.AreEqual(lzcnt(uint2(2u, 3u)), int2(30, 30)); + TestUtils.AreEqual(lzcnt(uint2(0x5321u, 0x04435321u)), int2(17, 5)); + TestUtils.AreEqual(lzcnt(uint2(0x84435320u, 0xFFFFFFFFu)), int2(0, 0)); + } + + [TestCompiler] + public static void lzcnt_uint3() + { + TestUtils.AreEqual(lzcnt(uint3(0u, 1u, 2u)), int3(32, 31, 30)); + TestUtils.AreEqual(lzcnt(uint3(3u, 0x5321u, 0x04435321u)), int3(30, 17, 5)); + TestUtils.AreEqual(lzcnt(uint3(0x84435320u, 0xFFFFFFFFu, 17)), int3(0, 0, 27)); + } + + [TestCompiler] + public static void lzcnt_uint4() + { + TestUtils.AreEqual(lzcnt(uint2(0u, 1u)), int2(32, 31)); + TestUtils.AreEqual(lzcnt(uint2(2u, 3u)), int2(30, 30)); + TestUtils.AreEqual(lzcnt(uint2(0x5321u, 0x04435321u)), int2(17, 5)); + TestUtils.AreEqual(lzcnt(uint2(0x84435320u, 0xFFFFFFFFu)), int2(0, 0)); + } + + [TestCompiler] + public static void lzcnt_long() + { + TestUtils.AreEqual(lzcnt(0L), 64); + TestUtils.AreEqual(lzcnt(1L), 63); + TestUtils.AreEqual(lzcnt(0x1FFF1234L), 35); + TestUtils.AreEqual(lzcnt(0x1FFFF1234L), 31); + TestUtils.AreEqual(lzcnt(0x1FFFFFFF1234L), 19); + TestUtils.AreEqual(lzcnt(-1L), 0); + TestUtils.AreEqual(lzcnt(-9223372036854775808L), 0); + } + + [TestCompiler] + public static void lzcnt_ulong() + { + TestUtils.AreEqual(lzcnt(0UL), 64); + TestUtils.AreEqual(lzcnt(1UL), 63); + TestUtils.AreEqual(lzcnt(0x1FFF1234UL), 35); + TestUtils.AreEqual(lzcnt(0x1FFFF1234UL), 31); + TestUtils.AreEqual(lzcnt(0x1FFFFFFF1234UL), 19); + TestUtils.AreEqual(lzcnt(0xFFFFFFFFFFFFFFFFUL), 0); + TestUtils.AreEqual(lzcnt(0x8000000000000000UL), 0); + } + + [TestCompiler] + public static void tzcnt_int() + { + TestUtils.AreEqual(tzcnt(0), 32); + TestUtils.AreEqual(tzcnt(1), 0); + TestUtils.AreEqual(tzcnt(2), 1); + TestUtils.AreEqual(tzcnt(3), 0); + TestUtils.AreEqual(tzcnt(0x53210), 4); + TestUtils.AreEqual(tzcnt(0x44420000), 17); + TestUtils.AreEqual(tzcnt(-2), 1); + TestUtils.AreEqual(tzcnt(-2147483647), 0); + TestUtils.AreEqual(tzcnt(-2147483648), 31); + } + + [TestCompiler] + public static void tzcnt_int2() + { + TestUtils.AreEqual(tzcnt(int2(0, 1)), int2(32, 0)); + TestUtils.AreEqual(tzcnt(int2(2, 3)), int2(1, 0)); + TestUtils.AreEqual(tzcnt(int2(0x53210, 0x44420000)), int2(4, 17)); + TestUtils.AreEqual(tzcnt(int2(-2, -2147483647)), int2(1, 0)); + TestUtils.AreEqual(tzcnt(int2(-2147483648, 20)), int2(31, 2)); + } + + [TestCompiler] + public static void tzcnt_int3() + { + TestUtils.AreEqual(tzcnt(int3(0, 1, 2)), int3(32, 0, 1)); + TestUtils.AreEqual(tzcnt(int3(3, 0x53210, 0x44420000)), int3(0, 4, 17)); + TestUtils.AreEqual(tzcnt(int3(-2, -2147483647, -2147483648)), int3(1, 0, 31)); + } + + [TestCompiler] + public static void tzcnt_int4() + { + TestUtils.AreEqual(tzcnt(int4(0, 1, 2, 3)), int4(32, 0, 1, 0)); + TestUtils.AreEqual(tzcnt(int4(0x53210, 0x44420000, -2, -2147483647)), int4(4, 17, 1, 0)); + TestUtils.AreEqual(tzcnt(int4(-2147483648, 20, 4132, -8)), int4(31, 2, 2, 3)); + } + + [TestCompiler] + public static void tzcnt_uint() + { + TestUtils.AreEqual(tzcnt(0u), 32); + TestUtils.AreEqual(tzcnt(1u), 0); + TestUtils.AreEqual(tzcnt(2u), 1); + TestUtils.AreEqual(tzcnt(3u), 0); + TestUtils.AreEqual(tzcnt(0x53210u), 4); + TestUtils.AreEqual(tzcnt(0x44420000u), 17); + TestUtils.AreEqual(tzcnt(0xFFFFFFFEu), 1); + TestUtils.AreEqual(tzcnt(0x80000001u), 0); + TestUtils.AreEqual(tzcnt(0x80000000u), 31); + } + + [TestCompiler] + public static void tzcnt_uint2() + { + TestUtils.AreEqual(tzcnt(uint2(0u, 1u)), int2(32, 0)); + TestUtils.AreEqual(tzcnt(uint2(2u, 3u)), int2(1, 0)); + TestUtils.AreEqual(tzcnt(uint2(0x53210u, 0x44420000u)), int2(4, 17)); + TestUtils.AreEqual(tzcnt(uint2(0xFFFFFFFEu, 0x80000001u)), int2(1, 0)); + TestUtils.AreEqual(tzcnt(uint2(0x80000000u, 20u)), int2(31, 2)); + } + + [TestCompiler] + public static void tzcnt_uint3() + { + TestUtils.AreEqual(tzcnt(uint3(0u, 1u, 2u)), int3(32, 0, 1)); + TestUtils.AreEqual(tzcnt(uint3(3u, 0x53210u, 0x44420000u)), int3(0, 4, 17)); + TestUtils.AreEqual(tzcnt(uint3(0xFFFFFFFEu, 0x80000001u, 0x80000000u)), int3(1, 0, 31)); + } + + [TestCompiler] + public static void tzcnt_uint4() + { + TestUtils.AreEqual(tzcnt(uint4(0u, 1u, 2u, 3u)), int4(32, 0, 1, 0)); + TestUtils.AreEqual(tzcnt(uint4(0x53210u, 0x44420000u, 0xFFFFFFFE, 0x80000001u)), int4(4, 17, 1, 0)); + TestUtils.AreEqual(tzcnt(uint4(0x80000000u, 20u, 4132u, 0xFFFFFFF8u)), int4(31, 2, 2, 3)); + } + + [TestCompiler] + public static void tzcnt_long() + { + TestUtils.AreEqual(tzcnt(0L), 64); + TestUtils.AreEqual(tzcnt(1L), 0); + TestUtils.AreEqual(tzcnt(2L), 1); + TestUtils.AreEqual(tzcnt(0x44420000L), 17); + TestUtils.AreEqual(tzcnt(0x444200000000L), 33); + TestUtils.AreEqual(tzcnt(-9223372036854775808L), 63); + TestUtils.AreEqual(tzcnt(-9223372036854775807L), 0); + } + + [TestCompiler] + public static void tzcnt_ulong() + { + TestUtils.AreEqual(tzcnt(0UL), 64); + TestUtils.AreEqual(tzcnt(1UL), 0); + TestUtils.AreEqual(tzcnt(2UL), 1); + TestUtils.AreEqual(tzcnt(0x44420000UL), 17); + TestUtils.AreEqual(tzcnt(0x444200000000UL), 33); + TestUtils.AreEqual(tzcnt(0x8000000000000000UL), 63); + TestUtils.AreEqual(tzcnt(0x8000000000000001UL), 0); + } + + [TestCompiler] + public static void reversebits_int() + { + TestUtils.AreEqual(reversebits(-1872213312), 0x03521609); + TestUtils.AreEqual(reversebits(0x1260dafa), 0x5f5b0648); + TestUtils.AreEqual(reversebits(-1312858670), 0x4bbafd8d); + TestUtils.AreEqual(reversebits(0x74239b12), 0x48d9c42e); + } + + [TestCompiler] + public static void reversebits_int2() + { + TestUtils.AreEqual(reversebits(int2(-1872213312, 0x1260dafa)), int2(0x03521609, 0x5f5b0648)); + TestUtils.AreEqual(reversebits(int2(-1312858670, 0x74239b12)), int2(0x4bbafd8d, 0x48d9c42e)); + } + + [TestCompiler] + public static void reversebits_int3() + { + TestUtils.AreEqual(reversebits(int3(-1872213312, 0x1260dafa, -1312858670)), int3(0x03521609, 0x5f5b0648, 0x4bbafd8d)); + TestUtils.AreEqual(reversebits(int3(0x74239b12, 0, -1)), int3(0x48d9c42e, 0, -1)); + } + + [TestCompiler] + public static void reversebits_int4() + { + TestUtils.AreEqual(reversebits(int4(-1872213312, 0x1260dafa, -1312858670, 0x74239b12)), int4(0x03521609, 0x5f5b0648, 0x4bbafd8d, 0x48d9c42e)); + } + + [TestCompiler] + public static void reversebits_uint() + { + TestUtils.AreEqual(reversebits(0x90684ac0u), 0x03521609u); + TestUtils.AreEqual(reversebits(0x1260dafau), 0x5f5b0648u); + TestUtils.AreEqual(reversebits(0xb1bf5dd2u), 0x4bbafd8du); + TestUtils.AreEqual(reversebits(0x74239b12u), 0x48d9c42eu); + } + + [TestCompiler] + public static void reversebits_uint2() + { + TestUtils.AreEqual(reversebits(uint2(0x90684ac0u, 0x1260dafau)), uint2(0x03521609u, 0x5f5b0648u)); + TestUtils.AreEqual(reversebits(uint2(0xb1bf5dd2u, 0x74239b12u)), uint2(0x4bbafd8du, 0x48d9c42eu)); + } + + [TestCompiler] + public static void reversebits_uint3() + { + TestUtils.AreEqual(reversebits(uint3(0x90684ac0u, 0x1260dafau, 0xb1bf5dd2u)), uint3(0x03521609u, 0x5f5b0648u, 0x4bbafd8du)); + TestUtils.AreEqual(reversebits(uint3(0x74239b12u, 0u, 0xFFFFFFFF)), uint3(0x48d9c42eu, 0u, 0xFFFFFFFF)); + } + + [TestCompiler] + public static void reversebits_uint4() + { + TestUtils.AreEqual(reversebits(uint4(0x90684ac0u, 0x1260dafau, 0xb1bf5dd2u, 0x74239b12u)), uint4(0x03521609u, 0x5f5b0648u, 0x4bbafd8du, 0x48d9c42eu)); + } + + [TestCompiler] + public static void reversebits_long() + { + TestUtils.AreEqual(reversebits(0x1260dafab1bf5dd2L), 0x4bbafd8d5f5b0648L); + } + + [TestCompiler] + public static void reversebits_ulong() + { + TestUtils.AreEqual(reversebits(0x1260dafab1bf5dd2ul), 0x4bbafd8d5f5b0648ul); + } + + [TestCompiler] + public static void rol_int() + { + TestUtils.AreEqual(rol(219257022, 11), -1933184920); + TestUtils.AreEqual(rol(-1586446996, 11), -2048170741); + TestUtils.AreEqual(rol(-279484078, 11), -1152739462); + TestUtils.AreEqual(rol(-1692078607, 11), 661621977); + } + + [TestCompiler] + public static void rol_int2() + { + TestUtils.AreEqual(rol(int2(219257022, -1586446996), 11), int2(-1933184920, -2048170741)); + TestUtils.AreEqual(rol(int2(-279484078, -1692078607), 11), int2(-1152739462, 661621977)); + } + + [TestCompiler] + public static void rol_int3() + { + TestUtils.AreEqual(rol(int3(219257022, -1586446996, -279484078), 11), int3(-1933184920, -2048170741, -1152739462)); + } + + + [TestCompiler] + public static void rol_int4() + { + TestUtils.AreEqual(rol(int4(219257022, -1586446996, -279484078, -1692078607), 11), int4(-1933184920, -2048170741, -1152739462, 661621977)); + } + + [TestCompiler] + public static void rol_uint() + { + TestUtils.AreEqual(rol(219257022u, 11), 2361782376u); + TestUtils.AreEqual(rol(2708520300u, 11), 2246796555u); + TestUtils.AreEqual(rol(4015483218u, 11), 3142227834u); + TestUtils.AreEqual(rol(2602888689u, 11), 661621977u); + } + + [TestCompiler] + public static void rol_uint2() + { + TestUtils.AreEqual(rol(uint2(219257022u, 2708520300u), 11), uint2(2361782376u, 2246796555u)); + TestUtils.AreEqual(rol(uint2(4015483218u, 2602888689u), 11), uint2(3142227834u, 661621977u)); + } + + [TestCompiler] + public static void rol_uint3() + { + TestUtils.AreEqual(rol(uint3(219257022u, 2708520300u, 4015483218u), 11), uint3(2361782376u, 2246796555u, 3142227834u)); + } + + [TestCompiler] + public static void rol_uint4() + { + TestUtils.AreEqual(rol(uint4(219257022u, 2708520300u, 4015483218u, 2602888689u), 11), uint4(2361782376u, 2246796555u, 3142227834u, 661621977u)); + } + + + [TestCompiler] + public static void rol_long() + { + TestUtils.AreEqual(rol(6894885722123239465L, 37), 4769317691753349395L); + TestUtils.AreEqual(rol(9017875690541231318L, 37), 7702732954299909421L); + TestUtils.AreEqual(rol(-6252342588442027279L, 37), 4304137451269976409L); + TestUtils.AreEqual(rol(2788577329702376155L, 37), -5493728106787075631L); + } + + [TestCompiler] + public static void rol_ulong() + { + TestUtils.AreEqual(rol(6894885722123239465UL, 37), 4769317691753349395UL); + TestUtils.AreEqual(rol(9017875690541231318UL, 37), 7702732954299909421UL); + TestUtils.AreEqual(rol(12194401485267524337UL, 37), 4304137451269976409UL); + TestUtils.AreEqual(rol(2788577329702376155UL, 37), 12953015966922475985UL); + } + + + [TestCompiler] + public static void ror_int() + { + TestUtils.AreEqual(ror(-1710129111, 11), 87245360); + TestUtils.AreEqual(ror(1232136068, 11), -259445220); + TestUtils.AreEqual(ror(1800875222, 11), -1697813787); + TestUtils.AreEqual(ror(-98246768, 11), -232831845); + } + + [TestCompiler] + public static void ror_int2() + { + TestUtils.AreEqual(ror(int2(-1710129111, 1232136068), 11), int2(87245360, -259445220)); + TestUtils.AreEqual(ror(int2(1800875222, -98246768), 11), int2(-1697813787, -232831845)); + } + + [TestCompiler] + public static void ror_int3() + { + TestUtils.AreEqual(ror(int3(-1710129111, 1232136068, 1800875222), 11), int3(87245360, -259445220, -1697813787)); + } + + [TestCompiler] + public static void ror_int4() + { + TestUtils.AreEqual(ror(int4(-1710129111, 1232136068, 1800875222, -98246768), 11), int4(87245360, -259445220, -1697813787, -232831845)); + } + + + [TestCompiler] + public static void ror_uint() + { + TestUtils.AreEqual(ror(2584838185u, 11), 87245360u); + TestUtils.AreEqual(ror(1232136068u, 11), 4035522076u); + TestUtils.AreEqual(ror(1800875222u, 11), 2597153509u); + TestUtils.AreEqual(ror(4196720528u, 11), 4062135451u); + } + + [TestCompiler] + public static void ror_uint2() + { + TestUtils.AreEqual(ror(uint2(2584838185u, 1232136068u), 11), uint2(87245360u, 4035522076u)); + TestUtils.AreEqual(ror(uint2(1800875222u, 4196720528u), 11), uint2(2597153509u, 4062135451u)); + } + + [TestCompiler] + public static void ror_uint3() + { + TestUtils.AreEqual(ror(uint3(2584838185u, 1232136068u, 1800875222u), 11), uint3(87245360u, 4035522076u, 2597153509u)); + } + + [TestCompiler] + public static void ror_uint4() + { + TestUtils.AreEqual(ror(uint4(2584838185u, 1232136068u, 1800875222u, 4196720528u), 11), uint4(87245360u, 4035522076u, 2597153509u, 4062135451u)); + } + + [TestCompiler] + public static void ror_long() + { + TestUtils.AreEqual(ror(6894885722123239465L, 37), 4958617126915898480L); + TestUtils.AreEqual(ror(9017875690541231318L, 37), 5429856151504760689L); + TestUtils.AreEqual(ror(-6252342588442027279L, 37), 6219170745001040316L); + TestUtils.AreEqual(ror(2788577329702376155L, 37), 8389344736564320290L); + } + + [TestCompiler] + public static void ror_ulong() + { + TestUtils.AreEqual(ror(6894885722123239465UL, 37), 4958617126915898480UL); + TestUtils.AreEqual(ror(9017875690541231318UL, 37), 5429856151504760689UL); + TestUtils.AreEqual(ror(12194401485267524337UL, 37), 6219170745001040316UL); + TestUtils.AreEqual(ror(2788577329702376155UL, 37), 8389344736564320290UL); + } + + + } + + + class Assert2 + { + public static void AreEqual(object a, object b) + { + + } + } + +} diff --git a/package/Tests/Tests/Shared/TestBitmanipulation.cs.meta b/package/Tests/Tests/Shared/TestBitmanipulation.cs.meta new file mode 100755 index 000000000..458cb4200 --- /dev/null +++ b/package/Tests/Tests/Shared/TestBitmanipulation.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e5e8e2bd97f047f4aa27c8449c8844a2 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/package/Tests/Tests/Shared/TestBool2.gen.cs b/package/Tests/Tests/Shared/TestBool2.gen.cs new file mode 100755 index 000000000..89d4ff29a --- /dev/null +++ b/package/Tests/Tests/Shared/TestBool2.gen.cs @@ -0,0 +1,432 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using NUnit.Framework; +using static Unity.Mathematics.math; +using Burst.Compiler.IL.Tests; + +namespace Unity.Mathematics.Tests +{ + [TestFixture] + public class TestBool2 + { + [TestCompiler] + public static void bool2_constructor() + { + bool2 a = new bool2(false, true); + TestUtils.AreEqual(a.x, false); + TestUtils.AreEqual(a.y, true); + } + + [TestCompiler] + public static void bool2_scalar_constructor() + { + bool2 a = new bool2(true); + TestUtils.AreEqual(a.x, true); + TestUtils.AreEqual(a.y, true); + } + + [TestCompiler] + public static void bool2_static_constructor() + { + bool2 a = bool2(false, true); + TestUtils.AreEqual(a.x, false); + TestUtils.AreEqual(a.y, true); + } + + [TestCompiler] + public static void bool2_static_scalar_constructor() + { + bool2 a = bool2(true); + TestUtils.AreEqual(a.x, true); + TestUtils.AreEqual(a.y, true); + } + + [TestCompiler] + public static void bool2_operator_equal_wide_wide() + { + bool2 a0 = bool2(false, false); + bool2 b0 = bool2(false, true); + bool2 r0 = bool2(true, false); + TestUtils.AreEqual(a0 == b0, r0); + + bool2 a1 = bool2(true, true); + bool2 b1 = bool2(true, false); + bool2 r1 = bool2(true, false); + TestUtils.AreEqual(a1 == b1, r1); + + bool2 a2 = bool2(true, true); + bool2 b2 = bool2(true, true); + bool2 r2 = bool2(true, true); + TestUtils.AreEqual(a2 == b2, r2); + + bool2 a3 = bool2(true, true); + bool2 b3 = bool2(false, true); + bool2 r3 = bool2(false, true); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void bool2_operator_equal_wide_scalar() + { + bool2 a0 = bool2(true, true); + bool b0 = (false); + bool2 r0 = bool2(false, false); + TestUtils.AreEqual(a0 == b0, r0); + + bool2 a1 = bool2(false, true); + bool b1 = (true); + bool2 r1 = bool2(false, true); + TestUtils.AreEqual(a1 == b1, r1); + + bool2 a2 = bool2(false, true); + bool b2 = (true); + bool2 r2 = bool2(false, true); + TestUtils.AreEqual(a2 == b2, r2); + + bool2 a3 = bool2(true, false); + bool b3 = (false); + bool2 r3 = bool2(false, true); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void bool2_operator_equal_scalar_wide() + { + bool a0 = (true); + bool2 b0 = bool2(false, false); + bool2 r0 = bool2(false, false); + TestUtils.AreEqual(a0 == b0, r0); + + bool a1 = (true); + bool2 b1 = bool2(false, true); + bool2 r1 = bool2(false, true); + TestUtils.AreEqual(a1 == b1, r1); + + bool a2 = (false); + bool2 b2 = bool2(true, false); + bool2 r2 = bool2(false, true); + TestUtils.AreEqual(a2 == b2, r2); + + bool a3 = (false); + bool2 b3 = bool2(false, false); + bool2 r3 = bool2(true, true); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void bool2_operator_not_equal_wide_wide() + { + bool2 a0 = bool2(true, false); + bool2 b0 = bool2(false, false); + bool2 r0 = bool2(true, false); + TestUtils.AreEqual(a0 != b0, r0); + + bool2 a1 = bool2(false, true); + bool2 b1 = bool2(true, false); + bool2 r1 = bool2(true, true); + TestUtils.AreEqual(a1 != b1, r1); + + bool2 a2 = bool2(true, true); + bool2 b2 = bool2(false, false); + bool2 r2 = bool2(true, true); + TestUtils.AreEqual(a2 != b2, r2); + + bool2 a3 = bool2(true, true); + bool2 b3 = bool2(false, false); + bool2 r3 = bool2(true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void bool2_operator_not_equal_wide_scalar() + { + bool2 a0 = bool2(false, false); + bool b0 = (false); + bool2 r0 = bool2(false, false); + TestUtils.AreEqual(a0 != b0, r0); + + bool2 a1 = bool2(true, true); + bool b1 = (true); + bool2 r1 = bool2(false, false); + TestUtils.AreEqual(a1 != b1, r1); + + bool2 a2 = bool2(true, false); + bool b2 = (false); + bool2 r2 = bool2(true, false); + TestUtils.AreEqual(a2 != b2, r2); + + bool2 a3 = bool2(true, true); + bool b3 = (false); + bool2 r3 = bool2(true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void bool2_operator_not_equal_scalar_wide() + { + bool a0 = (true); + bool2 b0 = bool2(true, true); + bool2 r0 = bool2(false, false); + TestUtils.AreEqual(a0 != b0, r0); + + bool a1 = (false); + bool2 b1 = bool2(true, false); + bool2 r1 = bool2(true, false); + TestUtils.AreEqual(a1 != b1, r1); + + bool a2 = (true); + bool2 b2 = bool2(false, false); + bool2 r2 = bool2(true, true); + TestUtils.AreEqual(a2 != b2, r2); + + bool a3 = (false); + bool2 b3 = bool2(true, true); + bool2 r3 = bool2(true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void bool2_operator_bitwise_and_wide_wide() + { + bool2 a0 = bool2(false, true); + bool2 b0 = bool2(false, true); + bool2 r0 = bool2(false, true); + TestUtils.AreEqual(a0 & b0, r0); + + bool2 a1 = bool2(true, false); + bool2 b1 = bool2(false, false); + bool2 r1 = bool2(false, false); + TestUtils.AreEqual(a1 & b1, r1); + + bool2 a2 = bool2(false, false); + bool2 b2 = bool2(false, true); + bool2 r2 = bool2(false, false); + TestUtils.AreEqual(a2 & b2, r2); + + bool2 a3 = bool2(true, false); + bool2 b3 = bool2(true, false); + bool2 r3 = bool2(true, false); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void bool2_operator_bitwise_and_wide_scalar() + { + bool2 a0 = bool2(false, false); + bool b0 = (false); + bool2 r0 = bool2(false, false); + TestUtils.AreEqual(a0 & b0, r0); + + bool2 a1 = bool2(true, true); + bool b1 = (true); + bool2 r1 = bool2(true, true); + TestUtils.AreEqual(a1 & b1, r1); + + bool2 a2 = bool2(false, true); + bool b2 = (true); + bool2 r2 = bool2(false, true); + TestUtils.AreEqual(a2 & b2, r2); + + bool2 a3 = bool2(true, false); + bool b3 = (false); + bool2 r3 = bool2(false, false); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void bool2_operator_bitwise_and_scalar_wide() + { + bool a0 = (true); + bool2 b0 = bool2(false, false); + bool2 r0 = bool2(false, false); + TestUtils.AreEqual(a0 & b0, r0); + + bool a1 = (true); + bool2 b1 = bool2(true, false); + bool2 r1 = bool2(true, false); + TestUtils.AreEqual(a1 & b1, r1); + + bool a2 = (false); + bool2 b2 = bool2(true, true); + bool2 r2 = bool2(false, false); + TestUtils.AreEqual(a2 & b2, r2); + + bool a3 = (true); + bool2 b3 = bool2(false, true); + bool2 r3 = bool2(false, true); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void bool2_operator_bitwise_or_wide_wide() + { + bool2 a0 = bool2(true, false); + bool2 b0 = bool2(true, false); + bool2 r0 = bool2(true, false); + TestUtils.AreEqual(a0 | b0, r0); + + bool2 a1 = bool2(false, true); + bool2 b1 = bool2(true, true); + bool2 r1 = bool2(true, true); + TestUtils.AreEqual(a1 | b1, r1); + + bool2 a2 = bool2(true, false); + bool2 b2 = bool2(true, true); + bool2 r2 = bool2(true, true); + TestUtils.AreEqual(a2 | b2, r2); + + bool2 a3 = bool2(false, false); + bool2 b3 = bool2(true, true); + bool2 r3 = bool2(true, true); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void bool2_operator_bitwise_or_wide_scalar() + { + bool2 a0 = bool2(false, false); + bool b0 = (true); + bool2 r0 = bool2(true, true); + TestUtils.AreEqual(a0 | b0, r0); + + bool2 a1 = bool2(true, false); + bool b1 = (true); + bool2 r1 = bool2(true, true); + TestUtils.AreEqual(a1 | b1, r1); + + bool2 a2 = bool2(true, true); + bool b2 = (false); + bool2 r2 = bool2(true, true); + TestUtils.AreEqual(a2 | b2, r2); + + bool2 a3 = bool2(false, true); + bool b3 = (true); + bool2 r3 = bool2(true, true); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void bool2_operator_bitwise_or_scalar_wide() + { + bool a0 = (true); + bool2 b0 = bool2(true, true); + bool2 r0 = bool2(true, true); + TestUtils.AreEqual(a0 | b0, r0); + + bool a1 = (false); + bool2 b1 = bool2(false, false); + bool2 r1 = bool2(false, false); + TestUtils.AreEqual(a1 | b1, r1); + + bool a2 = (false); + bool2 b2 = bool2(true, true); + bool2 r2 = bool2(true, true); + TestUtils.AreEqual(a2 | b2, r2); + + bool a3 = (false); + bool2 b3 = bool2(true, true); + bool2 r3 = bool2(true, true); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void bool2_operator_bitwise_xor_wide_wide() + { + bool2 a0 = bool2(true, false); + bool2 b0 = bool2(false, true); + bool2 r0 = bool2(true, true); + TestUtils.AreEqual(a0 ^ b0, r0); + + bool2 a1 = bool2(true, true); + bool2 b1 = bool2(false, false); + bool2 r1 = bool2(true, true); + TestUtils.AreEqual(a1 ^ b1, r1); + + bool2 a2 = bool2(true, true); + bool2 b2 = bool2(false, true); + bool2 r2 = bool2(true, false); + TestUtils.AreEqual(a2 ^ b2, r2); + + bool2 a3 = bool2(false, false); + bool2 b3 = bool2(false, false); + bool2 r3 = bool2(false, false); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void bool2_operator_bitwise_xor_wide_scalar() + { + bool2 a0 = bool2(true, false); + bool b0 = (false); + bool2 r0 = bool2(true, false); + TestUtils.AreEqual(a0 ^ b0, r0); + + bool2 a1 = bool2(false, true); + bool b1 = (true); + bool2 r1 = bool2(true, false); + TestUtils.AreEqual(a1 ^ b1, r1); + + bool2 a2 = bool2(false, false); + bool b2 = (false); + bool2 r2 = bool2(false, false); + TestUtils.AreEqual(a2 ^ b2, r2); + + bool2 a3 = bool2(true, true); + bool b3 = (false); + bool2 r3 = bool2(true, true); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void bool2_operator_bitwise_xor_scalar_wide() + { + bool a0 = (true); + bool2 b0 = bool2(true, false); + bool2 r0 = bool2(false, true); + TestUtils.AreEqual(a0 ^ b0, r0); + + bool a1 = (false); + bool2 b1 = bool2(true, false); + bool2 r1 = bool2(true, false); + TestUtils.AreEqual(a1 ^ b1, r1); + + bool a2 = (true); + bool2 b2 = bool2(true, true); + bool2 r2 = bool2(false, false); + TestUtils.AreEqual(a2 ^ b2, r2); + + bool a3 = (true); + bool2 b3 = bool2(true, true); + bool2 r3 = bool2(false, false); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void bool2_operator_logical_not() + { + bool2 a0 = bool2(false, true); + bool2 r0 = bool2(true, false); + TestUtils.AreEqual(!a0, r0); + + bool2 a1 = bool2(false, false); + bool2 r1 = bool2(true, true); + TestUtils.AreEqual(!a1, r1); + + bool2 a2 = bool2(false, true); + bool2 r2 = bool2(true, false); + TestUtils.AreEqual(!a2, r2); + + bool2 a3 = bool2(true, true); + bool2 r3 = bool2(false, false); + TestUtils.AreEqual(!a3, r3); + } + + + } +} diff --git a/package/Tests/Tests/Shared/TestBool2.gen.cs.meta b/package/Tests/Tests/Shared/TestBool2.gen.cs.meta new file mode 100755 index 000000000..19502cb8f --- /dev/null +++ b/package/Tests/Tests/Shared/TestBool2.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: fc335ab357eef1346a23bc792570d94e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/package/Tests/Tests/Shared/TestBool2x2.gen.cs b/package/Tests/Tests/Shared/TestBool2x2.gen.cs new file mode 100755 index 000000000..663c2ec81 --- /dev/null +++ b/package/Tests/Tests/Shared/TestBool2x2.gen.cs @@ -0,0 +1,400 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using NUnit.Framework; +using static Unity.Mathematics.math; +using Burst.Compiler.IL.Tests; + +namespace Unity.Mathematics.Tests +{ + [TestFixture] + public class TestBool2x2 + { + [TestCompiler] + public static void bool2x2_operator_equal_wide_wide() + { + bool2x2 a0 = bool2x2(false, false, true, true); + bool2x2 b0 = bool2x2(false, true, true, false); + bool2x2 r0 = bool2x2(true, false, true, false); + TestUtils.AreEqual(a0 == b0, r0); + + bool2x2 a1 = bool2x2(true, true, true, true); + bool2x2 b1 = bool2x2(true, true, false, true); + bool2x2 r1 = bool2x2(true, true, false, true); + TestUtils.AreEqual(a1 == b1, r1); + + bool2x2 a2 = bool2x2(true, true, true, true); + bool2x2 b2 = bool2x2(true, true, false, false); + bool2x2 r2 = bool2x2(true, true, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + bool2x2 a3 = bool2x2(true, false, false, false); + bool2x2 b3 = bool2x2(false, false, true, true); + bool2x2 r3 = bool2x2(false, true, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void bool2x2_operator_equal_wide_scalar() + { + bool2x2 a0 = bool2x2(true, true, false, true); + bool b0 = (false); + bool2x2 r0 = bool2x2(false, false, true, false); + TestUtils.AreEqual(a0 == b0, r0); + + bool2x2 a1 = bool2x2(true, true, true, true); + bool b1 = (false); + bool2x2 r1 = bool2x2(false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + bool2x2 a2 = bool2x2(false, false, false, true); + bool b2 = (false); + bool2x2 r2 = bool2x2(true, true, true, false); + TestUtils.AreEqual(a2 == b2, r2); + + bool2x2 a3 = bool2x2(false, false, false, true); + bool b3 = (false); + bool2x2 r3 = bool2x2(true, true, true, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void bool2x2_operator_equal_scalar_wide() + { + bool a0 = (true); + bool2x2 b0 = bool2x2(false, false, true, false); + bool2x2 r0 = bool2x2(false, false, true, false); + TestUtils.AreEqual(a0 == b0, r0); + + bool a1 = (true); + bool2x2 b1 = bool2x2(false, true, false, false); + bool2x2 r1 = bool2x2(false, true, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + bool a2 = (false); + bool2x2 b2 = bool2x2(false, true, false, true); + bool2x2 r2 = bool2x2(true, false, true, false); + TestUtils.AreEqual(a2 == b2, r2); + + bool a3 = (true); + bool2x2 b3 = bool2x2(true, false, true, true); + bool2x2 r3 = bool2x2(true, false, true, true); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void bool2x2_operator_not_equal_wide_wide() + { + bool2x2 a0 = bool2x2(true, false, false, true); + bool2x2 b0 = bool2x2(false, false, true, false); + bool2x2 r0 = bool2x2(true, false, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + bool2x2 a1 = bool2x2(true, true, true, true); + bool2x2 b1 = bool2x2(false, false, false, false); + bool2x2 r1 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + bool2x2 a2 = bool2x2(true, true, false, true); + bool2x2 b2 = bool2x2(true, true, false, false); + bool2x2 r2 = bool2x2(false, false, false, true); + TestUtils.AreEqual(a2 != b2, r2); + + bool2x2 a3 = bool2x2(true, false, true, false); + bool2x2 b3 = bool2x2(false, false, false, true); + bool2x2 r3 = bool2x2(true, false, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void bool2x2_operator_not_equal_wide_scalar() + { + bool2x2 a0 = bool2x2(false, false, true, true); + bool b0 = (false); + bool2x2 r0 = bool2x2(false, false, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + bool2x2 a1 = bool2x2(true, false, false, true); + bool b1 = (true); + bool2x2 r1 = bool2x2(false, true, true, false); + TestUtils.AreEqual(a1 != b1, r1); + + bool2x2 a2 = bool2x2(false, false, true, false); + bool b2 = (true); + bool2x2 r2 = bool2x2(true, true, false, true); + TestUtils.AreEqual(a2 != b2, r2); + + bool2x2 a3 = bool2x2(true, true, true, false); + bool b3 = (true); + bool2x2 r3 = bool2x2(false, false, false, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void bool2x2_operator_not_equal_scalar_wide() + { + bool a0 = (true); + bool2x2 b0 = bool2x2(true, true, false, true); + bool2x2 r0 = bool2x2(false, false, true, false); + TestUtils.AreEqual(a0 != b0, r0); + + bool a1 = (false); + bool2x2 b1 = bool2x2(true, false, false, false); + bool2x2 r1 = bool2x2(true, false, false, false); + TestUtils.AreEqual(a1 != b1, r1); + + bool a2 = (true); + bool2x2 b2 = bool2x2(true, true, false, true); + bool2x2 r2 = bool2x2(false, false, true, false); + TestUtils.AreEqual(a2 != b2, r2); + + bool a3 = (true); + bool2x2 b3 = bool2x2(false, false, false, true); + bool2x2 r3 = bool2x2(true, true, true, false); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void bool2x2_operator_bitwise_and_wide_wide() + { + bool2x2 a0 = bool2x2(false, true, true, false); + bool2x2 b0 = bool2x2(false, true, false, false); + bool2x2 r0 = bool2x2(false, true, false, false); + TestUtils.AreEqual(a0 & b0, r0); + + bool2x2 a1 = bool2x2(false, false, true, false); + bool2x2 b1 = bool2x2(false, true, true, false); + bool2x2 r1 = bool2x2(false, false, true, false); + TestUtils.AreEqual(a1 & b1, r1); + + bool2x2 a2 = bool2x2(true, true, false, true); + bool2x2 b2 = bool2x2(false, true, false, true); + bool2x2 r2 = bool2x2(false, true, false, true); + TestUtils.AreEqual(a2 & b2, r2); + + bool2x2 a3 = bool2x2(false, false, true, false); + bool2x2 b3 = bool2x2(true, false, true, true); + bool2x2 r3 = bool2x2(false, false, true, false); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void bool2x2_operator_bitwise_and_wide_scalar() + { + bool2x2 a0 = bool2x2(false, false, true, true); + bool b0 = (false); + bool2x2 r0 = bool2x2(false, false, false, false); + TestUtils.AreEqual(a0 & b0, r0); + + bool2x2 a1 = bool2x2(true, true, true, true); + bool b1 = (false); + bool2x2 r1 = bool2x2(false, false, false, false); + TestUtils.AreEqual(a1 & b1, r1); + + bool2x2 a2 = bool2x2(false, false, true, false); + bool b2 = (false); + bool2x2 r2 = bool2x2(false, false, false, false); + TestUtils.AreEqual(a2 & b2, r2); + + bool2x2 a3 = bool2x2(true, false, true, false); + bool b3 = (false); + bool2x2 r3 = bool2x2(false, false, false, false); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void bool2x2_operator_bitwise_and_scalar_wide() + { + bool a0 = (true); + bool2x2 b0 = bool2x2(false, false, true, true); + bool2x2 r0 = bool2x2(false, false, true, true); + TestUtils.AreEqual(a0 & b0, r0); + + bool a1 = (false); + bool2x2 b1 = bool2x2(false, true, true, true); + bool2x2 r1 = bool2x2(false, false, false, false); + TestUtils.AreEqual(a1 & b1, r1); + + bool a2 = (false); + bool2x2 b2 = bool2x2(true, false, true, true); + bool2x2 r2 = bool2x2(false, false, false, false); + TestUtils.AreEqual(a2 & b2, r2); + + bool a3 = (false); + bool2x2 b3 = bool2x2(false, true, true, false); + bool2x2 r3 = bool2x2(false, false, false, false); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void bool2x2_operator_bitwise_or_wide_wide() + { + bool2x2 a0 = bool2x2(true, false, false, true); + bool2x2 b0 = bool2x2(true, false, true, true); + bool2x2 r0 = bool2x2(true, false, true, true); + TestUtils.AreEqual(a0 | b0, r0); + + bool2x2 a1 = bool2x2(true, false, false, false); + bool2x2 b1 = bool2x2(true, true, true, true); + bool2x2 r1 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a1 | b1, r1); + + bool2x2 a2 = bool2x2(false, false, true, true); + bool2x2 b2 = bool2x2(true, true, false, false); + bool2x2 r2 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a2 | b2, r2); + + bool2x2 a3 = bool2x2(false, false, true, true); + bool2x2 b3 = bool2x2(true, true, true, true); + bool2x2 r3 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void bool2x2_operator_bitwise_or_wide_scalar() + { + bool2x2 a0 = bool2x2(false, false, true, true); + bool b0 = (true); + bool2x2 r0 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a0 | b0, r0); + + bool2x2 a1 = bool2x2(false, false, true, false); + bool b1 = (true); + bool2x2 r1 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a1 | b1, r1); + + bool2x2 a2 = bool2x2(true, false, false, true); + bool b2 = (true); + bool2x2 r2 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a2 | b2, r2); + + bool2x2 a3 = bool2x2(false, false, true, false); + bool b3 = (true); + bool2x2 r3 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void bool2x2_operator_bitwise_or_scalar_wide() + { + bool a0 = (true); + bool2x2 b0 = bool2x2(true, true, false, false); + bool2x2 r0 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a0 | b0, r0); + + bool a1 = (false); + bool2x2 b1 = bool2x2(false, true, true, false); + bool2x2 r1 = bool2x2(false, true, true, false); + TestUtils.AreEqual(a1 | b1, r1); + + bool a2 = (true); + bool2x2 b2 = bool2x2(true, false, false, false); + bool2x2 r2 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a2 | b2, r2); + + bool a3 = (false); + bool2x2 b3 = bool2x2(false, false, false, false); + bool2x2 r3 = bool2x2(false, false, false, false); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void bool2x2_operator_bitwise_xor_wide_wide() + { + bool2x2 a0 = bool2x2(true, false, true, true); + bool2x2 b0 = bool2x2(false, true, false, false); + bool2x2 r0 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a0 ^ b0, r0); + + bool2x2 a1 = bool2x2(true, true, false, false); + bool2x2 b1 = bool2x2(false, true, false, false); + bool2x2 r1 = bool2x2(true, false, false, false); + TestUtils.AreEqual(a1 ^ b1, r1); + + bool2x2 a2 = bool2x2(false, false, true, false); + bool2x2 b2 = bool2x2(true, true, true, false); + bool2x2 r2 = bool2x2(true, true, false, false); + TestUtils.AreEqual(a2 ^ b2, r2); + + bool2x2 a3 = bool2x2(false, false, true, false); + bool2x2 b3 = bool2x2(false, false, true, true); + bool2x2 r3 = bool2x2(false, false, false, true); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void bool2x2_operator_bitwise_xor_wide_scalar() + { + bool2x2 a0 = bool2x2(true, false, false, true); + bool b0 = (false); + bool2x2 r0 = bool2x2(true, false, false, true); + TestUtils.AreEqual(a0 ^ b0, r0); + + bool2x2 a1 = bool2x2(true, false, false, true); + bool b1 = (false); + bool2x2 r1 = bool2x2(true, false, false, true); + TestUtils.AreEqual(a1 ^ b1, r1); + + bool2x2 a2 = bool2x2(false, true, false, true); + bool b2 = (true); + bool2x2 r2 = bool2x2(true, false, true, false); + TestUtils.AreEqual(a2 ^ b2, r2); + + bool2x2 a3 = bool2x2(true, false, false, false); + bool b3 = (false); + bool2x2 r3 = bool2x2(true, false, false, false); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void bool2x2_operator_bitwise_xor_scalar_wide() + { + bool a0 = (true); + bool2x2 b0 = bool2x2(true, false, false, true); + bool2x2 r0 = bool2x2(false, true, true, false); + TestUtils.AreEqual(a0 ^ b0, r0); + + bool a1 = (false); + bool2x2 b1 = bool2x2(true, true, true, true); + bool2x2 r1 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a1 ^ b1, r1); + + bool a2 = (true); + bool2x2 b2 = bool2x2(true, true, true, true); + bool2x2 r2 = bool2x2(false, false, false, false); + TestUtils.AreEqual(a2 ^ b2, r2); + + bool a3 = (true); + bool2x2 b3 = bool2x2(true, false, true, false); + bool2x2 r3 = bool2x2(false, true, false, true); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void bool2x2_operator_logical_not() + { + bool2x2 a0 = bool2x2(false, true, false, true); + bool2x2 r0 = bool2x2(true, false, true, false); + TestUtils.AreEqual(!a0, r0); + + bool2x2 a1 = bool2x2(false, false, true, true); + bool2x2 r1 = bool2x2(true, true, false, false); + TestUtils.AreEqual(!a1, r1); + + bool2x2 a2 = bool2x2(false, true, true, false); + bool2x2 r2 = bool2x2(true, false, false, true); + TestUtils.AreEqual(!a2, r2); + + bool2x2 a3 = bool2x2(false, true, false, false); + bool2x2 r3 = bool2x2(true, false, true, true); + TestUtils.AreEqual(!a3, r3); + } + + + } +} diff --git a/package/Tests/Tests/Shared/TestBool2x2.gen.cs.meta b/package/Tests/Tests/Shared/TestBool2x2.gen.cs.meta new file mode 100755 index 000000000..4006bb932 --- /dev/null +++ b/package/Tests/Tests/Shared/TestBool2x2.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 8ffa916172073c14499f3e88e1ddaccc +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/package/Tests/Tests/Shared/TestBool2x3.gen.cs b/package/Tests/Tests/Shared/TestBool2x3.gen.cs new file mode 100755 index 000000000..93dc17941 --- /dev/null +++ b/package/Tests/Tests/Shared/TestBool2x3.gen.cs @@ -0,0 +1,400 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using NUnit.Framework; +using static Unity.Mathematics.math; +using Burst.Compiler.IL.Tests; + +namespace Unity.Mathematics.Tests +{ + [TestFixture] + public class TestBool2x3 + { + [TestCompiler] + public static void bool2x3_operator_equal_wide_wide() + { + bool2x3 a0 = bool2x3(false, false, true, true, true, true); + bool2x3 b0 = bool2x3(false, true, true, false, true, true); + bool2x3 r0 = bool2x3(true, false, true, false, true, true); + TestUtils.AreEqual(a0 == b0, r0); + + bool2x3 a1 = bool2x3(true, true, true, true, true, true); + bool2x3 b1 = bool2x3(false, true, true, true, false, false); + bool2x3 r1 = bool2x3(false, true, true, true, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + bool2x3 a2 = bool2x3(true, false, false, false, true, true); + bool2x3 b2 = bool2x3(false, false, true, true, true, true); + bool2x3 r2 = bool2x3(false, true, false, false, true, true); + TestUtils.AreEqual(a2 == b2, r2); + + bool2x3 a3 = bool2x3(true, true, true, false, false, false); + bool2x3 b3 = bool2x3(true, false, false, true, false, true); + bool2x3 r3 = bool2x3(true, false, false, false, true, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void bool2x3_operator_equal_wide_scalar() + { + bool2x3 a0 = bool2x3(true, true, false, true, true, false); + bool b0 = (false); + bool2x3 r0 = bool2x3(false, false, true, false, false, true); + TestUtils.AreEqual(a0 == b0, r0); + + bool2x3 a1 = bool2x3(true, true, false, false, false, false); + bool b1 = (true); + bool2x3 r1 = bool2x3(true, true, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + bool2x3 a2 = bool2x3(true, false, false, false, true, true); + bool b2 = (false); + bool2x3 r2 = bool2x3(false, true, true, true, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + bool2x3 a3 = bool2x3(false, true, false, true, false, true); + bool b3 = (false); + bool2x3 r3 = bool2x3(true, false, true, false, true, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void bool2x3_operator_equal_scalar_wide() + { + bool a0 = (true); + bool2x3 b0 = bool2x3(false, false, true, false, true, false); + bool2x3 r0 = bool2x3(false, false, true, false, true, false); + TestUtils.AreEqual(a0 == b0, r0); + + bool a1 = (true); + bool2x3 b1 = bool2x3(false, false, false, false, true, false); + bool2x3 r1 = bool2x3(false, false, false, false, true, false); + TestUtils.AreEqual(a1 == b1, r1); + + bool a2 = (true); + bool2x3 b2 = bool2x3(true, true, false, true, true, false); + bool2x3 r2 = bool2x3(true, true, false, true, true, false); + TestUtils.AreEqual(a2 == b2, r2); + + bool a3 = (false); + bool2x3 b3 = bool2x3(true, false, false, true, false, false); + bool2x3 r3 = bool2x3(false, true, true, false, true, true); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void bool2x3_operator_not_equal_wide_wide() + { + bool2x3 a0 = bool2x3(true, false, false, true, true, true); + bool2x3 b0 = bool2x3(false, false, true, false, false, false); + bool2x3 r0 = bool2x3(true, false, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + bool2x3 a1 = bool2x3(true, true, true, true, false, true); + bool2x3 b1 = bool2x3(false, false, true, true, false, false); + bool2x3 r1 = bool2x3(true, true, false, false, false, true); + TestUtils.AreEqual(a1 != b1, r1); + + bool2x3 a2 = bool2x3(true, false, true, false, false, true); + bool2x3 b2 = bool2x3(false, false, false, true, true, false); + bool2x3 r2 = bool2x3(true, false, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + bool2x3 a3 = bool2x3(true, true, false, true, false, false); + bool2x3 b3 = bool2x3(false, false, false, false, true, true); + bool2x3 r3 = bool2x3(true, true, false, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void bool2x3_operator_not_equal_wide_scalar() + { + bool2x3 a0 = bool2x3(false, false, true, true, true, true); + bool b0 = (false); + bool2x3 r0 = bool2x3(false, false, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + bool2x3 a1 = bool2x3(false, true, false, true, false, true); + bool b1 = (false); + bool2x3 r1 = bool2x3(false, true, false, true, false, true); + TestUtils.AreEqual(a1 != b1, r1); + + bool2x3 a2 = bool2x3(false, true, true, true, false, false); + bool b2 = (true); + bool2x3 r2 = bool2x3(true, false, false, false, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + bool2x3 a3 = bool2x3(true, true, true, false, false, false); + bool b3 = (true); + bool2x3 r3 = bool2x3(false, false, false, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void bool2x3_operator_not_equal_scalar_wide() + { + bool a0 = (true); + bool2x3 b0 = bool2x3(true, true, false, true, false, true); + bool2x3 r0 = bool2x3(false, false, true, false, true, false); + TestUtils.AreEqual(a0 != b0, r0); + + bool a1 = (false); + bool2x3 b1 = bool2x3(false, false, true, true, true, false); + bool2x3 r1 = bool2x3(false, false, true, true, true, false); + TestUtils.AreEqual(a1 != b1, r1); + + bool a2 = (true); + bool2x3 b2 = bool2x3(true, false, false, false, true, true); + bool2x3 r2 = bool2x3(false, true, true, true, false, false); + TestUtils.AreEqual(a2 != b2, r2); + + bool a3 = (false); + bool2x3 b3 = bool2x3(false, true, false, true, false, false); + bool2x3 r3 = bool2x3(false, true, false, true, false, false); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void bool2x3_operator_bitwise_and_wide_wide() + { + bool2x3 a0 = bool2x3(false, true, true, false, false, false); + bool2x3 b0 = bool2x3(false, true, false, false, false, true); + bool2x3 r0 = bool2x3(false, true, false, false, false, false); + TestUtils.AreEqual(a0 & b0, r0); + + bool2x3 a1 = bool2x3(true, false, true, true, false, true); + bool2x3 b1 = bool2x3(true, false, false, true, false, true); + bool2x3 r1 = bool2x3(true, false, false, true, false, true); + TestUtils.AreEqual(a1 & b1, r1); + + bool2x3 a2 = bool2x3(false, false, true, false, false, false); + bool2x3 b2 = bool2x3(true, false, true, true, false, false); + bool2x3 r2 = bool2x3(false, false, true, false, false, false); + TestUtils.AreEqual(a2 & b2, r2); + + bool2x3 a3 = bool2x3(false, true, false, true, true, false); + bool2x3 b3 = bool2x3(false, true, false, false, false, true); + bool2x3 r3 = bool2x3(false, true, false, false, false, false); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void bool2x3_operator_bitwise_and_wide_scalar() + { + bool2x3 a0 = bool2x3(false, false, true, true, true, false); + bool b0 = (false); + bool2x3 r0 = bool2x3(false, false, false, false, false, false); + TestUtils.AreEqual(a0 & b0, r0); + + bool2x3 a1 = bool2x3(true, true, false, false, false, true); + bool b1 = (true); + bool2x3 r1 = bool2x3(true, true, false, false, false, true); + TestUtils.AreEqual(a1 & b1, r1); + + bool2x3 a2 = bool2x3(false, false, false, true, false, true); + bool b2 = (true); + bool2x3 r2 = bool2x3(false, false, false, true, false, true); + TestUtils.AreEqual(a2 & b2, r2); + + bool2x3 a3 = bool2x3(true, true, false, true, false, true); + bool b3 = (false); + bool2x3 r3 = bool2x3(false, false, false, false, false, false); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void bool2x3_operator_bitwise_and_scalar_wide() + { + bool a0 = (true); + bool2x3 b0 = bool2x3(false, false, true, true, false, false); + bool2x3 r0 = bool2x3(false, false, true, true, false, false); + TestUtils.AreEqual(a0 & b0, r0); + + bool a1 = (true); + bool2x3 b1 = bool2x3(true, true, false, true, false, true); + bool2x3 r1 = bool2x3(true, true, false, true, false, true); + TestUtils.AreEqual(a1 & b1, r1); + + bool a2 = (true); + bool2x3 b2 = bool2x3(false, false, true, true, false, true); + bool2x3 r2 = bool2x3(false, false, true, true, false, true); + TestUtils.AreEqual(a2 & b2, r2); + + bool a3 = (true); + bool2x3 b3 = bool2x3(false, true, true, true, true, true); + bool2x3 r3 = bool2x3(false, true, true, true, true, true); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void bool2x3_operator_bitwise_or_wide_wide() + { + bool2x3 a0 = bool2x3(true, false, false, true, true, false); + bool2x3 b0 = bool2x3(true, false, true, true, true, true); + bool2x3 r0 = bool2x3(true, false, true, true, true, true); + TestUtils.AreEqual(a0 | b0, r0); + + bool2x3 a1 = bool2x3(false, false, false, false, true, true); + bool2x3 b1 = bool2x3(true, true, true, true, false, false); + bool2x3 r1 = bool2x3(true, true, true, true, true, true); + TestUtils.AreEqual(a1 | b1, r1); + + bool2x3 a2 = bool2x3(false, false, true, true, true, false); + bool2x3 b2 = bool2x3(true, true, true, true, true, true); + bool2x3 r2 = bool2x3(true, true, true, true, true, true); + TestUtils.AreEqual(a2 | b2, r2); + + bool2x3 a3 = bool2x3(true, true, false, true, false, false); + bool2x3 b3 = bool2x3(false, false, false, false, true, false); + bool2x3 r3 = bool2x3(true, true, false, true, true, false); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void bool2x3_operator_bitwise_or_wide_scalar() + { + bool2x3 a0 = bool2x3(false, false, true, true, false, true); + bool b0 = (true); + bool2x3 r0 = bool2x3(true, true, true, true, true, true); + TestUtils.AreEqual(a0 | b0, r0); + + bool2x3 a1 = bool2x3(false, false, true, true, false, false); + bool b1 = (true); + bool2x3 r1 = bool2x3(true, true, true, true, true, true); + TestUtils.AreEqual(a1 | b1, r1); + + bool2x3 a2 = bool2x3(true, true, false, true, false, false); + bool b2 = (false); + bool2x3 r2 = bool2x3(true, true, false, true, false, false); + TestUtils.AreEqual(a2 | b2, r2); + + bool2x3 a3 = bool2x3(false, true, false, true, true, true); + bool b3 = (true); + bool2x3 r3 = bool2x3(true, true, true, true, true, true); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void bool2x3_operator_bitwise_or_scalar_wide() + { + bool a0 = (true); + bool2x3 b0 = bool2x3(true, true, false, false, false, false); + bool2x3 r0 = bool2x3(true, true, true, true, true, true); + TestUtils.AreEqual(a0 | b0, r0); + + bool a1 = (true); + bool2x3 b1 = bool2x3(true, false, true, true, false, false); + bool2x3 r1 = bool2x3(true, true, true, true, true, true); + TestUtils.AreEqual(a1 | b1, r1); + + bool a2 = (false); + bool2x3 b2 = bool2x3(false, false, false, false, false, true); + bool2x3 r2 = bool2x3(false, false, false, false, false, true); + TestUtils.AreEqual(a2 | b2, r2); + + bool a3 = (false); + bool2x3 b3 = bool2x3(true, true, true, true, true, false); + bool2x3 r3 = bool2x3(true, true, true, true, true, false); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void bool2x3_operator_bitwise_xor_wide_wide() + { + bool2x3 a0 = bool2x3(true, false, true, true, true, true); + bool2x3 b0 = bool2x3(false, true, false, false, false, true); + bool2x3 r0 = bool2x3(true, true, true, true, true, false); + TestUtils.AreEqual(a0 ^ b0, r0); + + bool2x3 a1 = bool2x3(false, false, false, false, true, false); + bool2x3 b1 = bool2x3(false, false, true, true, true, false); + bool2x3 r1 = bool2x3(false, false, true, true, false, false); + TestUtils.AreEqual(a1 ^ b1, r1); + + bool2x3 a2 = bool2x3(false, false, true, false, true, false); + bool2x3 b2 = bool2x3(false, false, true, true, false, false); + bool2x3 r2 = bool2x3(false, false, false, true, true, false); + TestUtils.AreEqual(a2 ^ b2, r2); + + bool2x3 a3 = bool2x3(false, false, true, true, true, true); + bool2x3 b3 = bool2x3(true, true, true, true, false, true); + bool2x3 r3 = bool2x3(true, true, false, false, true, false); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void bool2x3_operator_bitwise_xor_wide_scalar() + { + bool2x3 a0 = bool2x3(true, false, false, true, true, false); + bool b0 = (false); + bool2x3 r0 = bool2x3(true, false, false, true, true, false); + TestUtils.AreEqual(a0 ^ b0, r0); + + bool2x3 a1 = bool2x3(false, true, false, true, true, false); + bool b1 = (false); + bool2x3 r1 = bool2x3(false, true, false, true, true, false); + TestUtils.AreEqual(a1 ^ b1, r1); + + bool2x3 a2 = bool2x3(true, false, false, false, false, false); + bool b2 = (true); + bool2x3 r2 = bool2x3(false, true, true, true, true, true); + TestUtils.AreEqual(a2 ^ b2, r2); + + bool2x3 a3 = bool2x3(false, false, false, true, true, false); + bool b3 = (false); + bool2x3 r3 = bool2x3(false, false, false, true, true, false); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void bool2x3_operator_bitwise_xor_scalar_wide() + { + bool a0 = (true); + bool2x3 b0 = bool2x3(true, false, false, true, false, true); + bool2x3 r0 = bool2x3(false, true, true, false, true, false); + TestUtils.AreEqual(a0 ^ b0, r0); + + bool a1 = (true); + bool2x3 b1 = bool2x3(true, true, true, true, true, true); + bool2x3 r1 = bool2x3(false, false, false, false, false, false); + TestUtils.AreEqual(a1 ^ b1, r1); + + bool a2 = (true); + bool2x3 b2 = bool2x3(true, true, false, true, false, true); + bool2x3 r2 = bool2x3(false, false, true, false, true, false); + TestUtils.AreEqual(a2 ^ b2, r2); + + bool a3 = (false); + bool2x3 b3 = bool2x3(false, false, false, true, false, true); + bool2x3 r3 = bool2x3(false, false, false, true, false, true); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void bool2x3_operator_logical_not() + { + bool2x3 a0 = bool2x3(false, true, false, true, false, false); + bool2x3 r0 = bool2x3(true, false, true, false, true, true); + TestUtils.AreEqual(!a0, r0); + + bool2x3 a1 = bool2x3(false, true, false, true, true, true); + bool2x3 r1 = bool2x3(true, false, true, false, false, false); + TestUtils.AreEqual(!a1, r1); + + bool2x3 a2 = bool2x3(false, false, true, false, false, true); + bool2x3 r2 = bool2x3(true, true, false, true, true, false); + TestUtils.AreEqual(!a2, r2); + + bool2x3 a3 = bool2x3(false, false, false, true, true, true); + bool2x3 r3 = bool2x3(true, true, true, false, false, false); + TestUtils.AreEqual(!a3, r3); + } + + + } +} diff --git a/package/Tests/Tests/Shared/TestBool2x3.gen.cs.meta b/package/Tests/Tests/Shared/TestBool2x3.gen.cs.meta new file mode 100755 index 000000000..f7b3ffb52 --- /dev/null +++ b/package/Tests/Tests/Shared/TestBool2x3.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a058a163908539c4d9aa34e925e16c84 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/package/Tests/Tests/Shared/TestBool2x4.gen.cs b/package/Tests/Tests/Shared/TestBool2x4.gen.cs new file mode 100755 index 000000000..7112e448c --- /dev/null +++ b/package/Tests/Tests/Shared/TestBool2x4.gen.cs @@ -0,0 +1,400 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using NUnit.Framework; +using static Unity.Mathematics.math; +using Burst.Compiler.IL.Tests; + +namespace Unity.Mathematics.Tests +{ + [TestFixture] + public class TestBool2x4 + { + [TestCompiler] + public static void bool2x4_operator_equal_wide_wide() + { + bool2x4 a0 = bool2x4(false, false, true, true, true, true, true, true); + bool2x4 b0 = bool2x4(false, true, true, false, true, true, false, true); + bool2x4 r0 = bool2x4(true, false, true, false, true, true, false, true); + TestUtils.AreEqual(a0 == b0, r0); + + bool2x4 a1 = bool2x4(true, true, true, true, true, false, false, false); + bool2x4 b1 = bool2x4(true, true, false, false, false, false, true, true); + bool2x4 r1 = bool2x4(true, true, false, false, false, true, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + bool2x4 a2 = bool2x4(true, true, true, true, true, false, false, false); + bool2x4 b2 = bool2x4(true, true, true, false, false, true, false, true); + bool2x4 r2 = bool2x4(true, true, true, false, false, false, true, false); + TestUtils.AreEqual(a2 == b2, r2); + + bool2x4 a3 = bool2x4(false, true, false, true, true, true, true, true); + bool2x4 b3 = bool2x4(false, true, true, false, false, true, false, false); + bool2x4 r3 = bool2x4(true, true, false, false, false, true, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void bool2x4_operator_equal_wide_scalar() + { + bool2x4 a0 = bool2x4(true, true, false, true, true, false, true, true); + bool b0 = (false); + bool2x4 r0 = bool2x4(false, false, true, false, false, true, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + bool2x4 a1 = bool2x4(true, false, false, false, true, false, false, false); + bool b1 = (false); + bool2x4 r1 = bool2x4(false, true, true, true, false, true, true, true); + TestUtils.AreEqual(a1 == b1, r1); + + bool2x4 a2 = bool2x4(false, true, false, false, true, false, true, false); + bool b2 = (true); + bool2x4 r2 = bool2x4(false, true, false, false, true, false, true, false); + TestUtils.AreEqual(a2 == b2, r2); + + bool2x4 a3 = bool2x4(true, true, false, false, true, false, true, true); + bool b3 = (false); + bool2x4 r3 = bool2x4(false, false, true, true, false, true, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void bool2x4_operator_equal_scalar_wide() + { + bool a0 = (true); + bool2x4 b0 = bool2x4(false, false, true, false, true, false, true, false); + bool2x4 r0 = bool2x4(false, false, true, false, true, false, true, false); + TestUtils.AreEqual(a0 == b0, r0); + + bool a1 = (false); + bool2x4 b1 = bool2x4(false, false, true, false, true, true, true, false); + bool2x4 r1 = bool2x4(true, true, false, true, false, false, false, true); + TestUtils.AreEqual(a1 == b1, r1); + + bool a2 = (true); + bool2x4 b2 = bool2x4(true, false, false, true, false, false, true, false); + bool2x4 r2 = bool2x4(true, false, false, true, false, false, true, false); + TestUtils.AreEqual(a2 == b2, r2); + + bool a3 = (false); + bool2x4 b3 = bool2x4(true, false, false, true, false, true, true, true); + bool2x4 r3 = bool2x4(false, true, true, false, true, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void bool2x4_operator_not_equal_wide_wide() + { + bool2x4 a0 = bool2x4(true, false, false, true, true, true, true, true); + bool2x4 b0 = bool2x4(false, false, true, false, false, false, false, false); + bool2x4 r0 = bool2x4(true, false, true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + bool2x4 a1 = bool2x4(true, true, false, true, true, false, true, false); + bool2x4 b1 = bool2x4(true, true, false, false, false, false, false, true); + bool2x4 r1 = bool2x4(false, false, false, true, true, false, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + bool2x4 a2 = bool2x4(false, true, true, true, false, true, false, false); + bool2x4 b2 = bool2x4(true, false, false, false, false, false, true, true); + bool2x4 r2 = bool2x4(true, true, true, true, false, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + bool2x4 a3 = bool2x4(false, true, true, true, false, false, true, false); + bool2x4 b3 = bool2x4(true, false, false, false, true, true, false, false); + bool2x4 r3 = bool2x4(true, true, true, true, true, true, true, false); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void bool2x4_operator_not_equal_wide_scalar() + { + bool2x4 a0 = bool2x4(false, false, true, true, true, true, false, false); + bool b0 = (false); + bool2x4 r0 = bool2x4(false, false, true, true, true, true, false, false); + TestUtils.AreEqual(a0 != b0, r0); + + bool2x4 a1 = bool2x4(true, true, false, true, false, true, true, true); + bool b1 = (false); + bool2x4 r1 = bool2x4(true, true, false, true, false, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + bool2x4 a2 = bool2x4(true, false, true, true, true, true, false, false); + bool b2 = (false); + bool2x4 r2 = bool2x4(true, false, true, true, true, true, false, false); + TestUtils.AreEqual(a2 != b2, r2); + + bool2x4 a3 = bool2x4(false, false, true, true, true, false, true, false); + bool b3 = (false); + bool2x4 r3 = bool2x4(false, false, true, true, true, false, true, false); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void bool2x4_operator_not_equal_scalar_wide() + { + bool a0 = (true); + bool2x4 b0 = bool2x4(true, true, false, true, false, true, false, false); + bool2x4 r0 = bool2x4(false, false, true, false, true, false, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + bool a1 = (false); + bool2x4 b1 = bool2x4(true, true, true, false, true, true, false, false); + bool2x4 r1 = bool2x4(true, true, true, false, true, true, false, false); + TestUtils.AreEqual(a1 != b1, r1); + + bool a2 = (false); + bool2x4 b2 = bool2x4(true, true, false, false, true, false, true, false); + bool2x4 r2 = bool2x4(true, true, false, false, true, false, true, false); + TestUtils.AreEqual(a2 != b2, r2); + + bool a3 = (false); + bool2x4 b3 = bool2x4(true, true, true, false, false, true, false, false); + bool2x4 r3 = bool2x4(true, true, true, false, false, true, false, false); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void bool2x4_operator_bitwise_and_wide_wide() + { + bool2x4 a0 = bool2x4(false, true, true, false, false, false, true, false); + bool2x4 b0 = bool2x4(false, true, false, false, false, true, true, false); + bool2x4 r0 = bool2x4(false, true, false, false, false, false, true, false); + TestUtils.AreEqual(a0 & b0, r0); + + bool2x4 a1 = bool2x4(true, true, false, true, false, false, true, false); + bool2x4 b1 = bool2x4(false, true, false, true, true, false, true, true); + bool2x4 r1 = bool2x4(false, true, false, true, false, false, true, false); + TestUtils.AreEqual(a1 & b1, r1); + + bool2x4 a2 = bool2x4(false, false, false, true, false, true, true, false); + bool2x4 b2 = bool2x4(false, false, false, true, false, false, false, true); + bool2x4 r2 = bool2x4(false, false, false, true, false, false, false, false); + TestUtils.AreEqual(a2 & b2, r2); + + bool2x4 a3 = bool2x4(false, false, true, false, false, true, false, false); + bool2x4 b3 = bool2x4(true, false, false, false, true, false, false, true); + bool2x4 r3 = bool2x4(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void bool2x4_operator_bitwise_and_wide_scalar() + { + bool2x4 a0 = bool2x4(false, false, true, true, true, false, true, true); + bool b0 = (false); + bool2x4 r0 = bool2x4(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a0 & b0, r0); + + bool2x4 a1 = bool2x4(true, false, false, true, false, true, false, false); + bool b1 = (false); + bool2x4 r1 = bool2x4(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 & b1, r1); + + bool2x4 a2 = bool2x4(true, true, true, false, true, false, true, false); + bool b2 = (false); + bool2x4 r2 = bool2x4(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 & b2, r2); + + bool2x4 a3 = bool2x4(true, true, false, false, true, false, false, true); + bool b3 = (true); + bool2x4 r3 = bool2x4(true, true, false, false, true, false, false, true); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void bool2x4_operator_bitwise_and_scalar_wide() + { + bool a0 = (true); + bool2x4 b0 = bool2x4(false, false, true, true, false, false, true, true); + bool2x4 r0 = bool2x4(false, false, true, true, false, false, true, true); + TestUtils.AreEqual(a0 & b0, r0); + + bool a1 = (true); + bool2x4 b1 = bool2x4(false, true, false, true, true, false, false, true); + bool2x4 r1 = bool2x4(false, true, false, true, true, false, false, true); + TestUtils.AreEqual(a1 & b1, r1); + + bool a2 = (true); + bool2x4 b2 = bool2x4(false, true, true, false, true, true, true, true); + bool2x4 r2 = bool2x4(false, true, true, false, true, true, true, true); + TestUtils.AreEqual(a2 & b2, r2); + + bool a3 = (true); + bool2x4 b3 = bool2x4(false, true, true, true, false, true, false, true); + bool2x4 r3 = bool2x4(false, true, true, true, false, true, false, true); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void bool2x4_operator_bitwise_or_wide_wide() + { + bool2x4 a0 = bool2x4(true, false, false, true, true, false, false, false); + bool2x4 b0 = bool2x4(true, false, true, true, true, true, true, true); + bool2x4 r0 = bool2x4(true, false, true, true, true, true, true, true); + TestUtils.AreEqual(a0 | b0, r0); + + bool2x4 a1 = bool2x4(false, false, true, true, false, false, true, true); + bool2x4 b1 = bool2x4(true, true, false, false, true, true, true, true); + bool2x4 r1 = bool2x4(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 | b1, r1); + + bool2x4 a2 = bool2x4(true, false, true, true, false, true, false, false); + bool2x4 b2 = bool2x4(true, true, false, false, false, false, true, false); + bool2x4 r2 = bool2x4(true, true, true, true, false, true, true, false); + TestUtils.AreEqual(a2 | b2, r2); + + bool2x4 a3 = bool2x4(false, false, true, false, true, false, false, true); + bool2x4 b3 = bool2x4(false, true, false, true, false, false, true, true); + bool2x4 r3 = bool2x4(false, true, true, true, true, false, true, true); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void bool2x4_operator_bitwise_or_wide_scalar() + { + bool2x4 a0 = bool2x4(false, false, true, true, false, true, false, true); + bool b0 = (true); + bool2x4 r0 = bool2x4(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 | b0, r0); + + bool2x4 a1 = bool2x4(false, true, false, false, true, false, true, false); + bool b1 = (true); + bool2x4 r1 = bool2x4(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 | b1, r1); + + bool2x4 a2 = bool2x4(true, false, false, true, true, false, true, true); + bool b2 = (false); + bool2x4 r2 = bool2x4(true, false, false, true, true, false, true, true); + TestUtils.AreEqual(a2 | b2, r2); + + bool2x4 a3 = bool2x4(true, true, true, true, true, false, false, false); + bool b3 = (true); + bool2x4 r3 = bool2x4(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void bool2x4_operator_bitwise_or_scalar_wide() + { + bool a0 = (true); + bool2x4 b0 = bool2x4(true, true, false, false, false, false, true, true); + bool2x4 r0 = bool2x4(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 | b0, r0); + + bool a1 = (false); + bool2x4 b1 = bool2x4(true, true, false, false, false, false, false, false); + bool2x4 r1 = bool2x4(true, true, false, false, false, false, false, false); + TestUtils.AreEqual(a1 | b1, r1); + + bool a2 = (false); + bool2x4 b2 = bool2x4(false, true, false, true, true, true, true, true); + bool2x4 r2 = bool2x4(false, true, false, true, true, true, true, true); + TestUtils.AreEqual(a2 | b2, r2); + + bool a3 = (false); + bool2x4 b3 = bool2x4(true, false, false, true, true, false, false, false); + bool2x4 r3 = bool2x4(true, false, false, true, true, false, false, false); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void bool2x4_operator_bitwise_xor_wide_wide() + { + bool2x4 a0 = bool2x4(true, false, true, true, true, true, false, false); + bool2x4 b0 = bool2x4(false, true, false, false, false, true, false, false); + bool2x4 r0 = bool2x4(true, true, true, true, true, false, false, false); + TestUtils.AreEqual(a0 ^ b0, r0); + + bool2x4 a1 = bool2x4(false, false, true, false, false, false, true, false); + bool2x4 b1 = bool2x4(true, true, true, false, false, false, true, true); + bool2x4 r1 = bool2x4(true, true, false, false, false, false, false, true); + TestUtils.AreEqual(a1 ^ b1, r1); + + bool2x4 a2 = bool2x4(true, false, false, false, true, true, true, true); + bool2x4 b2 = bool2x4(false, false, true, true, true, true, false, true); + bool2x4 r2 = bool2x4(true, false, true, true, false, false, true, false); + TestUtils.AreEqual(a2 ^ b2, r2); + + bool2x4 a3 = bool2x4(true, false, true, true, false, false, true, false); + bool2x4 b3 = bool2x4(true, false, false, false, true, false, false, false); + bool2x4 r3 = bool2x4(false, false, true, true, true, false, true, false); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void bool2x4_operator_bitwise_xor_wide_scalar() + { + bool2x4 a0 = bool2x4(true, false, false, true, true, false, false, false); + bool b0 = (false); + bool2x4 r0 = bool2x4(true, false, false, true, true, false, false, false); + TestUtils.AreEqual(a0 ^ b0, r0); + + bool2x4 a1 = bool2x4(true, true, true, false, true, true, false, false); + bool b1 = (false); + bool2x4 r1 = bool2x4(true, true, true, false, true, true, false, false); + TestUtils.AreEqual(a1 ^ b1, r1); + + bool2x4 a2 = bool2x4(false, false, false, false, false, false, true, true); + bool b2 = (false); + bool2x4 r2 = bool2x4(false, false, false, false, false, false, true, true); + TestUtils.AreEqual(a2 ^ b2, r2); + + bool2x4 a3 = bool2x4(false, false, false, false, true, true, false, false); + bool b3 = (false); + bool2x4 r3 = bool2x4(false, false, false, false, true, true, false, false); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void bool2x4_operator_bitwise_xor_scalar_wide() + { + bool a0 = (true); + bool2x4 b0 = bool2x4(true, false, false, true, false, true, true, true); + bool2x4 r0 = bool2x4(false, true, true, false, true, false, false, false); + TestUtils.AreEqual(a0 ^ b0, r0); + + bool a1 = (true); + bool2x4 b1 = bool2x4(true, true, true, true, true, true, true, false); + bool2x4 r1 = bool2x4(false, false, false, false, false, false, false, true); + TestUtils.AreEqual(a1 ^ b1, r1); + + bool a2 = (true); + bool2x4 b2 = bool2x4(false, true, false, false, false, false, true, false); + bool2x4 r2 = bool2x4(true, false, true, true, true, true, false, true); + TestUtils.AreEqual(a2 ^ b2, r2); + + bool a3 = (true); + bool2x4 b3 = bool2x4(false, true, true, false, true, false, false, false); + bool2x4 r3 = bool2x4(true, false, false, true, false, true, true, true); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void bool2x4_operator_logical_not() + { + bool2x4 a0 = bool2x4(false, true, false, true, false, false, false, true); + bool2x4 r0 = bool2x4(true, false, true, false, true, true, true, false); + TestUtils.AreEqual(!a0, r0); + + bool2x4 a1 = bool2x4(true, true, true, true, false, false, false, true); + bool2x4 r1 = bool2x4(false, false, false, false, true, true, true, false); + TestUtils.AreEqual(!a1, r1); + + bool2x4 a2 = bool2x4(false, true, false, true, false, false, true, true); + bool2x4 r2 = bool2x4(true, false, true, false, true, true, false, false); + TestUtils.AreEqual(!a2, r2); + + bool2x4 a3 = bool2x4(true, true, true, false, true, false, false, true); + bool2x4 r3 = bool2x4(false, false, false, true, false, true, true, false); + TestUtils.AreEqual(!a3, r3); + } + + + } +} diff --git a/package/Tests/Tests/Shared/TestBool2x4.gen.cs.meta b/package/Tests/Tests/Shared/TestBool2x4.gen.cs.meta new file mode 100755 index 000000000..96b1e80ac --- /dev/null +++ b/package/Tests/Tests/Shared/TestBool2x4.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: fa56fbe206d514b43a4f21c1ecd2a9bd +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/package/Tests/Tests/Shared/TestBool3.gen.cs b/package/Tests/Tests/Shared/TestBool3.gen.cs new file mode 100755 index 000000000..a3fcfc51c --- /dev/null +++ b/package/Tests/Tests/Shared/TestBool3.gen.cs @@ -0,0 +1,436 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using NUnit.Framework; +using static Unity.Mathematics.math; +using Burst.Compiler.IL.Tests; + +namespace Unity.Mathematics.Tests +{ + [TestFixture] + public class TestBool3 + { + [TestCompiler] + public static void bool3_constructor() + { + bool3 a = new bool3(false, true, false); + TestUtils.AreEqual(a.x, false); + TestUtils.AreEqual(a.y, true); + TestUtils.AreEqual(a.z, false); + } + + [TestCompiler] + public static void bool3_scalar_constructor() + { + bool3 a = new bool3(true); + TestUtils.AreEqual(a.x, true); + TestUtils.AreEqual(a.y, true); + TestUtils.AreEqual(a.z, true); + } + + [TestCompiler] + public static void bool3_static_constructor() + { + bool3 a = bool3(false, true, false); + TestUtils.AreEqual(a.x, false); + TestUtils.AreEqual(a.y, true); + TestUtils.AreEqual(a.z, false); + } + + [TestCompiler] + public static void bool3_static_scalar_constructor() + { + bool3 a = bool3(true); + TestUtils.AreEqual(a.x, true); + TestUtils.AreEqual(a.y, true); + TestUtils.AreEqual(a.z, true); + } + + [TestCompiler] + public static void bool3_operator_equal_wide_wide() + { + bool3 a0 = bool3(false, false, true); + bool3 b0 = bool3(false, true, true); + bool3 r0 = bool3(true, false, true); + TestUtils.AreEqual(a0 == b0, r0); + + bool3 a1 = bool3(true, true, true); + bool3 b1 = bool3(false, true, true); + bool3 r1 = bool3(false, true, true); + TestUtils.AreEqual(a1 == b1, r1); + + bool3 a2 = bool3(true, true, true); + bool3 b2 = bool3(false, true, true); + bool3 r2 = bool3(false, true, true); + TestUtils.AreEqual(a2 == b2, r2); + + bool3 a3 = bool3(true, true, true); + bool3 b3 = bool3(true, false, false); + bool3 r3 = bool3(true, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void bool3_operator_equal_wide_scalar() + { + bool3 a0 = bool3(true, true, false); + bool b0 = (false); + bool3 r0 = bool3(false, false, true); + TestUtils.AreEqual(a0 == b0, r0); + + bool3 a1 = bool3(true, false, true); + bool b1 = (true); + bool3 r1 = bool3(true, false, true); + TestUtils.AreEqual(a1 == b1, r1); + + bool3 a2 = bool3(true, false, false); + bool b2 = (true); + bool3 r2 = bool3(true, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + bool3 a3 = bool3(false, true, false); + bool b3 = (false); + bool3 r3 = bool3(true, false, true); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void bool3_operator_equal_scalar_wide() + { + bool a0 = (true); + bool3 b0 = bool3(false, false, true); + bool3 r0 = bool3(false, false, true); + TestUtils.AreEqual(a0 == b0, r0); + + bool a1 = (false); + bool3 b1 = bool3(true, false, true); + bool3 r1 = bool3(false, true, false); + TestUtils.AreEqual(a1 == b1, r1); + + bool a2 = (false); + bool3 b2 = bool3(false, false, false); + bool3 r2 = bool3(true, true, true); + TestUtils.AreEqual(a2 == b2, r2); + + bool a3 = (true); + bool3 b3 = bool3(false, true, true); + bool3 r3 = bool3(false, true, true); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void bool3_operator_not_equal_wide_wide() + { + bool3 a0 = bool3(true, false, false); + bool3 b0 = bool3(false, false, true); + bool3 r0 = bool3(true, false, true); + TestUtils.AreEqual(a0 != b0, r0); + + bool3 a1 = bool3(true, true, true); + bool3 b1 = bool3(false, false, false); + bool3 r1 = bool3(true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + bool3 a2 = bool3(true, true, true); + bool3 b2 = bool3(false, false, true); + bool3 r2 = bool3(true, true, false); + TestUtils.AreEqual(a2 != b2, r2); + + bool3 a3 = bool3(true, false, true); + bool3 b3 = bool3(true, false, false); + bool3 r3 = bool3(false, false, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void bool3_operator_not_equal_wide_scalar() + { + bool3 a0 = bool3(false, false, true); + bool b0 = (false); + bool3 r0 = bool3(false, false, true); + TestUtils.AreEqual(a0 != b0, r0); + + bool3 a1 = bool3(true, true, false); + bool b1 = (true); + bool3 r1 = bool3(false, false, true); + TestUtils.AreEqual(a1 != b1, r1); + + bool3 a2 = bool3(false, false, true); + bool b2 = (true); + bool3 r2 = bool3(true, true, false); + TestUtils.AreEqual(a2 != b2, r2); + + bool3 a3 = bool3(false, false, true); + bool b3 = (true); + bool3 r3 = bool3(true, true, false); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void bool3_operator_not_equal_scalar_wide() + { + bool a0 = (true); + bool3 b0 = bool3(true, true, false); + bool3 r0 = bool3(false, false, true); + TestUtils.AreEqual(a0 != b0, r0); + + bool a1 = (true); + bool3 b1 = bool3(false, true, false); + bool3 r1 = bool3(true, false, true); + TestUtils.AreEqual(a1 != b1, r1); + + bool a2 = (false); + bool3 b2 = bool3(false, true, true); + bool3 r2 = bool3(false, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + bool a3 = (true); + bool3 b3 = bool3(false, true, true); + bool3 r3 = bool3(true, false, false); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void bool3_operator_bitwise_and_wide_wide() + { + bool3 a0 = bool3(false, true, true); + bool3 b0 = bool3(false, true, false); + bool3 r0 = bool3(false, true, false); + TestUtils.AreEqual(a0 & b0, r0); + + bool3 a1 = bool3(false, false, false); + bool3 b1 = bool3(false, false, true); + bool3 r1 = bool3(false, false, false); + TestUtils.AreEqual(a1 & b1, r1); + + bool3 a2 = bool3(true, false, true); + bool3 b2 = bool3(true, false, false); + bool3 r2 = bool3(true, false, false); + TestUtils.AreEqual(a2 & b2, r2); + + bool3 a3 = bool3(true, false, true); + bool3 b3 = bool3(true, false, true); + bool3 r3 = bool3(true, false, true); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void bool3_operator_bitwise_and_wide_scalar() + { + bool3 a0 = bool3(false, false, true); + bool b0 = (false); + bool3 r0 = bool3(false, false, false); + TestUtils.AreEqual(a0 & b0, r0); + + bool3 a1 = bool3(true, false, true); + bool b1 = (true); + bool3 r1 = bool3(true, false, true); + TestUtils.AreEqual(a1 & b1, r1); + + bool3 a2 = bool3(true, false, false); + bool b2 = (true); + bool3 r2 = bool3(true, false, false); + TestUtils.AreEqual(a2 & b2, r2); + + bool3 a3 = bool3(false, false, true); + bool b3 = (true); + bool3 r3 = bool3(false, false, true); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void bool3_operator_bitwise_and_scalar_wide() + { + bool a0 = (true); + bool3 b0 = bool3(false, false, true); + bool3 r0 = bool3(false, false, true); + TestUtils.AreEqual(a0 & b0, r0); + + bool a1 = (true); + bool3 b1 = bool3(false, false, true); + bool3 r1 = bool3(false, false, true); + TestUtils.AreEqual(a1 & b1, r1); + + bool a2 = (true); + bool3 b2 = bool3(true, false, true); + bool3 r2 = bool3(true, false, true); + TestUtils.AreEqual(a2 & b2, r2); + + bool a3 = (false); + bool3 b3 = bool3(true, true, false); + bool3 r3 = bool3(false, false, false); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void bool3_operator_bitwise_or_wide_wide() + { + bool3 a0 = bool3(true, false, false); + bool3 b0 = bool3(true, false, true); + bool3 r0 = bool3(true, false, true); + TestUtils.AreEqual(a0 | b0, r0); + + bool3 a1 = bool3(true, true, false); + bool3 b1 = bool3(true, true, true); + bool3 r1 = bool3(true, true, true); + TestUtils.AreEqual(a1 | b1, r1); + + bool3 a2 = bool3(false, false, false); + bool3 b2 = bool3(true, true, true); + bool3 r2 = bool3(true, true, true); + TestUtils.AreEqual(a2 | b2, r2); + + bool3 a3 = bool3(false, true, true); + bool3 b3 = bool3(true, false, false); + bool3 r3 = bool3(true, true, true); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void bool3_operator_bitwise_or_wide_scalar() + { + bool3 a0 = bool3(false, false, true); + bool b0 = (true); + bool3 r0 = bool3(true, true, true); + TestUtils.AreEqual(a0 | b0, r0); + + bool3 a1 = bool3(true, true, false); + bool b1 = (false); + bool3 r1 = bool3(true, true, false); + TestUtils.AreEqual(a1 | b1, r1); + + bool3 a2 = bool3(true, true, true); + bool b2 = (false); + bool3 r2 = bool3(true, true, true); + TestUtils.AreEqual(a2 | b2, r2); + + bool3 a3 = bool3(false, true, false); + bool b3 = (false); + bool3 r3 = bool3(false, true, false); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void bool3_operator_bitwise_or_scalar_wide() + { + bool a0 = (true); + bool3 b0 = bool3(true, true, false); + bool3 r0 = bool3(true, true, true); + TestUtils.AreEqual(a0 | b0, r0); + + bool a1 = (false); + bool3 b1 = bool3(false, false, true); + bool3 r1 = bool3(false, false, true); + TestUtils.AreEqual(a1 | b1, r1); + + bool a2 = (true); + bool3 b2 = bool3(false, true, true); + bool3 r2 = bool3(true, true, true); + TestUtils.AreEqual(a2 | b2, r2); + + bool a3 = (false); + bool3 b3 = bool3(false, false, false); + bool3 r3 = bool3(false, false, false); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void bool3_operator_bitwise_xor_wide_wide() + { + bool3 a0 = bool3(true, false, true); + bool3 b0 = bool3(false, true, false); + bool3 r0 = bool3(true, true, true); + TestUtils.AreEqual(a0 ^ b0, r0); + + bool3 a1 = bool3(true, true, true); + bool3 b1 = bool3(false, false, true); + bool3 r1 = bool3(true, true, false); + TestUtils.AreEqual(a1 ^ b1, r1); + + bool3 a2 = bool3(false, false, false); + bool3 b2 = bool3(false, false, true); + bool3 r2 = bool3(false, false, true); + TestUtils.AreEqual(a2 ^ b2, r2); + + bool3 a3 = bool3(false, true, false); + bool3 b3 = bool3(true, true, false); + bool3 r3 = bool3(true, false, false); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void bool3_operator_bitwise_xor_wide_scalar() + { + bool3 a0 = bool3(true, false, false); + bool b0 = (false); + bool3 r0 = bool3(true, false, false); + TestUtils.AreEqual(a0 ^ b0, r0); + + bool3 a1 = bool3(true, false, false); + bool b1 = (true); + bool3 r1 = bool3(false, true, true); + TestUtils.AreEqual(a1 ^ b1, r1); + + bool3 a2 = bool3(false, false, true); + bool b2 = (true); + bool3 r2 = bool3(true, true, false); + TestUtils.AreEqual(a2 ^ b2, r2); + + bool3 a3 = bool3(true, true, true); + bool b3 = (false); + bool3 r3 = bool3(true, true, true); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void bool3_operator_bitwise_xor_scalar_wide() + { + bool a0 = (true); + bool3 b0 = bool3(true, false, false); + bool3 r0 = bool3(false, true, true); + TestUtils.AreEqual(a0 ^ b0, r0); + + bool a1 = (true); + bool3 b1 = bool3(false, true, true); + bool3 r1 = bool3(true, false, false); + TestUtils.AreEqual(a1 ^ b1, r1); + + bool a2 = (true); + bool3 b2 = bool3(true, true, true); + bool3 r2 = bool3(false, false, false); + TestUtils.AreEqual(a2 ^ b2, r2); + + bool a3 = (true); + bool3 b3 = bool3(true, true, true); + bool3 r3 = bool3(false, false, false); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void bool3_operator_logical_not() + { + bool3 a0 = bool3(false, true, false); + bool3 r0 = bool3(true, false, true); + TestUtils.AreEqual(!a0, r0); + + bool3 a1 = bool3(true, false, false); + bool3 r1 = bool3(false, true, true); + TestUtils.AreEqual(!a1, r1); + + bool3 a2 = bool3(true, false, true); + bool3 r2 = bool3(false, true, false); + TestUtils.AreEqual(!a2, r2); + + bool3 a3 = bool3(true, false, false); + bool3 r3 = bool3(false, true, true); + TestUtils.AreEqual(!a3, r3); + } + + + } +} diff --git a/package/Tests/Tests/Shared/TestBool3.gen.cs.meta b/package/Tests/Tests/Shared/TestBool3.gen.cs.meta new file mode 100755 index 000000000..32e56c8e8 --- /dev/null +++ b/package/Tests/Tests/Shared/TestBool3.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d208b4e1c03551a499e9169aac737e5b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/package/Tests/Tests/Shared/TestBool3x2.gen.cs b/package/Tests/Tests/Shared/TestBool3x2.gen.cs new file mode 100755 index 000000000..e0af4f750 --- /dev/null +++ b/package/Tests/Tests/Shared/TestBool3x2.gen.cs @@ -0,0 +1,400 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using NUnit.Framework; +using static Unity.Mathematics.math; +using Burst.Compiler.IL.Tests; + +namespace Unity.Mathematics.Tests +{ + [TestFixture] + public class TestBool3x2 + { + [TestCompiler] + public static void bool3x2_operator_equal_wide_wide() + { + bool3x2 a0 = bool3x2(false, false, true, true, true, true); + bool3x2 b0 = bool3x2(false, true, true, false, true, true); + bool3x2 r0 = bool3x2(true, false, true, false, true, true); + TestUtils.AreEqual(a0 == b0, r0); + + bool3x2 a1 = bool3x2(true, true, true, true, true, true); + bool3x2 b1 = bool3x2(false, true, true, true, false, false); + bool3x2 r1 = bool3x2(false, true, true, true, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + bool3x2 a2 = bool3x2(true, false, false, false, true, true); + bool3x2 b2 = bool3x2(false, false, true, true, true, true); + bool3x2 r2 = bool3x2(false, true, false, false, true, true); + TestUtils.AreEqual(a2 == b2, r2); + + bool3x2 a3 = bool3x2(true, true, true, false, false, false); + bool3x2 b3 = bool3x2(true, false, false, true, false, true); + bool3x2 r3 = bool3x2(true, false, false, false, true, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void bool3x2_operator_equal_wide_scalar() + { + bool3x2 a0 = bool3x2(true, true, false, true, true, false); + bool b0 = (false); + bool3x2 r0 = bool3x2(false, false, true, false, false, true); + TestUtils.AreEqual(a0 == b0, r0); + + bool3x2 a1 = bool3x2(true, true, false, false, false, false); + bool b1 = (true); + bool3x2 r1 = bool3x2(true, true, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + bool3x2 a2 = bool3x2(true, false, false, false, true, true); + bool b2 = (false); + bool3x2 r2 = bool3x2(false, true, true, true, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + bool3x2 a3 = bool3x2(false, true, false, true, false, true); + bool b3 = (false); + bool3x2 r3 = bool3x2(true, false, true, false, true, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void bool3x2_operator_equal_scalar_wide() + { + bool a0 = (true); + bool3x2 b0 = bool3x2(false, false, true, false, true, false); + bool3x2 r0 = bool3x2(false, false, true, false, true, false); + TestUtils.AreEqual(a0 == b0, r0); + + bool a1 = (true); + bool3x2 b1 = bool3x2(false, false, false, false, true, false); + bool3x2 r1 = bool3x2(false, false, false, false, true, false); + TestUtils.AreEqual(a1 == b1, r1); + + bool a2 = (true); + bool3x2 b2 = bool3x2(true, true, false, true, true, false); + bool3x2 r2 = bool3x2(true, true, false, true, true, false); + TestUtils.AreEqual(a2 == b2, r2); + + bool a3 = (false); + bool3x2 b3 = bool3x2(true, false, false, true, false, false); + bool3x2 r3 = bool3x2(false, true, true, false, true, true); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void bool3x2_operator_not_equal_wide_wide() + { + bool3x2 a0 = bool3x2(true, false, false, true, true, true); + bool3x2 b0 = bool3x2(false, false, true, false, false, false); + bool3x2 r0 = bool3x2(true, false, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + bool3x2 a1 = bool3x2(true, true, true, true, false, true); + bool3x2 b1 = bool3x2(false, false, true, true, false, false); + bool3x2 r1 = bool3x2(true, true, false, false, false, true); + TestUtils.AreEqual(a1 != b1, r1); + + bool3x2 a2 = bool3x2(true, false, true, false, false, true); + bool3x2 b2 = bool3x2(false, false, false, true, true, false); + bool3x2 r2 = bool3x2(true, false, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + bool3x2 a3 = bool3x2(true, true, false, true, false, false); + bool3x2 b3 = bool3x2(false, false, false, false, true, true); + bool3x2 r3 = bool3x2(true, true, false, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void bool3x2_operator_not_equal_wide_scalar() + { + bool3x2 a0 = bool3x2(false, false, true, true, true, true); + bool b0 = (false); + bool3x2 r0 = bool3x2(false, false, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + bool3x2 a1 = bool3x2(false, true, false, true, false, true); + bool b1 = (false); + bool3x2 r1 = bool3x2(false, true, false, true, false, true); + TestUtils.AreEqual(a1 != b1, r1); + + bool3x2 a2 = bool3x2(false, true, true, true, false, false); + bool b2 = (true); + bool3x2 r2 = bool3x2(true, false, false, false, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + bool3x2 a3 = bool3x2(true, true, true, false, false, false); + bool b3 = (true); + bool3x2 r3 = bool3x2(false, false, false, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void bool3x2_operator_not_equal_scalar_wide() + { + bool a0 = (true); + bool3x2 b0 = bool3x2(true, true, false, true, false, true); + bool3x2 r0 = bool3x2(false, false, true, false, true, false); + TestUtils.AreEqual(a0 != b0, r0); + + bool a1 = (false); + bool3x2 b1 = bool3x2(false, false, true, true, true, false); + bool3x2 r1 = bool3x2(false, false, true, true, true, false); + TestUtils.AreEqual(a1 != b1, r1); + + bool a2 = (true); + bool3x2 b2 = bool3x2(true, false, false, false, true, true); + bool3x2 r2 = bool3x2(false, true, true, true, false, false); + TestUtils.AreEqual(a2 != b2, r2); + + bool a3 = (false); + bool3x2 b3 = bool3x2(false, true, false, true, false, false); + bool3x2 r3 = bool3x2(false, true, false, true, false, false); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void bool3x2_operator_bitwise_and_wide_wide() + { + bool3x2 a0 = bool3x2(false, true, true, false, false, false); + bool3x2 b0 = bool3x2(false, true, false, false, false, true); + bool3x2 r0 = bool3x2(false, true, false, false, false, false); + TestUtils.AreEqual(a0 & b0, r0); + + bool3x2 a1 = bool3x2(true, false, true, true, false, true); + bool3x2 b1 = bool3x2(true, false, false, true, false, true); + bool3x2 r1 = bool3x2(true, false, false, true, false, true); + TestUtils.AreEqual(a1 & b1, r1); + + bool3x2 a2 = bool3x2(false, false, true, false, false, false); + bool3x2 b2 = bool3x2(true, false, true, true, false, false); + bool3x2 r2 = bool3x2(false, false, true, false, false, false); + TestUtils.AreEqual(a2 & b2, r2); + + bool3x2 a3 = bool3x2(false, true, false, true, true, false); + bool3x2 b3 = bool3x2(false, true, false, false, false, true); + bool3x2 r3 = bool3x2(false, true, false, false, false, false); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void bool3x2_operator_bitwise_and_wide_scalar() + { + bool3x2 a0 = bool3x2(false, false, true, true, true, false); + bool b0 = (false); + bool3x2 r0 = bool3x2(false, false, false, false, false, false); + TestUtils.AreEqual(a0 & b0, r0); + + bool3x2 a1 = bool3x2(true, true, false, false, false, true); + bool b1 = (true); + bool3x2 r1 = bool3x2(true, true, false, false, false, true); + TestUtils.AreEqual(a1 & b1, r1); + + bool3x2 a2 = bool3x2(false, false, false, true, false, true); + bool b2 = (true); + bool3x2 r2 = bool3x2(false, false, false, true, false, true); + TestUtils.AreEqual(a2 & b2, r2); + + bool3x2 a3 = bool3x2(true, true, false, true, false, true); + bool b3 = (false); + bool3x2 r3 = bool3x2(false, false, false, false, false, false); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void bool3x2_operator_bitwise_and_scalar_wide() + { + bool a0 = (true); + bool3x2 b0 = bool3x2(false, false, true, true, false, false); + bool3x2 r0 = bool3x2(false, false, true, true, false, false); + TestUtils.AreEqual(a0 & b0, r0); + + bool a1 = (true); + bool3x2 b1 = bool3x2(true, true, false, true, false, true); + bool3x2 r1 = bool3x2(true, true, false, true, false, true); + TestUtils.AreEqual(a1 & b1, r1); + + bool a2 = (true); + bool3x2 b2 = bool3x2(false, false, true, true, false, true); + bool3x2 r2 = bool3x2(false, false, true, true, false, true); + TestUtils.AreEqual(a2 & b2, r2); + + bool a3 = (true); + bool3x2 b3 = bool3x2(false, true, true, true, true, true); + bool3x2 r3 = bool3x2(false, true, true, true, true, true); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void bool3x2_operator_bitwise_or_wide_wide() + { + bool3x2 a0 = bool3x2(true, false, false, true, true, false); + bool3x2 b0 = bool3x2(true, false, true, true, true, true); + bool3x2 r0 = bool3x2(true, false, true, true, true, true); + TestUtils.AreEqual(a0 | b0, r0); + + bool3x2 a1 = bool3x2(false, false, false, false, true, true); + bool3x2 b1 = bool3x2(true, true, true, true, false, false); + bool3x2 r1 = bool3x2(true, true, true, true, true, true); + TestUtils.AreEqual(a1 | b1, r1); + + bool3x2 a2 = bool3x2(false, false, true, true, true, false); + bool3x2 b2 = bool3x2(true, true, true, true, true, true); + bool3x2 r2 = bool3x2(true, true, true, true, true, true); + TestUtils.AreEqual(a2 | b2, r2); + + bool3x2 a3 = bool3x2(true, true, false, true, false, false); + bool3x2 b3 = bool3x2(false, false, false, false, true, false); + bool3x2 r3 = bool3x2(true, true, false, true, true, false); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void bool3x2_operator_bitwise_or_wide_scalar() + { + bool3x2 a0 = bool3x2(false, false, true, true, false, true); + bool b0 = (true); + bool3x2 r0 = bool3x2(true, true, true, true, true, true); + TestUtils.AreEqual(a0 | b0, r0); + + bool3x2 a1 = bool3x2(false, false, true, true, false, false); + bool b1 = (true); + bool3x2 r1 = bool3x2(true, true, true, true, true, true); + TestUtils.AreEqual(a1 | b1, r1); + + bool3x2 a2 = bool3x2(true, true, false, true, false, false); + bool b2 = (false); + bool3x2 r2 = bool3x2(true, true, false, true, false, false); + TestUtils.AreEqual(a2 | b2, r2); + + bool3x2 a3 = bool3x2(false, true, false, true, true, true); + bool b3 = (true); + bool3x2 r3 = bool3x2(true, true, true, true, true, true); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void bool3x2_operator_bitwise_or_scalar_wide() + { + bool a0 = (true); + bool3x2 b0 = bool3x2(true, true, false, false, false, false); + bool3x2 r0 = bool3x2(true, true, true, true, true, true); + TestUtils.AreEqual(a0 | b0, r0); + + bool a1 = (true); + bool3x2 b1 = bool3x2(true, false, true, true, false, false); + bool3x2 r1 = bool3x2(true, true, true, true, true, true); + TestUtils.AreEqual(a1 | b1, r1); + + bool a2 = (false); + bool3x2 b2 = bool3x2(false, false, false, false, false, true); + bool3x2 r2 = bool3x2(false, false, false, false, false, true); + TestUtils.AreEqual(a2 | b2, r2); + + bool a3 = (false); + bool3x2 b3 = bool3x2(true, true, true, true, true, false); + bool3x2 r3 = bool3x2(true, true, true, true, true, false); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void bool3x2_operator_bitwise_xor_wide_wide() + { + bool3x2 a0 = bool3x2(true, false, true, true, true, true); + bool3x2 b0 = bool3x2(false, true, false, false, false, true); + bool3x2 r0 = bool3x2(true, true, true, true, true, false); + TestUtils.AreEqual(a0 ^ b0, r0); + + bool3x2 a1 = bool3x2(false, false, false, false, true, false); + bool3x2 b1 = bool3x2(false, false, true, true, true, false); + bool3x2 r1 = bool3x2(false, false, true, true, false, false); + TestUtils.AreEqual(a1 ^ b1, r1); + + bool3x2 a2 = bool3x2(false, false, true, false, true, false); + bool3x2 b2 = bool3x2(false, false, true, true, false, false); + bool3x2 r2 = bool3x2(false, false, false, true, true, false); + TestUtils.AreEqual(a2 ^ b2, r2); + + bool3x2 a3 = bool3x2(false, false, true, true, true, true); + bool3x2 b3 = bool3x2(true, true, true, true, false, true); + bool3x2 r3 = bool3x2(true, true, false, false, true, false); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void bool3x2_operator_bitwise_xor_wide_scalar() + { + bool3x2 a0 = bool3x2(true, false, false, true, true, false); + bool b0 = (false); + bool3x2 r0 = bool3x2(true, false, false, true, true, false); + TestUtils.AreEqual(a0 ^ b0, r0); + + bool3x2 a1 = bool3x2(false, true, false, true, true, false); + bool b1 = (false); + bool3x2 r1 = bool3x2(false, true, false, true, true, false); + TestUtils.AreEqual(a1 ^ b1, r1); + + bool3x2 a2 = bool3x2(true, false, false, false, false, false); + bool b2 = (true); + bool3x2 r2 = bool3x2(false, true, true, true, true, true); + TestUtils.AreEqual(a2 ^ b2, r2); + + bool3x2 a3 = bool3x2(false, false, false, true, true, false); + bool b3 = (false); + bool3x2 r3 = bool3x2(false, false, false, true, true, false); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void bool3x2_operator_bitwise_xor_scalar_wide() + { + bool a0 = (true); + bool3x2 b0 = bool3x2(true, false, false, true, false, true); + bool3x2 r0 = bool3x2(false, true, true, false, true, false); + TestUtils.AreEqual(a0 ^ b0, r0); + + bool a1 = (true); + bool3x2 b1 = bool3x2(true, true, true, true, true, true); + bool3x2 r1 = bool3x2(false, false, false, false, false, false); + TestUtils.AreEqual(a1 ^ b1, r1); + + bool a2 = (true); + bool3x2 b2 = bool3x2(true, true, false, true, false, true); + bool3x2 r2 = bool3x2(false, false, true, false, true, false); + TestUtils.AreEqual(a2 ^ b2, r2); + + bool a3 = (false); + bool3x2 b3 = bool3x2(false, false, false, true, false, true); + bool3x2 r3 = bool3x2(false, false, false, true, false, true); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void bool3x2_operator_logical_not() + { + bool3x2 a0 = bool3x2(false, true, false, true, false, false); + bool3x2 r0 = bool3x2(true, false, true, false, true, true); + TestUtils.AreEqual(!a0, r0); + + bool3x2 a1 = bool3x2(false, true, false, true, true, true); + bool3x2 r1 = bool3x2(true, false, true, false, false, false); + TestUtils.AreEqual(!a1, r1); + + bool3x2 a2 = bool3x2(false, false, true, false, false, true); + bool3x2 r2 = bool3x2(true, true, false, true, true, false); + TestUtils.AreEqual(!a2, r2); + + bool3x2 a3 = bool3x2(false, false, false, true, true, true); + bool3x2 r3 = bool3x2(true, true, true, false, false, false); + TestUtils.AreEqual(!a3, r3); + } + + + } +} diff --git a/package/Tests/Tests/Shared/TestBool3x2.gen.cs.meta b/package/Tests/Tests/Shared/TestBool3x2.gen.cs.meta new file mode 100755 index 000000000..f8b84ee7e --- /dev/null +++ b/package/Tests/Tests/Shared/TestBool3x2.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 2bbc879646b3ce649a77073d236979fc +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/package/Tests/Tests/Shared/TestBool3x3.gen.cs b/package/Tests/Tests/Shared/TestBool3x3.gen.cs new file mode 100755 index 000000000..fc49a39ed --- /dev/null +++ b/package/Tests/Tests/Shared/TestBool3x3.gen.cs @@ -0,0 +1,400 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using NUnit.Framework; +using static Unity.Mathematics.math; +using Burst.Compiler.IL.Tests; + +namespace Unity.Mathematics.Tests +{ + [TestFixture] + public class TestBool3x3 + { + [TestCompiler] + public static void bool3x3_operator_equal_wide_wide() + { + bool3x3 a0 = bool3x3(false, false, true, true, true, true, true, true, true); + bool3x3 b0 = bool3x3(false, true, true, false, true, true, false, true, true); + bool3x3 r0 = bool3x3(true, false, true, false, true, true, false, true, true); + TestUtils.AreEqual(a0 == b0, r0); + + bool3x3 a1 = bool3x3(true, true, true, true, false, false, false, true, true); + bool3x3 b1 = bool3x3(true, false, false, false, false, true, true, true, true); + bool3x3 r1 = bool3x3(true, false, false, false, true, false, false, true, true); + TestUtils.AreEqual(a1 == b1, r1); + + bool3x3 a2 = bool3x3(true, true, true, false, false, false, false, true, false); + bool3x3 b2 = bool3x3(true, false, false, true, false, true, false, true, true); + bool3x3 r2 = bool3x3(true, false, false, false, true, false, true, true, false); + TestUtils.AreEqual(a2 == b2, r2); + + bool3x3 a3 = bool3x3(true, true, true, true, true, false, true, true, false); + bool3x3 b3 = bool3x3(false, false, true, false, false, false, true, true, false); + bool3x3 r3 = bool3x3(false, false, true, false, false, true, true, true, true); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void bool3x3_operator_equal_wide_scalar() + { + bool3x3 a0 = bool3x3(true, true, false, true, true, false, true, true, true); + bool b0 = (false); + bool3x3 r0 = bool3x3(false, false, true, false, false, true, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + bool3x3 a1 = bool3x3(false, false, false, true, false, false, false, false, true); + bool b1 = (false); + bool3x3 r1 = bool3x3(true, true, true, false, true, true, true, true, false); + TestUtils.AreEqual(a1 == b1, r1); + + bool3x3 a2 = bool3x3(true, false, true, false, true, false, true, false, true); + bool b2 = (false); + bool3x3 r2 = bool3x3(false, true, false, true, false, true, false, true, false); + TestUtils.AreEqual(a2 == b2, r2); + + bool3x3 a3 = bool3x3(false, true, false, true, true, false, false, false, false); + bool b3 = (false); + bool3x3 r3 = bool3x3(true, false, true, false, false, true, true, true, true); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void bool3x3_operator_equal_scalar_wide() + { + bool a0 = (true); + bool3x3 b0 = bool3x3(false, false, true, false, true, false, true, false, false); + bool3x3 r0 = bool3x3(false, false, true, false, true, false, true, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + bool a1 = (false); + bool3x3 b1 = bool3x3(false, true, false, true, true, true, false, true, true); + bool3x3 r1 = bool3x3(true, false, true, false, false, false, true, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + bool a2 = (false); + bool3x3 b2 = bool3x3(false, true, false, false, true, false, false, true, false); + bool3x3 r2 = bool3x3(true, false, true, true, false, true, true, false, true); + TestUtils.AreEqual(a2 == b2, r2); + + bool a3 = (false); + bool3x3 b3 = bool3x3(true, false, true, true, true, true, false, false, true); + bool3x3 r3 = bool3x3(false, true, false, false, false, false, true, true, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void bool3x3_operator_not_equal_wide_wide() + { + bool3x3 a0 = bool3x3(true, false, false, true, true, true, true, true, true); + bool3x3 b0 = bool3x3(false, false, true, false, false, false, false, false, true); + bool3x3 r0 = bool3x3(true, false, true, true, true, true, true, true, false); + TestUtils.AreEqual(a0 != b0, r0); + + bool3x3 a1 = bool3x3(true, false, true, true, false, true, false, false, true); + bool3x3 b1 = bool3x3(true, false, false, false, false, false, true, true, false); + bool3x3 r1 = bool3x3(false, false, true, true, false, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + bool3x3 a2 = bool3x3(true, true, false, true, false, false, false, true, true); + bool3x3 b2 = bool3x3(false, false, false, false, true, true, true, false, false); + bool3x3 r2 = bool3x3(true, true, false, true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + bool3x3 a3 = bool3x3(true, false, false, true, false, false, true, false, true); + bool3x3 b3 = bool3x3(false, true, true, false, false, true, false, false, true); + bool3x3 r3 = bool3x3(true, true, true, true, false, true, true, false, false); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void bool3x3_operator_not_equal_wide_scalar() + { + bool3x3 a0 = bool3x3(false, false, true, true, true, true, false, false, true); + bool b0 = (false); + bool3x3 r0 = bool3x3(false, false, true, true, true, true, false, false, true); + TestUtils.AreEqual(a0 != b0, r0); + + bool3x3 a1 = bool3x3(false, false, true, false, true, true, true, true, false); + bool b1 = (true); + bool3x3 r1 = bool3x3(true, true, false, true, false, false, false, false, true); + TestUtils.AreEqual(a1 != b1, r1); + + bool3x3 a2 = bool3x3(false, true, true, true, false, false, false, false, false); + bool b2 = (true); + bool3x3 r2 = bool3x3(true, false, false, false, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + bool3x3 a3 = bool3x3(true, true, false, true, false, true, true, true, false); + bool b3 = (true); + bool3x3 r3 = bool3x3(false, false, true, false, true, false, false, false, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void bool3x3_operator_not_equal_scalar_wide() + { + bool a0 = (true); + bool3x3 b0 = bool3x3(true, true, false, true, false, true, false, false, false); + bool3x3 r0 = bool3x3(false, false, true, false, true, false, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + bool a1 = (true); + bool3x3 b1 = bool3x3(true, true, false, true, true, false, false, false, true); + bool3x3 r1 = bool3x3(false, false, true, false, false, true, true, true, false); + TestUtils.AreEqual(a1 != b1, r1); + + bool a2 = (true); + bool3x3 b2 = bool3x3(false, false, true, false, true, false, false, true, true); + bool3x3 r2 = bool3x3(true, true, false, true, false, true, true, false, false); + TestUtils.AreEqual(a2 != b2, r2); + + bool a3 = (true); + bool3x3 b3 = bool3x3(false, false, true, false, false, true, false, true, false); + bool3x3 r3 = bool3x3(true, true, false, true, true, false, true, false, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void bool3x3_operator_bitwise_and_wide_wide() + { + bool3x3 a0 = bool3x3(false, true, true, false, false, false, true, false, true); + bool3x3 b0 = bool3x3(false, true, false, false, false, true, true, false, false); + bool3x3 r0 = bool3x3(false, true, false, false, false, false, true, false, false); + TestUtils.AreEqual(a0 & b0, r0); + + bool3x3 a1 = bool3x3(true, false, true, false, false, true, false, false, false); + bool3x3 b1 = bool3x3(true, false, true, true, false, true, true, false, false); + bool3x3 r1 = bool3x3(true, false, true, false, false, true, false, false, false); + TestUtils.AreEqual(a1 & b1, r1); + + bool3x3 a2 = bool3x3(false, true, false, true, true, false, false, false, true); + bool3x3 b2 = bool3x3(false, true, false, false, false, true, true, false, false); + bool3x3 r2 = bool3x3(false, true, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 & b2, r2); + + bool3x3 a3 = bool3x3(false, false, true, false, false, true, true, true, false); + bool3x3 b3 = bool3x3(false, true, false, false, true, false, false, false, true); + bool3x3 r3 = bool3x3(false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void bool3x3_operator_bitwise_and_wide_scalar() + { + bool3x3 a0 = bool3x3(false, false, true, true, true, false, true, true, true); + bool b0 = (false); + bool3x3 r0 = bool3x3(false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a0 & b0, r0); + + bool3x3 a1 = bool3x3(false, false, true, false, true, false, false, true, false); + bool b1 = (false); + bool3x3 r1 = bool3x3(false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 & b1, r1); + + bool3x3 a2 = bool3x3(true, false, true, false, true, false, true, true, true); + bool b2 = (true); + bool3x3 r2 = bool3x3(true, false, true, false, true, false, true, true, true); + TestUtils.AreEqual(a2 & b2, r2); + + bool3x3 a3 = bool3x3(false, true, false, false, true, false, true, true, false); + bool b3 = (false); + bool3x3 r3 = bool3x3(false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void bool3x3_operator_bitwise_and_scalar_wide() + { + bool a0 = (true); + bool3x3 b0 = bool3x3(false, false, true, true, false, false, true, true, true); + bool3x3 r0 = bool3x3(false, false, true, true, false, false, true, true, true); + TestUtils.AreEqual(a0 & b0, r0); + + bool a1 = (false); + bool3x3 b1 = bool3x3(true, false, true, true, false, false, true, true, false); + bool3x3 r1 = bool3x3(false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 & b1, r1); + + bool a2 = (true); + bool3x3 b2 = bool3x3(true, false, true, true, true, true, true, false, true); + bool3x3 r2 = bool3x3(true, false, true, true, true, true, true, false, true); + TestUtils.AreEqual(a2 & b2, r2); + + bool a3 = (true); + bool3x3 b3 = bool3x3(true, false, true, false, true, false, true, false, true); + bool3x3 r3 = bool3x3(true, false, true, false, true, false, true, false, true); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void bool3x3_operator_bitwise_or_wide_wide() + { + bool3x3 a0 = bool3x3(true, false, false, true, true, false, false, false, false); + bool3x3 b0 = bool3x3(true, false, true, true, true, true, true, true, true); + bool3x3 r0 = bool3x3(true, false, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 | b0, r0); + + bool3x3 a1 = bool3x3(false, true, true, false, false, true, true, true, false); + bool3x3 b1 = bool3x3(true, false, false, true, true, true, true, true, true); + bool3x3 r1 = bool3x3(true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 | b1, r1); + + bool3x3 a2 = bool3x3(true, true, false, true, false, false, false, false, true); + bool3x3 b2 = bool3x3(false, false, false, false, true, false, false, true, false); + bool3x3 r2 = bool3x3(true, true, false, true, true, false, false, true, true); + TestUtils.AreEqual(a2 | b2, r2); + + bool3x3 a3 = bool3x3(false, true, false, false, true, false, false, false, true); + bool3x3 b3 = bool3x3(true, false, false, true, true, true, true, true, false); + bool3x3 r3 = bool3x3(true, true, false, true, true, true, true, true, true); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void bool3x3_operator_bitwise_or_wide_scalar() + { + bool3x3 a0 = bool3x3(false, false, true, true, false, true, false, true, false); + bool b0 = (true); + bool3x3 r0 = bool3x3(true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 | b0, r0); + + bool3x3 a1 = bool3x3(true, false, false, true, false, true, false, true, false); + bool b1 = (true); + bool3x3 r1 = bool3x3(true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 | b1, r1); + + bool3x3 a2 = bool3x3(false, true, true, false, true, true, true, true, true); + bool b2 = (false); + bool3x3 r2 = bool3x3(false, true, true, false, true, true, true, true, true); + TestUtils.AreEqual(a2 | b2, r2); + + bool3x3 a3 = bool3x3(true, true, false, false, false, true, false, false, true); + bool b3 = (true); + bool3x3 r3 = bool3x3(true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void bool3x3_operator_bitwise_or_scalar_wide() + { + bool a0 = (true); + bool3x3 b0 = bool3x3(true, true, false, false, false, false, true, true, false); + bool3x3 r0 = bool3x3(true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 | b0, r0); + + bool a1 = (true); + bool3x3 b1 = bool3x3(true, false, false, false, false, false, false, false, false); + bool3x3 r1 = bool3x3(true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 | b1, r1); + + bool a2 = (true); + bool3x3 b2 = bool3x3(false, true, true, true, true, true, false, true, false); + bool3x3 r2 = bool3x3(true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 | b2, r2); + + bool a3 = (false); + bool3x3 b3 = bool3x3(true, true, false, false, false, true, false, true, true); + bool3x3 r3 = bool3x3(true, true, false, false, false, true, false, true, true); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void bool3x3_operator_bitwise_xor_wide_wide() + { + bool3x3 a0 = bool3x3(true, false, true, true, true, true, false, false, false); + bool3x3 b0 = bool3x3(false, true, false, false, false, true, false, false, true); + bool3x3 r0 = bool3x3(true, true, true, true, true, false, false, false, true); + TestUtils.AreEqual(a0 ^ b0, r0); + + bool3x3 a1 = bool3x3(false, true, false, false, false, true, false, true, false); + bool3x3 b1 = bool3x3(true, true, false, false, false, true, true, false, false); + bool3x3 r1 = bool3x3(true, false, false, false, false, false, true, true, false); + TestUtils.AreEqual(a1 ^ b1, r1); + + bool3x3 a2 = bool3x3(false, false, true, true, true, true, true, false, true); + bool3x3 b2 = bool3x3(true, true, true, true, false, true, true, false, false); + bool3x3 r2 = bool3x3(true, true, false, false, true, false, false, false, true); + TestUtils.AreEqual(a2 ^ b2, r2); + + bool3x3 a3 = bool3x3(true, false, false, true, false, false, true, true, true); + bool3x3 b3 = bool3x3(false, true, false, false, false, false, false, true, false); + bool3x3 r3 = bool3x3(true, true, false, true, false, false, true, false, true); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void bool3x3_operator_bitwise_xor_wide_scalar() + { + bool3x3 a0 = bool3x3(true, false, false, true, true, false, false, false, true); + bool b0 = (false); + bool3x3 r0 = bool3x3(true, false, false, true, true, false, false, false, true); + TestUtils.AreEqual(a0 ^ b0, r0); + + bool3x3 a1 = bool3x3(false, true, false, true, true, false, false, false, false); + bool b1 = (true); + bool3x3 r1 = bool3x3(true, false, true, false, false, true, true, true, true); + TestUtils.AreEqual(a1 ^ b1, r1); + + bool3x3 a2 = bool3x3(false, false, false, false, true, true, false, false, false); + bool b2 = (false); + bool3x3 r2 = bool3x3(false, false, false, false, true, true, false, false, false); + TestUtils.AreEqual(a2 ^ b2, r2); + + bool3x3 a3 = bool3x3(false, true, true, false, false, false, true, false, false); + bool b3 = (false); + bool3x3 r3 = bool3x3(false, true, true, false, false, false, true, false, false); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void bool3x3_operator_bitwise_xor_scalar_wide() + { + bool a0 = (true); + bool3x3 b0 = bool3x3(true, false, false, true, false, true, true, true, true); + bool3x3 r0 = bool3x3(false, true, true, false, true, false, false, false, false); + TestUtils.AreEqual(a0 ^ b0, r0); + + bool a1 = (true); + bool3x3 b1 = bool3x3(true, true, true, true, true, true, false, true, false); + bool3x3 r1 = bool3x3(false, false, false, false, false, false, true, false, true); + TestUtils.AreEqual(a1 ^ b1, r1); + + bool a2 = (true); + bool3x3 b2 = bool3x3(false, false, false, false, true, false, true, false, true); + bool3x3 r2 = bool3x3(true, true, true, true, false, true, false, true, false); + TestUtils.AreEqual(a2 ^ b2, r2); + + bool a3 = (true); + bool3x3 b3 = bool3x3(false, true, false, false, false, false, true, false, false); + bool3x3 r3 = bool3x3(true, false, true, true, true, true, false, true, true); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void bool3x3_operator_logical_not() + { + bool3x3 a0 = bool3x3(false, true, false, true, false, false, false, true, true); + bool3x3 r0 = bool3x3(true, false, true, false, true, true, true, false, false); + TestUtils.AreEqual(!a0, r0); + + bool3x3 a1 = bool3x3(false, true, true, false, false, false, true, false, false); + bool3x3 r1 = bool3x3(true, false, false, true, true, true, false, true, true); + TestUtils.AreEqual(!a1, r1); + + bool3x3 a2 = bool3x3(true, true, false, false, true, true, true, true, true); + bool3x3 r2 = bool3x3(false, false, true, true, false, false, false, false, false); + TestUtils.AreEqual(!a2, r2); + + bool3x3 a3 = bool3x3(true, true, false, false, true, false, false, false, true); + bool3x3 r3 = bool3x3(false, false, true, true, false, true, true, true, false); + TestUtils.AreEqual(!a3, r3); + } + + + } +} diff --git a/package/Tests/Tests/Shared/TestBool3x3.gen.cs.meta b/package/Tests/Tests/Shared/TestBool3x3.gen.cs.meta new file mode 100755 index 000000000..070d46422 --- /dev/null +++ b/package/Tests/Tests/Shared/TestBool3x3.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 16fef77cdd788b54983aea9d37b2efb1 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/package/Tests/Tests/Shared/TestBool3x4.gen.cs b/package/Tests/Tests/Shared/TestBool3x4.gen.cs new file mode 100755 index 000000000..dae375024 --- /dev/null +++ b/package/Tests/Tests/Shared/TestBool3x4.gen.cs @@ -0,0 +1,400 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using NUnit.Framework; +using static Unity.Mathematics.math; +using Burst.Compiler.IL.Tests; + +namespace Unity.Mathematics.Tests +{ + [TestFixture] + public class TestBool3x4 + { + [TestCompiler] + public static void bool3x4_operator_equal_wide_wide() + { + bool3x4 a0 = bool3x4(false, false, true, true, true, true, true, true, true, true, true, true); + bool3x4 b0 = bool3x4(false, true, true, false, true, true, false, true, true, true, false, false); + bool3x4 r0 = bool3x4(true, false, true, false, true, true, false, true, true, true, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + bool3x4 a1 = bool3x4(true, false, false, false, true, true, true, true, true, false, false, false); + bool3x4 b1 = bool3x4(false, false, true, true, true, true, true, false, false, true, false, true); + bool3x4 r1 = bool3x4(false, true, false, false, true, true, true, false, false, false, true, false); + TestUtils.AreEqual(a1 == b1, r1); + + bool3x4 a2 = bool3x4(false, true, false, true, true, true, true, true, false, true, true, false); + bool3x4 b2 = bool3x4(false, true, true, false, false, true, false, false, false, true, true, false); + bool3x4 r2 = bool3x4(true, true, false, false, false, true, false, false, true, true, true, true); + TestUtils.AreEqual(a2 == b2, r2); + + bool3x4 a3 = bool3x4(false, true, true, false, false, true, true, true, true, false, true, false); + bool3x4 b3 = bool3x4(true, false, true, true, false, true, false, false, false, true, true, false); + bool3x4 r3 = bool3x4(false, false, true, false, true, true, false, false, false, false, true, true); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void bool3x4_operator_equal_wide_scalar() + { + bool3x4 a0 = bool3x4(true, true, false, true, true, false, true, true, true, false, false, false); + bool b0 = (false); + bool3x4 r0 = bool3x4(false, false, true, false, false, true, false, false, false, true, true, true); + TestUtils.AreEqual(a0 == b0, r0); + + bool3x4 a1 = bool3x4(false, false, false, false, false, true, true, false, false, true, false, true); + bool b1 = (true); + bool3x4 r1 = bool3x4(false, false, false, false, false, true, true, false, false, true, false, true); + TestUtils.AreEqual(a1 == b1, r1); + + bool3x4 a2 = bool3x4(false, false, true, false, false, true, false, true, true, false, false, false); + bool b2 = (true); + bool3x4 r2 = bool3x4(false, false, true, false, false, true, false, true, true, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + bool3x4 a3 = bool3x4(false, true, false, true, true, false, false, false, true, true, true, false); + bool b3 = (false); + bool3x4 r3 = bool3x4(true, false, true, false, false, true, true, true, false, false, false, true); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void bool3x4_operator_equal_scalar_wide() + { + bool a0 = (true); + bool3x4 b0 = bool3x4(false, false, true, false, true, false, true, false, false, false, false, true); + bool3x4 r0 = bool3x4(false, false, true, false, true, false, true, false, false, false, false, true); + TestUtils.AreEqual(a0 == b0, r0); + + bool a1 = (false); + bool3x4 b1 = bool3x4(true, true, true, false, true, true, false, false, true, false, false, true); + bool3x4 r1 = bool3x4(false, false, false, true, false, false, true, true, false, true, true, false); + TestUtils.AreEqual(a1 == b1, r1); + + bool a2 = (false); + bool3x4 b2 = bool3x4(false, true, false, false, true, false, true, true, true, true, false, false); + bool3x4 r2 = bool3x4(true, false, true, true, false, true, false, false, false, false, true, true); + TestUtils.AreEqual(a2 == b2, r2); + + bool a3 = (true); + bool3x4 b3 = bool3x4(false, false, true, true, true, false, true, false, false, true, true, true); + bool3x4 r3 = bool3x4(false, false, true, true, true, false, true, false, false, true, true, true); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void bool3x4_operator_not_equal_wide_wide() + { + bool3x4 a0 = bool3x4(true, false, false, true, true, true, true, true, true, true, false, true); + bool3x4 b0 = bool3x4(false, false, true, false, false, false, false, false, true, true, false, false); + bool3x4 r0 = bool3x4(true, false, true, true, true, true, true, true, false, false, false, true); + TestUtils.AreEqual(a0 != b0, r0); + + bool3x4 a1 = bool3x4(true, false, true, false, false, true, true, true, false, true, false, false); + bool3x4 b1 = bool3x4(false, false, false, true, true, false, false, false, false, false, true, true); + bool3x4 r1 = bool3x4(true, false, true, true, true, true, true, true, false, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + bool3x4 a2 = bool3x4(false, true, true, true, false, false, true, false, false, true, false, true); + bool3x4 b2 = bool3x4(true, false, false, false, true, true, false, false, true, false, false, true); + bool3x4 r2 = bool3x4(true, true, true, true, true, true, true, false, true, true, false, false); + TestUtils.AreEqual(a2 != b2, r2); + + bool3x4 a3 = bool3x4(true, true, true, false, true, true, true, false, true, false, false, false); + bool3x4 b3 = bool3x4(true, true, true, false, false, true, false, false, false, true, true, true); + bool3x4 r3 = bool3x4(false, false, false, false, true, false, true, false, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void bool3x4_operator_not_equal_wide_scalar() + { + bool3x4 a0 = bool3x4(false, false, true, true, true, true, false, false, true, false, true, false); + bool b0 = (false); + bool3x4 r0 = bool3x4(false, false, true, true, true, true, false, false, true, false, true, false); + TestUtils.AreEqual(a0 != b0, r0); + + bool3x4 a1 = bool3x4(true, true, true, true, true, false, false, true, true, true, true, false); + bool b1 = (false); + bool3x4 r1 = bool3x4(true, true, true, true, true, false, false, true, true, true, true, false); + TestUtils.AreEqual(a1 != b1, r1); + + bool3x4 a2 = bool3x4(false, false, false, true, true, true, false, true, false, true, true, true); + bool b2 = (false); + bool3x4 r2 = bool3x4(false, false, false, true, true, true, false, true, false, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + bool3x4 a3 = bool3x4(false, true, true, false, true, false, false, false, false, true, true, false); + bool b3 = (false); + bool3x4 r3 = bool3x4(false, true, true, false, true, false, false, false, false, true, true, false); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void bool3x4_operator_not_equal_scalar_wide() + { + bool a0 = (true); + bool3x4 b0 = bool3x4(true, true, false, true, false, true, false, false, false, true, true, true); + bool3x4 r0 = bool3x4(false, false, true, false, true, false, true, true, true, false, false, false); + TestUtils.AreEqual(a0 != b0, r0); + + bool a1 = (false); + bool3x4 b1 = bool3x4(true, true, false, false, false, true, true, false, false, true, false, true); + bool3x4 r1 = bool3x4(true, true, false, false, false, true, true, false, false, true, false, true); + TestUtils.AreEqual(a1 != b1, r1); + + bool a2 = (false); + bool3x4 b2 = bool3x4(false, true, true, true, false, false, true, false, false, true, false, true); + bool3x4 r2 = bool3x4(false, true, true, true, false, false, true, false, false, true, false, true); + TestUtils.AreEqual(a2 != b2, r2); + + bool a3 = (false); + bool3x4 b3 = bool3x4(false, false, false, true, false, false, true, false, false, false, false, false); + bool3x4 r3 = bool3x4(false, false, false, true, false, false, true, false, false, false, false, false); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void bool3x4_operator_bitwise_and_wide_wide() + { + bool3x4 a0 = bool3x4(false, true, true, false, false, false, true, false, true, true, false, true); + bool3x4 b0 = bool3x4(false, true, false, false, false, true, true, false, false, true, false, true); + bool3x4 r0 = bool3x4(false, true, false, false, false, false, true, false, false, true, false, true); + TestUtils.AreEqual(a0 & b0, r0); + + bool3x4 a1 = bool3x4(false, false, true, false, false, false, false, true, false, true, true, false); + bool3x4 b1 = bool3x4(true, false, true, true, false, false, false, true, false, false, false, true); + bool3x4 r1 = bool3x4(false, false, true, false, false, false, false, true, false, false, false, false); + TestUtils.AreEqual(a1 & b1, r1); + + bool3x4 a2 = bool3x4(false, false, true, false, false, true, false, false, true, true, true, false); + bool3x4 b2 = bool3x4(true, false, false, false, true, false, false, true, false, false, false, true); + bool3x4 r2 = bool3x4(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 & b2, r2); + + bool3x4 a3 = bool3x4(false, false, false, true, true, false, true, false, false, true, true, true); + bool3x4 b3 = bool3x4(true, true, false, true, false, false, false, true, false, false, true, true); + bool3x4 r3 = bool3x4(false, false, false, true, false, false, false, false, false, false, true, true); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void bool3x4_operator_bitwise_and_wide_scalar() + { + bool3x4 a0 = bool3x4(false, false, true, true, true, false, true, true, true, false, false, false); + bool b0 = (false); + bool3x4 r0 = bool3x4(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a0 & b0, r0); + + bool3x4 a1 = bool3x4(true, true, false, false, true, false, true, true, false, true, false, true); + bool b1 = (false); + bool3x4 r1 = bool3x4(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 & b1, r1); + + bool3x4 a2 = bool3x4(false, true, true, false, false, true, false, false, true, false, true, true); + bool b2 = (true); + bool3x4 r2 = bool3x4(false, true, true, false, false, true, false, false, true, false, true, true); + TestUtils.AreEqual(a2 & b2, r2); + + bool3x4 a3 = bool3x4(false, false, true, false, false, true, true, false, true, false, false, true); + bool b3 = (false); + bool3x4 r3 = bool3x4(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void bool3x4_operator_bitwise_and_scalar_wide() + { + bool a0 = (true); + bool3x4 b0 = bool3x4(false, false, true, true, false, false, true, true, true, false, true, false); + bool3x4 r0 = bool3x4(false, false, true, true, false, false, true, true, true, false, true, false); + TestUtils.AreEqual(a0 & b0, r0); + + bool a1 = (true); + bool3x4 b1 = bool3x4(true, false, false, true, true, false, true, true, false, true, true, true); + bool3x4 r1 = bool3x4(true, false, false, true, true, false, true, true, false, true, true, true); + TestUtils.AreEqual(a1 & b1, r1); + + bool a2 = (true); + bool3x4 b2 = bool3x4(true, false, true, true, true, false, true, false, true, false, true, false); + bool3x4 r2 = bool3x4(true, false, true, true, true, false, true, false, true, false, true, false); + TestUtils.AreEqual(a2 & b2, r2); + + bool a3 = (true); + bool3x4 b3 = bool3x4(true, true, false, true, true, false, true, false, false, false, true, true); + bool3x4 r3 = bool3x4(true, true, false, true, true, false, true, false, false, false, true, true); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void bool3x4_operator_bitwise_or_wide_wide() + { + bool3x4 a0 = bool3x4(true, false, false, true, true, false, false, false, false, false, true, true); + bool3x4 b0 = bool3x4(true, false, true, true, true, true, true, true, true, true, false, false); + bool3x4 r0 = bool3x4(true, false, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 | b0, r0); + + bool3x4 a1 = bool3x4(false, false, true, true, true, false, true, true, false, true, false, false); + bool3x4 b1 = bool3x4(true, true, true, true, true, true, false, false, false, false, true, false); + bool3x4 r1 = bool3x4(true, true, true, true, true, true, true, true, false, true, true, false); + TestUtils.AreEqual(a1 | b1, r1); + + bool3x4 a2 = bool3x4(false, false, true, false, true, false, false, true, false, false, false, true); + bool3x4 b2 = bool3x4(false, true, false, true, false, false, true, true, true, true, true, false); + bool3x4 r2 = bool3x4(false, true, true, true, true, false, true, true, true, true, true, true); + TestUtils.AreEqual(a2 | b2, r2); + + bool3x4 a3 = bool3x4(false, false, false, false, false, true, false, true, true, true, true, false); + bool3x4 b3 = bool3x4(true, true, true, true, true, true, true, false, true, true, false, false); + bool3x4 r3 = bool3x4(true, true, true, true, true, true, true, true, true, true, true, false); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void bool3x4_operator_bitwise_or_wide_scalar() + { + bool3x4 a0 = bool3x4(false, false, true, true, false, true, false, true, false, true, true, false); + bool b0 = (true); + bool3x4 r0 = bool3x4(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 | b0, r0); + + bool3x4 a1 = bool3x4(false, false, true, false, true, false, false, false, true, true, false, true); + bool b1 = (true); + bool3x4 r1 = bool3x4(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 | b1, r1); + + bool3x4 a2 = bool3x4(true, true, true, true, true, true, false, false, false, true, false, false); + bool b2 = (true); + bool3x4 r2 = bool3x4(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 | b2, r2); + + bool3x4 a3 = bool3x4(true, true, true, false, false, false, false, true, true, true, true, false); + bool b3 = (true); + bool3x4 r3 = bool3x4(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void bool3x4_operator_bitwise_or_scalar_wide() + { + bool a0 = (true); + bool3x4 b0 = bool3x4(true, true, false, false, false, false, true, true, false, true, true, false); + bool3x4 r0 = bool3x4(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 | b0, r0); + + bool a1 = (false); + bool3x4 b1 = bool3x4(false, false, false, false, false, false, true, false, true, true, true, true); + bool3x4 r1 = bool3x4(false, false, false, false, false, false, true, false, true, true, true, true); + TestUtils.AreEqual(a1 | b1, r1); + + bool a2 = (true); + bool3x4 b2 = bool3x4(false, true, false, false, true, true, false, false, false, true, false, true); + bool3x4 r2 = bool3x4(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 | b2, r2); + + bool a3 = (true); + bool3x4 b3 = bool3x4(false, true, false, false, true, true, true, false, false, true, true, true); + bool3x4 r3 = bool3x4(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void bool3x4_operator_bitwise_xor_wide_wide() + { + bool3x4 a0 = bool3x4(true, false, true, true, true, true, false, false, false, false, true, false); + bool3x4 b0 = bool3x4(false, true, false, false, false, true, false, false, true, true, true, false); + bool3x4 r0 = bool3x4(true, true, true, true, true, false, false, false, true, true, false, false); + TestUtils.AreEqual(a0 ^ b0, r0); + + bool3x4 a1 = bool3x4(false, false, true, false, true, false, false, false, true, true, true, true); + bool3x4 b1 = bool3x4(false, false, true, true, false, false, true, true, true, true, false, true); + bool3x4 r1 = bool3x4(false, false, false, true, true, false, true, true, false, false, true, false); + TestUtils.AreEqual(a1 ^ b1, r1); + + bool3x4 a2 = bool3x4(true, false, true, true, false, false, true, false, false, true, true, true); + bool3x4 b2 = bool3x4(true, false, false, false, true, false, false, false, false, false, true, false); + bool3x4 r2 = bool3x4(false, false, true, true, true, false, true, false, false, true, false, true); + TestUtils.AreEqual(a2 ^ b2, r2); + + bool3x4 a3 = bool3x4(true, false, true, true, true, true, false, true, false, true, false, true); + bool3x4 b3 = bool3x4(true, true, false, false, false, false, true, false, false, false, true, false); + bool3x4 r3 = bool3x4(false, true, true, true, true, true, true, true, false, true, true, true); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void bool3x4_operator_bitwise_xor_wide_scalar() + { + bool3x4 a0 = bool3x4(true, false, false, true, true, false, false, false, true, false, true, true); + bool b0 = (false); + bool3x4 r0 = bool3x4(true, false, false, true, true, false, false, false, true, false, true, true); + TestUtils.AreEqual(a0 ^ b0, r0); + + bool3x4 a1 = bool3x4(false, true, false, false, false, false, false, false, false, false, false, true); + bool b1 = (true); + bool3x4 r1 = bool3x4(true, false, true, true, true, true, true, true, true, true, true, false); + TestUtils.AreEqual(a1 ^ b1, r1); + + bool3x4 a2 = bool3x4(true, false, false, false, false, true, true, false, false, false, true, false); + bool b2 = (false); + bool3x4 r2 = bool3x4(true, false, false, false, false, true, true, false, false, false, true, false); + TestUtils.AreEqual(a2 ^ b2, r2); + + bool3x4 a3 = bool3x4(false, true, false, true, true, false, false, true, true, true, false, true); + bool b3 = (false); + bool3x4 r3 = bool3x4(false, true, false, true, true, false, false, true, true, true, false, true); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void bool3x4_operator_bitwise_xor_scalar_wide() + { + bool a0 = (true); + bool3x4 b0 = bool3x4(true, false, false, true, false, true, true, true, true, true, true, true); + bool3x4 r0 = bool3x4(false, true, true, false, true, false, false, false, false, false, false, false); + TestUtils.AreEqual(a0 ^ b0, r0); + + bool a1 = (true); + bool3x4 b1 = bool3x4(true, true, true, false, true, false, true, false, false, false, false, true); + bool3x4 r1 = bool3x4(false, false, false, true, false, true, false, true, true, true, true, false); + TestUtils.AreEqual(a1 ^ b1, r1); + + bool a2 = (false); + bool3x4 b2 = bool3x4(true, false, true, true, false, true, false, false, false, false, true, false); + bool3x4 r2 = bool3x4(true, false, true, true, false, true, false, false, false, false, true, false); + TestUtils.AreEqual(a2 ^ b2, r2); + + bool a3 = (false); + bool3x4 b3 = bool3x4(false, false, false, true, false, false, true, true, false, false, true, false); + bool3x4 r3 = bool3x4(false, false, false, true, false, false, true, true, false, false, true, false); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void bool3x4_operator_logical_not() + { + bool3x4 a0 = bool3x4(false, true, false, true, false, false, false, true, true, false, true, true); + bool3x4 r0 = bool3x4(true, false, true, false, true, true, true, false, false, true, false, false); + TestUtils.AreEqual(!a0, r0); + + bool3x4 a1 = bool3x4(true, false, false, true, false, false, true, false, true, false, false, true); + bool3x4 r1 = bool3x4(false, true, true, false, true, true, false, true, false, true, true, false); + TestUtils.AreEqual(!a1, r1); + + bool3x4 a2 = bool3x4(true, true, true, true, false, true, false, false, true, false, false, false); + bool3x4 r2 = bool3x4(false, false, false, false, true, false, true, true, false, true, true, true); + TestUtils.AreEqual(!a2, r2); + + bool3x4 a3 = bool3x4(true, false, false, false, false, true, false, true, true, true, false, true); + bool3x4 r3 = bool3x4(false, true, true, true, true, false, true, false, false, false, true, false); + TestUtils.AreEqual(!a3, r3); + } + + + } +} diff --git a/package/Tests/Tests/Shared/TestBool3x4.gen.cs.meta b/package/Tests/Tests/Shared/TestBool3x4.gen.cs.meta new file mode 100755 index 000000000..3a7091709 --- /dev/null +++ b/package/Tests/Tests/Shared/TestBool3x4.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ce96cd62cfbd7e24c9173437069a42ad +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/package/Tests/Tests/Shared/TestBool4.gen.cs b/package/Tests/Tests/Shared/TestBool4.gen.cs new file mode 100755 index 000000000..229870ae3 --- /dev/null +++ b/package/Tests/Tests/Shared/TestBool4.gen.cs @@ -0,0 +1,440 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using NUnit.Framework; +using static Unity.Mathematics.math; +using Burst.Compiler.IL.Tests; + +namespace Unity.Mathematics.Tests +{ + [TestFixture] + public class TestBool4 + { + [TestCompiler] + public static void bool4_constructor() + { + bool4 a = new bool4(false, true, false, true); + TestUtils.AreEqual(a.x, false); + TestUtils.AreEqual(a.y, true); + TestUtils.AreEqual(a.z, false); + TestUtils.AreEqual(a.w, true); + } + + [TestCompiler] + public static void bool4_scalar_constructor() + { + bool4 a = new bool4(true); + TestUtils.AreEqual(a.x, true); + TestUtils.AreEqual(a.y, true); + TestUtils.AreEqual(a.z, true); + TestUtils.AreEqual(a.w, true); + } + + [TestCompiler] + public static void bool4_static_constructor() + { + bool4 a = bool4(false, true, false, true); + TestUtils.AreEqual(a.x, false); + TestUtils.AreEqual(a.y, true); + TestUtils.AreEqual(a.z, false); + TestUtils.AreEqual(a.w, true); + } + + [TestCompiler] + public static void bool4_static_scalar_constructor() + { + bool4 a = bool4(true); + TestUtils.AreEqual(a.x, true); + TestUtils.AreEqual(a.y, true); + TestUtils.AreEqual(a.z, true); + TestUtils.AreEqual(a.w, true); + } + + [TestCompiler] + public static void bool4_operator_equal_wide_wide() + { + bool4 a0 = bool4(false, false, true, true); + bool4 b0 = bool4(false, true, true, false); + bool4 r0 = bool4(true, false, true, false); + TestUtils.AreEqual(a0 == b0, r0); + + bool4 a1 = bool4(true, true, true, true); + bool4 b1 = bool4(true, true, false, true); + bool4 r1 = bool4(true, true, false, true); + TestUtils.AreEqual(a1 == b1, r1); + + bool4 a2 = bool4(true, true, true, true); + bool4 b2 = bool4(true, true, false, false); + bool4 r2 = bool4(true, true, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + bool4 a3 = bool4(true, false, false, false); + bool4 b3 = bool4(false, false, true, true); + bool4 r3 = bool4(false, true, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void bool4_operator_equal_wide_scalar() + { + bool4 a0 = bool4(true, true, false, true); + bool b0 = (false); + bool4 r0 = bool4(false, false, true, false); + TestUtils.AreEqual(a0 == b0, r0); + + bool4 a1 = bool4(true, true, true, true); + bool b1 = (false); + bool4 r1 = bool4(false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + bool4 a2 = bool4(false, false, false, true); + bool b2 = (false); + bool4 r2 = bool4(true, true, true, false); + TestUtils.AreEqual(a2 == b2, r2); + + bool4 a3 = bool4(false, false, false, true); + bool b3 = (false); + bool4 r3 = bool4(true, true, true, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void bool4_operator_equal_scalar_wide() + { + bool a0 = (true); + bool4 b0 = bool4(false, false, true, false); + bool4 r0 = bool4(false, false, true, false); + TestUtils.AreEqual(a0 == b0, r0); + + bool a1 = (true); + bool4 b1 = bool4(false, true, false, false); + bool4 r1 = bool4(false, true, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + bool a2 = (false); + bool4 b2 = bool4(false, true, false, true); + bool4 r2 = bool4(true, false, true, false); + TestUtils.AreEqual(a2 == b2, r2); + + bool a3 = (true); + bool4 b3 = bool4(true, false, true, true); + bool4 r3 = bool4(true, false, true, true); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void bool4_operator_not_equal_wide_wide() + { + bool4 a0 = bool4(true, false, false, true); + bool4 b0 = bool4(false, false, true, false); + bool4 r0 = bool4(true, false, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + bool4 a1 = bool4(true, true, true, true); + bool4 b1 = bool4(false, false, false, false); + bool4 r1 = bool4(true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + bool4 a2 = bool4(true, true, false, true); + bool4 b2 = bool4(true, true, false, false); + bool4 r2 = bool4(false, false, false, true); + TestUtils.AreEqual(a2 != b2, r2); + + bool4 a3 = bool4(true, false, true, false); + bool4 b3 = bool4(false, false, false, true); + bool4 r3 = bool4(true, false, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void bool4_operator_not_equal_wide_scalar() + { + bool4 a0 = bool4(false, false, true, true); + bool b0 = (false); + bool4 r0 = bool4(false, false, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + bool4 a1 = bool4(true, false, false, true); + bool b1 = (true); + bool4 r1 = bool4(false, true, true, false); + TestUtils.AreEqual(a1 != b1, r1); + + bool4 a2 = bool4(false, false, true, false); + bool b2 = (true); + bool4 r2 = bool4(true, true, false, true); + TestUtils.AreEqual(a2 != b2, r2); + + bool4 a3 = bool4(true, true, true, false); + bool b3 = (true); + bool4 r3 = bool4(false, false, false, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void bool4_operator_not_equal_scalar_wide() + { + bool a0 = (true); + bool4 b0 = bool4(true, true, false, true); + bool4 r0 = bool4(false, false, true, false); + TestUtils.AreEqual(a0 != b0, r0); + + bool a1 = (false); + bool4 b1 = bool4(true, false, false, false); + bool4 r1 = bool4(true, false, false, false); + TestUtils.AreEqual(a1 != b1, r1); + + bool a2 = (true); + bool4 b2 = bool4(true, true, false, true); + bool4 r2 = bool4(false, false, true, false); + TestUtils.AreEqual(a2 != b2, r2); + + bool a3 = (true); + bool4 b3 = bool4(false, false, false, true); + bool4 r3 = bool4(true, true, true, false); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void bool4_operator_bitwise_and_wide_wide() + { + bool4 a0 = bool4(false, true, true, false); + bool4 b0 = bool4(false, true, false, false); + bool4 r0 = bool4(false, true, false, false); + TestUtils.AreEqual(a0 & b0, r0); + + bool4 a1 = bool4(false, false, true, false); + bool4 b1 = bool4(false, true, true, false); + bool4 r1 = bool4(false, false, true, false); + TestUtils.AreEqual(a1 & b1, r1); + + bool4 a2 = bool4(true, true, false, true); + bool4 b2 = bool4(false, true, false, true); + bool4 r2 = bool4(false, true, false, true); + TestUtils.AreEqual(a2 & b2, r2); + + bool4 a3 = bool4(false, false, true, false); + bool4 b3 = bool4(true, false, true, true); + bool4 r3 = bool4(false, false, true, false); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void bool4_operator_bitwise_and_wide_scalar() + { + bool4 a0 = bool4(false, false, true, true); + bool b0 = (false); + bool4 r0 = bool4(false, false, false, false); + TestUtils.AreEqual(a0 & b0, r0); + + bool4 a1 = bool4(true, true, true, true); + bool b1 = (false); + bool4 r1 = bool4(false, false, false, false); + TestUtils.AreEqual(a1 & b1, r1); + + bool4 a2 = bool4(false, false, true, false); + bool b2 = (false); + bool4 r2 = bool4(false, false, false, false); + TestUtils.AreEqual(a2 & b2, r2); + + bool4 a3 = bool4(true, false, true, false); + bool b3 = (false); + bool4 r3 = bool4(false, false, false, false); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void bool4_operator_bitwise_and_scalar_wide() + { + bool a0 = (true); + bool4 b0 = bool4(false, false, true, true); + bool4 r0 = bool4(false, false, true, true); + TestUtils.AreEqual(a0 & b0, r0); + + bool a1 = (false); + bool4 b1 = bool4(false, true, true, true); + bool4 r1 = bool4(false, false, false, false); + TestUtils.AreEqual(a1 & b1, r1); + + bool a2 = (false); + bool4 b2 = bool4(true, false, true, true); + bool4 r2 = bool4(false, false, false, false); + TestUtils.AreEqual(a2 & b2, r2); + + bool a3 = (false); + bool4 b3 = bool4(false, true, true, false); + bool4 r3 = bool4(false, false, false, false); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void bool4_operator_bitwise_or_wide_wide() + { + bool4 a0 = bool4(true, false, false, true); + bool4 b0 = bool4(true, false, true, true); + bool4 r0 = bool4(true, false, true, true); + TestUtils.AreEqual(a0 | b0, r0); + + bool4 a1 = bool4(true, false, false, false); + bool4 b1 = bool4(true, true, true, true); + bool4 r1 = bool4(true, true, true, true); + TestUtils.AreEqual(a1 | b1, r1); + + bool4 a2 = bool4(false, false, true, true); + bool4 b2 = bool4(true, true, false, false); + bool4 r2 = bool4(true, true, true, true); + TestUtils.AreEqual(a2 | b2, r2); + + bool4 a3 = bool4(false, false, true, true); + bool4 b3 = bool4(true, true, true, true); + bool4 r3 = bool4(true, true, true, true); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void bool4_operator_bitwise_or_wide_scalar() + { + bool4 a0 = bool4(false, false, true, true); + bool b0 = (true); + bool4 r0 = bool4(true, true, true, true); + TestUtils.AreEqual(a0 | b0, r0); + + bool4 a1 = bool4(false, false, true, false); + bool b1 = (true); + bool4 r1 = bool4(true, true, true, true); + TestUtils.AreEqual(a1 | b1, r1); + + bool4 a2 = bool4(true, false, false, true); + bool b2 = (true); + bool4 r2 = bool4(true, true, true, true); + TestUtils.AreEqual(a2 | b2, r2); + + bool4 a3 = bool4(false, false, true, false); + bool b3 = (true); + bool4 r3 = bool4(true, true, true, true); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void bool4_operator_bitwise_or_scalar_wide() + { + bool a0 = (true); + bool4 b0 = bool4(true, true, false, false); + bool4 r0 = bool4(true, true, true, true); + TestUtils.AreEqual(a0 | b0, r0); + + bool a1 = (false); + bool4 b1 = bool4(false, true, true, false); + bool4 r1 = bool4(false, true, true, false); + TestUtils.AreEqual(a1 | b1, r1); + + bool a2 = (true); + bool4 b2 = bool4(true, false, false, false); + bool4 r2 = bool4(true, true, true, true); + TestUtils.AreEqual(a2 | b2, r2); + + bool a3 = (false); + bool4 b3 = bool4(false, false, false, false); + bool4 r3 = bool4(false, false, false, false); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void bool4_operator_bitwise_xor_wide_wide() + { + bool4 a0 = bool4(true, false, true, true); + bool4 b0 = bool4(false, true, false, false); + bool4 r0 = bool4(true, true, true, true); + TestUtils.AreEqual(a0 ^ b0, r0); + + bool4 a1 = bool4(true, true, false, false); + bool4 b1 = bool4(false, true, false, false); + bool4 r1 = bool4(true, false, false, false); + TestUtils.AreEqual(a1 ^ b1, r1); + + bool4 a2 = bool4(false, false, true, false); + bool4 b2 = bool4(true, true, true, false); + bool4 r2 = bool4(true, true, false, false); + TestUtils.AreEqual(a2 ^ b2, r2); + + bool4 a3 = bool4(false, false, true, false); + bool4 b3 = bool4(false, false, true, true); + bool4 r3 = bool4(false, false, false, true); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void bool4_operator_bitwise_xor_wide_scalar() + { + bool4 a0 = bool4(true, false, false, true); + bool b0 = (false); + bool4 r0 = bool4(true, false, false, true); + TestUtils.AreEqual(a0 ^ b0, r0); + + bool4 a1 = bool4(true, false, false, true); + bool b1 = (false); + bool4 r1 = bool4(true, false, false, true); + TestUtils.AreEqual(a1 ^ b1, r1); + + bool4 a2 = bool4(false, true, false, true); + bool b2 = (true); + bool4 r2 = bool4(true, false, true, false); + TestUtils.AreEqual(a2 ^ b2, r2); + + bool4 a3 = bool4(true, false, false, false); + bool b3 = (false); + bool4 r3 = bool4(true, false, false, false); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void bool4_operator_bitwise_xor_scalar_wide() + { + bool a0 = (true); + bool4 b0 = bool4(true, false, false, true); + bool4 r0 = bool4(false, true, true, false); + TestUtils.AreEqual(a0 ^ b0, r0); + + bool a1 = (false); + bool4 b1 = bool4(true, true, true, true); + bool4 r1 = bool4(true, true, true, true); + TestUtils.AreEqual(a1 ^ b1, r1); + + bool a2 = (true); + bool4 b2 = bool4(true, true, true, true); + bool4 r2 = bool4(false, false, false, false); + TestUtils.AreEqual(a2 ^ b2, r2); + + bool a3 = (true); + bool4 b3 = bool4(true, false, true, false); + bool4 r3 = bool4(false, true, false, true); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void bool4_operator_logical_not() + { + bool4 a0 = bool4(false, true, false, true); + bool4 r0 = bool4(true, false, true, false); + TestUtils.AreEqual(!a0, r0); + + bool4 a1 = bool4(false, false, true, true); + bool4 r1 = bool4(true, true, false, false); + TestUtils.AreEqual(!a1, r1); + + bool4 a2 = bool4(false, true, true, false); + bool4 r2 = bool4(true, false, false, true); + TestUtils.AreEqual(!a2, r2); + + bool4 a3 = bool4(false, true, false, false); + bool4 r3 = bool4(true, false, true, true); + TestUtils.AreEqual(!a3, r3); + } + + + } +} diff --git a/package/Tests/Tests/Shared/TestBool4.gen.cs.meta b/package/Tests/Tests/Shared/TestBool4.gen.cs.meta new file mode 100755 index 000000000..0cecba96d --- /dev/null +++ b/package/Tests/Tests/Shared/TestBool4.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 33a8df9e636ae004ba204e2a6b925b42 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/package/Tests/Tests/Shared/TestBool4x2.gen.cs b/package/Tests/Tests/Shared/TestBool4x2.gen.cs new file mode 100755 index 000000000..e91b5ffe6 --- /dev/null +++ b/package/Tests/Tests/Shared/TestBool4x2.gen.cs @@ -0,0 +1,400 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using NUnit.Framework; +using static Unity.Mathematics.math; +using Burst.Compiler.IL.Tests; + +namespace Unity.Mathematics.Tests +{ + [TestFixture] + public class TestBool4x2 + { + [TestCompiler] + public static void bool4x2_operator_equal_wide_wide() + { + bool4x2 a0 = bool4x2(false, false, true, true, true, true, true, true); + bool4x2 b0 = bool4x2(false, true, true, false, true, true, false, true); + bool4x2 r0 = bool4x2(true, false, true, false, true, true, false, true); + TestUtils.AreEqual(a0 == b0, r0); + + bool4x2 a1 = bool4x2(true, true, true, true, true, false, false, false); + bool4x2 b1 = bool4x2(true, true, false, false, false, false, true, true); + bool4x2 r1 = bool4x2(true, true, false, false, false, true, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + bool4x2 a2 = bool4x2(true, true, true, true, true, false, false, false); + bool4x2 b2 = bool4x2(true, true, true, false, false, true, false, true); + bool4x2 r2 = bool4x2(true, true, true, false, false, false, true, false); + TestUtils.AreEqual(a2 == b2, r2); + + bool4x2 a3 = bool4x2(false, true, false, true, true, true, true, true); + bool4x2 b3 = bool4x2(false, true, true, false, false, true, false, false); + bool4x2 r3 = bool4x2(true, true, false, false, false, true, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void bool4x2_operator_equal_wide_scalar() + { + bool4x2 a0 = bool4x2(true, true, false, true, true, false, true, true); + bool b0 = (false); + bool4x2 r0 = bool4x2(false, false, true, false, false, true, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + bool4x2 a1 = bool4x2(true, false, false, false, true, false, false, false); + bool b1 = (false); + bool4x2 r1 = bool4x2(false, true, true, true, false, true, true, true); + TestUtils.AreEqual(a1 == b1, r1); + + bool4x2 a2 = bool4x2(false, true, false, false, true, false, true, false); + bool b2 = (true); + bool4x2 r2 = bool4x2(false, true, false, false, true, false, true, false); + TestUtils.AreEqual(a2 == b2, r2); + + bool4x2 a3 = bool4x2(true, true, false, false, true, false, true, true); + bool b3 = (false); + bool4x2 r3 = bool4x2(false, false, true, true, false, true, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void bool4x2_operator_equal_scalar_wide() + { + bool a0 = (true); + bool4x2 b0 = bool4x2(false, false, true, false, true, false, true, false); + bool4x2 r0 = bool4x2(false, false, true, false, true, false, true, false); + TestUtils.AreEqual(a0 == b0, r0); + + bool a1 = (false); + bool4x2 b1 = bool4x2(false, false, true, false, true, true, true, false); + bool4x2 r1 = bool4x2(true, true, false, true, false, false, false, true); + TestUtils.AreEqual(a1 == b1, r1); + + bool a2 = (true); + bool4x2 b2 = bool4x2(true, false, false, true, false, false, true, false); + bool4x2 r2 = bool4x2(true, false, false, true, false, false, true, false); + TestUtils.AreEqual(a2 == b2, r2); + + bool a3 = (false); + bool4x2 b3 = bool4x2(true, false, false, true, false, true, true, true); + bool4x2 r3 = bool4x2(false, true, true, false, true, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void bool4x2_operator_not_equal_wide_wide() + { + bool4x2 a0 = bool4x2(true, false, false, true, true, true, true, true); + bool4x2 b0 = bool4x2(false, false, true, false, false, false, false, false); + bool4x2 r0 = bool4x2(true, false, true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + bool4x2 a1 = bool4x2(true, true, false, true, true, false, true, false); + bool4x2 b1 = bool4x2(true, true, false, false, false, false, false, true); + bool4x2 r1 = bool4x2(false, false, false, true, true, false, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + bool4x2 a2 = bool4x2(false, true, true, true, false, true, false, false); + bool4x2 b2 = bool4x2(true, false, false, false, false, false, true, true); + bool4x2 r2 = bool4x2(true, true, true, true, false, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + bool4x2 a3 = bool4x2(false, true, true, true, false, false, true, false); + bool4x2 b3 = bool4x2(true, false, false, false, true, true, false, false); + bool4x2 r3 = bool4x2(true, true, true, true, true, true, true, false); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void bool4x2_operator_not_equal_wide_scalar() + { + bool4x2 a0 = bool4x2(false, false, true, true, true, true, false, false); + bool b0 = (false); + bool4x2 r0 = bool4x2(false, false, true, true, true, true, false, false); + TestUtils.AreEqual(a0 != b0, r0); + + bool4x2 a1 = bool4x2(true, true, false, true, false, true, true, true); + bool b1 = (false); + bool4x2 r1 = bool4x2(true, true, false, true, false, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + bool4x2 a2 = bool4x2(true, false, true, true, true, true, false, false); + bool b2 = (false); + bool4x2 r2 = bool4x2(true, false, true, true, true, true, false, false); + TestUtils.AreEqual(a2 != b2, r2); + + bool4x2 a3 = bool4x2(false, false, true, true, true, false, true, false); + bool b3 = (false); + bool4x2 r3 = bool4x2(false, false, true, true, true, false, true, false); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void bool4x2_operator_not_equal_scalar_wide() + { + bool a0 = (true); + bool4x2 b0 = bool4x2(true, true, false, true, false, true, false, false); + bool4x2 r0 = bool4x2(false, false, true, false, true, false, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + bool a1 = (false); + bool4x2 b1 = bool4x2(true, true, true, false, true, true, false, false); + bool4x2 r1 = bool4x2(true, true, true, false, true, true, false, false); + TestUtils.AreEqual(a1 != b1, r1); + + bool a2 = (false); + bool4x2 b2 = bool4x2(true, true, false, false, true, false, true, false); + bool4x2 r2 = bool4x2(true, true, false, false, true, false, true, false); + TestUtils.AreEqual(a2 != b2, r2); + + bool a3 = (false); + bool4x2 b3 = bool4x2(true, true, true, false, false, true, false, false); + bool4x2 r3 = bool4x2(true, true, true, false, false, true, false, false); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void bool4x2_operator_bitwise_and_wide_wide() + { + bool4x2 a0 = bool4x2(false, true, true, false, false, false, true, false); + bool4x2 b0 = bool4x2(false, true, false, false, false, true, true, false); + bool4x2 r0 = bool4x2(false, true, false, false, false, false, true, false); + TestUtils.AreEqual(a0 & b0, r0); + + bool4x2 a1 = bool4x2(true, true, false, true, false, false, true, false); + bool4x2 b1 = bool4x2(false, true, false, true, true, false, true, true); + bool4x2 r1 = bool4x2(false, true, false, true, false, false, true, false); + TestUtils.AreEqual(a1 & b1, r1); + + bool4x2 a2 = bool4x2(false, false, false, true, false, true, true, false); + bool4x2 b2 = bool4x2(false, false, false, true, false, false, false, true); + bool4x2 r2 = bool4x2(false, false, false, true, false, false, false, false); + TestUtils.AreEqual(a2 & b2, r2); + + bool4x2 a3 = bool4x2(false, false, true, false, false, true, false, false); + bool4x2 b3 = bool4x2(true, false, false, false, true, false, false, true); + bool4x2 r3 = bool4x2(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void bool4x2_operator_bitwise_and_wide_scalar() + { + bool4x2 a0 = bool4x2(false, false, true, true, true, false, true, true); + bool b0 = (false); + bool4x2 r0 = bool4x2(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a0 & b0, r0); + + bool4x2 a1 = bool4x2(true, false, false, true, false, true, false, false); + bool b1 = (false); + bool4x2 r1 = bool4x2(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 & b1, r1); + + bool4x2 a2 = bool4x2(true, true, true, false, true, false, true, false); + bool b2 = (false); + bool4x2 r2 = bool4x2(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 & b2, r2); + + bool4x2 a3 = bool4x2(true, true, false, false, true, false, false, true); + bool b3 = (true); + bool4x2 r3 = bool4x2(true, true, false, false, true, false, false, true); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void bool4x2_operator_bitwise_and_scalar_wide() + { + bool a0 = (true); + bool4x2 b0 = bool4x2(false, false, true, true, false, false, true, true); + bool4x2 r0 = bool4x2(false, false, true, true, false, false, true, true); + TestUtils.AreEqual(a0 & b0, r0); + + bool a1 = (true); + bool4x2 b1 = bool4x2(false, true, false, true, true, false, false, true); + bool4x2 r1 = bool4x2(false, true, false, true, true, false, false, true); + TestUtils.AreEqual(a1 & b1, r1); + + bool a2 = (true); + bool4x2 b2 = bool4x2(false, true, true, false, true, true, true, true); + bool4x2 r2 = bool4x2(false, true, true, false, true, true, true, true); + TestUtils.AreEqual(a2 & b2, r2); + + bool a3 = (true); + bool4x2 b3 = bool4x2(false, true, true, true, false, true, false, true); + bool4x2 r3 = bool4x2(false, true, true, true, false, true, false, true); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void bool4x2_operator_bitwise_or_wide_wide() + { + bool4x2 a0 = bool4x2(true, false, false, true, true, false, false, false); + bool4x2 b0 = bool4x2(true, false, true, true, true, true, true, true); + bool4x2 r0 = bool4x2(true, false, true, true, true, true, true, true); + TestUtils.AreEqual(a0 | b0, r0); + + bool4x2 a1 = bool4x2(false, false, true, true, false, false, true, true); + bool4x2 b1 = bool4x2(true, true, false, false, true, true, true, true); + bool4x2 r1 = bool4x2(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 | b1, r1); + + bool4x2 a2 = bool4x2(true, false, true, true, false, true, false, false); + bool4x2 b2 = bool4x2(true, true, false, false, false, false, true, false); + bool4x2 r2 = bool4x2(true, true, true, true, false, true, true, false); + TestUtils.AreEqual(a2 | b2, r2); + + bool4x2 a3 = bool4x2(false, false, true, false, true, false, false, true); + bool4x2 b3 = bool4x2(false, true, false, true, false, false, true, true); + bool4x2 r3 = bool4x2(false, true, true, true, true, false, true, true); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void bool4x2_operator_bitwise_or_wide_scalar() + { + bool4x2 a0 = bool4x2(false, false, true, true, false, true, false, true); + bool b0 = (true); + bool4x2 r0 = bool4x2(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 | b0, r0); + + bool4x2 a1 = bool4x2(false, true, false, false, true, false, true, false); + bool b1 = (true); + bool4x2 r1 = bool4x2(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 | b1, r1); + + bool4x2 a2 = bool4x2(true, false, false, true, true, false, true, true); + bool b2 = (false); + bool4x2 r2 = bool4x2(true, false, false, true, true, false, true, true); + TestUtils.AreEqual(a2 | b2, r2); + + bool4x2 a3 = bool4x2(true, true, true, true, true, false, false, false); + bool b3 = (true); + bool4x2 r3 = bool4x2(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void bool4x2_operator_bitwise_or_scalar_wide() + { + bool a0 = (true); + bool4x2 b0 = bool4x2(true, true, false, false, false, false, true, true); + bool4x2 r0 = bool4x2(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 | b0, r0); + + bool a1 = (false); + bool4x2 b1 = bool4x2(true, true, false, false, false, false, false, false); + bool4x2 r1 = bool4x2(true, true, false, false, false, false, false, false); + TestUtils.AreEqual(a1 | b1, r1); + + bool a2 = (false); + bool4x2 b2 = bool4x2(false, true, false, true, true, true, true, true); + bool4x2 r2 = bool4x2(false, true, false, true, true, true, true, true); + TestUtils.AreEqual(a2 | b2, r2); + + bool a3 = (false); + bool4x2 b3 = bool4x2(true, false, false, true, true, false, false, false); + bool4x2 r3 = bool4x2(true, false, false, true, true, false, false, false); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void bool4x2_operator_bitwise_xor_wide_wide() + { + bool4x2 a0 = bool4x2(true, false, true, true, true, true, false, false); + bool4x2 b0 = bool4x2(false, true, false, false, false, true, false, false); + bool4x2 r0 = bool4x2(true, true, true, true, true, false, false, false); + TestUtils.AreEqual(a0 ^ b0, r0); + + bool4x2 a1 = bool4x2(false, false, true, false, false, false, true, false); + bool4x2 b1 = bool4x2(true, true, true, false, false, false, true, true); + bool4x2 r1 = bool4x2(true, true, false, false, false, false, false, true); + TestUtils.AreEqual(a1 ^ b1, r1); + + bool4x2 a2 = bool4x2(true, false, false, false, true, true, true, true); + bool4x2 b2 = bool4x2(false, false, true, true, true, true, false, true); + bool4x2 r2 = bool4x2(true, false, true, true, false, false, true, false); + TestUtils.AreEqual(a2 ^ b2, r2); + + bool4x2 a3 = bool4x2(true, false, true, true, false, false, true, false); + bool4x2 b3 = bool4x2(true, false, false, false, true, false, false, false); + bool4x2 r3 = bool4x2(false, false, true, true, true, false, true, false); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void bool4x2_operator_bitwise_xor_wide_scalar() + { + bool4x2 a0 = bool4x2(true, false, false, true, true, false, false, false); + bool b0 = (false); + bool4x2 r0 = bool4x2(true, false, false, true, true, false, false, false); + TestUtils.AreEqual(a0 ^ b0, r0); + + bool4x2 a1 = bool4x2(true, true, true, false, true, true, false, false); + bool b1 = (false); + bool4x2 r1 = bool4x2(true, true, true, false, true, true, false, false); + TestUtils.AreEqual(a1 ^ b1, r1); + + bool4x2 a2 = bool4x2(false, false, false, false, false, false, true, true); + bool b2 = (false); + bool4x2 r2 = bool4x2(false, false, false, false, false, false, true, true); + TestUtils.AreEqual(a2 ^ b2, r2); + + bool4x2 a3 = bool4x2(false, false, false, false, true, true, false, false); + bool b3 = (false); + bool4x2 r3 = bool4x2(false, false, false, false, true, true, false, false); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void bool4x2_operator_bitwise_xor_scalar_wide() + { + bool a0 = (true); + bool4x2 b0 = bool4x2(true, false, false, true, false, true, true, true); + bool4x2 r0 = bool4x2(false, true, true, false, true, false, false, false); + TestUtils.AreEqual(a0 ^ b0, r0); + + bool a1 = (true); + bool4x2 b1 = bool4x2(true, true, true, true, true, true, true, false); + bool4x2 r1 = bool4x2(false, false, false, false, false, false, false, true); + TestUtils.AreEqual(a1 ^ b1, r1); + + bool a2 = (true); + bool4x2 b2 = bool4x2(false, true, false, false, false, false, true, false); + bool4x2 r2 = bool4x2(true, false, true, true, true, true, false, true); + TestUtils.AreEqual(a2 ^ b2, r2); + + bool a3 = (true); + bool4x2 b3 = bool4x2(false, true, true, false, true, false, false, false); + bool4x2 r3 = bool4x2(true, false, false, true, false, true, true, true); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void bool4x2_operator_logical_not() + { + bool4x2 a0 = bool4x2(false, true, false, true, false, false, false, true); + bool4x2 r0 = bool4x2(true, false, true, false, true, true, true, false); + TestUtils.AreEqual(!a0, r0); + + bool4x2 a1 = bool4x2(true, true, true, true, false, false, false, true); + bool4x2 r1 = bool4x2(false, false, false, false, true, true, true, false); + TestUtils.AreEqual(!a1, r1); + + bool4x2 a2 = bool4x2(false, true, false, true, false, false, true, true); + bool4x2 r2 = bool4x2(true, false, true, false, true, true, false, false); + TestUtils.AreEqual(!a2, r2); + + bool4x2 a3 = bool4x2(true, true, true, false, true, false, false, true); + bool4x2 r3 = bool4x2(false, false, false, true, false, true, true, false); + TestUtils.AreEqual(!a3, r3); + } + + + } +} diff --git a/package/Tests/Tests/Shared/TestBool4x2.gen.cs.meta b/package/Tests/Tests/Shared/TestBool4x2.gen.cs.meta new file mode 100755 index 000000000..1893ebc02 --- /dev/null +++ b/package/Tests/Tests/Shared/TestBool4x2.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c7ec685ec2ccae14a851a50b1bcbebfa +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/package/Tests/Tests/Shared/TestBool4x3.gen.cs b/package/Tests/Tests/Shared/TestBool4x3.gen.cs new file mode 100755 index 000000000..aa0ad8b3e --- /dev/null +++ b/package/Tests/Tests/Shared/TestBool4x3.gen.cs @@ -0,0 +1,400 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using NUnit.Framework; +using static Unity.Mathematics.math; +using Burst.Compiler.IL.Tests; + +namespace Unity.Mathematics.Tests +{ + [TestFixture] + public class TestBool4x3 + { + [TestCompiler] + public static void bool4x3_operator_equal_wide_wide() + { + bool4x3 a0 = bool4x3(false, false, true, true, true, true, true, true, true, true, true, true); + bool4x3 b0 = bool4x3(false, true, true, false, true, true, false, true, true, true, false, false); + bool4x3 r0 = bool4x3(true, false, true, false, true, true, false, true, true, true, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + bool4x3 a1 = bool4x3(true, false, false, false, true, true, true, true, true, false, false, false); + bool4x3 b1 = bool4x3(false, false, true, true, true, true, true, false, false, true, false, true); + bool4x3 r1 = bool4x3(false, true, false, false, true, true, true, false, false, false, true, false); + TestUtils.AreEqual(a1 == b1, r1); + + bool4x3 a2 = bool4x3(false, true, false, true, true, true, true, true, false, true, true, false); + bool4x3 b2 = bool4x3(false, true, true, false, false, true, false, false, false, true, true, false); + bool4x3 r2 = bool4x3(true, true, false, false, false, true, false, false, true, true, true, true); + TestUtils.AreEqual(a2 == b2, r2); + + bool4x3 a3 = bool4x3(false, true, true, false, false, true, true, true, true, false, true, false); + bool4x3 b3 = bool4x3(true, false, true, true, false, true, false, false, false, true, true, false); + bool4x3 r3 = bool4x3(false, false, true, false, true, true, false, false, false, false, true, true); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void bool4x3_operator_equal_wide_scalar() + { + bool4x3 a0 = bool4x3(true, true, false, true, true, false, true, true, true, false, false, false); + bool b0 = (false); + bool4x3 r0 = bool4x3(false, false, true, false, false, true, false, false, false, true, true, true); + TestUtils.AreEqual(a0 == b0, r0); + + bool4x3 a1 = bool4x3(false, false, false, false, false, true, true, false, false, true, false, true); + bool b1 = (true); + bool4x3 r1 = bool4x3(false, false, false, false, false, true, true, false, false, true, false, true); + TestUtils.AreEqual(a1 == b1, r1); + + bool4x3 a2 = bool4x3(false, false, true, false, false, true, false, true, true, false, false, false); + bool b2 = (true); + bool4x3 r2 = bool4x3(false, false, true, false, false, true, false, true, true, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + bool4x3 a3 = bool4x3(false, true, false, true, true, false, false, false, true, true, true, false); + bool b3 = (false); + bool4x3 r3 = bool4x3(true, false, true, false, false, true, true, true, false, false, false, true); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void bool4x3_operator_equal_scalar_wide() + { + bool a0 = (true); + bool4x3 b0 = bool4x3(false, false, true, false, true, false, true, false, false, false, false, true); + bool4x3 r0 = bool4x3(false, false, true, false, true, false, true, false, false, false, false, true); + TestUtils.AreEqual(a0 == b0, r0); + + bool a1 = (false); + bool4x3 b1 = bool4x3(true, true, true, false, true, true, false, false, true, false, false, true); + bool4x3 r1 = bool4x3(false, false, false, true, false, false, true, true, false, true, true, false); + TestUtils.AreEqual(a1 == b1, r1); + + bool a2 = (false); + bool4x3 b2 = bool4x3(false, true, false, false, true, false, true, true, true, true, false, false); + bool4x3 r2 = bool4x3(true, false, true, true, false, true, false, false, false, false, true, true); + TestUtils.AreEqual(a2 == b2, r2); + + bool a3 = (true); + bool4x3 b3 = bool4x3(false, false, true, true, true, false, true, false, false, true, true, true); + bool4x3 r3 = bool4x3(false, false, true, true, true, false, true, false, false, true, true, true); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void bool4x3_operator_not_equal_wide_wide() + { + bool4x3 a0 = bool4x3(true, false, false, true, true, true, true, true, true, true, false, true); + bool4x3 b0 = bool4x3(false, false, true, false, false, false, false, false, true, true, false, false); + bool4x3 r0 = bool4x3(true, false, true, true, true, true, true, true, false, false, false, true); + TestUtils.AreEqual(a0 != b0, r0); + + bool4x3 a1 = bool4x3(true, false, true, false, false, true, true, true, false, true, false, false); + bool4x3 b1 = bool4x3(false, false, false, true, true, false, false, false, false, false, true, true); + bool4x3 r1 = bool4x3(true, false, true, true, true, true, true, true, false, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + bool4x3 a2 = bool4x3(false, true, true, true, false, false, true, false, false, true, false, true); + bool4x3 b2 = bool4x3(true, false, false, false, true, true, false, false, true, false, false, true); + bool4x3 r2 = bool4x3(true, true, true, true, true, true, true, false, true, true, false, false); + TestUtils.AreEqual(a2 != b2, r2); + + bool4x3 a3 = bool4x3(true, true, true, false, true, true, true, false, true, false, false, false); + bool4x3 b3 = bool4x3(true, true, true, false, false, true, false, false, false, true, true, true); + bool4x3 r3 = bool4x3(false, false, false, false, true, false, true, false, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void bool4x3_operator_not_equal_wide_scalar() + { + bool4x3 a0 = bool4x3(false, false, true, true, true, true, false, false, true, false, true, false); + bool b0 = (false); + bool4x3 r0 = bool4x3(false, false, true, true, true, true, false, false, true, false, true, false); + TestUtils.AreEqual(a0 != b0, r0); + + bool4x3 a1 = bool4x3(true, true, true, true, true, false, false, true, true, true, true, false); + bool b1 = (false); + bool4x3 r1 = bool4x3(true, true, true, true, true, false, false, true, true, true, true, false); + TestUtils.AreEqual(a1 != b1, r1); + + bool4x3 a2 = bool4x3(false, false, false, true, true, true, false, true, false, true, true, true); + bool b2 = (false); + bool4x3 r2 = bool4x3(false, false, false, true, true, true, false, true, false, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + bool4x3 a3 = bool4x3(false, true, true, false, true, false, false, false, false, true, true, false); + bool b3 = (false); + bool4x3 r3 = bool4x3(false, true, true, false, true, false, false, false, false, true, true, false); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void bool4x3_operator_not_equal_scalar_wide() + { + bool a0 = (true); + bool4x3 b0 = bool4x3(true, true, false, true, false, true, false, false, false, true, true, true); + bool4x3 r0 = bool4x3(false, false, true, false, true, false, true, true, true, false, false, false); + TestUtils.AreEqual(a0 != b0, r0); + + bool a1 = (false); + bool4x3 b1 = bool4x3(true, true, false, false, false, true, true, false, false, true, false, true); + bool4x3 r1 = bool4x3(true, true, false, false, false, true, true, false, false, true, false, true); + TestUtils.AreEqual(a1 != b1, r1); + + bool a2 = (false); + bool4x3 b2 = bool4x3(false, true, true, true, false, false, true, false, false, true, false, true); + bool4x3 r2 = bool4x3(false, true, true, true, false, false, true, false, false, true, false, true); + TestUtils.AreEqual(a2 != b2, r2); + + bool a3 = (false); + bool4x3 b3 = bool4x3(false, false, false, true, false, false, true, false, false, false, false, false); + bool4x3 r3 = bool4x3(false, false, false, true, false, false, true, false, false, false, false, false); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void bool4x3_operator_bitwise_and_wide_wide() + { + bool4x3 a0 = bool4x3(false, true, true, false, false, false, true, false, true, true, false, true); + bool4x3 b0 = bool4x3(false, true, false, false, false, true, true, false, false, true, false, true); + bool4x3 r0 = bool4x3(false, true, false, false, false, false, true, false, false, true, false, true); + TestUtils.AreEqual(a0 & b0, r0); + + bool4x3 a1 = bool4x3(false, false, true, false, false, false, false, true, false, true, true, false); + bool4x3 b1 = bool4x3(true, false, true, true, false, false, false, true, false, false, false, true); + bool4x3 r1 = bool4x3(false, false, true, false, false, false, false, true, false, false, false, false); + TestUtils.AreEqual(a1 & b1, r1); + + bool4x3 a2 = bool4x3(false, false, true, false, false, true, false, false, true, true, true, false); + bool4x3 b2 = bool4x3(true, false, false, false, true, false, false, true, false, false, false, true); + bool4x3 r2 = bool4x3(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 & b2, r2); + + bool4x3 a3 = bool4x3(false, false, false, true, true, false, true, false, false, true, true, true); + bool4x3 b3 = bool4x3(true, true, false, true, false, false, false, true, false, false, true, true); + bool4x3 r3 = bool4x3(false, false, false, true, false, false, false, false, false, false, true, true); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void bool4x3_operator_bitwise_and_wide_scalar() + { + bool4x3 a0 = bool4x3(false, false, true, true, true, false, true, true, true, false, false, false); + bool b0 = (false); + bool4x3 r0 = bool4x3(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a0 & b0, r0); + + bool4x3 a1 = bool4x3(true, true, false, false, true, false, true, true, false, true, false, true); + bool b1 = (false); + bool4x3 r1 = bool4x3(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 & b1, r1); + + bool4x3 a2 = bool4x3(false, true, true, false, false, true, false, false, true, false, true, true); + bool b2 = (true); + bool4x3 r2 = bool4x3(false, true, true, false, false, true, false, false, true, false, true, true); + TestUtils.AreEqual(a2 & b2, r2); + + bool4x3 a3 = bool4x3(false, false, true, false, false, true, true, false, true, false, false, true); + bool b3 = (false); + bool4x3 r3 = bool4x3(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void bool4x3_operator_bitwise_and_scalar_wide() + { + bool a0 = (true); + bool4x3 b0 = bool4x3(false, false, true, true, false, false, true, true, true, false, true, false); + bool4x3 r0 = bool4x3(false, false, true, true, false, false, true, true, true, false, true, false); + TestUtils.AreEqual(a0 & b0, r0); + + bool a1 = (true); + bool4x3 b1 = bool4x3(true, false, false, true, true, false, true, true, false, true, true, true); + bool4x3 r1 = bool4x3(true, false, false, true, true, false, true, true, false, true, true, true); + TestUtils.AreEqual(a1 & b1, r1); + + bool a2 = (true); + bool4x3 b2 = bool4x3(true, false, true, true, true, false, true, false, true, false, true, false); + bool4x3 r2 = bool4x3(true, false, true, true, true, false, true, false, true, false, true, false); + TestUtils.AreEqual(a2 & b2, r2); + + bool a3 = (true); + bool4x3 b3 = bool4x3(true, true, false, true, true, false, true, false, false, false, true, true); + bool4x3 r3 = bool4x3(true, true, false, true, true, false, true, false, false, false, true, true); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void bool4x3_operator_bitwise_or_wide_wide() + { + bool4x3 a0 = bool4x3(true, false, false, true, true, false, false, false, false, false, true, true); + bool4x3 b0 = bool4x3(true, false, true, true, true, true, true, true, true, true, false, false); + bool4x3 r0 = bool4x3(true, false, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 | b0, r0); + + bool4x3 a1 = bool4x3(false, false, true, true, true, false, true, true, false, true, false, false); + bool4x3 b1 = bool4x3(true, true, true, true, true, true, false, false, false, false, true, false); + bool4x3 r1 = bool4x3(true, true, true, true, true, true, true, true, false, true, true, false); + TestUtils.AreEqual(a1 | b1, r1); + + bool4x3 a2 = bool4x3(false, false, true, false, true, false, false, true, false, false, false, true); + bool4x3 b2 = bool4x3(false, true, false, true, false, false, true, true, true, true, true, false); + bool4x3 r2 = bool4x3(false, true, true, true, true, false, true, true, true, true, true, true); + TestUtils.AreEqual(a2 | b2, r2); + + bool4x3 a3 = bool4x3(false, false, false, false, false, true, false, true, true, true, true, false); + bool4x3 b3 = bool4x3(true, true, true, true, true, true, true, false, true, true, false, false); + bool4x3 r3 = bool4x3(true, true, true, true, true, true, true, true, true, true, true, false); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void bool4x3_operator_bitwise_or_wide_scalar() + { + bool4x3 a0 = bool4x3(false, false, true, true, false, true, false, true, false, true, true, false); + bool b0 = (true); + bool4x3 r0 = bool4x3(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 | b0, r0); + + bool4x3 a1 = bool4x3(false, false, true, false, true, false, false, false, true, true, false, true); + bool b1 = (true); + bool4x3 r1 = bool4x3(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 | b1, r1); + + bool4x3 a2 = bool4x3(true, true, true, true, true, true, false, false, false, true, false, false); + bool b2 = (true); + bool4x3 r2 = bool4x3(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 | b2, r2); + + bool4x3 a3 = bool4x3(true, true, true, false, false, false, false, true, true, true, true, false); + bool b3 = (true); + bool4x3 r3 = bool4x3(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void bool4x3_operator_bitwise_or_scalar_wide() + { + bool a0 = (true); + bool4x3 b0 = bool4x3(true, true, false, false, false, false, true, true, false, true, true, false); + bool4x3 r0 = bool4x3(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 | b0, r0); + + bool a1 = (false); + bool4x3 b1 = bool4x3(false, false, false, false, false, false, true, false, true, true, true, true); + bool4x3 r1 = bool4x3(false, false, false, false, false, false, true, false, true, true, true, true); + TestUtils.AreEqual(a1 | b1, r1); + + bool a2 = (true); + bool4x3 b2 = bool4x3(false, true, false, false, true, true, false, false, false, true, false, true); + bool4x3 r2 = bool4x3(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 | b2, r2); + + bool a3 = (true); + bool4x3 b3 = bool4x3(false, true, false, false, true, true, true, false, false, true, true, true); + bool4x3 r3 = bool4x3(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void bool4x3_operator_bitwise_xor_wide_wide() + { + bool4x3 a0 = bool4x3(true, false, true, true, true, true, false, false, false, false, true, false); + bool4x3 b0 = bool4x3(false, true, false, false, false, true, false, false, true, true, true, false); + bool4x3 r0 = bool4x3(true, true, true, true, true, false, false, false, true, true, false, false); + TestUtils.AreEqual(a0 ^ b0, r0); + + bool4x3 a1 = bool4x3(false, false, true, false, true, false, false, false, true, true, true, true); + bool4x3 b1 = bool4x3(false, false, true, true, false, false, true, true, true, true, false, true); + bool4x3 r1 = bool4x3(false, false, false, true, true, false, true, true, false, false, true, false); + TestUtils.AreEqual(a1 ^ b1, r1); + + bool4x3 a2 = bool4x3(true, false, true, true, false, false, true, false, false, true, true, true); + bool4x3 b2 = bool4x3(true, false, false, false, true, false, false, false, false, false, true, false); + bool4x3 r2 = bool4x3(false, false, true, true, true, false, true, false, false, true, false, true); + TestUtils.AreEqual(a2 ^ b2, r2); + + bool4x3 a3 = bool4x3(true, false, true, true, true, true, false, true, false, true, false, true); + bool4x3 b3 = bool4x3(true, true, false, false, false, false, true, false, false, false, true, false); + bool4x3 r3 = bool4x3(false, true, true, true, true, true, true, true, false, true, true, true); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void bool4x3_operator_bitwise_xor_wide_scalar() + { + bool4x3 a0 = bool4x3(true, false, false, true, true, false, false, false, true, false, true, true); + bool b0 = (false); + bool4x3 r0 = bool4x3(true, false, false, true, true, false, false, false, true, false, true, true); + TestUtils.AreEqual(a0 ^ b0, r0); + + bool4x3 a1 = bool4x3(false, true, false, false, false, false, false, false, false, false, false, true); + bool b1 = (true); + bool4x3 r1 = bool4x3(true, false, true, true, true, true, true, true, true, true, true, false); + TestUtils.AreEqual(a1 ^ b1, r1); + + bool4x3 a2 = bool4x3(true, false, false, false, false, true, true, false, false, false, true, false); + bool b2 = (false); + bool4x3 r2 = bool4x3(true, false, false, false, false, true, true, false, false, false, true, false); + TestUtils.AreEqual(a2 ^ b2, r2); + + bool4x3 a3 = bool4x3(false, true, false, true, true, false, false, true, true, true, false, true); + bool b3 = (false); + bool4x3 r3 = bool4x3(false, true, false, true, true, false, false, true, true, true, false, true); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void bool4x3_operator_bitwise_xor_scalar_wide() + { + bool a0 = (true); + bool4x3 b0 = bool4x3(true, false, false, true, false, true, true, true, true, true, true, true); + bool4x3 r0 = bool4x3(false, true, true, false, true, false, false, false, false, false, false, false); + TestUtils.AreEqual(a0 ^ b0, r0); + + bool a1 = (true); + bool4x3 b1 = bool4x3(true, true, true, false, true, false, true, false, false, false, false, true); + bool4x3 r1 = bool4x3(false, false, false, true, false, true, false, true, true, true, true, false); + TestUtils.AreEqual(a1 ^ b1, r1); + + bool a2 = (false); + bool4x3 b2 = bool4x3(true, false, true, true, false, true, false, false, false, false, true, false); + bool4x3 r2 = bool4x3(true, false, true, true, false, true, false, false, false, false, true, false); + TestUtils.AreEqual(a2 ^ b2, r2); + + bool a3 = (false); + bool4x3 b3 = bool4x3(false, false, false, true, false, false, true, true, false, false, true, false); + bool4x3 r3 = bool4x3(false, false, false, true, false, false, true, true, false, false, true, false); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void bool4x3_operator_logical_not() + { + bool4x3 a0 = bool4x3(false, true, false, true, false, false, false, true, true, false, true, true); + bool4x3 r0 = bool4x3(true, false, true, false, true, true, true, false, false, true, false, false); + TestUtils.AreEqual(!a0, r0); + + bool4x3 a1 = bool4x3(true, false, false, true, false, false, true, false, true, false, false, true); + bool4x3 r1 = bool4x3(false, true, true, false, true, true, false, true, false, true, true, false); + TestUtils.AreEqual(!a1, r1); + + bool4x3 a2 = bool4x3(true, true, true, true, false, true, false, false, true, false, false, false); + bool4x3 r2 = bool4x3(false, false, false, false, true, false, true, true, false, true, true, true); + TestUtils.AreEqual(!a2, r2); + + bool4x3 a3 = bool4x3(true, false, false, false, false, true, false, true, true, true, false, true); + bool4x3 r3 = bool4x3(false, true, true, true, true, false, true, false, false, false, true, false); + TestUtils.AreEqual(!a3, r3); + } + + + } +} diff --git a/package/Tests/Tests/Shared/TestBool4x3.gen.cs.meta b/package/Tests/Tests/Shared/TestBool4x3.gen.cs.meta new file mode 100755 index 000000000..95824aa26 --- /dev/null +++ b/package/Tests/Tests/Shared/TestBool4x3.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 58c624ce115ab234d9a595288af4c5e0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/package/Tests/Tests/Shared/TestBool4x4.gen.cs b/package/Tests/Tests/Shared/TestBool4x4.gen.cs new file mode 100755 index 000000000..b0eead2ad --- /dev/null +++ b/package/Tests/Tests/Shared/TestBool4x4.gen.cs @@ -0,0 +1,400 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using NUnit.Framework; +using static Unity.Mathematics.math; +using Burst.Compiler.IL.Tests; + +namespace Unity.Mathematics.Tests +{ + [TestFixture] + public class TestBool4x4 + { + [TestCompiler] + public static void bool4x4_operator_equal_wide_wide() + { + bool4x4 a0 = bool4x4(false, false, true, true, true, true, true, true, true, true, true, true, true, false, false, false); + bool4x4 b0 = bool4x4(false, true, true, false, true, true, false, true, true, true, false, false, false, false, true, true); + bool4x4 r0 = bool4x4(true, false, true, false, true, true, false, true, true, true, false, false, false, true, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + bool4x4 a1 = bool4x4(true, true, true, true, true, false, false, false, false, true, false, true, true, true, true, true); + bool4x4 b1 = bool4x4(true, true, true, false, false, true, false, true, false, true, true, false, false, true, false, false); + bool4x4 r1 = bool4x4(true, true, true, false, false, false, true, false, true, true, false, false, false, true, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + bool4x4 a2 = bool4x4(false, true, true, false, false, true, true, false, false, true, true, true, true, false, true, false); + bool4x4 b2 = bool4x4(false, true, true, false, true, false, true, true, false, true, false, false, false, true, true, false); + bool4x4 r2 = bool4x4(true, true, true, true, false, false, true, false, true, true, false, false, false, false, true, true); + TestUtils.AreEqual(a2 == b2, r2); + + bool4x4 a3 = bool4x4(false, false, false, false, false, true, true, false, false, true, true, false, false, true, true, false); + bool4x4 b3 = bool4x4(false, false, false, true, true, false, false, false, false, false, false, false, true, true, false, false); + bool4x4 r3 = bool4x4(true, true, true, false, false, false, false, true, true, false, false, true, false, true, false, true); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void bool4x4_operator_equal_wide_scalar() + { + bool4x4 a0 = bool4x4(true, true, false, true, true, false, true, true, true, false, false, false, false, true, false, false); + bool b0 = (false); + bool4x4 r0 = bool4x4(false, false, true, false, false, true, false, false, false, true, true, true, true, false, true, true); + TestUtils.AreEqual(a0 == b0, r0); + + bool4x4 a1 = bool4x4(false, true, true, false, false, true, false, true, false, true, false, true, false, false, true, false); + bool b1 = (false); + bool4x4 r1 = bool4x4(true, false, false, true, true, false, true, false, true, false, true, false, true, true, false, true); + TestUtils.AreEqual(a1 == b1, r1); + + bool4x4 a2 = bool4x4(true, false, false, false, false, false, true, false, true, true, false, false, false, true, true, true); + bool b2 = (true); + bool4x4 r2 = bool4x4(true, false, false, false, false, false, true, false, true, true, false, false, false, true, true, true); + TestUtils.AreEqual(a2 == b2, r2); + + bool4x4 a3 = bool4x4(false, true, false, false, false, false, true, true, true, true, true, false, true, false, true, false); + bool b3 = (false); + bool4x4 r3 = bool4x4(true, false, true, true, true, true, false, false, false, false, false, true, false, true, false, true); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void bool4x4_operator_equal_scalar_wide() + { + bool a0 = (true); + bool4x4 b0 = bool4x4(false, false, true, false, true, false, true, false, false, false, false, true, false, true, true, true); + bool4x4 r0 = bool4x4(false, false, true, false, true, false, true, false, false, false, false, true, false, true, true, true); + TestUtils.AreEqual(a0 == b0, r0); + + bool a1 = (false); + bool4x4 b1 = bool4x4(true, true, false, false, true, false, false, true, false, false, true, false, false, true, false, true); + bool4x4 r1 = bool4x4(false, false, true, true, false, true, true, false, true, true, false, true, true, false, true, false); + TestUtils.AreEqual(a1 == b1, r1); + + bool a2 = (true); + bool4x4 b2 = bool4x4(true, true, false, false, true, false, false, true, true, true, false, true, false, false, true, true); + bool4x4 r2 = bool4x4(true, true, false, false, true, false, false, true, true, true, false, true, false, false, true, true); + TestUtils.AreEqual(a2 == b2, r2); + + bool a3 = (true); + bool4x4 b3 = bool4x4(false, true, false, false, false, true, false, false, true, false, false, true, false, true, true, true); + bool4x4 r3 = bool4x4(false, true, false, false, false, true, false, false, true, false, false, true, false, true, true, true); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void bool4x4_operator_not_equal_wide_wide() + { + bool4x4 a0 = bool4x4(true, false, false, true, true, true, true, true, true, true, false, true, true, false, true, false); + bool4x4 b0 = bool4x4(false, false, true, false, false, false, false, false, true, true, false, false, false, false, false, true); + bool4x4 r0 = bool4x4(true, false, true, true, true, true, true, true, false, false, false, true, true, false, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + bool4x4 a1 = bool4x4(false, true, true, true, false, true, false, false, false, true, true, true, false, false, true, false); + bool4x4 b1 = bool4x4(true, false, false, false, false, false, true, true, true, false, false, false, true, true, false, false); + bool4x4 r1 = bool4x4(true, true, true, true, false, true, true, true, true, true, true, true, true, true, true, false); + TestUtils.AreEqual(a1 != b1, r1); + + bool4x4 a2 = bool4x4(false, true, false, true, true, true, true, false, true, true, true, false, true, false, false, false); + bool4x4 b2 = bool4x4(true, false, false, true, true, true, true, false, false, true, false, false, false, true, true, true); + bool4x4 r2 = bool4x4(true, true, false, false, false, false, false, false, true, false, true, false, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + bool4x4 a3 = bool4x4(true, false, true, false, false, false, true, false, true, false, false, true, true, true, false, false); + bool4x4 b3 = bool4x4(false, false, true, false, false, true, true, false, true, true, true, true, true, true, false, true); + bool4x4 r3 = bool4x4(true, false, false, false, false, true, false, false, false, true, true, false, false, false, false, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void bool4x4_operator_not_equal_wide_scalar() + { + bool4x4 a0 = bool4x4(false, false, true, true, true, true, false, false, true, false, true, false, true, false, true, true); + bool b0 = (false); + bool4x4 r0 = bool4x4(false, false, true, true, true, true, false, false, true, false, true, false, true, false, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + bool4x4 a1 = bool4x4(true, false, false, true, true, true, true, false, false, false, false, false, true, true, true, false); + bool b1 = (true); + bool4x4 r1 = bool4x4(false, true, true, false, false, false, false, true, true, true, true, true, false, false, false, true); + TestUtils.AreEqual(a1 != b1, r1); + + bool4x4 a2 = bool4x4(true, true, true, true, false, false, true, true, false, true, false, false, false, false, true, true); + bool b2 = (false); + bool4x4 r2 = bool4x4(true, true, true, true, false, false, true, true, false, true, false, false, false, false, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + bool4x4 a3 = bool4x4(false, true, true, true, false, true, true, true, true, false, false, false, false, true, false, true); + bool b3 = (true); + bool4x4 r3 = bool4x4(true, false, false, false, true, false, false, false, false, true, true, true, true, false, true, false); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void bool4x4_operator_not_equal_scalar_wide() + { + bool a0 = (true); + bool4x4 b0 = bool4x4(true, true, false, true, false, true, false, false, false, true, true, true, false, true, true, false); + bool4x4 r0 = bool4x4(false, false, true, false, true, false, true, true, true, false, false, false, true, false, false, true); + TestUtils.AreEqual(a0 != b0, r0); + + bool a1 = (false); + bool4x4 b1 = bool4x4(false, true, true, false, false, true, false, true, false, false, true, true, true, false, false, true); + bool4x4 r1 = bool4x4(false, true, true, false, false, true, false, true, false, false, true, true, true, false, false, true); + TestUtils.AreEqual(a1 != b1, r1); + + bool a2 = (false); + bool4x4 b2 = bool4x4(false, true, false, true, false, false, false, false, true, false, false, true, false, false, false, false); + bool4x4 r2 = bool4x4(false, true, false, true, false, false, false, false, true, false, false, true, false, false, false, false); + TestUtils.AreEqual(a2 != b2, r2); + + bool a3 = (false); + bool4x4 b3 = bool4x4(true, true, true, false, true, true, true, true, false, true, false, true, false, false, false, false); + bool4x4 r3 = bool4x4(true, true, true, false, true, true, true, true, false, true, false, true, false, false, false, false); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void bool4x4_operator_bitwise_and_wide_wide() + { + bool4x4 a0 = bool4x4(false, true, true, false, false, false, true, false, true, true, false, true, false, false, true, false); + bool4x4 b0 = bool4x4(false, true, false, false, false, true, true, false, false, true, false, true, true, false, true, true); + bool4x4 r0 = bool4x4(false, true, false, false, false, false, true, false, false, true, false, true, false, false, true, false); + TestUtils.AreEqual(a0 & b0, r0); + + bool4x4 a1 = bool4x4(false, false, false, true, false, true, true, false, false, false, true, false, false, true, false, false); + bool4x4 b1 = bool4x4(false, false, false, true, false, false, false, true, true, false, false, false, true, false, false, true); + bool4x4 r1 = bool4x4(false, false, false, true, false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 & b1, r1); + + bool4x4 a2 = bool4x4(true, true, true, false, false, false, false, true, true, false, true, false, false, true, true, true); + bool4x4 b2 = bool4x4(false, false, false, true, true, true, false, true, false, false, false, true, false, false, true, true); + bool4x4 r2 = bool4x4(false, false, false, false, false, false, false, true, false, false, false, false, false, false, true, true); + TestUtils.AreEqual(a2 & b2, r2); + + bool4x4 a3 = bool4x4(false, true, true, false, true, true, true, true, false, false, false, false, true, false, false, false); + bool4x4 b3 = bool4x4(false, false, true, false, false, true, false, true, true, true, false, false, false, false, true, true); + bool4x4 r3 = bool4x4(false, false, true, false, false, true, false, true, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void bool4x4_operator_bitwise_and_wide_scalar() + { + bool4x4 a0 = bool4x4(false, false, true, true, true, false, true, true, true, false, false, false, true, false, true, false); + bool b0 = (false); + bool4x4 r0 = bool4x4(false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a0 & b0, r0); + + bool4x4 a1 = bool4x4(false, false, true, true, false, true, false, true, false, true, true, true, false, false, true, false); + bool b1 = (true); + bool4x4 r1 = bool4x4(false, false, true, true, false, true, false, true, false, true, true, true, false, false, true, false); + TestUtils.AreEqual(a1 & b1, r1); + + bool4x4 a2 = bool4x4(false, false, true, true, false, false, false, true, false, false, true, true, false, true, false, false); + bool b2 = (true); + bool4x4 r2 = bool4x4(false, false, true, true, false, false, false, true, false, false, true, true, false, true, false, false); + TestUtils.AreEqual(a2 & b2, r2); + + bool4x4 a3 = bool4x4(true, false, false, true, true, false, true, false, false, false, false, true, false, true, true, false); + bool b3 = (false); + bool4x4 r3 = bool4x4(false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void bool4x4_operator_bitwise_and_scalar_wide() + { + bool a0 = (true); + bool4x4 b0 = bool4x4(false, false, true, true, false, false, true, true, true, false, true, false, true, true, false, false); + bool4x4 r0 = bool4x4(false, false, true, true, false, false, true, true, true, false, true, false, true, true, false, false); + TestUtils.AreEqual(a0 & b0, r0); + + bool a1 = (true); + bool4x4 b1 = bool4x4(true, false, true, true, false, true, true, true, true, true, false, true, true, true, false, true); + bool4x4 r1 = bool4x4(true, false, true, true, false, true, true, true, true, true, false, true, true, true, false, true); + TestUtils.AreEqual(a1 & b1, r1); + + bool a2 = (false); + bool4x4 b2 = bool4x4(true, false, true, false, true, true, true, false, true, true, false, true, false, false, false, true); + bool4x4 r2 = bool4x4(false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 & b2, r2); + + bool a3 = (true); + bool4x4 b3 = bool4x4(true, false, true, true, false, false, true, false, true, true, true, false, true, true, false, false); + bool4x4 r3 = bool4x4(true, false, true, true, false, false, true, false, true, true, true, false, true, true, false, false); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void bool4x4_operator_bitwise_or_wide_wide() + { + bool4x4 a0 = bool4x4(true, false, false, true, true, false, false, false, false, false, true, true, false, false, true, true); + bool4x4 b0 = bool4x4(true, false, true, true, true, true, true, true, true, true, false, false, true, true, true, true); + bool4x4 r0 = bool4x4(true, false, true, true, true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 | b0, r0); + + bool4x4 a1 = bool4x4(true, false, true, true, false, true, false, false, false, false, true, false, true, false, false, true); + bool4x4 b1 = bool4x4(true, true, false, false, false, false, true, false, false, true, false, true, false, false, true, true); + bool4x4 r1 = bool4x4(true, true, true, true, false, true, true, false, false, true, true, true, true, false, true, true); + TestUtils.AreEqual(a1 | b1, r1); + + bool4x4 a2 = bool4x4(false, false, false, true, false, false, false, false, false, true, false, true, true, true, true, false); + bool4x4 b2 = bool4x4(true, true, true, false, true, true, true, true, true, true, true, false, true, true, false, false); + bool4x4 r2 = bool4x4(true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, false); + TestUtils.AreEqual(a2 | b2, r2); + + bool4x4 a3 = bool4x4(false, false, false, true, false, true, true, false, true, false, false, false, false, false, true, false); + bool4x4 b3 = bool4x4(false, false, true, true, false, false, false, false, true, false, false, false, true, true, true, false); + bool4x4 r3 = bool4x4(false, false, true, true, false, true, true, false, true, false, false, false, true, true, true, false); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void bool4x4_operator_bitwise_or_wide_scalar() + { + bool4x4 a0 = bool4x4(false, false, true, true, false, true, false, true, false, true, true, false, false, true, false, true); + bool b0 = (true); + bool4x4 r0 = bool4x4(true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 | b0, r0); + + bool4x4 a1 = bool4x4(false, false, false, false, true, true, false, true, true, true, true, true, true, true, true, false); + bool b1 = (true); + bool4x4 r1 = bool4x4(true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 | b1, r1); + + bool4x4 a2 = bool4x4(false, true, false, false, true, true, true, true, false, false, false, false, true, true, true, true); + bool b2 = (false); + bool4x4 r2 = bool4x4(false, true, false, false, true, true, true, true, false, false, false, false, true, true, true, true); + TestUtils.AreEqual(a2 | b2, r2); + + bool4x4 a3 = bool4x4(false, false, true, false, false, false, true, true, false, true, true, false, true, false, true, false); + bool b3 = (true); + bool4x4 r3 = bool4x4(true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void bool4x4_operator_bitwise_or_scalar_wide() + { + bool a0 = (true); + bool4x4 b0 = bool4x4(true, true, false, false, false, false, true, true, false, true, true, false, false, false, false, false); + bool4x4 r0 = bool4x4(true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 | b0, r0); + + bool a1 = (false); + bool4x4 b1 = bool4x4(false, false, true, false, true, true, true, true, true, false, true, false, false, true, true, false); + bool4x4 r1 = bool4x4(false, false, true, false, true, true, true, true, true, false, true, false, false, true, true, false); + TestUtils.AreEqual(a1 | b1, r1); + + bool a2 = (false); + bool4x4 b2 = bool4x4(false, true, false, true, true, false, true, false, false, true, true, true, false, false, true, true); + bool4x4 r2 = bool4x4(false, true, false, true, true, false, true, false, false, true, true, true, false, false, true, true); + TestUtils.AreEqual(a2 | b2, r2); + + bool a3 = (true); + bool4x4 b3 = bool4x4(true, true, true, false, true, true, true, true, true, false, true, true, false, true, false, true); + bool4x4 r3 = bool4x4(true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void bool4x4_operator_bitwise_xor_wide_wide() + { + bool4x4 a0 = bool4x4(true, false, true, true, true, true, false, false, false, false, true, false, false, false, true, false); + bool4x4 b0 = bool4x4(false, true, false, false, false, true, false, false, true, true, true, false, false, false, true, true); + bool4x4 r0 = bool4x4(true, true, true, true, true, false, false, false, true, true, false, false, false, false, false, true); + TestUtils.AreEqual(a0 ^ b0, r0); + + bool4x4 a1 = bool4x4(true, false, false, false, true, true, true, true, true, false, true, true, false, false, true, false); + bool4x4 b1 = bool4x4(false, false, true, true, true, true, false, true, true, false, false, false, true, false, false, false); + bool4x4 r1 = bool4x4(true, false, true, true, false, false, true, false, false, false, true, true, true, false, true, false); + TestUtils.AreEqual(a1 ^ b1, r1); + + bool4x4 a2 = bool4x4(false, true, true, true, true, false, true, true, true, true, false, true, false, true, false, true); + bool4x4 b2 = bool4x4(false, false, true, false, true, true, false, false, false, false, true, false, false, false, true, false); + bool4x4 r2 = bool4x4(false, true, false, true, false, true, true, true, true, true, true, true, false, true, true, true); + TestUtils.AreEqual(a2 ^ b2, r2); + + bool4x4 a3 = bool4x4(true, true, false, true, true, true, false, false, false, true, true, true, false, true, false, false); + bool4x4 b3 = bool4x4(true, false, true, false, true, false, true, false, false, true, true, false, true, true, true, true); + bool4x4 r3 = bool4x4(false, true, true, true, false, true, true, false, false, false, false, true, true, false, true, true); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void bool4x4_operator_bitwise_xor_wide_scalar() + { + bool4x4 a0 = bool4x4(true, false, false, true, true, false, false, false, true, false, true, true, false, true, true, false); + bool b0 = (false); + bool4x4 r0 = bool4x4(true, false, false, true, true, false, false, false, true, false, true, true, false, true, true, false); + TestUtils.AreEqual(a0 ^ b0, r0); + + bool4x4 a1 = bool4x4(false, false, false, false, false, false, false, true, true, false, false, false, false, false, true, true); + bool b1 = (false); + bool4x4 r1 = bool4x4(false, false, false, false, false, false, false, true, true, false, false, false, false, false, true, true); + TestUtils.AreEqual(a1 ^ b1, r1); + + bool4x4 a2 = bool4x4(false, false, true, false, false, false, true, false, true, true, false, false, true, true, true, false); + bool b2 = (false); + bool4x4 r2 = bool4x4(false, false, true, false, false, false, true, false, true, true, false, false, true, true, true, false); + TestUtils.AreEqual(a2 ^ b2, r2); + + bool4x4 a3 = bool4x4(true, false, false, true, true, true, false, false, true, true, true, true, false, true, true, false); + bool b3 = (false); + bool4x4 r3 = bool4x4(true, false, false, true, true, true, false, false, true, true, true, true, false, true, true, false); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void bool4x4_operator_bitwise_xor_scalar_wide() + { + bool a0 = (true); + bool4x4 b0 = bool4x4(true, false, false, true, false, true, true, true, true, true, true, true, true, true, true, true); + bool4x4 r0 = bool4x4(false, true, true, false, true, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a0 ^ b0, r0); + + bool a1 = (false); + bool4x4 b1 = bool4x4(true, false, true, false, false, false, false, true, false, true, false, true, true, false, true, false); + bool4x4 r1 = bool4x4(true, false, true, false, false, false, false, true, false, true, false, true, true, false, true, false); + TestUtils.AreEqual(a1 ^ b1, r1); + + bool a2 = (false); + bool4x4 b2 = bool4x4(false, false, true, false, false, false, false, false, true, false, false, true, true, false, false, true); + bool4x4 r2 = bool4x4(false, false, true, false, false, false, false, false, true, false, false, true, true, false, false, true); + TestUtils.AreEqual(a2 ^ b2, r2); + + bool a3 = (false); + bool4x4 b3 = bool4x4(true, false, false, false, false, false, false, false, true, true, true, true, false, false, true, false); + bool4x4 r3 = bool4x4(true, false, false, false, false, false, false, false, true, true, true, true, false, false, true, false); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void bool4x4_operator_logical_not() + { + bool4x4 a0 = bool4x4(false, true, false, true, false, false, false, true, true, false, true, true, true, false, false, false); + bool4x4 r0 = bool4x4(true, false, true, false, true, true, true, false, false, true, false, false, false, true, true, true); + TestUtils.AreEqual(!a0, r0); + + bool4x4 a1 = bool4x4(true, false, true, false, true, false, false, true, true, true, true, true, true, false, true, false); + bool4x4 r1 = bool4x4(false, true, false, true, false, true, true, false, false, false, false, false, false, true, false, true); + TestUtils.AreEqual(!a1, r1); + + bool4x4 a2 = bool4x4(false, false, false, false, true, true, false, false, false, false, true, false, true, true, true, false); + bool4x4 r2 = bool4x4(true, true, true, true, false, false, true, true, true, true, false, true, false, false, false, true); + TestUtils.AreEqual(!a2, r2); + + bool4x4 a3 = bool4x4(true, false, true, true, true, false, true, false, true, true, false, true, true, false, true, true); + bool4x4 r3 = bool4x4(false, true, false, false, false, true, false, true, false, false, true, false, false, true, false, false); + TestUtils.AreEqual(!a3, r3); + } + + + } +} diff --git a/package/Tests/Tests/Shared/TestBool4x4.gen.cs.meta b/package/Tests/Tests/Shared/TestBool4x4.gen.cs.meta new file mode 100755 index 000000000..65dfed00d --- /dev/null +++ b/package/Tests/Tests/Shared/TestBool4x4.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 0d44f89a4f95a124b9fc8296247d76d9 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/package/Tests/Tests/Shared/TestDouble2.gen.cs b/package/Tests/Tests/Shared/TestDouble2.gen.cs new file mode 100755 index 000000000..64be2a116 --- /dev/null +++ b/package/Tests/Tests/Shared/TestDouble2.gen.cs @@ -0,0 +1,1055 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using NUnit.Framework; +using static Unity.Mathematics.math; +using Burst.Compiler.IL.Tests; + +namespace Unity.Mathematics.Tests +{ + [TestFixture] + public class TestDouble2 + { + [TestCompiler] + public static void double2_zero() + { + TestUtils.AreEqual(double2.zero.x, 0.0); + TestUtils.AreEqual(double2.zero.y, 0.0); + } + + [TestCompiler] + public static void double2_constructor() + { + double2 a = new double2(1, 2); + TestUtils.AreEqual(a.x, 1); + TestUtils.AreEqual(a.y, 2); + } + + [TestCompiler] + public static void double2_scalar_constructor() + { + double2 a = new double2(17.0); + TestUtils.AreEqual(a.x, 17.0); + TestUtils.AreEqual(a.y, 17.0); + } + + [TestCompiler] + public static void double2_static_constructor() + { + double2 a = double2(1, 2); + TestUtils.AreEqual(a.x, 1); + TestUtils.AreEqual(a.y, 2); + } + + [TestCompiler] + public static void double2_static_scalar_constructor() + { + double2 a = double2(17.0); + TestUtils.AreEqual(a.x, 17.0); + TestUtils.AreEqual(a.y, 17.0); + } + + [TestCompiler] + public static void double2_operator_equal_wide_wide() + { + double2 a0 = double2(-135.18925172425304, -49.094127439471947); + double2 b0 = double2(-220.01464591734793, 66.980020792679852); + bool2 r0 = bool2(false, false); + TestUtils.AreEqual(a0 == b0, r0); + + double2 a1 = double2(169.12980778940482, 240.80529772527757); + double2 b1 = double2(499.20158576369363, -371.113114291389); + bool2 r1 = bool2(false, false); + TestUtils.AreEqual(a1 == b1, r1); + + double2 a2 = double2(314.73919382446411, 442.39301916695808); + double2 b2 = double2(208.44865212610398, 390.80369133074009); + bool2 r2 = bool2(false, false); + TestUtils.AreEqual(a2 == b2, r2); + + double2 a3 = double2(177.92444881141398, 335.53340283759564); + double2 b3 = double2(-72.443806920407269, 362.97643273089841); + bool2 r3 = bool2(false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void double2_operator_equal_wide_scalar() + { + double2 a0 = double2(65.671194345537174, 404.41550440546848); + double b0 = (-155.8157547245807); + bool2 r0 = bool2(false, false); + TestUtils.AreEqual(a0 == b0, r0); + + double2 a1 = double2(-269.7301577393572, 152.99450476141385); + double b1 = (83.630607882342588); + bool2 r1 = bool2(false, false); + TestUtils.AreEqual(a1 == b1, r1); + + double2 a2 = double2(-155.86829836474186, 386.36515325417986); + double b2 = (314.67125597348024); + bool2 r2 = bool2(false, false); + TestUtils.AreEqual(a2 == b2, r2); + + double2 a3 = double2(290.04894007837811, -65.667489797653388); + double b3 = (-132.63519460178691); + bool2 r3 = bool2(false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void double2_operator_equal_scalar_wide() + { + double a0 = (36.383921878591195); + double2 b0 = double2(-400.48919958644046, -71.286823544319191); + bool2 r0 = bool2(false, false); + TestUtils.AreEqual(a0 == b0, r0); + + double a1 = (156.97811491646712); + double2 b1 = double2(-225.23872791288363, 499.14180993435059); + bool2 r1 = bool2(false, false); + TestUtils.AreEqual(a1 == b1, r1); + + double a2 = (-211.97992358542047); + double2 b2 = double2(428.31192394174263, -489.50133322621758); + bool2 r2 = bool2(false, false); + TestUtils.AreEqual(a2 == b2, r2); + + double a3 = (-5.6915457275190988); + double2 b3 = double2(-30.865948453017495, -362.98307221149241); + bool2 r3 = bool2(false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void double2_operator_not_equal_wide_wide() + { + double2 a0 = double2(279.99414576217259, -43.342018386042696); + double2 b0 = double2(-460.912120318465, -476.00904844515446); + bool2 r0 = bool2(true, true); + TestUtils.AreEqual(a0 != b0, r0); + + double2 a1 = double2(-465.72473523846116, 317.46655645848557); + double2 b1 = double2(468.13642070635058, -341.01254312182431); + bool2 r1 = bool2(true, true); + TestUtils.AreEqual(a1 != b1, r1); + + double2 a2 = double2(85.714987079480238, 360.89050572034466); + double2 b2 = double2(-62.658060341448561, -458.80166718866752); + bool2 r2 = bool2(true, true); + TestUtils.AreEqual(a2 != b2, r2); + + double2 a3 = double2(366.08152668833804, 154.5428384070018); + double2 b3 = double2(-457.73023316717251, -59.523265627922171); + bool2 r3 = bool2(true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void double2_operator_not_equal_wide_scalar() + { + double2 a0 = double2(-155.44111282911206, -19.426602134214079); + double b0 = (-393.41354173860213); + bool2 r0 = bool2(true, true); + TestUtils.AreEqual(a0 != b0, r0); + + double2 a1 = double2(174.63305409934048, 59.177048472304364); + double b1 = (507.9207296352464); + bool2 r1 = bool2(true, true); + TestUtils.AreEqual(a1 != b1, r1); + + double2 a2 = double2(171.15146430356026, -398.17684835855704); + double b2 = (-58.923273352404692); + bool2 r2 = bool2(true, true); + TestUtils.AreEqual(a2 != b2, r2); + + double2 a3 = double2(492.20105361016522, 270.34102333259818); + double b3 = (-165.24150879925185); + bool2 r3 = bool2(true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void double2_operator_not_equal_scalar_wide() + { + double a0 = (478.35313938481409); + double2 b0 = double2(459.55319592894671, 436.45324369727314); + bool2 r0 = bool2(true, true); + TestUtils.AreEqual(a0 != b0, r0); + + double a1 = (-488.71416806090349); + double2 b1 = double2(392.76794475725296, -266.73665369056937); + bool2 r1 = bool2(true, true); + TestUtils.AreEqual(a1 != b1, r1); + + double a2 = (338.55788270503183); + double2 b2 = double2(-338.10012475498957, -152.3145445102428); + bool2 r2 = bool2(true, true); + TestUtils.AreEqual(a2 != b2, r2); + + double a3 = (-452.82067868338); + double2 b3 = double2(209.43931422449612, 50.107968592135194); + bool2 r3 = bool2(true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void double2_operator_less_wide_wide() + { + double2 a0 = double2(51.710243010758518, -313.85556450200062); + double2 b0 = double2(-261.83523881707117, -19.810742149041403); + bool2 r0 = bool2(false, true); + TestUtils.AreEqual(a0 < b0, r0); + + double2 a1 = double2(283.04767359562572, 235.02188621974642); + double2 b1 = double2(-149.25882084167506, 205.99822316225539); + bool2 r1 = bool2(false, false); + TestUtils.AreEqual(a1 < b1, r1); + + double2 a2 = double2(44.0783565249659, -207.25566659088042); + double2 b2 = double2(-306.02438535635565, 102.12168006884008); + bool2 r2 = bool2(false, true); + TestUtils.AreEqual(a2 < b2, r2); + + double2 a3 = double2(3.3829410091894943, -144.30134326978651); + double2 b3 = double2(231.90633760760829, 179.49885305180158); + bool2 r3 = bool2(true, true); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void double2_operator_less_wide_scalar() + { + double2 a0 = double2(-221.86977325280651, -121.54646807608498); + double b0 = (199.06751808853244); + bool2 r0 = bool2(true, true); + TestUtils.AreEqual(a0 < b0, r0); + + double2 a1 = double2(-97.52392511140738, 67.118990214131259); + double b1 = (479.88107775146193); + bool2 r1 = bool2(true, true); + TestUtils.AreEqual(a1 < b1, r1); + + double2 a2 = double2(137.32880574899207, 258.27909362422258); + double b2 = (282.96659601990439); + bool2 r2 = bool2(true, true); + TestUtils.AreEqual(a2 < b2, r2); + + double2 a3 = double2(-111.41316061439608, 82.665427008022334); + double b3 = (-288.08113278452356); + bool2 r3 = bool2(false, false); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void double2_operator_less_scalar_wide() + { + double a0 = (-250.4849370692321); + double2 b0 = double2(-377.19654887597846, -505.14754104295167); + bool2 r0 = bool2(false, false); + TestUtils.AreEqual(a0 < b0, r0); + + double a1 = (375.92672198634909); + double2 b1 = double2(110.17393474940855, -118.09757452742082); + bool2 r1 = bool2(false, false); + TestUtils.AreEqual(a1 < b1, r1); + + double a2 = (-40.45089079833167); + double2 b2 = double2(-299.74430932651478, 31.437125935888389); + bool2 r2 = bool2(false, true); + TestUtils.AreEqual(a2 < b2, r2); + + double a3 = (-458.904539560389); + double2 b3 = double2(13.684679276163024, -458.50690839183841); + bool2 r3 = bool2(true, true); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void double2_operator_greater_wide_wide() + { + double2 a0 = double2(-229.29066501804192, 505.536608216137); + double2 b0 = double2(-445.84502407808088, -420.03529210576568); + bool2 r0 = bool2(true, true); + TestUtils.AreEqual(a0 > b0, r0); + + double2 a1 = double2(-73.80706862071861, 100.29203777215071); + double2 b1 = double2(299.02440108872224, -13.880978829171966); + bool2 r1 = bool2(false, true); + TestUtils.AreEqual(a1 > b1, r1); + + double2 a2 = double2(-419.21478124112582, -159.55974753180504); + double2 b2 = double2(151.56173593903043, -163.5094302461992); + bool2 r2 = bool2(false, true); + TestUtils.AreEqual(a2 > b2, r2); + + double2 a3 = double2(-396.7703608929973, 127.03739482119556); + double2 b3 = double2(-391.09603733154762, 479.2837710228207); + bool2 r3 = bool2(false, false); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void double2_operator_greater_wide_scalar() + { + double2 a0 = double2(11.156317000815761, -411.02322382993214); + double b0 = (-302.81693877969724); + bool2 r0 = bool2(true, false); + TestUtils.AreEqual(a0 > b0, r0); + + double2 a1 = double2(385.88556188432756, -491.18003033622171); + double b1 = (-485.10304831206008); + bool2 r1 = bool2(true, false); + TestUtils.AreEqual(a1 > b1, r1); + + double2 a2 = double2(405.17534632476759, 69.269281181166548); + double b2 = (173.57509740329124); + bool2 r2 = bool2(true, false); + TestUtils.AreEqual(a2 > b2, r2); + + double2 a3 = double2(501.30683183172107, -86.124509613087639); + double b3 = (-367.027771405423); + bool2 r3 = bool2(true, true); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void double2_operator_greater_scalar_wide() + { + double a0 = (453.54610201974685); + double2 b0 = double2(-226.20441423459187, -423.46500487973213); + bool2 r0 = bool2(true, true); + TestUtils.AreEqual(a0 > b0, r0); + + double a1 = (409.40550227156166); + double2 b1 = double2(453.87706277048073, 87.475727837288673); + bool2 r1 = bool2(false, true); + TestUtils.AreEqual(a1 > b1, r1); + + double a2 = (113.79560308987072); + double2 b2 = double2(176.40926154721956, -140.44002944810319); + bool2 r2 = bool2(false, true); + TestUtils.AreEqual(a2 > b2, r2); + + double a3 = (-182.48286804113673); + double2 b3 = double2(-158.29329188088576, -162.68531830733889); + bool2 r3 = bool2(false, false); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void double2_operator_less_equal_wide_wide() + { + double2 a0 = double2(240.09053169940159, 462.2131528622532); + double2 b0 = double2(-81.203838624620744, 493.63743876555816); + bool2 r0 = bool2(false, true); + TestUtils.AreEqual(a0 <= b0, r0); + + double2 a1 = double2(293.08251561461134, -427.87067361728782); + double2 b1 = double2(-411.47211451617636, 99.164449499530974); + bool2 r1 = bool2(false, true); + TestUtils.AreEqual(a1 <= b1, r1); + + double2 a2 = double2(-405.5227226715175, 204.59190211286386); + double2 b2 = double2(-295.66769875943089, -480.46254824123463); + bool2 r2 = bool2(true, false); + TestUtils.AreEqual(a2 <= b2, r2); + + double2 a3 = double2(294.670105832941, -327.56444445604666); + double2 b3 = double2(74.414040361723892, 260.916124226952); + bool2 r3 = bool2(false, true); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void double2_operator_less_equal_wide_scalar() + { + double2 a0 = double2(309.1924356469849, 69.673792633076118); + double b0 = (292.92427148154206); + bool2 r0 = bool2(false, true); + TestUtils.AreEqual(a0 <= b0, r0); + + double2 a1 = double2(-101.72418622939114, -346.01106731314724); + double b1 = (-315.97240629604664); + bool2 r1 = bool2(false, true); + TestUtils.AreEqual(a1 <= b1, r1); + + double2 a2 = double2(424.15386577330241, -483.90265320423185); + double b2 = (-410.87006945669191); + bool2 r2 = bool2(false, true); + TestUtils.AreEqual(a2 <= b2, r2); + + double2 a3 = double2(183.82114538169515, -257.87003791419329); + double b3 = (320.44249287268258); + bool2 r3 = bool2(true, true); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void double2_operator_less_equal_scalar_wide() + { + double a0 = (-511.15238141974078); + double2 b0 = double2(51.159012579898786, 340.44369022010062); + bool2 r0 = bool2(true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + double a1 = (312.81429519914752); + double2 b1 = double2(354.19252626699983, 136.39671165142056); + bool2 r1 = bool2(true, false); + TestUtils.AreEqual(a1 <= b1, r1); + + double a2 = (-94.767871185563422); + double2 b2 = double2(288.544332877055, 304.04282369466625); + bool2 r2 = bool2(true, true); + TestUtils.AreEqual(a2 <= b2, r2); + + double a3 = (-148.61806089646092); + double2 b3 = double2(-506.30010127755816, 27.581254256694251); + bool2 r3 = bool2(false, true); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void double2_operator_greater_equal_wide_wide() + { + double2 a0 = double2(-386.59181302906563, -157.12078221008215); + double2 b0 = double2(153.44301350109424, 49.892483019219981); + bool2 r0 = bool2(false, false); + TestUtils.AreEqual(a0 >= b0, r0); + + double2 a1 = double2(391.01526445477054, -511.88687133783793); + double2 b1 = double2(78.025787628267835, 138.81373292711271); + bool2 r1 = bool2(true, false); + TestUtils.AreEqual(a1 >= b1, r1); + + double2 a2 = double2(-5.4220387960886569, 287.64527501149348); + double2 b2 = double2(-225.51057802211056, -339.35611335344436); + bool2 r2 = bool2(true, true); + TestUtils.AreEqual(a2 >= b2, r2); + + double2 a3 = double2(-122.53520184500849, 7.4814426933794493); + double2 b3 = double2(-373.302078182484, 364.9358934671319); + bool2 r3 = bool2(true, false); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void double2_operator_greater_equal_wide_scalar() + { + double2 a0 = double2(495.457423679278, -14.345115906719627); + double b0 = (189.20512804258851); + bool2 r0 = bool2(true, false); + TestUtils.AreEqual(a0 >= b0, r0); + + double2 a1 = double2(-463.47478053694346, -246.86571776441565); + double b1 = (217.51749215718246); + bool2 r1 = bool2(false, false); + TestUtils.AreEqual(a1 >= b1, r1); + + double2 a2 = double2(-377.65869706573835, -123.33294373533357); + double b2 = (53.815095211293169); + bool2 r2 = bool2(false, false); + TestUtils.AreEqual(a2 >= b2, r2); + + double2 a3 = double2(-221.50546441856096, -116.44038277326172); + double b3 = (252.99433410027734); + bool2 r3 = bool2(false, false); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void double2_operator_greater_equal_scalar_wide() + { + double a0 = (215.43534169692327); + double2 b0 = double2(204.80295310020585, -101.10404853760451); + bool2 r0 = bool2(true, true); + TestUtils.AreEqual(a0 >= b0, r0); + + double a1 = (-122.05503827056617); + double2 b1 = double2(-70.456147941973143, -239.62025677395064); + bool2 r1 = bool2(false, true); + TestUtils.AreEqual(a1 >= b1, r1); + + double a2 = (-185.99272426683115); + double2 b2 = double2(-455.61258027312, 276.66581476697036); + bool2 r2 = bool2(true, false); + TestUtils.AreEqual(a2 >= b2, r2); + + double a3 = (79.39918831707871); + double2 b3 = double2(416.42054791768112, 379.27350801009379); + bool2 r3 = bool2(false, false); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void double2_operator_add_wide_wide() + { + double2 a0 = double2(465.14837644302679, 278.91072548502621); + double2 b0 = double2(483.99436186440028, -204.07667193379098); + double2 r0 = double2(949.14273830742707, 74.834053551235229); + TestUtils.AreEqual(a0 + b0, r0); + + double2 a1 = double2(-277.52992237616792, -65.197214395365336); + double2 b1 = double2(-365.67356007437854, -509.92086076639634); + double2 r1 = double2(-643.20348245054652, -575.11807516176168); + TestUtils.AreEqual(a1 + b1, r1); + + double2 a2 = double2(-473.32437561141529, -4.6955420992782138); + double2 b2 = double2(-270.69751108377125, 486.76397846954126); + double2 r2 = double2(-744.02188669518659, 482.06843637026304); + TestUtils.AreEqual(a2 + b2, r2); + + double2 a3 = double2(-470.53676698661258, -109.95011453980118); + double2 b3 = double2(267.49177587567442, 251.6425212601398); + double2 r3 = double2(-203.04499111093816, 141.69240672033862); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void double2_operator_add_wide_scalar() + { + double2 a0 = double2(459.89829728561369, -447.66336104258119); + double b0 = (500.99725913489112); + double2 r0 = double2(960.89555642050482, 53.333898092309937); + TestUtils.AreEqual(a0 + b0, r0); + + double2 a1 = double2(-94.438627525436971, -36.254356162741033); + double b1 = (126.42986279652916); + double2 r1 = double2(31.991235271092194, 90.175506633788132); + TestUtils.AreEqual(a1 + b1, r1); + + double2 a2 = double2(-349.64130060264904, -478.41478489265535); + double b2 = (-2.7912590516690443); + double2 r2 = double2(-352.43255965431808, -481.20604394432439); + TestUtils.AreEqual(a2 + b2, r2); + + double2 a3 = double2(443.11525246273504, 41.32102133767728); + double b3 = (268.092225914864); + double2 r3 = double2(711.207478377599, 309.41324725254128); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void double2_operator_add_scalar_wide() + { + double a0 = (-325.51276484388518); + double2 b0 = double2(-264.08813178915909, -106.00925998855814); + double2 r0 = double2(-589.60089663304427, -431.52202483244332); + TestUtils.AreEqual(a0 + b0, r0); + + double a1 = (-355.44729320865463); + double2 b1 = double2(-447.33029362528134, -158.70021040677102); + double2 r1 = double2(-802.777586833936, -514.14750361542565); + TestUtils.AreEqual(a1 + b1, r1); + + double a2 = (-199.48369154682553); + double2 b2 = double2(180.31809123806568, 337.57936898692481); + double2 r2 = double2(-19.165600308759849, 138.09567744009928); + TestUtils.AreEqual(a2 + b2, r2); + + double a3 = (-37.05501486596421); + double2 b3 = double2(230.80498014707348, -140.17433339924287); + double2 r3 = double2(193.74996528110927, -177.22934826520708); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void double2_operator_sub_wide_wide() + { + double2 a0 = double2(133.37101680290471, -131.8321183341705); + double2 b0 = double2(123.46028739002543, 359.56010048443454); + double2 r0 = double2(9.9107294128792773, -491.39221881860504); + TestUtils.AreEqual(a0 - b0, r0); + + double2 a1 = double2(-197.29314407952739, -485.286571013409); + double2 b1 = double2(-48.24847819667707, 478.97904680621764); + double2 r1 = double2(-149.04466588285032, -964.26561781962664); + TestUtils.AreEqual(a1 - b1, r1); + + double2 a2 = double2(-337.55033103448818, 471.66710470228782); + double2 b2 = double2(207.15832886805686, 142.36730462981723); + double2 r2 = double2(-544.708659902545, 329.29980007247059); + TestUtils.AreEqual(a2 - b2, r2); + + double2 a3 = double2(146.5066197600712, -130.58504372955537); + double2 b3 = double2(-125.60551005490379, -65.299004823574307); + double2 r3 = double2(272.112129814975, -65.286038905981059); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void double2_operator_sub_wide_scalar() + { + double2 a0 = double2(48.936717294592768, 410.45158953706346); + double b0 = (-291.59041442144212); + double2 r0 = double2(340.52713171603489, 702.04200395850557); + TestUtils.AreEqual(a0 - b0, r0); + + double2 a1 = double2(-364.44171612544062, -460.06732318367222); + double b1 = (163.98060353285666); + double2 r1 = double2(-528.42231965829728, -624.04792671652888); + TestUtils.AreEqual(a1 - b1, r1); + + double2 a2 = double2(110.91942339340198, 180.26971420099483); + double b2 = (204.35834441164434); + double2 r2 = double2(-93.438921018242354, -24.088630210649512); + TestUtils.AreEqual(a2 - b2, r2); + + double2 a3 = double2(-377.92569344952972, 400.53491968686455); + double b3 = (-470.26204297983185); + double2 r3 = double2(92.33634953030213, 870.79696266669634); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void double2_operator_sub_scalar_wide() + { + double a0 = (294.58645905861); + double2 b0 = double2(452.35251757705237, 256.98980891750648); + double2 r0 = double2(-157.76605851844238, 37.59665014110351); + TestUtils.AreEqual(a0 - b0, r0); + + double a1 = (-275.159888634067); + double2 b1 = double2(-89.027518075437968, 488.22838829840919); + double2 r1 = double2(-186.13237055862902, -763.38827693247617); + TestUtils.AreEqual(a1 - b1, r1); + + double a2 = (-333.21728030462623); + double2 b2 = double2(-64.232989102710519, -66.041730196234653); + double2 r2 = double2(-268.98429120191571, -267.17555010839158); + TestUtils.AreEqual(a2 - b2, r2); + + double a3 = (341.20492831859963); + double2 b3 = double2(-385.775056303374, 75.394746577085357); + double2 r3 = double2(726.9799846219737, 265.81018174151427); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void double2_operator_mul_wide_wide() + { + double2 a0 = double2(-394.78053898121254, -412.37219519744264); + double2 b0 = double2(-149.76397831261346, -345.04538671348496); + double2 r0 = double2(59123.904078224172, 142287.1235617903); + TestUtils.AreEqual(a0 * b0, r0); + + double2 a1 = double2(-25.874570143350638, -241.04595886964626); + double2 b1 = double2(-284.33404721148963, 267.97923648915219); + double2 r1 = double2(7357.0212487164608, -64595.312016683383); + TestUtils.AreEqual(a1 * b1, r1); + + double2 a2 = double2(-93.675987525692221, 244.15999257013198); + double2 b2 = double2(-326.64849558782225, -150.68967754705329); + double2 r2 = double2(30599.120397970968, -36792.390550284115); + TestUtils.AreEqual(a2 * b2, r2); + + double2 a3 = double2(494.68846606402121, 53.537962700025105); + double2 b3 = double2(207.73243794577775, 366.19289248352538); + double2 r3 = double2(102762.84107913627, 19605.221418797286); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void double2_operator_mul_wide_scalar() + { + double2 a0 = double2(328.20302191758674, -290.10672272839895); + double b0 = (192.21119055161773); + double2 r0 = double2(63084.293585418032, -55761.758562653624); + TestUtils.AreEqual(a0 * b0, r0); + + double2 a1 = double2(236.99572454998065, 357.90315811610924); + double b1 = (120.48136692889102); + double2 r1 = double2(28553.568850084604, 43120.661717995856); + TestUtils.AreEqual(a1 * b1, r1); + + double2 a2 = double2(134.86723214707672, -438.272912467957); + double b2 = (-477.31047104173825); + double2 r2 = double2(-64373.542104216656, 209192.25029491508); + TestUtils.AreEqual(a2 * b2, r2); + + double2 a3 = double2(-46.729179165665585, 422.08249374017237); + double b3 = (-238.40500103608008); + double2 r3 = double2(11140.470007405675, -100626.57735743705); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void double2_operator_mul_scalar_wide() + { + double a0 = (-464.534700371574); + double2 b0 = double2(329.36093846399376, -198.68342671109525); + double2 r0 = double2(-152999.58486347177, 92295.346096036214); + TestUtils.AreEqual(a0 * b0, r0); + + double a1 = (184.07942518223047); + double2 b1 = double2(256.01618754864489, 266.22629297255833); + double2 r1 = double2(47127.312641300661, 49006.78297878462); + TestUtils.AreEqual(a1 * b1, r1); + + double a2 = (-97.894749448585685); + double2 b2 = double2(159.74810583877752, -351.82222263506719); + double2 r2 = double2(-15638.500795973274, 34441.548335304433); + TestUtils.AreEqual(a2 * b2, r2); + + double a3 = (491.80157660497423); + double2 b3 = double2(49.902031206480274, 424.46256871915546); + double2 r3 = double2(24541.897623137622, 208751.36050587788); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void double2_operator_div_wide_wide() + { + double2 a0 = double2(246.26574933075619, -269.85612953354428); + double2 b0 = double2(172.11981423763552, -77.141104972521362); + double2 r0 = double2(1.4307809383918566, 3.4982144685336105); + TestUtils.AreEqual(a0 / b0, r0); + + double2 a1 = double2(-451.61952588130697, -7.38850236283082); + double2 b1 = double2(-325.8353723612779, -450.60868117334724); + double2 r1 = double2(1.3860359070548143, 0.016396715535066435); + TestUtils.AreEqual(a1 / b1, r1); + + double2 a2 = double2(-308.20558681534862, -373.394808704683); + double2 b2 = double2(-261.26215398556656, -122.44949847201326); + double2 r2 = double2(1.1796794220427942, 3.0493780159501847); + TestUtils.AreEqual(a2 / b2, r2); + + double2 a3 = double2(360.41863482092447, 25.80972458133931); + double2 b3 = double2(-93.210781379235357, -442.00522705633438); + double2 r3 = double2(-3.8667054335113131, -0.05839235149599218); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void double2_operator_div_wide_scalar() + { + double2 a0 = double2(-244.51745116175965, 69.112274917360537); + double b0 = (-60.024377612408443); + double2 r0 = double2(4.0736357608014941, -1.1514034408425655); + TestUtils.AreEqual(a0 / b0, r0); + + double2 a1 = double2(-333.02311888943575, 403.24561257066466); + double b1 = (257.39682519500923); + double2 r1 = double2(-1.2938120687274619, 1.5666300944666172); + TestUtils.AreEqual(a1 / b1, r1); + + double2 a2 = double2(154.34436066185322, -261.88639200007844); + double b2 = (131.52659160062979); + double2 r2 = double2(1.1734840748440269, -1.9911288570092047); + TestUtils.AreEqual(a2 / b2, r2); + + double2 a3 = double2(-348.92380516087815, 210.55792174607416); + double b3 = (-275.53868187383688); + double2 r3 = double2(1.26633328862567, -0.76416828415577609); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void double2_operator_div_scalar_wide() + { + double a0 = (41.737658758525527); + double2 b0 = double2(-422.676129776368, 248.12963235011773); + double2 r0 = double2(-0.098746193168297289, 0.1682090863683405); + TestUtils.AreEqual(a0 / b0, r0); + + double a1 = (449.39137741988122); + double2 b1 = double2(245.85813796047967, -326.62061253498337); + double2 r1 = double2(1.8278482914896166, -1.3758818646871169); + TestUtils.AreEqual(a1 / b1, r1); + + double a2 = (163.71510489457989); + double2 b2 = double2(333.664472020075, 38.291076916405473); + double2 r2 = double2(0.4906578872584611, 4.2755419298337261); + TestUtils.AreEqual(a2 / b2, r2); + + double a3 = (-472.97976062864984); + double2 b3 = double2(192.23013958345643, -200.29686960964318); + double2 r3 = double2(-2.4604870061143891, 2.3613936730535827); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void double2_operator_mod_wide_wide() + { + double2 a0 = double2(-442.30985924336585, 368.50046246522129); + double2 b0 = double2(-43.245045443645211, -144.19587690392319); + double2 r0 = double2(-9.8594048069137443, 80.1087086573749); + TestUtils.AreEqual(a0 % b0, r0); + + double2 a1 = double2(-1.0938966279355213, -364.67383473211612); + double2 b1 = double2(-62.640481739603217, -336.82826510855381); + double2 r1 = double2(-1.0938966279355213, -27.845569623562312); + TestUtils.AreEqual(a1 % b1, r1); + + double2 a2 = double2(-197.34394487987458, -34.034902350062); + double2 b2 = double2(-154.6102545981343, -154.02935583611452); + double2 r2 = double2(-42.73369028174028, -34.034902350062); + TestUtils.AreEqual(a2 % b2, r2); + + double2 a3 = double2(-101.34858350704826, 208.31857142612273); + double2 b3 = double2(487.0462093237071, -469.82909105244516); + double2 r3 = double2(-101.34858350704826, 208.31857142612273); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void double2_operator_mod_wide_scalar() + { + double2 a0 = double2(-433.41699548876704, -5.5141427542614565); + double b0 = (-90.499235433758827); + double2 r0 = double2(-71.420053753731736, -5.5141427542614565); + TestUtils.AreEqual(a0 % b0, r0); + + double2 a1 = double2(393.39439958771425, -120.80601626299602); + double b1 = (299.41153277988155); + double2 r1 = double2(93.982866807832693, -120.80601626299602); + TestUtils.AreEqual(a1 % b1, r1); + + double2 a2 = double2(-502.939041133476, 186.09479698263794); + double b2 = (-450.80766245853511); + double2 r2 = double2(-52.131378674940891, 186.09479698263794); + TestUtils.AreEqual(a2 % b2, r2); + + double2 a3 = double2(-84.473635951277629, 433.45469041981482); + double b3 = (-318.78148356023314); + double2 r3 = double2(-84.473635951277629, 114.67320685958168); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void double2_operator_mod_scalar_wide() + { + double a0 = (-396.4224028049141); + double2 b0 = double2(-159.14024384279747, 230.17333399046834); + double2 r0 = double2(-78.141915119319151, -166.24906881444576); + TestUtils.AreEqual(a0 % b0, r0); + + double a1 = (14.779358632294134); + double2 b1 = double2(-303.15649738123477, 399.63502020371845); + double2 r1 = double2(14.779358632294134, 14.779358632294134); + TestUtils.AreEqual(a1 % b1, r1); + + double a2 = (206.69470534412881); + double2 b2 = double2(397.04482263934096, -393.89064735634747); + double2 r2 = double2(206.69470534412881, 206.69470534412881); + TestUtils.AreEqual(a2 % b2, r2); + + double a3 = (-372.06709426085797); + double2 b3 = double2(201.01229796233224, -95.5668547598491); + double2 r3 = double2(-171.05479629852573, -85.366529981310691); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void double2_operator_plus() + { + double2 a0 = double2(271.6708086802023, -79.080240524876956); + double2 r0 = double2(271.6708086802023, -79.080240524876956); + TestUtils.AreEqual(+a0, r0); + + double2 a1 = double2(-330.98506203805334, 315.44952860262686); + double2 r1 = double2(-330.98506203805334, 315.44952860262686); + TestUtils.AreEqual(+a1, r1); + + double2 a2 = double2(319.22218742930431, -350.30858270745193); + double2 r2 = double2(319.22218742930431, -350.30858270745193); + TestUtils.AreEqual(+a2, r2); + + double2 a3 = double2(-320.51845875406565, -107.00351267075331); + double2 r3 = double2(-320.51845875406565, -107.00351267075331); + TestUtils.AreEqual(+a3, r3); + } + + [TestCompiler] + public static void double2_operator_neg() + { + double2 a0 = double2(420.22718854445372, -196.25749811728366); + double2 r0 = double2(-420.22718854445372, 196.25749811728366); + TestUtils.AreEqual(-a0, r0); + + double2 a1 = double2(-335.42683068636188, -33.014395013923945); + double2 r1 = double2(335.42683068636188, 33.014395013923945); + TestUtils.AreEqual(-a1, r1); + + double2 a2 = double2(-498.57532071442125, -270.85946787095605); + double2 r2 = double2(498.57532071442125, 270.85946787095605); + TestUtils.AreEqual(-a2, r2); + + double2 a3 = double2(19.686896571743773, -180.60051473444349); + double2 r3 = double2(-19.686896571743773, 180.60051473444349); + TestUtils.AreEqual(-a3, r3); + } + + [TestCompiler] + public static void double2_operator_prefix_inc() + { + double2 a0 = double2(-99.79557113526181, 458.74185082816609); + double2 r0 = double2(-98.79557113526181, 459.74185082816609); + TestUtils.AreEqual(++a0, r0); + + double2 a1 = double2(96.179026886904126, -315.728967098393); + double2 r1 = double2(97.179026886904126, -314.728967098393); + TestUtils.AreEqual(++a1, r1); + + double2 a2 = double2(-299.23014583216525, -456.89028832730384); + double2 r2 = double2(-298.23014583216525, -455.89028832730384); + TestUtils.AreEqual(++a2, r2); + + double2 a3 = double2(-76.507656371457358, 64.0964734852763); + double2 r3 = double2(-75.507656371457358, 65.0964734852763); + TestUtils.AreEqual(++a3, r3); + } + + [TestCompiler] + public static void double2_operator_postfix_inc() + { + double2 a0 = double2(322.94356623429042, 472.05246542024076); + double2 r0 = double2(322.94356623429042, 472.05246542024076); + TestUtils.AreEqual(a0++, r0); + + double2 a1 = double2(203.48761925636211, -31.420532002775246); + double2 r1 = double2(203.48761925636211, -31.420532002775246); + TestUtils.AreEqual(a1++, r1); + + double2 a2 = double2(455.33662459595905, 55.736877228942149); + double2 r2 = double2(455.33662459595905, 55.736877228942149); + TestUtils.AreEqual(a2++, r2); + + double2 a3 = double2(153.75031645305, -427.40105100506969); + double2 r3 = double2(153.75031645305, -427.40105100506969); + TestUtils.AreEqual(a3++, r3); + } + + [TestCompiler] + public static void double2_operator_prefix_dec() + { + double2 a0 = double2(-416.20121712992022, -96.637880131899351); + double2 r0 = double2(-417.20121712992022, -97.637880131899351); + TestUtils.AreEqual(--a0, r0); + + double2 a1 = double2(-50.145671629414721, 439.47906156977592); + double2 r1 = double2(-51.145671629414721, 438.47906156977592); + TestUtils.AreEqual(--a1, r1); + + double2 a2 = double2(-304.40081920493435, 246.08898293510492); + double2 r2 = double2(-305.40081920493435, 245.08898293510492); + TestUtils.AreEqual(--a2, r2); + + double2 a3 = double2(171.96452935597142, 298.28480710568135); + double2 r3 = double2(170.96452935597142, 297.28480710568135); + TestUtils.AreEqual(--a3, r3); + } + + [TestCompiler] + public static void double2_operator_postfix_dec() + { + double2 a0 = double2(-376.59242719066907, 16.969734438215255); + double2 r0 = double2(-376.59242719066907, 16.969734438215255); + TestUtils.AreEqual(a0--, r0); + + double2 a1 = double2(-0.25066399585949739, 409.55752940175944); + double2 r1 = double2(-0.25066399585949739, 409.55752940175944); + TestUtils.AreEqual(a1--, r1); + + double2 a2 = double2(47.856652520530247, -262.062590959511); + double2 r2 = double2(47.856652520530247, -262.062590959511); + TestUtils.AreEqual(a2--, r2); + + double2 a3 = double2(-182.40572866350681, -129.23265582380475); + double2 r3 = double2(-182.40572866350681, -129.23265582380475); + TestUtils.AreEqual(a3--, r3); + } + + [TestCompiler] + public static void double2_shuffle_result_1() + { + double2 a = double2(0, 1); + double2 b = double2(2, 3); + + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftX), (0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftY), (1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX), (2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY), (3)); + } + + [TestCompiler] + public static void double2_shuffle_result_2() + { + double2 a = double2(0, 1); + double2 b = double2(2, 3); + + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftX, ShuffleComponent.LeftX), double2(0, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftY, ShuffleComponent.LeftX), double2(1, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.LeftX), double2(2, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.LeftX), double2(3, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftX, ShuffleComponent.LeftY), double2(0, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftY, ShuffleComponent.LeftY), double2(1, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.LeftY), double2(2, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.LeftY), double2(3, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftX, ShuffleComponent.RightX), double2(0, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftY, ShuffleComponent.RightX), double2(1, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.RightX), double2(2, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.RightX), double2(3, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftX, ShuffleComponent.RightY), double2(0, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftY, ShuffleComponent.RightY), double2(1, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.RightY), double2(2, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.RightY), double2(3, 3)); + } + + [TestCompiler] + public static void double2_shuffle_result_3() + { + double2 a = double2(0, 1); + double2 b = double2(2, 3); + + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.RightY, ShuffleComponent.RightY), double3(2, 3, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.LeftX, ShuffleComponent.RightX), double3(2, 0, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.LeftY, ShuffleComponent.RightY), double3(3, 1, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftY, ShuffleComponent.LeftY, ShuffleComponent.LeftY), double3(1, 1, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.LeftY, ShuffleComponent.RightY), double3(2, 1, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftX, ShuffleComponent.RightY, ShuffleComponent.RightY), double3(0, 3, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.LeftY, ShuffleComponent.RightY), double3(2, 1, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.RightY, ShuffleComponent.LeftX), double3(3, 3, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.RightX, ShuffleComponent.RightY), double3(2, 2, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.RightX, ShuffleComponent.LeftX), double3(2, 2, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftX, ShuffleComponent.LeftY, ShuffleComponent.LeftY), double3(0, 1, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.RightX, ShuffleComponent.RightY), double3(3, 2, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftX, ShuffleComponent.LeftY, ShuffleComponent.LeftY), double3(0, 1, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.RightX, ShuffleComponent.RightX), double3(3, 2, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftX, ShuffleComponent.LeftY, ShuffleComponent.RightY), double3(0, 1, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.LeftY, ShuffleComponent.LeftY), double3(3, 1, 1)); + } + + [TestCompiler] + public static void double2_shuffle_result_4() + { + double2 a = double2(0, 1); + double2 b = double2(2, 3); + + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftX, ShuffleComponent.LeftX, ShuffleComponent.LeftY, ShuffleComponent.RightX), double4(0, 0, 1, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.LeftY, ShuffleComponent.LeftX, ShuffleComponent.RightY), double4(2, 1, 0, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.RightX, ShuffleComponent.RightY, ShuffleComponent.RightX), double4(3, 2, 3, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.LeftX, ShuffleComponent.RightY, ShuffleComponent.RightY), double4(2, 0, 3, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftX, ShuffleComponent.RightY, ShuffleComponent.LeftX, ShuffleComponent.RightX), double4(0, 3, 0, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.LeftX, ShuffleComponent.RightY, ShuffleComponent.LeftY), double4(3, 0, 3, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.RightX, ShuffleComponent.RightY, ShuffleComponent.LeftX), double4(2, 2, 3, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.RightX, ShuffleComponent.LeftX, ShuffleComponent.RightY), double4(2, 2, 0, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftX, ShuffleComponent.LeftY, ShuffleComponent.RightX, ShuffleComponent.LeftY), double4(0, 1, 2, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.LeftY, ShuffleComponent.RightY, ShuffleComponent.RightY), double4(2, 1, 3, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.RightY, ShuffleComponent.RightY, ShuffleComponent.LeftY), double4(3, 3, 3, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.RightX, ShuffleComponent.LeftY, ShuffleComponent.LeftY), double4(2, 2, 1, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.LeftX, ShuffleComponent.LeftX, ShuffleComponent.LeftX), double4(3, 0, 0, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.RightX, ShuffleComponent.RightX, ShuffleComponent.RightY), double4(2, 2, 2, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftX, ShuffleComponent.RightY, ShuffleComponent.LeftX, ShuffleComponent.RightY), double4(0, 3, 0, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.LeftX, ShuffleComponent.LeftX, ShuffleComponent.LeftX), double4(2, 0, 0, 0)); + } + + + } +} diff --git a/package/Tests/Tests/Shared/TestDouble2.gen.cs.meta b/package/Tests/Tests/Shared/TestDouble2.gen.cs.meta new file mode 100755 index 000000000..d496ffc29 --- /dev/null +++ b/package/Tests/Tests/Shared/TestDouble2.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: aad8a485c4a133942b50e482a663b6a3 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/package/Tests/Tests/Shared/TestDouble2x2.gen.cs b/package/Tests/Tests/Shared/TestDouble2x2.gen.cs new file mode 100755 index 000000000..6caad9b63 --- /dev/null +++ b/package/Tests/Tests/Shared/TestDouble2x2.gen.cs @@ -0,0 +1,950 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using NUnit.Framework; +using static Unity.Mathematics.math; +using Burst.Compiler.IL.Tests; + +namespace Unity.Mathematics.Tests +{ + [TestFixture] + public class TestDouble2x2 + { + [TestCompiler] + public static void double2x2_zero() + { + TestUtils.AreEqual(double2x2.zero.c0.x, 0.0); + TestUtils.AreEqual(double2x2.zero.c0.y, 0.0); + TestUtils.AreEqual(double2x2.zero.c1.x, 0.0); + TestUtils.AreEqual(double2x2.zero.c1.y, 0.0); + } + + [TestCompiler] + public static void double2x2_identity() + { + TestUtils.AreEqual(double2x2.identity.c0.x, 1.0); + TestUtils.AreEqual(double2x2.identity.c0.y, 0.0); + TestUtils.AreEqual(double2x2.identity.c1.x, 0.0); + TestUtils.AreEqual(double2x2.identity.c1.y, 1.0); + } + + [TestCompiler] + public static void double2x2_operator_equal_wide_wide() + { + double2x2 a0 = double2x2(-135.18925172425304, -49.094127439471947, 169.12980778940482, 240.80529772527757); + double2x2 b0 = double2x2(-220.01464591734793, 66.980020792679852, 499.20158576369363, -371.113114291389); + bool2x2 r0 = bool2x2(false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + double2x2 a1 = double2x2(314.73919382446411, 442.39301916695808, 177.92444881141398, 335.53340283759564); + double2x2 b1 = double2x2(208.44865212610398, 390.80369133074009, -72.443806920407269, 362.97643273089841); + bool2x2 r1 = bool2x2(false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + double2x2 a2 = double2x2(168.1544516869609, 350.72955982327903, 367.17843668869625, 46.941470406456574); + double2x2 b2 = double2x2(194.6783255053117, 471.6448635867074, -404.04466719368691, -144.69675476136467); + bool2x2 r2 = bool2x2(false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + double2x2 a3 = double2x2(188.76415094582558, -97.211392209497944, -293.3210057193977, -234.82292353120766); + double2x2 b3 = double2x2(-494.44664334433463, -252.97038209297244, 234.41711746641306, 398.72397465199413); + bool2x2 r3 = bool2x2(false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void double2x2_operator_equal_wide_scalar() + { + double2x2 a0 = double2x2(65.671194345537174, 404.41550440546848, -269.7301577393572, 83.630607882342588); + double b0 = (-155.8157547245807); + bool2x2 r0 = bool2x2(false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + double2x2 a1 = double2x2(152.99450476141385, 314.67125597348024, 386.36515325417986, 290.04894007837811); + double b1 = (-155.86829836474186); + bool2x2 r1 = bool2x2(false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + double2x2 a2 = double2x2(-132.63519460178691, -69.683271678948415, -191.19075521789063, 186.84520086406042); + double b2 = (-65.667489797653388); + bool2x2 r2 = bool2x2(false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + double2x2 a3 = double2x2(-232.89569221851218, -49.701092981594172, -300.88189925853248, 333.39685193328046); + double b3 = (-319.14406481345372); + bool2x2 r3 = bool2x2(false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void double2x2_operator_equal_scalar_wide() + { + double a0 = (36.383921878591195); + double2x2 b0 = double2x2(-400.48919958644046, -71.286823544319191, 156.97811491646712, -225.23872791288363); + bool2x2 r0 = bool2x2(false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + double a1 = (499.14180993435059); + double2x2 b1 = double2x2(-211.97992358542047, 428.31192394174263, -489.50133322621758, -5.6915457275190988); + bool2x2 r1 = bool2x2(false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + double a2 = (-30.865948453017495); + double2x2 b2 = double2x2(-362.98307221149241, 184.50319322594589, -160.47062142215231, 316.66882315122928); + bool2x2 r2 = bool2x2(false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + double a3 = (390.36923879681581); + double2x2 b3 = double2x2(505.10510301268891, -294.64870967280524, 443.19909283295226, 96.559236333034619); + bool2x2 r3 = bool2x2(false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void double2x2_operator_not_equal_wide_wide() + { + double2x2 a0 = double2x2(279.99414576217259, -43.342018386042696, -465.72473523846116, 317.46655645848557); + double2x2 b0 = double2x2(-460.912120318465, -476.00904844515446, 468.13642070635058, -341.01254312182431); + bool2x2 r0 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + double2x2 a1 = double2x2(85.714987079480238, 360.89050572034466, 366.08152668833804, 154.5428384070018); + double2x2 b1 = double2x2(-62.658060341448561, -458.80166718866752, -457.73023316717251, -59.523265627922171); + bool2x2 r1 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + double2x2 a2 = double2x2(332.426219856565, 397.11323160543725, -431.3749584776233, 489.01079319837072); + double2x2 b2 = double2x2(3.024243117787023, 155.81276352508587, -19.839918384253963, -6.0169332055453992); + bool2x2 r2 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + double2x2 a3 = double2x2(398.43358320669904, -489.81794594685454, 171.4049242340983, -67.829682620162941); + double2x2 b3 = double2x2(-406.20792145571107, -102.42070083619126, -40.362921018322425, 452.67542645552919); + bool2x2 r3 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void double2x2_operator_not_equal_wide_scalar() + { + double2x2 a0 = double2x2(-155.44111282911206, -19.426602134214079, 174.63305409934048, 507.9207296352464); + double b0 = (-393.41354173860213); + bool2x2 r0 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + double2x2 a1 = double2x2(59.177048472304364, -58.923273352404692, -398.17684835855704, 492.20105361016522); + double b1 = (171.15146430356026); + bool2x2 r1 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + double2x2 a2 = double2x2(-165.24150879925185, -380.24326222960059, 501.8990516615562, -134.34545642433011); + double b2 = (270.34102333259818); + bool2x2 r2 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + double2x2 a3 = double2x2(458.40042302496749, 161.45995123752391, 261.51423442620512, -145.61239559278471); + double b3 = (46.771004937016869); + bool2x2 r3 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void double2x2_operator_not_equal_scalar_wide() + { + double a0 = (478.35313938481409); + double2x2 b0 = double2x2(459.55319592894671, 436.45324369727314, -488.71416806090349, 392.76794475725296); + bool2x2 r0 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + double a1 = (-266.73665369056937); + double2x2 b1 = double2x2(338.55788270503183, -338.10012475498957, -152.3145445102428, -452.82067868338); + bool2x2 r1 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + double a2 = (209.43931422449612); + double2x2 b2 = double2x2(50.107968592135194, 372.4343656843688, -488.0213141329686, 489.74075697816011); + bool2x2 r2 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + double a3 = (270.40006149485714); + double2x2 b3 = double2x2(-472.8467831429312, -286.85046090132113, -384.69186681541237, 443.42352959300558); + bool2x2 r3 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void double2x2_operator_less_wide_wide() + { + double2x2 a0 = double2x2(51.710243010758518, -313.85556450200062, 283.04767359562572, 235.02188621974642); + double2x2 b0 = double2x2(-261.83523881707117, -19.810742149041403, -149.25882084167506, 205.99822316225539); + bool2x2 r0 = bool2x2(false, true, false, false); + TestUtils.AreEqual(a0 < b0, r0); + + double2x2 a1 = double2x2(44.0783565249659, -207.25566659088042, 3.3829410091894943, -144.30134326978651); + double2x2 b1 = double2x2(-306.02438535635565, 102.12168006884008, 231.90633760760829, 179.49885305180158); + bool2x2 r1 = bool2x2(false, true, true, true); + TestUtils.AreEqual(a1 < b1, r1); + + double2x2 a2 = double2x2(-69.369597705718888, -135.66796762108243, -194.78736576567746, -33.473868147225062); + double2x2 b2 = double2x2(473.22488496882136, 15.891647107848712, 270.04990614114786, 490.91400240869916); + bool2x2 r2 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a2 < b2, r2); + + double2x2 a3 = double2x2(-19.675088653189619, 423.23796697297973, -71.698315415390937, -501.88598870760109); + double2x2 b3 = double2x2(-185.73412164753961, 76.433086669274189, 97.75231246731812, 419.30080600236579); + bool2x2 r3 = bool2x2(false, false, true, true); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void double2x2_operator_less_wide_scalar() + { + double2x2 a0 = double2x2(-221.86977325280651, -121.54646807608498, -97.52392511140738, 479.88107775146193); + double b0 = (199.06751808853244); + bool2x2 r0 = bool2x2(true, true, true, false); + TestUtils.AreEqual(a0 < b0, r0); + + double2x2 a1 = double2x2(67.118990214131259, 282.96659601990439, 258.27909362422258, -111.41316061439608); + double b1 = (137.32880574899207); + bool2x2 r1 = bool2x2(true, false, false, true); + TestUtils.AreEqual(a1 < b1, r1); + + double2x2 a2 = double2x2(-288.08113278452356, -361.64292042406413, -68.088202269788951, 12.788020378345664); + double b2 = (82.665427008022334); + bool2x2 r2 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a2 < b2, r2); + + double2x2 a3 = double2x2(-66.703050406045747, 25.727694284975428, 101.37087182950734, -330.442660724019); + double b3 = (-78.762971199472872); + bool2x2 r3 = bool2x2(false, false, false, true); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void double2x2_operator_less_scalar_wide() + { + double a0 = (-250.4849370692321); + double2x2 b0 = double2x2(-377.19654887597846, -505.14754104295167, 375.92672198634909, 110.17393474940855); + bool2x2 r0 = bool2x2(false, false, true, true); + TestUtils.AreEqual(a0 < b0, r0); + + double a1 = (-118.09757452742082); + double2x2 b1 = double2x2(-40.45089079833167, -299.74430932651478, 31.437125935888389, -458.904539560389); + bool2x2 r1 = bool2x2(true, false, true, false); + TestUtils.AreEqual(a1 < b1, r1); + + double a2 = (13.684679276163024); + double2x2 b2 = double2x2(-458.50690839183841, 248.27646624682302, 389.23142999654237, 488.74553679337055); + bool2x2 r2 = bool2x2(false, true, true, true); + TestUtils.AreEqual(a2 < b2, r2); + + double a3 = (-221.63786731550368); + double2x2 b3 = double2x2(-424.26720329013989, 249.05904948388184, -22.136127720650336, -442.24773928255206); + bool2x2 r3 = bool2x2(false, true, true, false); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void double2x2_operator_greater_wide_wide() + { + double2x2 a0 = double2x2(-229.29066501804192, 505.536608216137, -73.80706862071861, 100.29203777215071); + double2x2 b0 = double2x2(-445.84502407808088, -420.03529210576568, 299.02440108872224, -13.880978829171966); + bool2x2 r0 = bool2x2(true, true, false, true); + TestUtils.AreEqual(a0 > b0, r0); + + double2x2 a1 = double2x2(-419.21478124112582, -159.55974753180504, -396.7703608929973, 127.03739482119556); + double2x2 b1 = double2x2(151.56173593903043, -163.5094302461992, -391.09603733154762, 479.2837710228207); + bool2x2 r1 = bool2x2(false, true, false, false); + TestUtils.AreEqual(a1 > b1, r1); + + double2x2 a2 = double2x2(489.13989733585151, 51.91890885863404, 155.38475544535777, -135.63165027258526); + double2x2 b2 = double2x2(-77.674873149802409, -46.5841996886694, -415.37701888353422, 71.466978344818131); + bool2x2 r2 = bool2x2(true, true, true, false); + TestUtils.AreEqual(a2 > b2, r2); + + double2x2 a3 = double2x2(-425.97813554572787, -228.430505143679, 383.03834909155887, 136.53358298937496); + double2x2 b3 = double2x2(-206.06102643071722, 360.83628218287424, 236.96878658838978, 14.550342328171382); + bool2x2 r3 = bool2x2(false, false, true, true); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void double2x2_operator_greater_wide_scalar() + { + double2x2 a0 = double2x2(11.156317000815761, -411.02322382993214, 385.88556188432756, -485.10304831206008); + double b0 = (-302.81693877969724); + bool2x2 r0 = bool2x2(true, false, true, false); + TestUtils.AreEqual(a0 > b0, r0); + + double2x2 a1 = double2x2(-491.18003033622171, 173.57509740329124, 69.269281181166548, 501.30683183172107); + double b1 = (405.17534632476759); + bool2x2 r1 = bool2x2(false, false, false, true); + TestUtils.AreEqual(a1 > b1, r1); + + double2x2 a2 = double2x2(-367.027771405423, -489.09058998948456, -172.51816066192379, -18.149639853346002); + double b2 = (-86.124509613087639); + bool2x2 r2 = bool2x2(false, false, false, true); + TestUtils.AreEqual(a2 > b2, r2); + + double2x2 a3 = double2x2(-236.41493498367021, -27.239137900638923, 471.77934072528933, 240.16453253485474); + double b3 = (-238.8945134798505); + bool2x2 r3 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void double2x2_operator_greater_scalar_wide() + { + double a0 = (453.54610201974685); + double2x2 b0 = double2x2(-226.20441423459187, -423.46500487973213, 409.40550227156166, 453.87706277048073); + bool2x2 r0 = bool2x2(true, true, true, false); + TestUtils.AreEqual(a0 > b0, r0); + + double a1 = (87.475727837288673); + double2x2 b1 = double2x2(113.79560308987072, 176.40926154721956, -140.44002944810319, -182.48286804113673); + bool2x2 r1 = bool2x2(false, false, true, true); + TestUtils.AreEqual(a1 > b1, r1); + + double a2 = (-158.29329188088576); + double2x2 b2 = double2x2(-162.68531830733889, -193.328676075362, 230.18129955519987, -102.58784227379965); + bool2x2 r2 = bool2x2(true, true, false, false); + TestUtils.AreEqual(a2 > b2, r2); + + double a3 = (392.5205878655056); + double2x2 b3 = double2x2(-177.47865947404813, -10.295010809924008, -24.048938524000789, 172.44867499752377); + bool2x2 r3 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void double2x2_operator_less_equal_wide_wide() + { + double2x2 a0 = double2x2(240.09053169940159, 462.2131528622532, 293.08251561461134, -427.87067361728782); + double2x2 b0 = double2x2(-81.203838624620744, 493.63743876555816, -411.47211451617636, 99.164449499530974); + bool2x2 r0 = bool2x2(false, true, false, true); + TestUtils.AreEqual(a0 <= b0, r0); + + double2x2 a1 = double2x2(-405.5227226715175, 204.59190211286386, 294.670105832941, -327.56444445604666); + double2x2 b1 = double2x2(-295.66769875943089, -480.46254824123463, 74.414040361723892, 260.916124226952); + bool2x2 r1 = bool2x2(true, false, false, true); + TestUtils.AreEqual(a1 <= b1, r1); + + double2x2 a2 = double2x2(-456.12326667091031, 282.3012408140587, 421.8811549720732, -311.71284809322697); + double2x2 b2 = double2x2(306.17329730939741, 139.56480438055689, -505.75247955031341, -489.62680958659706); + bool2x2 r2 = bool2x2(true, false, false, false); + TestUtils.AreEqual(a2 <= b2, r2); + + double2x2 a3 = double2x2(84.5674827492644, 447.24461647832982, -154.49435217422172, -424.36474986763892); + double2x2 b3 = double2x2(-280.03260267899958, 303.15991058161478, 511.19015788994272, -104.65973358259527); + bool2x2 r3 = bool2x2(false, false, true, true); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void double2x2_operator_less_equal_wide_scalar() + { + double2x2 a0 = double2x2(309.1924356469849, 69.673792633076118, -101.72418622939114, -315.97240629604664); + double b0 = (292.92427148154206); + bool2x2 r0 = bool2x2(false, true, true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + double2x2 a1 = double2x2(-346.01106731314724, -410.87006945669191, -483.90265320423185, 183.82114538169515); + double b1 = (424.15386577330241); + bool2x2 r1 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a1 <= b1, r1); + + double2x2 a2 = double2x2(320.44249287268258, -386.801748694294, -182.9388249772316, 349.25012962392077); + double b2 = (-257.87003791419329); + bool2x2 r2 = bool2x2(false, true, false, false); + TestUtils.AreEqual(a2 <= b2, r2); + + double2x2 a3 = double2x2(485.31159304329731, 259.15151822713744, 450.13007828692446, -128.5255282523695); + double b3 = (373.56911652794531); + bool2x2 r3 = bool2x2(false, true, false, true); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void double2x2_operator_less_equal_scalar_wide() + { + double a0 = (-511.15238141974078); + double2x2 b0 = double2x2(51.159012579898786, 340.44369022010062, 312.81429519914752, 354.19252626699983); + bool2x2 r0 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + double a1 = (136.39671165142056); + double2x2 b1 = double2x2(-94.767871185563422, 288.544332877055, 304.04282369466625, -148.61806089646092); + bool2x2 r1 = bool2x2(false, true, true, false); + TestUtils.AreEqual(a1 <= b1, r1); + + double a2 = (-506.30010127755816); + double2x2 b2 = double2x2(27.581254256694251, 48.471146844546865, 104.88351326104419, -488.6858386884843); + bool2x2 r2 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a2 <= b2, r2); + + double a3 = (-480.43516968210935); + double2x2 b3 = double2x2(421.9366516647566, 239.72105299668431, -101.01844673092404, -283.95147551407638); + bool2x2 r3 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void double2x2_operator_greater_equal_wide_wide() + { + double2x2 a0 = double2x2(-386.59181302906563, -157.12078221008215, 391.01526445477054, -511.88687133783793); + double2x2 b0 = double2x2(153.44301350109424, 49.892483019219981, 78.025787628267835, 138.81373292711271); + bool2x2 r0 = bool2x2(false, false, true, false); + TestUtils.AreEqual(a0 >= b0, r0); + + double2x2 a1 = double2x2(-5.4220387960886569, 287.64527501149348, -122.53520184500849, 7.4814426933794493); + double2x2 b1 = double2x2(-225.51057802211056, -339.35611335344436, -373.302078182484, 364.9358934671319); + bool2x2 r1 = bool2x2(true, true, true, false); + TestUtils.AreEqual(a1 >= b1, r1); + + double2x2 a2 = double2x2(152.94642765491574, 48.986223482054811, 57.338148859021317, 300.46493138953338); + double2x2 b2 = double2x2(-322.71539870030961, 125.47818165900105, -25.776589167200314, 297.51890792395864); + bool2x2 r2 = bool2x2(true, false, true, true); + TestUtils.AreEqual(a2 >= b2, r2); + + double2x2 a3 = double2x2(349.25705139211243, 85.749700824613569, -230.95330654408468, 418.7112159294594); + double2x2 b3 = double2x2(73.222349439385539, 462.78374288174496, 393.19134515951919, -95.001432224643168); + bool2x2 r3 = bool2x2(true, false, false, true); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void double2x2_operator_greater_equal_wide_scalar() + { + double2x2 a0 = double2x2(495.457423679278, -14.345115906719627, -463.47478053694346, 217.51749215718246); + double b0 = (189.20512804258851); + bool2x2 r0 = bool2x2(true, false, false, true); + TestUtils.AreEqual(a0 >= b0, r0); + + double2x2 a1 = double2x2(-246.86571776441565, 53.815095211293169, -123.33294373533357, -221.50546441856096); + double b1 = (-377.65869706573835); + bool2x2 r1 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a1 >= b1, r1); + + double2x2 a2 = double2x2(252.99433410027734, -395.36331028275345, 164.77259667439978, -287.00733889593153); + double b2 = (-116.44038277326172); + bool2x2 r2 = bool2x2(true, false, true, false); + TestUtils.AreEqual(a2 >= b2, r2); + + double2x2 a3 = double2x2(355.83704559683667, 273.01225555735277, -418.14240308205706, 249.38409697701411); + double b3 = (184.19556316369938); + bool2x2 r3 = bool2x2(true, true, false, true); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void double2x2_operator_greater_equal_scalar_wide() + { + double a0 = (215.43534169692327); + double2x2 b0 = double2x2(204.80295310020585, -101.10404853760451, -122.05503827056617, -70.456147941973143); + bool2x2 r0 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a0 >= b0, r0); + + double a1 = (-239.62025677395064); + double2x2 b1 = double2x2(-185.99272426683115, -455.61258027312, 276.66581476697036, 79.39918831707871); + bool2x2 r1 = bool2x2(false, true, false, false); + TestUtils.AreEqual(a1 >= b1, r1); + + double a2 = (416.42054791768112); + double2x2 b2 = double2x2(379.27350801009379, -439.51472612820322, 67.141009600433108, -74.560638224035813); + bool2x2 r2 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a2 >= b2, r2); + + double a3 = (-367.25635474140586); + double2x2 b3 = double2x2(494.950765601802, -61.235545425319856, -429.17024846988278, -213.82468924942646); + bool2x2 r3 = bool2x2(false, false, true, false); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void double2x2_operator_add_wide_wide() + { + double2x2 a0 = double2x2(465.14837644302679, 278.91072548502621, -277.52992237616792, -65.197214395365336); + double2x2 b0 = double2x2(483.99436186440028, -204.07667193379098, -365.67356007437854, -509.92086076639634); + double2x2 r0 = double2x2(949.14273830742707, 74.834053551235229, -643.20348245054652, -575.11807516176168); + TestUtils.AreEqual(a0 + b0, r0); + + double2x2 a1 = double2x2(-473.32437561141529, -4.6955420992782138, -470.53676698661258, -109.95011453980118); + double2x2 b1 = double2x2(-270.69751108377125, 486.76397846954126, 267.49177587567442, 251.6425212601398); + double2x2 r1 = double2x2(-744.02188669518659, 482.06843637026304, -203.04499111093816, 141.69240672033862); + TestUtils.AreEqual(a1 + b1, r1); + + double2x2 a2 = double2x2(-178.70145782209067, -420.03378339299644, 290.71109236903078, -446.5296368294068); + double2x2 b2 = double2x2(244.4951094335388, -78.675763882079991, 352.20551340291536, 82.779185095233515); + double2x2 r2 = double2x2(65.793651611448126, -498.70954727507643, 642.91660577194614, -363.75045173417328); + TestUtils.AreEqual(a2 + b2, r2); + + double2x2 a3 = double2x2(491.066454400805, -261.11730039358014, -298.40688409395835, 502.42861890347149); + double2x2 b3 = double2x2(462.54732606492348, -405.492017696375, -428.4983238785054, -41.872599859662614); + double2x2 r3 = double2x2(953.6137804657285, -666.6093180899552, -726.90520797246381, 460.55601904380887); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void double2x2_operator_add_wide_scalar() + { + double2x2 a0 = double2x2(459.89829728561369, -447.66336104258119, -94.438627525436971, 126.42986279652916); + double b0 = (500.99725913489112); + double2x2 r0 = double2x2(960.89555642050482, 53.333898092309937, 406.55863160945415, 627.42712193142029); + TestUtils.AreEqual(a0 + b0, r0); + + double2x2 a1 = double2x2(-36.254356162741033, -2.7912590516690443, -478.41478489265535, 443.11525246273504); + double b1 = (-349.64130060264904); + double2x2 r1 = double2x2(-385.89565676539007, -352.43255965431808, -828.05608549530439, 93.473951860086); + TestUtils.AreEqual(a1 + b1, r1); + + double2x2 a2 = double2x2(268.092225914864, -471.25607584009697, -2.6649749291431704, 78.985822952811532); + double b2 = (41.32102133767728); + double2x2 r2 = double2x2(309.41324725254128, -429.93505450241969, 38.65604640853411, 120.30684429048881); + TestUtils.AreEqual(a2 + b2, r2); + + double2x2 a3 = double2x2(202.14799151297098, 10.345855002452595, -151.24445898423181, 355.23276703210206); + double b3 = (311.7254551908585); + double2x2 r3 = double2x2(513.87344670382947, 322.07131019331109, 160.48099620662668, 666.95822222296056); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void double2x2_operator_add_scalar_wide() + { + double a0 = (-325.51276484388518); + double2x2 b0 = double2x2(-264.08813178915909, -106.00925998855814, -355.44729320865463, -447.33029362528134); + double2x2 r0 = double2x2(-589.60089663304427, -431.52202483244332, -680.96005805253981, -772.84305846916652); + TestUtils.AreEqual(a0 + b0, r0); + + double a1 = (-158.70021040677102); + double2x2 b1 = double2x2(-199.48369154682553, 180.31809123806568, 337.57936898692481, -37.05501486596421); + double2x2 r1 = double2x2(-358.18390195359655, 21.617880831294656, 178.87915858015378, -195.75522527273523); + TestUtils.AreEqual(a1 + b1, r1); + + double a2 = (230.80498014707348); + double2x2 b2 = double2x2(-140.17433339924287, 18.02419591789328, -138.61435825126915, 26.904163611542458); + double2x2 r2 = double2x2(90.63064674783061, 248.82917606496676, 92.190621895804327, 257.70914375861594); + TestUtils.AreEqual(a2 + b2, r2); + + double a3 = (-374.53758233345); + double2x2 b3 = double2x2(154.4676006559597, 268.3838204203098, -190.96302255939833, 188.61725362977813); + double2x2 r3 = double2x2(-220.06998167749032, -106.15376191314022, -565.50060489284829, -185.92032870367188); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void double2x2_operator_sub_wide_wide() + { + double2x2 a0 = double2x2(133.37101680290471, -131.8321183341705, -197.29314407952739, -485.286571013409); + double2x2 b0 = double2x2(123.46028739002543, 359.56010048443454, -48.24847819667707, 478.97904680621764); + double2x2 r0 = double2x2(9.9107294128792773, -491.39221881860504, -149.04466588285032, -964.26561781962664); + TestUtils.AreEqual(a0 - b0, r0); + + double2x2 a1 = double2x2(-337.55033103448818, 471.66710470228782, 146.5066197600712, -130.58504372955537); + double2x2 b1 = double2x2(207.15832886805686, 142.36730462981723, -125.60551005490379, -65.299004823574307); + double2x2 r1 = double2x2(-544.708659902545, 329.29980007247059, 272.112129814975, -65.286038905981059); + TestUtils.AreEqual(a1 - b1, r1); + + double2x2 a2 = double2x2(110.77707367333448, -235.54160486699158, 78.879356659427, -347.68616811730254); + double2x2 b2 = double2x2(-477.876434787119, 164.50000031501986, 428.00958915614035, 72.6278169493321); + double2x2 r2 = double2x2(588.65350846045351, -400.04160518201144, -349.13023249671335, -420.31398506663464); + TestUtils.AreEqual(a2 - b2, r2); + + double2x2 a3 = double2x2(-470.82054565419469, -11.459293609233271, -167.94791730118351, 330.67676917215658); + double2x2 b3 = double2x2(-446.880505531505, 432.09146114443035, -225.55465637219822, -112.45196705332586); + double2x2 r3 = double2x2(-23.940040122689709, -443.55075475366363, 57.606739071014715, 443.12873622548244); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void double2x2_operator_sub_wide_scalar() + { + double2x2 a0 = double2x2(48.936717294592768, 410.45158953706346, -364.44171612544062, 163.98060353285666); + double b0 = (-291.59041442144212); + double2x2 r0 = double2x2(340.52713171603489, 702.04200395850557, -72.8513017039985, 455.57101795429878); + TestUtils.AreEqual(a0 - b0, r0); + + double2x2 a1 = double2x2(-460.06732318367222, 204.35834441164434, 180.26971420099483, -377.92569344952972); + double b1 = (110.91942339340198); + double2x2 r1 = double2x2(-570.9867465770742, 93.438921018242354, 69.350290807592842, -488.8451168429317); + TestUtils.AreEqual(a1 - b1, r1); + + double2x2 a2 = double2x2(-470.26204297983185, 461.50756499800252, -246.28726660753006, 21.605312595891405); + double b2 = (400.53491968686455); + double2x2 r2 = double2x2(-870.79696266669634, 60.972645311137967, -646.82218629439467, -378.92960709097315); + TestUtils.AreEqual(a2 - b2, r2); + + double2x2 a3 = double2x2(246.35072171238755, -122.71842413894757, -122.93872099879138, 360.15095417581074); + double b3 = (-121.42736178330489); + double2x2 r3 = double2x2(367.77808349569244, -1.29106235564268, -1.5113592154864932, 481.57831595911563); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void double2x2_operator_sub_scalar_wide() + { + double a0 = (294.58645905861); + double2x2 b0 = double2x2(452.35251757705237, 256.98980891750648, -275.159888634067, -89.027518075437968); + double2x2 r0 = double2x2(-157.76605851844238, 37.59665014110351, 569.746347692677, 383.61397713404796); + TestUtils.AreEqual(a0 - b0, r0); + + double a1 = (488.22838829840919); + double2x2 b1 = double2x2(-333.21728030462623, -64.232989102710519, -66.041730196234653, 341.20492831859963); + double2x2 r1 = double2x2(821.44566860303541, 552.46137740111976, 554.27011849464384, 147.02345997980956); + TestUtils.AreEqual(a1 - b1, r1); + + double a2 = (-385.775056303374); + double2x2 b2 = double2x2(75.394746577085357, 354.94371645289641, 169.13141520746581, 88.216608326982964); + double2x2 r2 = double2x2(-461.16980288045937, -740.71877275627048, -554.90647151083976, -473.991664630357); + TestUtils.AreEqual(a2 - b2, r2); + + double a3 = (1.7350065716240124); + double2x2 b3 = double2x2(122.53803997977548, -264.94502771317264, -50.837180399725753, -347.65032283759228); + double2x2 r3 = double2x2(-120.80303340815146, 266.68003428479665, 52.572186971349765, 349.3853294092163); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void double2x2_operator_mul_wide_wide() + { + double2x2 a0 = double2x2(-394.78053898121254, -412.37219519744264, -25.874570143350638, -241.04595886964626); + double2x2 b0 = double2x2(-149.76397831261346, -345.04538671348496, -284.33404721148963, 267.97923648915219); + double2x2 r0 = double2x2(59123.904078224172, 142287.1235617903, 7357.0212487164608, -64595.312016683383); + TestUtils.AreEqual(a0 * b0, r0); + + double2x2 a1 = double2x2(-93.675987525692221, 244.15999257013198, 494.68846606402121, 53.537962700025105); + double2x2 b1 = double2x2(-326.64849558782225, -150.68967754705329, 207.73243794577775, 366.19289248352538); + double2x2 r1 = double2x2(30599.120397970968, -36792.390550284115, 102762.84107913627, 19605.221418797286); + TestUtils.AreEqual(a1 * b1, r1); + + double2x2 a2 = double2x2(-239.49641167349017, 236.67584644848284, -211.85620818466703, -216.65482030466887); + double2x2 b2 = double2x2(358.88076202891807, 214.85359368792433, 253.42280900358355, -307.71382751488773); + double2x2 r2 = double2x2(-85950.654724573629, 50850.6561485879, -53689.195383006307, 66667.684005499876); + TestUtils.AreEqual(a2 * b2, r2); + + double2x2 a3 = double2x2(467.95832870339893, -178.02191146557311, -386.3942503344241, -422.43540521265726); + double2x2 b3 = double2x2(184.4711149597872, 426.43644185850235, -144.28142625851621, 459.47961518703016); + double2x2 r3 = double2x2(86324.794650634591, -75915.030498228327, 55749.513536340863, -194100.45742848891); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void double2x2_operator_mul_wide_scalar() + { + double2x2 a0 = double2x2(328.20302191758674, -290.10672272839895, 236.99572454998065, 120.48136692889102); + double b0 = (192.21119055161773); + double2x2 r0 = double2x2(63084.293585418032, -55761.758562653624, 45553.230371395039, 23157.866976688449); + TestUtils.AreEqual(a0 * b0, r0); + + double2x2 a1 = double2x2(357.90315811610924, -477.31047104173825, -438.272912467957, -46.729179165665585); + double b1 = (134.86723214707672); + double2x2 r1 = double2x2(48269.408311817213, -64373.542104216656, -59108.654629591387, -6302.235054578161); + TestUtils.AreEqual(a1 * b1, r1); + + double2x2 a2 = double2x2(-238.40500103608008, -48.83483722099794, 355.30832998608628, 119.35660391643489); + double b2 = (422.08249374017237); + double2x2 r2 = double2x2(-100626.57735743705, -20612.3298756342, 149969.42596718337, 50378.333025406864); + TestUtils.AreEqual(a2 * b2, r2); + + double2x2 a3 = double2x2(-196.995807977857, -325.55215683837991, 53.937323833786536, -87.4509838034636); + double b3 = (98.2360046367329); + double2x2 r3 = double2x2(-19352.081105929705, -31980.943188673486, 5298.5871942288177, -8590.8352504039049); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void double2x2_operator_mul_scalar_wide() + { + double a0 = (-464.534700371574); + double2x2 b0 = double2x2(329.36093846399376, -198.68342671109525, 184.07942518223047, 256.01618754864489); + double2x2 r0 = double2x2(-152999.58486347177, 92295.346096036214, -85511.280621599, -118928.40297318244); + TestUtils.AreEqual(a0 * b0, r0); + + double a1 = (266.22629297255833); + double2x2 b1 = double2x2(-97.894749448585685, 159.74810583877752, -351.82222263506719, 491.80157660497423); + double2x2 r1 = double2x2(-26062.156247174364, 42529.146026845636, -93664.326117500037, 130930.51061760196); + TestUtils.AreEqual(a1 * b1, r1); + + double a2 = (49.902031206480274); + double2x2 b2 = double2x2(424.46256871915546, 160.11807616060514, -395.99208492599058, 125.20168858636248); + double2x2 r2 = double2x2(21181.544350206073, 7990.2172332881028, -19760.809379495968, 6247.8185709406853); + TestUtils.AreEqual(a2 * b2, r2); + + double a3 = (-265.01581991138676); + double2x2 b3 = double2x2(314.65609779705107, -292.71202029507236, -37.729878681586058, 165.3622206027444); + double2x2 r3 = double2x2(-83388.843747802981, 77573.316056417083, 9999.0147339576815, -43823.604475403918); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void double2x2_operator_div_wide_wide() + { + double2x2 a0 = double2x2(246.26574933075619, -269.85612953354428, -451.61952588130697, -7.38850236283082); + double2x2 b0 = double2x2(172.11981423763552, -77.141104972521362, -325.8353723612779, -450.60868117334724); + double2x2 r0 = double2x2(1.4307809383918566, 3.4982144685336105, 1.3860359070548143, 0.016396715535066435); + TestUtils.AreEqual(a0 / b0, r0); + + double2x2 a1 = double2x2(-308.20558681534862, -373.394808704683, 360.41863482092447, 25.80972458133931); + double2x2 b1 = double2x2(-261.26215398556656, -122.44949847201326, -93.210781379235357, -442.00522705633438); + double2x2 r1 = double2x2(1.1796794220427942, 3.0493780159501847, -3.8667054335113131, -0.05839235149599218); + TestUtils.AreEqual(a1 / b1, r1); + + double2x2 a2 = double2x2(-274.050461181463, 127.53858977534742, -447.6717600522897, -137.4586017771897); + double2x2 b2 = double2x2(484.36271380091216, -390.78178686219348, 402.02531714086672, 316.65072193585831); + double2x2 r2 = double2x2(-0.56579594872388561, -0.32636779415802974, -1.1135412148569459, -0.43410165287743668); + TestUtils.AreEqual(a2 / b2, r2); + + double2x2 a3 = double2x2(-136.13317424437645, 12.43763423545181, 228.51298319013461, 356.9723681681661); + double2x2 b3 = double2x2(397.15440744774151, -303.26218643005109, -118.59124451437555, -81.650312223308845); + double2x2 r3 = double2x2(-0.3427714050039572, -0.041012809351094658, -1.9268959030313104, -4.37196574572633); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void double2x2_operator_div_wide_scalar() + { + double2x2 a0 = double2x2(-244.51745116175965, 69.112274917360537, -333.02311888943575, 257.39682519500923); + double b0 = (-60.024377612408443); + double2x2 r0 = double2x2(4.0736357608014941, -1.1514034408425655, 5.5481311449798705, -4.2882048166676752); + TestUtils.AreEqual(a0 / b0, r0); + + double2x2 a1 = double2x2(403.24561257066466, 131.52659160062979, -261.88639200007844, -348.92380516087815); + double b1 = (154.34436066185322); + double2x2 r1 = double2x2(2.6126358672353378, 0.85216324740743876, -1.6967668327956258, -2.2606838608462096); + TestUtils.AreEqual(a1 / b1, r1); + + double2x2 a2 = double2x2(-275.53868187383688, 287.64239968342815, 504.37224626185946, 491.78708600056689); + double b2 = (210.55792174607416); + double2x2 r2 = double2x2(-1.308612279171939, 1.3660963087882074, 2.39540855114497, 2.3356380131527215); + TestUtils.AreEqual(a2 / b2, r2); + + double2x2 a3 = double2x2(-26.63160015392657, 272.89512098622276, 178.09617313095191, -460.87559030059521); + double b3 = (-253.23667275776933); + double2x2 r3 = double2x2(0.10516486361910435, -1.0776287573769281, -0.70327954948810989, 1.8199401582781043); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void double2x2_operator_div_scalar_wide() + { + double a0 = (41.737658758525527); + double2x2 b0 = double2x2(-422.676129776368, 248.12963235011773, 449.39137741988122, 245.85813796047967); + double2x2 r0 = double2x2(-0.098746193168297289, 0.1682090863683405, 0.092875967042706856, 0.16976317767945767); + TestUtils.AreEqual(a0 / b0, r0); + + double a1 = (-326.62061253498337); + double2x2 b1 = double2x2(163.71510489457989, 333.664472020075, 38.291076916405473, -472.97976062864984); + double2x2 r1 = double2x2(-1.9950548408181534, -0.97888939316060053, -8.5299406242357652, 0.69055938482624146); + TestUtils.AreEqual(a1 / b1, r1); + + double a2 = (192.23013958345643); + double2x2 b2 = double2x2(-200.29686960964318, -490.18150376257557, -211.10257468517057, -322.85234108700058); + double2x2 r2 = double2x2(-0.95972613030893628, -0.3921611446125986, -0.91060063985548412, -0.59541194261204144); + TestUtils.AreEqual(a2 / b2, r2); + + double a3 = (-137.98529035317961); + double2x2 b3 = double2x2(84.32973555677097, 355.06345550858578, 276.42724455354141, -382.9880213136729); + double2x2 r3 = double2x2(-1.6362590187453818, -0.38862149346102726, -0.49917398907636662, 0.36028617782843814); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void double2x2_operator_mod_wide_wide() + { + double2x2 a0 = double2x2(-442.30985924336585, 368.50046246522129, -1.0938966279355213, -364.67383473211612); + double2x2 b0 = double2x2(-43.245045443645211, -144.19587690392319, -62.640481739603217, -336.82826510855381); + double2x2 r0 = double2x2(-9.8594048069137443, 80.1087086573749, -1.0938966279355213, -27.845569623562312); + TestUtils.AreEqual(a0 % b0, r0); + + double2x2 a1 = double2x2(-197.34394487987458, -34.034902350062, -101.34858350704826, 208.31857142612273); + double2x2 b1 = double2x2(-154.6102545981343, -154.02935583611452, 487.0462093237071, -469.82909105244516); + double2x2 r1 = double2x2(-42.73369028174028, -34.034902350062, -101.34858350704826, 208.31857142612273); + TestUtils.AreEqual(a1 % b1, r1); + + double2x2 a2 = double2x2(-140.77031404374645, 183.446989383291, -463.36838100076113, 83.839106360375467); + double2x2 b2 = double2x2(-145.20377237405802, -203.38401780062543, -22.520082245823062, 224.6900237652892); + double2x2 r2 = double2x2(-140.77031404374645, 183.446989383291, -12.966736084299896, 83.839106360375467); + TestUtils.AreEqual(a2 % b2, r2); + + double2x2 a3 = double2x2(-64.714058190916717, 295.06681050689281, 212.257051805154, 349.62829916068745); + double2x2 b3 = double2x2(-435.62674614210925, 12.095571285158144, 40.378765363422531, 345.78484813579587); + double2x2 r3 = double2x2(-64.714058190916717, 4.773099663097355, 10.363224988041338, 3.8434510248915785); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void double2x2_operator_mod_wide_scalar() + { + double2x2 a0 = double2x2(-433.41699548876704, -5.5141427542614565, 393.39439958771425, 299.41153277988155); + double b0 = (-90.499235433758827); + double2x2 r0 = double2x2(-71.420053753731736, -5.5141427542614565, 31.39745785267894, 27.913826478605074); + TestUtils.AreEqual(a0 % b0, r0); + + double2x2 a1 = double2x2(-120.80601626299602, -450.80766245853511, 186.09479698263794, -84.473635951277629); + double b1 = (-502.939041133476); + double2x2 r1 = double2x2(-120.80601626299602, -450.80766245853511, 186.09479698263794, -84.473635951277629); + TestUtils.AreEqual(a1 % b1, r1); + + double2x2 a2 = double2x2(-318.78148356023314, -54.6001856581309, -172.33886607565864, -429.71466728193434); + double b2 = (433.45469041981482); + double2x2 r2 = double2x2(-318.78148356023314, -54.6001856581309, -172.33886607565864, -429.71466728193434); + TestUtils.AreEqual(a2 % b2, r2); + + double2x2 a3 = double2x2(222.36186109406958, 254.51082885196, -433.09369703433185, -203.08261284748215); + double b3 = (5.796394112425105); + double2x2 r3 = double2x2(2.09888482191559, 5.2658820176804966, -4.16053271487408, -0.20881891260347629); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void double2x2_operator_mod_scalar_wide() + { + double a0 = (-396.4224028049141); + double2x2 b0 = double2x2(-159.14024384279747, 230.17333399046834, 14.779358632294134, -303.15649738123477); + double2x2 r0 = double2x2(-78.141915119319151, -166.24906881444576, -12.159078365266623, -93.265905423679328); + TestUtils.AreEqual(a0 % b0, r0); + + double a1 = (399.63502020371845); + double2x2 b1 = double2x2(206.69470534412881, 397.04482263934096, -393.89064735634747, -372.06709426085797); + double2x2 r1 = double2x2(192.94031485958965, 2.5901975643774904, 5.7443728473709825, 27.567925942860484); + TestUtils.AreEqual(a1 % b1, r1); + + double a2 = (201.01229796233224); + double2x2 b2 = double2x2(-95.5668547598491, -258.95146882671463, 106.98357563232241, 469.3235559264773); + double2x2 r2 = double2x2(9.8785884426340544, 201.01229796233224, 94.028722330009828, 201.01229796233224); + TestUtils.AreEqual(a2 % b2, r2); + + double a3 = (-34.808985011097491); + double2x2 b3 = double2x2(184.83653434777466, 374.79425376224992, -131.87271911086174, -120.09286003936683); + double2x2 r3 = double2x2(-34.808985011097491, -34.808985011097491, -34.808985011097491, -34.808985011097491); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void double2x2_operator_plus() + { + double2x2 a0 = double2x2(271.6708086802023, -79.080240524876956, -330.98506203805334, 31.824682965793045); + double2x2 r0 = double2x2(271.6708086802023, -79.080240524876956, -330.98506203805334, 31.824682965793045); + TestUtils.AreEqual(+a0, r0); + + double2x2 a1 = double2x2(315.44952860262686, 190.32466015141677, -350.30858270745193, -320.51845875406565); + double2x2 r1 = double2x2(315.44952860262686, 190.32466015141677, -350.30858270745193, -320.51845875406565); + TestUtils.AreEqual(+a1, r1); + + double2x2 a2 = double2x2(102.0544069288552, -428.77622075973835, 377.23016208095021, 234.77393042052813); + double2x2 r2 = double2x2(102.0544069288552, -428.77622075973835, 377.23016208095021, 234.77393042052813); + TestUtils.AreEqual(+a2, r2); + + double2x2 a3 = double2x2(34.283600107898792, 465.35593555185756, 309.59316530339106, -316.93713655925222); + double2x2 r3 = double2x2(34.283600107898792, 465.35593555185756, 309.59316530339106, -316.93713655925222); + TestUtils.AreEqual(+a3, r3); + } + + [TestCompiler] + public static void double2x2_operator_neg() + { + double2x2 a0 = double2x2(420.22718854445372, -196.25749811728366, -335.42683068636188, 509.04366969924592); + double2x2 r0 = double2x2(-420.22718854445372, 196.25749811728366, 335.42683068636188, -509.04366969924592); + TestUtils.AreEqual(-a0, r0); + + double2x2 a1 = double2x2(-33.014395013923945, -495.8379526063045, -270.85946787095605, 19.686896571743773); + double2x2 r1 = double2x2(33.014395013923945, 495.8379526063045, 270.85946787095605, -19.686896571743773); + TestUtils.AreEqual(-a1, r1); + + double2x2 a2 = double2x2(268.23670662019254, 223.38126312167446, -410.39206070936848, -395.68154186554324); + double2x2 r2 = double2x2(-268.23670662019254, -223.38126312167446, 410.39206070936848, 395.68154186554324); + TestUtils.AreEqual(-a2, r2); + + double2x2 a3 = double2x2(-349.14948885010062, -238.21960913307015, 292.54351224216794, 469.29257867731735); + double2x2 r3 = double2x2(349.14948885010062, 238.21960913307015, -292.54351224216794, -469.29257867731735); + TestUtils.AreEqual(-a3, r3); + } + + [TestCompiler] + public static void double2x2_operator_prefix_inc() + { + double2x2 a0 = double2x2(-99.79557113526181, 458.74185082816609, 96.179026886904126, -48.552469514567633); + double2x2 r0 = double2x2(-98.79557113526181, 459.74185082816609, 97.179026886904126, -47.552469514567633); + TestUtils.AreEqual(++a0, r0); + + double2x2 a1 = double2x2(-315.728967098393, -323.61485853959567, -456.89028832730384, -76.507656371457358); + double2x2 r1 = double2x2(-314.728967098393, -322.61485853959567, -455.89028832730384, -75.507656371457358); + TestUtils.AreEqual(++a1, r1); + + double2x2 a2 = double2x2(-305.58477344437722, 148.67930967578627, 363.2849182390072, -115.5592263283018); + double2x2 r2 = double2x2(-304.58477344437722, 149.67930967578627, 364.2849182390072, -114.5592263283018); + TestUtils.AreEqual(++a2, r2); + + double2x2 a3 = double2x2(-326.87781992874937, 339.8765849265626, -38.410431164507941, -153.3736775635619); + double2x2 r3 = double2x2(-325.87781992874937, 340.8765849265626, -37.410431164507941, -152.3736775635619); + TestUtils.AreEqual(++a3, r3); + } + + [TestCompiler] + public static void double2x2_operator_postfix_inc() + { + double2x2 a0 = double2x2(322.94356623429042, 472.05246542024076, 203.48761925636211, -49.854570650427888); + double2x2 r0 = double2x2(322.94356623429042, 472.05246542024076, 203.48761925636211, -49.854570650427888); + TestUtils.AreEqual(a0++, r0); + + double2x2 a1 = double2x2(-31.420532002775246, 271.45466840986842, 55.736877228942149, 153.75031645305); + double2x2 r1 = double2x2(-31.420532002775246, 271.45466840986842, 55.736877228942149, 153.75031645305); + TestUtils.AreEqual(a1++, r1); + + double2x2 a2 = double2x2(-174.17301925186672, 215.11022744658874, 159.86103184514729, -333.05045262586816); + double2x2 r2 = double2x2(-174.17301925186672, 215.11022744658874, 159.86103184514729, -333.05045262586816); + TestUtils.AreEqual(a2++, r2); + + double2x2 a3 = double2x2(241.46487509527469, -170.10464366250886, -270.65246380057766, -162.86024792625579); + double2x2 r3 = double2x2(241.46487509527469, -170.10464366250886, -270.65246380057766, -162.86024792625579); + TestUtils.AreEqual(a3++, r3); + } + + [TestCompiler] + public static void double2x2_operator_prefix_dec() + { + double2x2 a0 = double2x2(-416.20121712992022, -96.637880131899351, -50.145671629414721, -207.31644759295341); + double2x2 r0 = double2x2(-417.20121712992022, -97.637880131899351, -51.145671629414721, -208.31644759295341); + TestUtils.AreEqual(--a0, r0); + + double2x2 a1 = double2x2(439.47906156977592, 337.96895734312432, 246.08898293510492, 171.96452935597142); + double2x2 r1 = double2x2(438.47906156977592, 336.96895734312432, 245.08898293510492, 170.96452935597142); + TestUtils.AreEqual(--a1, r1); + + double2x2 a2 = double2x2(-227.44280134301761, 326.50782338087811, 400.720900006928, -478.03137253133178); + double2x2 r2 = double2x2(-228.44280134301761, 325.50782338087811, 399.720900006928, -479.03137253133178); + TestUtils.AreEqual(--a2, r2); + + double2x2 a3 = double2x2(-326.45297852459038, 112.79684668071422, -341.97629300783217, -503.27416181158003); + double2x2 r3 = double2x2(-327.45297852459038, 111.79684668071422, -342.97629300783217, -504.27416181158003); + TestUtils.AreEqual(--a3, r3); + } + + [TestCompiler] + public static void double2x2_operator_postfix_dec() + { + double2x2 a0 = double2x2(-376.59242719066907, 16.969734438215255, -0.25066399585949739, -202.32328734282555); + double2x2 r0 = double2x2(-376.59242719066907, 16.969734438215255, -0.25066399585949739, -202.32328734282555); + TestUtils.AreEqual(a0--, r0); + + double2x2 a1 = double2x2(409.55752940175944, -281.11170376516492, -262.062590959511, -182.40572866350681); + double2x2 r1 = double2x2(409.55752940175944, -281.11170376516492, -262.062590959511, -182.40572866350681); + TestUtils.AreEqual(a1--, r1); + + double2x2 a2 = double2x2(450.12809559801974, -332.15495768755443, -261.00890052551819, 205.46112570793423); + double2x2 r2 = double2x2(450.12809559801974, -332.15495768755443, -261.00890052551819, 205.46112570793423); + TestUtils.AreEqual(a2--, r2); + + double2x2 a3 = double2x2(-230.22777878038016, 378.64123433578811, 487.34482287212495, -192.17785772689518); + double2x2 r3 = double2x2(-230.22777878038016, 378.64123433578811, 487.34482287212495, -192.17785772689518); + TestUtils.AreEqual(a3--, r3); + } + + + } +} diff --git a/package/Tests/Tests/Shared/TestDouble2x2.gen.cs.meta b/package/Tests/Tests/Shared/TestDouble2x2.gen.cs.meta new file mode 100755 index 000000000..0aee2fe45 --- /dev/null +++ b/package/Tests/Tests/Shared/TestDouble2x2.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: eb8a44886606504469cf3329b4993591 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/package/Tests/Tests/Shared/TestDouble2x3.gen.cs b/package/Tests/Tests/Shared/TestDouble2x3.gen.cs new file mode 100755 index 000000000..997a37642 --- /dev/null +++ b/package/Tests/Tests/Shared/TestDouble2x3.gen.cs @@ -0,0 +1,943 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using NUnit.Framework; +using static Unity.Mathematics.math; +using Burst.Compiler.IL.Tests; + +namespace Unity.Mathematics.Tests +{ + [TestFixture] + public class TestDouble2x3 + { + [TestCompiler] + public static void double2x3_zero() + { + TestUtils.AreEqual(double2x3.zero.c0.x, 0.0); + TestUtils.AreEqual(double2x3.zero.c0.y, 0.0); + TestUtils.AreEqual(double2x3.zero.c1.x, 0.0); + TestUtils.AreEqual(double2x3.zero.c1.y, 0.0); + TestUtils.AreEqual(double2x3.zero.c2.x, 0.0); + TestUtils.AreEqual(double2x3.zero.c2.y, 0.0); + } + + [TestCompiler] + public static void double2x3_operator_equal_wide_wide() + { + double2x3 a0 = double2x3(-135.18925172425304, -49.094127439471947, 169.12980778940482, 240.80529772527757, 314.73919382446411, 442.39301916695808); + double2x3 b0 = double2x3(-220.01464591734793, 66.980020792679852, 499.20158576369363, -371.113114291389, 208.44865212610398, 390.80369133074009); + bool2x3 r0 = bool2x3(false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + double2x3 a1 = double2x3(177.92444881141398, 335.53340283759564, 168.1544516869609, 350.72955982327903, 367.17843668869625, 46.941470406456574); + double2x3 b1 = double2x3(-72.443806920407269, 362.97643273089841, 194.6783255053117, 471.6448635867074, -404.04466719368691, -144.69675476136467); + bool2x3 r1 = bool2x3(false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + double2x3 a2 = double2x3(188.76415094582558, -97.211392209497944, -293.3210057193977, -234.82292353120766, 417.03371329653714, 26.386443388828297); + double2x3 b2 = double2x3(-494.44664334433463, -252.97038209297244, 234.41711746641306, 398.72397465199413, 260.42872083393331, 370.14420502732708); + bool2x3 r2 = bool2x3(false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + double2x3 a3 = double2x3(269.24572265764959, 29.474191440955792, 479.48521469509467, -237.23094355186026, -221.98371349181224, -506.67253255596034); + double2x3 b3 = double2x3(89.579862397899774, -434.81684347373289, -109.84533815730612, 336.9730161805511, -409.15498156526826, 500.38755273278218); + bool2x3 r3 = bool2x3(false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void double2x3_operator_equal_wide_scalar() + { + double2x3 a0 = double2x3(65.671194345537174, 404.41550440546848, -269.7301577393572, 83.630607882342588, 152.99450476141385, -155.86829836474186); + double b0 = (-155.8157547245807); + bool2x3 r0 = bool2x3(false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + double2x3 a1 = double2x3(314.67125597348024, 290.04894007837811, -132.63519460178691, -65.667489797653388, -69.683271678948415, -191.19075521789063); + double b1 = (386.36515325417986); + bool2x3 r1 = bool2x3(false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + double2x3 a2 = double2x3(186.84520086406042, -319.14406481345372, -49.701092981594172, -300.88189925853248, 333.39685193328046, 386.377503336583); + double b2 = (-232.89569221851218); + bool2x3 r2 = bool2x3(false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + double2x3 a3 = double2x3(-296.70189084517858, 141.54237968360189, -227.32334314441465, 83.872881689981, -410.91687483848858, 110.50128345866744); + double b3 = (-309.11719741910565); + bool2x3 r3 = bool2x3(false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void double2x3_operator_equal_scalar_wide() + { + double a0 = (36.383921878591195); + double2x3 b0 = double2x3(-400.48919958644046, -71.286823544319191, 156.97811491646712, -225.23872791288363, 499.14180993435059, -211.97992358542047); + bool2x3 r0 = bool2x3(false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + double a1 = (428.31192394174263); + double2x3 b1 = double2x3(-489.50133322621758, -5.6915457275190988, -30.865948453017495, -362.98307221149241, 184.50319322594589, -160.47062142215231); + bool2x3 r1 = bool2x3(false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + double a2 = (316.66882315122928); + double2x3 b2 = double2x3(390.36923879681581, 505.10510301268891, -294.64870967280524, 443.19909283295226, 96.559236333034619, -257.01294601010761); + bool2x3 r2 = bool2x3(false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + double a3 = (-245.05497538533757); + double2x3 b3 = double2x3(326.46485176983515, -23.959890138339176, -168.6948808025079, 386.24859279498855, -227.09065185631192, -336.61242524562982); + bool2x3 r3 = bool2x3(false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void double2x3_operator_not_equal_wide_wide() + { + double2x3 a0 = double2x3(279.99414576217259, -43.342018386042696, -465.72473523846116, 317.46655645848557, 85.714987079480238, 360.89050572034466); + double2x3 b0 = double2x3(-460.912120318465, -476.00904844515446, 468.13642070635058, -341.01254312182431, -62.658060341448561, -458.80166718866752); + bool2x3 r0 = bool2x3(true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + double2x3 a1 = double2x3(366.08152668833804, 154.5428384070018, 332.426219856565, 397.11323160543725, -431.3749584776233, 489.01079319837072); + double2x3 b1 = double2x3(-457.73023316717251, -59.523265627922171, 3.024243117787023, 155.81276352508587, -19.839918384253963, -6.0169332055453992); + bool2x3 r1 = bool2x3(true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + double2x3 a2 = double2x3(398.43358320669904, -489.81794594685454, 171.4049242340983, -67.829682620162941, -192.27871498478515, 227.84082494854965); + double2x3 b2 = double2x3(-406.20792145571107, -102.42070083619126, -40.362921018322425, 452.67542645552919, 93.257571979080126, -258.37806689849964); + bool2x3 r2 = bool2x3(true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + double2x3 a3 = double2x3(62.138187675801191, 262.18648755838467, -404.05309052209049, 34.449567572423007, -204.79578719138902, -285.41180314003111); + double2x3 b3 = double2x3(-184.04980405794913, -379.23531192319251, -370.68729537105526, -255.94724023339677, 29.055771602809273, 322.40763226263584); + bool2x3 r3 = bool2x3(true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void double2x3_operator_not_equal_wide_scalar() + { + double2x3 a0 = double2x3(-155.44111282911206, -19.426602134214079, 174.63305409934048, 507.9207296352464, 59.177048472304364, 171.15146430356026); + double b0 = (-393.41354173860213); + bool2x3 r0 = bool2x3(true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + double2x3 a1 = double2x3(-58.923273352404692, 492.20105361016522, -165.24150879925185, 270.34102333259818, -380.24326222960059, 501.8990516615562); + double b1 = (-398.17684835855704); + bool2x3 r1 = bool2x3(true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + double2x3 a2 = double2x3(-134.34545642433011, 46.771004937016869, 161.45995123752391, 261.51423442620512, -145.61239559278471, -0.44992661497087738); + double b2 = (458.40042302496749); + bool2x3 r2 = bool2x3(true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + double2x3 a3 = double2x3(350.46143047439932, 242.66402232025939, 382.67707675633812, -468.96794221781562, -497.45947789468778, -80.932258882062627); + double b3 = (202.22103724359579); + bool2x3 r3 = bool2x3(true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void double2x3_operator_not_equal_scalar_wide() + { + double a0 = (478.35313938481409); + double2x3 b0 = double2x3(459.55319592894671, 436.45324369727314, -488.71416806090349, 392.76794475725296, -266.73665369056937, 338.55788270503183); + bool2x3 r0 = bool2x3(true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + double a1 = (-338.10012475498957); + double2x3 b1 = double2x3(-152.3145445102428, -452.82067868338, 209.43931422449612, 50.107968592135194, 372.4343656843688, -488.0213141329686); + bool2x3 r1 = bool2x3(true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + double a2 = (489.74075697816011); + double2x3 b2 = double2x3(270.40006149485714, -472.8467831429312, -286.85046090132113, -384.69186681541237, 443.42352959300558, 358.74720900074919); + bool2x3 r2 = bool2x3(true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + double a3 = (-15.414077527548216); + double2x3 b3 = double2x3(-342.17916194637269, 468.96750400446706, -130.56808501601597, 401.7858013593526, -268.35225761511936, -239.231014124691); + bool2x3 r3 = bool2x3(true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void double2x3_operator_less_wide_wide() + { + double2x3 a0 = double2x3(51.710243010758518, -313.85556450200062, 283.04767359562572, 235.02188621974642, 44.0783565249659, -207.25566659088042); + double2x3 b0 = double2x3(-261.83523881707117, -19.810742149041403, -149.25882084167506, 205.99822316225539, -306.02438535635565, 102.12168006884008); + bool2x3 r0 = bool2x3(false, true, false, false, false, true); + TestUtils.AreEqual(a0 < b0, r0); + + double2x3 a1 = double2x3(3.3829410091894943, -144.30134326978651, -69.369597705718888, -135.66796762108243, -194.78736576567746, -33.473868147225062); + double2x3 b1 = double2x3(231.90633760760829, 179.49885305180158, 473.22488496882136, 15.891647107848712, 270.04990614114786, 490.91400240869916); + bool2x3 r1 = bool2x3(true, true, true, true, true, true); + TestUtils.AreEqual(a1 < b1, r1); + + double2x3 a2 = double2x3(-19.675088653189619, 423.23796697297973, -71.698315415390937, -501.88598870760109, 7.6438391244242894, 302.26289214857991); + double2x3 b2 = double2x3(-185.73412164753961, 76.433086669274189, 97.75231246731812, 419.30080600236579, 73.953208242521214, 481.03232382285978); + bool2x3 r2 = bool2x3(false, false, true, true, true, true); + TestUtils.AreEqual(a2 < b2, r2); + + double2x3 a3 = double2x3(-140.55051786291904, -436.586703265359, -351.441728040316, 364.97084896870467, 301.894133946809, 407.55097336673691); + double2x3 b3 = double2x3(7.00747371046225, -7.3240954910051528, -413.07575793428146, -154.1188920261892, 449.20288989003882, 502.01430797111914); + bool2x3 r3 = bool2x3(true, true, false, false, true, true); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void double2x3_operator_less_wide_scalar() + { + double2x3 a0 = double2x3(-221.86977325280651, -121.54646807608498, -97.52392511140738, 479.88107775146193, 67.118990214131259, 137.32880574899207); + double b0 = (199.06751808853244); + bool2x3 r0 = bool2x3(true, true, true, false, true, true); + TestUtils.AreEqual(a0 < b0, r0); + + double2x3 a1 = double2x3(282.96659601990439, -111.41316061439608, -288.08113278452356, 82.665427008022334, -361.64292042406413, -68.088202269788951); + double b1 = (258.27909362422258); + bool2x3 r1 = bool2x3(false, true, true, true, true, true); + TestUtils.AreEqual(a1 < b1, r1); + + double2x3 a2 = double2x3(12.788020378345664, -78.762971199472872, 25.727694284975428, 101.37087182950734, -330.442660724019, -48.920521520506838); + double b2 = (-66.703050406045747); + bool2x3 r2 = bool2x3(false, true, false, false, true, false); + TestUtils.AreEqual(a2 < b2, r2); + + double2x3 a3 = double2x3(359.60440914686978, 241.27682101040932, -183.43778165776178, 423.02713580756779, -334.62272349680904, -98.315578744893685); + double b3 = (-8.15008759878117); + bool2x3 r3 = bool2x3(false, false, true, false, true, true); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void double2x3_operator_less_scalar_wide() + { + double a0 = (-250.4849370692321); + double2x3 b0 = double2x3(-377.19654887597846, -505.14754104295167, 375.92672198634909, 110.17393474940855, -118.09757452742082, -40.45089079833167); + bool2x3 r0 = bool2x3(false, false, true, true, true, true); + TestUtils.AreEqual(a0 < b0, r0); + + double a1 = (-299.74430932651478); + double2x3 b1 = double2x3(31.437125935888389, -458.904539560389, 13.684679276163024, -458.50690839183841, 248.27646624682302, 389.23142999654237); + bool2x3 r1 = bool2x3(true, false, true, false, true, true); + TestUtils.AreEqual(a1 < b1, r1); + + double a2 = (488.74553679337055); + double2x3 b2 = double2x3(-221.63786731550368, -424.26720329013989, 249.05904948388184, -22.136127720650336, -442.24773928255206, -340.85755721705851); + bool2x3 r2 = bool2x3(false, false, false, false, false, false); + TestUtils.AreEqual(a2 < b2, r2); + + double a3 = (-95.1117256130612); + double2x3 b3 = double2x3(15.409410245441563, 87.292497437117845, 495.06764220402931, 316.01850309782594, -125.56811505442863, 122.16476803746298); + bool2x3 r3 = bool2x3(true, true, true, true, false, true); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void double2x3_operator_greater_wide_wide() + { + double2x3 a0 = double2x3(-229.29066501804192, 505.536608216137, -73.80706862071861, 100.29203777215071, -419.21478124112582, -159.55974753180504); + double2x3 b0 = double2x3(-445.84502407808088, -420.03529210576568, 299.02440108872224, -13.880978829171966, 151.56173593903043, -163.5094302461992); + bool2x3 r0 = bool2x3(true, true, false, true, false, true); + TestUtils.AreEqual(a0 > b0, r0); + + double2x3 a1 = double2x3(-396.7703608929973, 127.03739482119556, 489.13989733585151, 51.91890885863404, 155.38475544535777, -135.63165027258526); + double2x3 b1 = double2x3(-391.09603733154762, 479.2837710228207, -77.674873149802409, -46.5841996886694, -415.37701888353422, 71.466978344818131); + bool2x3 r1 = bool2x3(false, false, true, true, true, false); + TestUtils.AreEqual(a1 > b1, r1); + + double2x3 a2 = double2x3(-425.97813554572787, -228.430505143679, 383.03834909155887, 136.53358298937496, 8.602427725029429, -251.3243674018068); + double2x3 b2 = double2x3(-206.06102643071722, 360.83628218287424, 236.96878658838978, 14.550342328171382, 364.735178402036, -159.0612996365229); + bool2x3 r2 = bool2x3(false, false, true, true, false, false); + TestUtils.AreEqual(a2 > b2, r2); + + double2x3 a3 = double2x3(-345.954920691417, -170.565928777012, -293.25441588706076, 139.1249764613458, 214.3030732675935, 238.76991211565678); + double2x3 b3 = double2x3(226.63117490831348, 182.79602512288659, 341.83937398616195, -79.130463875425278, -247.29681956362765, 164.58913882290437); + bool2x3 r3 = bool2x3(false, false, false, true, true, true); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void double2x3_operator_greater_wide_scalar() + { + double2x3 a0 = double2x3(11.156317000815761, -411.02322382993214, 385.88556188432756, -485.10304831206008, -491.18003033622171, 405.17534632476759); + double b0 = (-302.81693877969724); + bool2x3 r0 = bool2x3(true, false, true, false, false, true); + TestUtils.AreEqual(a0 > b0, r0); + + double2x3 a1 = double2x3(173.57509740329124, 501.30683183172107, -367.027771405423, -86.124509613087639, -489.09058998948456, -172.51816066192379); + double b1 = (69.269281181166548); + bool2x3 r1 = bool2x3(true, true, false, false, false, false); + TestUtils.AreEqual(a1 > b1, r1); + + double2x3 a2 = double2x3(-18.149639853346002, -238.8945134798505, -27.239137900638923, 471.77934072528933, 240.16453253485474, -481.47807930478734); + double b2 = (-236.41493498367021); + bool2x3 r2 = bool2x3(true, false, true, true, true, false); + TestUtils.AreEqual(a2 > b2, r2); + + double2x3 a3 = double2x3(185.59438547193747, -510.22814702905163, -183.28619607877278, -386.12766260007754, -13.638212448748845, -7.3478887115362568); + double b3 = (33.294723764664809); + bool2x3 r3 = bool2x3(true, false, false, false, false, false); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void double2x3_operator_greater_scalar_wide() + { + double a0 = (453.54610201974685); + double2x3 b0 = double2x3(-226.20441423459187, -423.46500487973213, 409.40550227156166, 453.87706277048073, 87.475727837288673, 113.79560308987072); + bool2x3 r0 = bool2x3(true, true, true, false, true, true); + TestUtils.AreEqual(a0 > b0, r0); + + double a1 = (176.40926154721956); + double2x3 b1 = double2x3(-140.44002944810319, -182.48286804113673, -158.29329188088576, -162.68531830733889, -193.328676075362, 230.18129955519987); + bool2x3 r1 = bool2x3(true, true, true, true, true, false); + TestUtils.AreEqual(a1 > b1, r1); + + double a2 = (-102.58784227379965); + double2x3 b2 = double2x3(392.5205878655056, -177.47865947404813, -10.295010809924008, -24.048938524000789, 172.44867499752377, 374.04800503982608); + bool2x3 r2 = bool2x3(false, true, false, false, false, false); + TestUtils.AreEqual(a2 > b2, r2); + + double a3 = (-368.99763958947619); + double2x3 b3 = double2x3(-210.19528804076617, 149.47022325800276, -281.34327019441093, -100.46916608720511, 304.86444320569956, -361.52483360912879); + bool2x3 r3 = bool2x3(false, false, false, false, false, false); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void double2x3_operator_less_equal_wide_wide() + { + double2x3 a0 = double2x3(240.09053169940159, 462.2131528622532, 293.08251561461134, -427.87067361728782, -405.5227226715175, 204.59190211286386); + double2x3 b0 = double2x3(-81.203838624620744, 493.63743876555816, -411.47211451617636, 99.164449499530974, -295.66769875943089, -480.46254824123463); + bool2x3 r0 = bool2x3(false, true, false, true, true, false); + TestUtils.AreEqual(a0 <= b0, r0); + + double2x3 a1 = double2x3(294.670105832941, -327.56444445604666, -456.12326667091031, 282.3012408140587, 421.8811549720732, -311.71284809322697); + double2x3 b1 = double2x3(74.414040361723892, 260.916124226952, 306.17329730939741, 139.56480438055689, -505.75247955031341, -489.62680958659706); + bool2x3 r1 = bool2x3(false, true, true, false, false, false); + TestUtils.AreEqual(a1 <= b1, r1); + + double2x3 a2 = double2x3(84.5674827492644, 447.24461647832982, -154.49435217422172, -424.36474986763892, 36.684489505684269, 267.07029283562224); + double2x3 b2 = double2x3(-280.03260267899958, 303.15991058161478, 511.19015788994272, -104.65973358259527, 95.1465771641333, -125.6363432992419); + bool2x3 r2 = bool2x3(false, false, true, true, true, false); + TestUtils.AreEqual(a2 <= b2, r2); + + double2x3 a3 = double2x3(307.89391937288167, -351.76015369582927, -157.36036570247279, 152.70902712303632, 372.26716750313858, 202.36828837281485); + double2x3 b3 = double2x3(376.239777024947, -415.7747320680761, -47.481050275024529, 117.72210293529656, 469.37837264937275, -263.04235780567041); + bool2x3 r3 = bool2x3(true, false, true, false, true, false); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void double2x3_operator_less_equal_wide_scalar() + { + double2x3 a0 = double2x3(309.1924356469849, 69.673792633076118, -101.72418622939114, -315.97240629604664, -346.01106731314724, 424.15386577330241); + double b0 = (292.92427148154206); + bool2x3 r0 = bool2x3(false, true, true, true, true, false); + TestUtils.AreEqual(a0 <= b0, r0); + + double2x3 a1 = double2x3(-410.87006945669191, 183.82114538169515, 320.44249287268258, -257.87003791419329, -386.801748694294, -182.9388249772316); + double b1 = (-483.90265320423185); + bool2x3 r1 = bool2x3(false, false, false, false, false, false); + TestUtils.AreEqual(a1 <= b1, r1); + + double2x3 a2 = double2x3(349.25012962392077, 373.56911652794531, 259.15151822713744, 450.13007828692446, -128.5255282523695, -43.874866744445114); + double b2 = (485.31159304329731); + bool2x3 r2 = bool2x3(true, true, true, true, true, true); + TestUtils.AreEqual(a2 <= b2, r2); + + double2x3 a3 = double2x3(457.38574549992836, 479.45184038553941, -499.51644372358754, -398.13294643821797, 402.48485893871862, 87.9161055497434); + double b3 = (-77.638293064030961); + bool2x3 r3 = bool2x3(false, false, true, true, false, false); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void double2x3_operator_less_equal_scalar_wide() + { + double a0 = (-511.15238141974078); + double2x3 b0 = double2x3(51.159012579898786, 340.44369022010062, 312.81429519914752, 354.19252626699983, 136.39671165142056, -94.767871185563422); + bool2x3 r0 = bool2x3(true, true, true, true, true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + double a1 = (288.544332877055); + double2x3 b1 = double2x3(304.04282369466625, -148.61806089646092, -506.30010127755816, 27.581254256694251, 48.471146844546865, 104.88351326104419); + bool2x3 r1 = bool2x3(true, false, false, false, false, false); + TestUtils.AreEqual(a1 <= b1, r1); + + double a2 = (-488.6858386884843); + double2x3 b2 = double2x3(-480.43516968210935, 421.9366516647566, 239.72105299668431, -101.01844673092404, -283.95147551407638, -55.2435333986038); + bool2x3 r2 = bool2x3(true, true, true, true, true, true); + TestUtils.AreEqual(a2 <= b2, r2); + + double a3 = (-455.80483147865385); + double2x3 b3 = double2x3(131.10721618081777, -461.69878099006542, -388.48285001725094, -258.93605125087129, -225.2235287284588, -116.01998215355911); + bool2x3 r3 = bool2x3(true, false, true, true, true, true); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void double2x3_operator_greater_equal_wide_wide() + { + double2x3 a0 = double2x3(-386.59181302906563, -157.12078221008215, 391.01526445477054, -511.88687133783793, -5.4220387960886569, 287.64527501149348); + double2x3 b0 = double2x3(153.44301350109424, 49.892483019219981, 78.025787628267835, 138.81373292711271, -225.51057802211056, -339.35611335344436); + bool2x3 r0 = bool2x3(false, false, true, false, true, true); + TestUtils.AreEqual(a0 >= b0, r0); + + double2x3 a1 = double2x3(-122.53520184500849, 7.4814426933794493, 152.94642765491574, 48.986223482054811, 57.338148859021317, 300.46493138953338); + double2x3 b1 = double2x3(-373.302078182484, 364.9358934671319, -322.71539870030961, 125.47818165900105, -25.776589167200314, 297.51890792395864); + bool2x3 r1 = bool2x3(true, false, true, false, true, true); + TestUtils.AreEqual(a1 >= b1, r1); + + double2x3 a2 = double2x3(349.25705139211243, 85.749700824613569, -230.95330654408468, 418.7112159294594, -131.03991824530061, -126.51221257378916); + double2x3 b2 = double2x3(73.222349439385539, 462.78374288174496, 393.19134515951919, -95.001432224643168, 381.35702556248611, 93.031928344178937); + bool2x3 r2 = bool2x3(true, false, false, true, false, false); + TestUtils.AreEqual(a2 >= b2, r2); + + double2x3 a3 = double2x3(-156.81847841889527, 422.37748761772059, -413.08933348818186, 219.44273553576443, 35.591133372667741, 447.18153521380464); + double2x3 b3 = double2x3(254.25326287665087, 90.672789377473691, 348.93816892660141, 161.33763106229605, 79.435611046587837, 420.24346824187944); + bool2x3 r3 = bool2x3(false, true, false, true, false, true); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void double2x3_operator_greater_equal_wide_scalar() + { + double2x3 a0 = double2x3(495.457423679278, -14.345115906719627, -463.47478053694346, 217.51749215718246, -246.86571776441565, -377.65869706573835); + double b0 = (189.20512804258851); + bool2x3 r0 = bool2x3(true, false, false, true, false, false); + TestUtils.AreEqual(a0 >= b0, r0); + + double2x3 a1 = double2x3(53.815095211293169, -221.50546441856096, 252.99433410027734, -116.44038277326172, -395.36331028275345, 164.77259667439978); + double b1 = (-123.33294373533357); + bool2x3 r1 = bool2x3(true, false, true, true, false, true); + TestUtils.AreEqual(a1 >= b1, r1); + + double2x3 a2 = double2x3(-287.00733889593153, 184.19556316369938, 273.01225555735277, -418.14240308205706, 249.38409697701411, 396.39213938098032); + double b2 = (355.83704559683667); + bool2x3 r2 = bool2x3(false, false, false, false, false, true); + TestUtils.AreEqual(a2 >= b2, r2); + + double2x3 a3 = double2x3(332.66542044871744, -335.121477998384, -302.08690442800844, 254.44223344253476, 179.00504287472234, 71.176674637560154); + double b3 = (243.76141392614761); + bool2x3 r3 = bool2x3(true, false, false, true, false, false); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void double2x3_operator_greater_equal_scalar_wide() + { + double a0 = (215.43534169692327); + double2x3 b0 = double2x3(204.80295310020585, -101.10404853760451, -122.05503827056617, -70.456147941973143, -239.62025677395064, -185.99272426683115); + bool2x3 r0 = bool2x3(true, true, true, true, true, true); + TestUtils.AreEqual(a0 >= b0, r0); + + double a1 = (-455.61258027312); + double2x3 b1 = double2x3(276.66581476697036, 79.39918831707871, 416.42054791768112, 379.27350801009379, -439.51472612820322, 67.141009600433108); + bool2x3 r1 = bool2x3(false, false, false, false, false, false); + TestUtils.AreEqual(a1 >= b1, r1); + + double a2 = (-74.560638224035813); + double2x3 b2 = double2x3(-367.25635474140586, 494.950765601802, -61.235545425319856, -429.17024846988278, -213.82468924942646, -264.31016242891093); + bool2x3 r2 = bool2x3(true, false, false, true, true, true); + TestUtils.AreEqual(a2 >= b2, r2); + + double a3 = (243.11378275748052); + double2x3 b3 = double2x3(-22.383876095704693, 304.86197175870745, -323.68615332417477, 67.938025267765852, 125.30356818312009, -400.47050280145857); + bool2x3 r3 = bool2x3(true, false, true, true, true, true); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void double2x3_operator_add_wide_wide() + { + double2x3 a0 = double2x3(465.14837644302679, 278.91072548502621, -277.52992237616792, -65.197214395365336, -473.32437561141529, -4.6955420992782138); + double2x3 b0 = double2x3(483.99436186440028, -204.07667193379098, -365.67356007437854, -509.92086076639634, -270.69751108377125, 486.76397846954126); + double2x3 r0 = double2x3(949.14273830742707, 74.834053551235229, -643.20348245054652, -575.11807516176168, -744.02188669518659, 482.06843637026304); + TestUtils.AreEqual(a0 + b0, r0); + + double2x3 a1 = double2x3(-470.53676698661258, -109.95011453980118, -178.70145782209067, -420.03378339299644, 290.71109236903078, -446.5296368294068); + double2x3 b1 = double2x3(267.49177587567442, 251.6425212601398, 244.4951094335388, -78.675763882079991, 352.20551340291536, 82.779185095233515); + double2x3 r1 = double2x3(-203.04499111093816, 141.69240672033862, 65.793651611448126, -498.70954727507643, 642.91660577194614, -363.75045173417328); + TestUtils.AreEqual(a1 + b1, r1); + + double2x3 a2 = double2x3(491.066454400805, -261.11730039358014, -298.40688409395835, 502.42861890347149, 284.59432925125316, 401.12844366632794); + double2x3 b2 = double2x3(462.54732606492348, -405.492017696375, -428.4983238785054, -41.872599859662614, -269.9274958436971, 75.204465662690041); + double2x3 r2 = double2x3(953.6137804657285, -666.6093180899552, -726.90520797246381, 460.55601904380887, 14.666833407556055, 476.332909329018); + TestUtils.AreEqual(a2 + b2, r2); + + double2x3 a3 = double2x3(-36.263498084742366, -102.94915657069026, 503.19817161150195, -384.42911857386542, -45.22821452339565, -198.67394337368847); + double2x3 b3 = double2x3(-141.91339380196922, -222.1867559990784, 41.305726308983594, 148.33947117083676, -177.23311217931712, -176.51887830370987); + double2x3 r3 = double2x3(-178.17689188671159, -325.13591256976866, 544.50389792048554, -236.08964740302866, -222.46132670271277, -375.19282167739834); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void double2x3_operator_add_wide_scalar() + { + double2x3 a0 = double2x3(459.89829728561369, -447.66336104258119, -94.438627525436971, 126.42986279652916, -36.254356162741033, -349.64130060264904); + double b0 = (500.99725913489112); + double2x3 r0 = double2x3(960.89555642050482, 53.333898092309937, 406.55863160945415, 627.42712193142029, 464.74290297215009, 151.35595853224208); + TestUtils.AreEqual(a0 + b0, r0); + + double2x3 a1 = double2x3(-2.7912590516690443, 443.11525246273504, 268.092225914864, 41.32102133767728, -471.25607584009697, -2.6649749291431704); + double b1 = (-478.41478489265535); + double2x3 r1 = double2x3(-481.20604394432439, -35.299532429920305, -210.32255897779135, -437.09376355497807, -949.67086073275232, -481.07975982179852); + TestUtils.AreEqual(a1 + b1, r1); + + double2x3 a2 = double2x3(78.985822952811532, 311.7254551908585, 10.345855002452595, -151.24445898423181, 355.23276703210206, -197.80076584490052); + double b2 = (202.14799151297098); + double2x3 r2 = double2x3(281.13381446578251, 513.87344670382947, 212.49384651542357, 50.903532528739163, 557.380758545073, 4.34722566807045); + TestUtils.AreEqual(a2 + b2, r2); + + double2x3 a3 = double2x3(255.95526587961024, -181.6265695940827, -2.4549267303454485, 300.90065469448484, -236.49194895312746, -160.5840962680914); + double b3 = (244.14709793969394); + double2x3 r3 = double2x3(500.10236381930417, 62.52052834561124, 241.69217120934849, 545.04775263417878, 7.6551489865664735, 83.563001671602535); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void double2x3_operator_add_scalar_wide() + { + double a0 = (-325.51276484388518); + double2x3 b0 = double2x3(-264.08813178915909, -106.00925998855814, -355.44729320865463, -447.33029362528134, -158.70021040677102, -199.48369154682553); + double2x3 r0 = double2x3(-589.60089663304427, -431.52202483244332, -680.96005805253981, -772.84305846916652, -484.2129752506562, -524.9964563907107); + TestUtils.AreEqual(a0 + b0, r0); + + double a1 = (180.31809123806568); + double2x3 b1 = double2x3(337.57936898692481, -37.05501486596421, 230.80498014707348, -140.17433339924287, 18.02419591789328, -138.61435825126915); + double2x3 r1 = double2x3(517.89746022499048, 143.26307637210147, 411.12307138513916, 40.143757838822808, 198.34228715595896, 41.703732986796524); + TestUtils.AreEqual(a1 + b1, r1); + + double a2 = (26.904163611542458); + double2x3 b2 = double2x3(-374.53758233345, 154.4676006559597, 268.3838204203098, -190.96302255939833, 188.61725362977813, -504.91612386373623); + double2x3 r2 = double2x3(-347.63341872190756, 181.37176426750216, 295.28798403185226, -164.05885894785587, 215.52141724132059, -478.01196025219377); + TestUtils.AreEqual(a2 + b2, r2); + + double a3 = (20.454013595568995); + double2x3 b3 = double2x3(197.94534525552081, 251.41194474483461, -421.09037538109828, 111.44540052835146, -73.268883024001923, 480.88455770950975); + double2x3 r3 = double2x3(218.3993588510898, 271.86595834040361, -400.63636178552929, 131.89941412392045, -52.814869428432928, 501.33857130507874); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void double2x3_operator_sub_wide_wide() + { + double2x3 a0 = double2x3(133.37101680290471, -131.8321183341705, -197.29314407952739, -485.286571013409, -337.55033103448818, 471.66710470228782); + double2x3 b0 = double2x3(123.46028739002543, 359.56010048443454, -48.24847819667707, 478.97904680621764, 207.15832886805686, 142.36730462981723); + double2x3 r0 = double2x3(9.9107294128792773, -491.39221881860504, -149.04466588285032, -964.26561781962664, -544.708659902545, 329.29980007247059); + TestUtils.AreEqual(a0 - b0, r0); + + double2x3 a1 = double2x3(146.5066197600712, -130.58504372955537, 110.77707367333448, -235.54160486699158, 78.879356659427, -347.68616811730254); + double2x3 b1 = double2x3(-125.60551005490379, -65.299004823574307, -477.876434787119, 164.50000031501986, 428.00958915614035, 72.6278169493321); + double2x3 r1 = double2x3(272.112129814975, -65.286038905981059, 588.65350846045351, -400.04160518201144, -349.13023249671335, -420.31398506663464); + TestUtils.AreEqual(a1 - b1, r1); + + double2x3 a2 = double2x3(-470.82054565419469, -11.459293609233271, -167.94791730118351, 330.67676917215658, -508.35086822339838, -252.03190457636111); + double2x3 b2 = double2x3(-446.880505531505, 432.09146114443035, -225.55465637219822, -112.45196705332586, -210.61278853687122, -172.92506011432272); + double2x3 r2 = double2x3(-23.940040122689709, -443.55075475366363, 57.606739071014715, 443.12873622548244, -297.73807968652716, -79.1068444620384); + TestUtils.AreEqual(a2 - b2, r2); + + double2x3 a3 = double2x3(-427.93418737311578, 192.6576150360786, 168.42931016182024, 457.3087858899072, 470.05851457550125, -299.71188058504458); + double2x3 b3 = double2x3(-80.60749415336528, 270.04610861001822, -154.25558550388348, 148.47577745675846, 13.661130673094249, 70.671096596248049); + double2x3 r3 = double2x3(-347.3266932197505, -77.388493573939627, 322.68489566570372, 308.83300843314873, 456.397383902407, -370.38297718129263); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void double2x3_operator_sub_wide_scalar() + { + double2x3 a0 = double2x3(48.936717294592768, 410.45158953706346, -364.44171612544062, 163.98060353285666, -460.06732318367222, 110.91942339340198); + double b0 = (-291.59041442144212); + double2x3 r0 = double2x3(340.52713171603489, 702.04200395850557, -72.8513017039985, 455.57101795429878, -168.4769087622301, 402.5098378148441); + TestUtils.AreEqual(a0 - b0, r0); + + double2x3 a1 = double2x3(204.35834441164434, -377.92569344952972, -470.26204297983185, 400.53491968686455, 461.50756499800252, -246.28726660753006); + double b1 = (180.26971420099483); + double2x3 r1 = double2x3(24.088630210649512, -558.19540765052454, -650.53175718082662, 220.26520548586973, 281.2378507970077, -426.55698080852488); + TestUtils.AreEqual(a1 - b1, r1); + + double2x3 a2 = double2x3(21.605312595891405, -121.42736178330489, -122.71842413894757, -122.93872099879138, 360.15095417581074, 342.87457887403411); + double b2 = (246.35072171238755); + double2x3 r2 = double2x3(-224.74540911649615, -367.77808349569244, -369.06914585133512, -369.28944271117894, 113.80023246342319, 96.523857161646561); + TestUtils.AreEqual(a2 - b2, r2); + + double2x3 a3 = double2x3(18.929827460520869, 97.0436885808798, 485.9149813530571, -205.75765690848124, 253.44322717070725, -121.16305619159857); + double b3 = (164.60235245740148); + double2x3 r3 = double2x3(-145.67252499688061, -67.558663876521678, 321.31262889565562, -370.36000936588272, 88.840874713305766, -285.76540864900005); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void double2x3_operator_sub_scalar_wide() + { + double a0 = (294.58645905861); + double2x3 b0 = double2x3(452.35251757705237, 256.98980891750648, -275.159888634067, -89.027518075437968, 488.22838829840919, -333.21728030462623); + double2x3 r0 = double2x3(-157.76605851844238, 37.59665014110351, 569.746347692677, 383.61397713404796, -193.6419292397992, 627.80373936323622); + TestUtils.AreEqual(a0 - b0, r0); + + double a1 = (-64.232989102710519); + double2x3 b1 = double2x3(-66.041730196234653, 341.20492831859963, -385.775056303374, 75.394746577085357, 354.94371645289641, 169.13141520746581); + double2x3 r1 = double2x3(1.8087410935241337, -405.43791742131015, 321.5420672006635, -139.62773567979588, -419.17670555560693, -233.36440431017633); + TestUtils.AreEqual(a1 - b1, r1); + + double a2 = (88.216608326982964); + double2x3 b2 = double2x3(1.7350065716240124, 122.53803997977548, -264.94502771317264, -50.837180399725753, -347.65032283759228, 4.0655586738445209); + double2x3 r2 = double2x3(86.481601755358952, -34.321431652792512, 353.1616360401556, 139.05378872670872, 435.86693116457525, 84.151049653138443); + TestUtils.AreEqual(a2 - b2, r2); + + double a3 = (-79.095424450512724); + double2x3 b3 = double2x3(354.35833923628479, -292.4925116470514, -53.208983207684469, -246.34760033634848, 299.20334138497867, 432.18467422583353); + double2x3 r3 = double2x3(-433.45376368679752, 213.39708719653868, -25.886441242828255, 167.25217588583575, -378.29876583549139, -511.28009867634626); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void double2x3_operator_mul_wide_wide() + { + double2x3 a0 = double2x3(-394.78053898121254, -412.37219519744264, -25.874570143350638, -241.04595886964626, -93.675987525692221, 244.15999257013198); + double2x3 b0 = double2x3(-149.76397831261346, -345.04538671348496, -284.33404721148963, 267.97923648915219, -326.64849558782225, -150.68967754705329); + double2x3 r0 = double2x3(59123.904078224172, 142287.1235617903, 7357.0212487164608, -64595.312016683383, 30599.120397970968, -36792.390550284115); + TestUtils.AreEqual(a0 * b0, r0); + + double2x3 a1 = double2x3(494.68846606402121, 53.537962700025105, -239.49641167349017, 236.67584644848284, -211.85620818466703, -216.65482030466887); + double2x3 b1 = double2x3(207.73243794577775, 366.19289248352538, 358.88076202891807, 214.85359368792433, 253.42280900358355, -307.71382751488773); + double2x3 r1 = double2x3(102762.84107913627, 19605.221418797286, -85950.654724573629, 50850.6561485879, -53689.195383006307, 66667.684005499876); + TestUtils.AreEqual(a1 * b1, r1); + + double2x3 a2 = double2x3(467.95832870339893, -178.02191146557311, -386.3942503344241, -422.43540521265726, 464.58952758488692, -251.3156646468284); + double2x3 b2 = double2x3(184.4711149597872, 426.43644185850235, -144.28142625851621, 459.47961518703016, -358.31334917541284, -201.36521563370025); + double2x3 r2 = double2x3(86324.794650634591, -75915.030498228327, 55749.513536340863, -194100.45742848891, -166468.62962076368, 50606.233003735295); + TestUtils.AreEqual(a2 * b2, r2); + + double2x3 a3 = double2x3(-104.97877912641445, -66.934159071619717, -39.829896707008572, 401.56559080703448, 434.14618250082538, -336.45419589451245); + double2x3 b3 = double2x3(254.90996539541982, 168.52096303204121, 8.7945530455533572, -194.84647974504458, -405.36266178887462, -180.7321890242082); + double2x3 r3 = double2x3(-26760.136954367728, -11279.808946489193, -350.28613938869785, -78243.6417554897, -175986.65214401312, 60808.103330394995); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void double2x3_operator_mul_wide_scalar() + { + double2x3 a0 = double2x3(328.20302191758674, -290.10672272839895, 236.99572454998065, 120.48136692889102, 357.90315811610924, 134.86723214707672); + double b0 = (192.21119055161773); + double2x3 r0 = double2x3(63084.293585418032, -55761.758562653624, 45553.230371395039, 23157.866976688449, 68792.992123681237, 25922.99125739103); + TestUtils.AreEqual(a0 * b0, r0); + + double2x3 a1 = double2x3(-477.31047104173825, -46.729179165665585, -238.40500103608008, 422.08249374017237, -48.83483722099794, 355.30832998608628); + double b1 = (-438.272912467957); + double2x3 r1 = double2x3(209192.25029491508, 20480.133450173231, 104486.45415100912, -184987.32383324357, 21402.986338745359, -155722.01660712797); + TestUtils.AreEqual(a1 * b1, r1); + + double2x3 a2 = double2x3(119.35660391643489, 98.2360046367329, -325.55215683837991, 53.937323833786536, -87.4509838034636, -130.47412949915702); + double b2 = (-196.995807977857); + double2x3 r2 = double2x3(-23512.750626011144, -19352.081105929705, 64132.410175310673, -10625.426688800102, 17227.4772128218, 25702.856560893983); + TestUtils.AreEqual(a2 * b2, r2); + + double2x3 a3 = double2x3(-222.59457145565869, 293.36108769726059, 174.38195737375963, -327.12007704708731, 56.629123475695565, 257.54154241156834); + double b3 = (126.01503211167415); + double2x3 r3 = double2x3(-28050.262069869175, 36967.906886485951, 21974.747958150911, -41222.047013462026, 7136.1208132457368, 32454.105737083875); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void double2x3_operator_mul_scalar_wide() + { + double a0 = (-464.534700371574); + double2x3 b0 = double2x3(329.36093846399376, -198.68342671109525, 184.07942518223047, 256.01618754864489, 266.22629297255833, -97.894749448585685); + double2x3 r0 = double2x3(-152999.58486347177, 92295.346096036214, -85511.280621599, -118928.40297318244, -123671.35123704225, 45475.508103049062); + TestUtils.AreEqual(a0 * b0, r0); + + double a1 = (159.74810583877752); + double2x3 b1 = double2x3(-351.82222263506719, 491.80157660497423, 49.902031206480274, 424.46256871915546, 160.11807616060514, -395.99208492599058); + double2x3 r1 = double2x3(-56202.933657940659, 78564.37031116907, 7971.75496274279, 67807.091352347023, 25578.559377205791, -63258.985494075321); + TestUtils.AreEqual(a1 * b1, r1); + + double a2 = (125.20168858636248); + double2x3 b2 = double2x3(-265.01581991138676, 314.65609779705107, -292.71202029507236, -37.729878681586058, 165.3622206027444, 356.51773302467438); + double2x3 r2 = double2x3(-33180.428155004964, 39395.4747681864, -36648.039210468662, -4723.8445210931741, 20703.629247854176, 44636.6221856712); + TestUtils.AreEqual(a2 * b2, r2); + + double a3 = (-188.81332906932261); + double2x3 b3 = double2x3(504.91572475103465, 40.572113771257932, -206.77510581108515, -61.602680473403382, 118.97158938225903, 53.7483275186961); + double2x3 r3 = double2x3(-95334.818889692615, -7660.55586853052, 39041.896096852419, 11631.407179777047, -22463.4218559328, -10148.400650713294); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void double2x3_operator_div_wide_wide() + { + double2x3 a0 = double2x3(246.26574933075619, -269.85612953354428, -451.61952588130697, -7.38850236283082, -308.20558681534862, -373.394808704683); + double2x3 b0 = double2x3(172.11981423763552, -77.141104972521362, -325.8353723612779, -450.60868117334724, -261.26215398556656, -122.44949847201326); + double2x3 r0 = double2x3(1.4307809383918566, 3.4982144685336105, 1.3860359070548143, 0.016396715535066435, 1.1796794220427942, 3.0493780159501847); + TestUtils.AreEqual(a0 / b0, r0); + + double2x3 a1 = double2x3(360.41863482092447, 25.80972458133931, -274.050461181463, 127.53858977534742, -447.6717600522897, -137.4586017771897); + double2x3 b1 = double2x3(-93.210781379235357, -442.00522705633438, 484.36271380091216, -390.78178686219348, 402.02531714086672, 316.65072193585831); + double2x3 r1 = double2x3(-3.8667054335113131, -0.05839235149599218, -0.56579594872388561, -0.32636779415802974, -1.1135412148569459, -0.43410165287743668); + TestUtils.AreEqual(a1 / b1, r1); + + double2x3 a2 = double2x3(-136.13317424437645, 12.43763423545181, 228.51298319013461, 356.9723681681661, -24.762040865031111, 411.66839356518744); + double2x3 b2 = double2x3(397.15440744774151, -303.26218643005109, -118.59124451437555, -81.650312223308845, -84.346871176896116, -488.41943549011808); + double2x3 r2 = double2x3(-0.3427714050039572, -0.041012809351094658, -1.9268959030313104, -4.37196574572633, 0.29357391115432163, -0.84285833783843456); + TestUtils.AreEqual(a2 / b2, r2); + + double2x3 a3 = double2x3(-204.07890067066944, 11.365393882321882, 82.152295389283609, 37.389483230835481, 394.26582903147948, -429.91279645912016); + double2x3 b3 = double2x3(404.16049999937434, -136.72883731533256, -19.832707652744261, -102.6072290421497, 166.11604960547572, -112.84016590604568); + double2x3 r3 = double2x3(-0.50494519051462317, -0.083123605125890912, -4.1422632162843458, -0.36439423985883462, 2.3734361006528726, 3.8099270149698223); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void double2x3_operator_div_wide_scalar() + { + double2x3 a0 = double2x3(-244.51745116175965, 69.112274917360537, -333.02311888943575, 257.39682519500923, 403.24561257066466, 154.34436066185322); + double b0 = (-60.024377612408443); + double2x3 r0 = double2x3(4.0736357608014941, -1.1514034408425655, 5.5481311449798705, -4.2882048166676752, -6.7180307170282818, -2.5713612835520117); + TestUtils.AreEqual(a0 / b0, r0); + + double2x3 a1 = double2x3(131.52659160062979, -348.92380516087815, -275.53868187383688, 210.55792174607416, 287.64239968342815, 504.37224626185946); + double b1 = (-261.88639200007844); + double2x3 r1 = double2x3(-0.50222766672271535, 1.332347979198452, 1.0521305813925388, -0.80400482109055549, -1.0983480183397309, -1.9259200236020984); + TestUtils.AreEqual(a1 / b1, r1); + + double2x3 a2 = double2x3(491.78708600056689, -253.23667275776933, 272.89512098622276, 178.09617313095191, -460.87559030059521, -502.64601611655485); + double b2 = (-26.63160015392657); + double2x3 r2 = double2x3(-18.466298801353012, 9.50887934987384, -10.247041837851679, -6.6874003853160646, 17.305591389056794, 18.874044864421883); + TestUtils.AreEqual(a2 / b2, r2); + + double2x3 a3 = double2x3(-84.324793139623864, 83.796309271732525, 197.04206690427009, 317.16826525198678, 403.38711781212464, 81.646461763254592); + double b3 = (-174.69034036187935); + double2x3 r3 = double2x3(0.48271010844069023, -0.47968484747436224, -1.1279505580908942, -1.815602766558, -2.309155257105167, -0.4673782282072384); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void double2x3_operator_div_scalar_wide() + { + double a0 = (41.737658758525527); + double2x3 b0 = double2x3(-422.676129776368, 248.12963235011773, 449.39137741988122, 245.85813796047967, -326.62061253498337, 163.71510489457989); + double2x3 r0 = double2x3(-0.098746193168297289, 0.1682090863683405, 0.092875967042706856, 0.16976317767945767, -0.12778635871933872, 0.25494079355354177); + TestUtils.AreEqual(a0 / b0, r0); + + double a1 = (333.664472020075); + double2x3 b1 = double2x3(38.291076916405473, -472.97976062864984, 192.23013958345643, -200.29686960964318, -490.18150376257557, -211.10257468517057); + double2x3 r1 = double2x3(8.7138962622678129, -0.70545190258583745, 1.7357552397511267, -1.6658496594098089, -0.68069576158811729, -1.5805798319498852); + TestUtils.AreEqual(a1 / b1, r1); + + double a2 = (-322.85234108700058); + double2x3 b2 = double2x3(-137.98529035317961, 84.32973555677097, 355.06345550858578, 276.42724455354141, -382.9880213136729, -488.647160996053); + double2x3 r2 = double2x3(2.3397591167916914, -3.8284519565421338, -0.909280682306641, -1.1679468918067049, 0.8429828692281206, 0.660706470552089); + TestUtils.AreEqual(a2 / b2, r2); + + double a3 = (344.84603826368505); + double2x3 b3 = double2x3(168.85499938244698, -44.19558837087618, 420.550703959796, -175.6152060849663, -9.2205684227964753, -344.19428865248074); + double2x3 r3 = double2x3(2.0422613456805525, -7.8027253618582941, 0.81998682921394372, -1.9636456657223711, -37.399650699527896, -1.0018935514989395); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void double2x3_operator_mod_wide_wide() + { + double2x3 a0 = double2x3(-442.30985924336585, 368.50046246522129, -1.0938966279355213, -364.67383473211612, -197.34394487987458, -34.034902350062); + double2x3 b0 = double2x3(-43.245045443645211, -144.19587690392319, -62.640481739603217, -336.82826510855381, -154.6102545981343, -154.02935583611452); + double2x3 r0 = double2x3(-9.8594048069137443, 80.1087086573749, -1.0938966279355213, -27.845569623562312, -42.73369028174028, -34.034902350062); + TestUtils.AreEqual(a0 % b0, r0); + + double2x3 a1 = double2x3(-101.34858350704826, 208.31857142612273, -140.77031404374645, 183.446989383291, -463.36838100076113, 83.839106360375467); + double2x3 b1 = double2x3(487.0462093237071, -469.82909105244516, -145.20377237405802, -203.38401780062543, -22.520082245823062, 224.6900237652892); + double2x3 r1 = double2x3(-101.34858350704826, 208.31857142612273, -140.77031404374645, 183.446989383291, -12.966736084299896, 83.839106360375467); + TestUtils.AreEqual(a1 % b1, r1); + + double2x3 a2 = double2x3(-64.714058190916717, 295.06681050689281, 212.257051805154, 349.62829916068745, 119.87592106679267, -37.805828350505692); + double2x3 b2 = double2x3(-435.62674614210925, 12.095571285158144, 40.378765363422531, 345.78484813579587, -433.47126146474443, -355.64996712079733); + double2x3 r2 = double2x3(-64.714058190916717, 4.773099663097355, 10.363224988041338, 3.8434510248915785, 119.87592106679267, -37.805828350505692); + TestUtils.AreEqual(a2 % b2, r2); + + double2x3 a3 = double2x3(142.41158515886013, 332.24425593588694, -464.19427249589671, -296.14783801517814, 225.17535863871467, -212.06027732233531); + double2x3 b3 = double2x3(4.0154273528677322, 66.659781725453058, -221.85363088448236, -355.05676405274158, 357.93597118832918, 71.375334057666009); + double2x3 r3 = double2x3(1.8716278084895066, 65.605129034074707, -20.487010726932, -296.14783801517814, 225.17535863871467, -69.309609207003291); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void double2x3_operator_mod_wide_scalar() + { + double2x3 a0 = double2x3(-433.41699548876704, -5.5141427542614565, 393.39439958771425, 299.41153277988155, -120.80601626299602, -502.939041133476); + double b0 = (-90.499235433758827); + double2x3 r0 = double2x3(-71.420053753731736, -5.5141427542614565, 31.39745785267894, 27.913826478605074, -30.306780829237198, -50.442863964681862); + TestUtils.AreEqual(a0 % b0, r0); + + double2x3 a1 = double2x3(-450.80766245853511, -84.473635951277629, -318.78148356023314, 433.45469041981482, -54.6001856581309, -172.33886607565864); + double b1 = (186.09479698263794); + double2x3 r1 = double2x3(-78.618068493259216, -84.473635951277629, -132.6866865775952, 61.265096454538934, -54.6001856581309, -172.33886607565864); + TestUtils.AreEqual(a1 % b1, r1); + + double2x3 a2 = double2x3(-429.71466728193434, 5.796394112425105, 254.51082885196, -433.09369703433185, -203.08261284748215, -75.356399809641971); + double b2 = (222.36186109406958); + double2x3 r2 = double2x3(-207.35280618786476, 5.796394112425105, 32.148967757890432, -210.73183594026227, -203.08261284748215, -75.356399809641971); + TestUtils.AreEqual(a2 % b2, r2); + + double2x3 a3 = double2x3(252.28909385031511, 5.3372299696026175, -279.06042803407666, 483.55059097872606, -331.99334660730949, 335.99997655302286); + double b3 = (-69.403906139267576); + double2x3 r3 = double2x3(44.077375432512383, 5.3372299696026175, -1.44480347700636, 67.1271541431206, -54.377722050239186, 58.384351995952557); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void double2x3_operator_mod_scalar_wide() + { + double a0 = (-396.4224028049141); + double2x3 b0 = double2x3(-159.14024384279747, 230.17333399046834, 14.779358632294134, -303.15649738123477, 399.63502020371845, 206.69470534412881); + double2x3 r0 = double2x3(-78.141915119319151, -166.24906881444576, -12.159078365266623, -93.265905423679328, -396.4224028049141, -189.72769746078529); + TestUtils.AreEqual(a0 % b0, r0); + + double a1 = (397.04482263934096); + double2x3 b1 = double2x3(-393.89064735634747, -372.06709426085797, 201.01229796233224, -95.5668547598491, -258.95146882671463, 106.98357563232241); + double2x3 r1 = double2x3(3.1541752829934921, 24.977728378482993, 196.03252467700872, 14.777403599944591, 138.09335381262633, 76.094095742373725); + TestUtils.AreEqual(a1 % b1, r1); + + double a2 = (469.3235559264773); + double2x3 b2 = double2x3(-34.808985011097491, 184.83653434777466, 374.79425376224992, -131.87271911086174, -120.09286003936683, 4.506670715523228); + double2x3 r2 = double2x3(16.806750782209917, 99.650487230927979, 94.529302164227374, 73.705398593892085, 109.04497580837682, 0.62980151206159007); + TestUtils.AreEqual(a2 % b2, r2); + + double a3 = (-111.40195732535886); + double2x3 b3 = double2x3(391.54249710195813, -218.66887078931035, 196.37741980160467, -511.03262233689082, 499.95350598727987, -433.52306505363578); + double2x3 r3 = double2x3(-111.40195732535886, -111.40195732535886, -111.40195732535886, -111.40195732535886, -111.40195732535886, -111.40195732535886); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void double2x3_operator_plus() + { + double2x3 a0 = double2x3(271.6708086802023, -79.080240524876956, -330.98506203805334, 31.824682965793045, 315.44952860262686, 319.22218742930431); + double2x3 r0 = double2x3(271.6708086802023, -79.080240524876956, -330.98506203805334, 31.824682965793045, 315.44952860262686, 319.22218742930431); + TestUtils.AreEqual(+a0, r0); + + double2x3 a1 = double2x3(190.32466015141677, -320.51845875406565, 102.0544069288552, -107.00351267075331, -428.77622075973835, 377.23016208095021); + double2x3 r1 = double2x3(190.32466015141677, -320.51845875406565, 102.0544069288552, -107.00351267075331, -428.77622075973835, 377.23016208095021); + TestUtils.AreEqual(+a1, r1); + + double2x3 a2 = double2x3(234.77393042052813, 258.33039414991174, 465.35593555185756, 309.59316530339106, -316.93713655925222, -230.05266557915724); + double2x3 r2 = double2x3(234.77393042052813, 258.33039414991174, 465.35593555185756, 309.59316530339106, -316.93713655925222, -230.05266557915724); + TestUtils.AreEqual(+a2, r2); + + double2x3 a3 = double2x3(301.78512229667285, 350.24640981771347, 60.819777278611355, -472.44209526127304, -364.80255644619581, 239.15236937215195); + double2x3 r3 = double2x3(301.78512229667285, 350.24640981771347, 60.819777278611355, -472.44209526127304, -364.80255644619581, 239.15236937215195); + TestUtils.AreEqual(+a3, r3); + } + + [TestCompiler] + public static void double2x3_operator_neg() + { + double2x3 a0 = double2x3(420.22718854445372, -196.25749811728366, -335.42683068636188, 509.04366969924592, -33.014395013923945, -498.57532071442125); + double2x3 r0 = double2x3(-420.22718854445372, 196.25749811728366, 335.42683068636188, -509.04366969924592, 33.014395013923945, 498.57532071442125); + TestUtils.AreEqual(-a0, r0); + + double2x3 a1 = double2x3(-495.8379526063045, 19.686896571743773, 268.23670662019254, -180.60051473444349, 223.38126312167446, -410.39206070936848); + double2x3 r1 = double2x3(495.8379526063045, -19.686896571743773, -268.23670662019254, 180.60051473444349, -223.38126312167446, 410.39206070936848); + TestUtils.AreEqual(-a1, r1); + + double2x3 a2 = double2x3(-395.68154186554324, -110.9393032113739, -238.21960913307015, 292.54351224216794, 469.29257867731735, 48.290685914592245); + double2x3 r2 = double2x3(395.68154186554324, 110.9393032113739, 238.21960913307015, -292.54351224216794, -469.29257867731735, -48.290685914592245); + TestUtils.AreEqual(-a2, r2); + + double2x3 a3 = double2x3(88.7237785275671, 55.707977559281517, 464.54141090090457, 499.24280213715645, 175.01502259774838, 196.38759169186824); + double2x3 r3 = double2x3(-88.7237785275671, -55.707977559281517, -464.54141090090457, -499.24280213715645, -175.01502259774838, -196.38759169186824); + TestUtils.AreEqual(-a3, r3); + } + + [TestCompiler] + public static void double2x3_operator_prefix_inc() + { + double2x3 a0 = double2x3(-99.79557113526181, 458.74185082816609, 96.179026886904126, -48.552469514567633, -315.728967098393, -299.23014583216525); + double2x3 r0 = double2x3(-98.79557113526181, 459.74185082816609, 97.179026886904126, -47.552469514567633, -314.728967098393, -298.23014583216525); + TestUtils.AreEqual(++a0, r0); + + double2x3 a1 = double2x3(-323.61485853959567, -76.507656371457358, -305.58477344437722, 64.0964734852763, 148.67930967578627, 363.2849182390072); + double2x3 r1 = double2x3(-322.61485853959567, -75.507656371457358, -304.58477344437722, 65.0964734852763, 149.67930967578627, 364.2849182390072); + TestUtils.AreEqual(++a1, r1); + + double2x3 a2 = double2x3(-115.5592263283018, -179.89464839729231, 339.8765849265626, -38.410431164507941, -153.3736775635619, 261.62557304167444); + double2x3 r2 = double2x3(-114.5592263283018, -178.89464839729231, 340.8765849265626, -37.410431164507941, -152.3736775635619, 262.62557304167444); + TestUtils.AreEqual(++a2, r2); + + double2x3 a3 = double2x3(155.03081877298223, 301.30576791488829, -221.35540328796736, -429.69815011960367, -271.28932893988178, -264.38006246480165); + double2x3 r3 = double2x3(156.03081877298223, 302.30576791488829, -220.35540328796736, -428.69815011960367, -270.28932893988178, -263.38006246480165); + TestUtils.AreEqual(++a3, r3); + } + + [TestCompiler] + public static void double2x3_operator_postfix_inc() + { + double2x3 a0 = double2x3(322.94356623429042, 472.05246542024076, 203.48761925636211, -49.854570650427888, -31.420532002775246, 455.33662459595905); + double2x3 r0 = double2x3(322.94356623429042, 472.05246542024076, 203.48761925636211, -49.854570650427888, -31.420532002775246, 455.33662459595905); + TestUtils.AreEqual(a0++, r0); + + double2x3 a1 = double2x3(271.45466840986842, 153.75031645305, -174.17301925186672, -427.40105100506969, 215.11022744658874, 159.86103184514729); + double2x3 r1 = double2x3(271.45466840986842, 153.75031645305, -174.17301925186672, -427.40105100506969, 215.11022744658874, 159.86103184514729); + TestUtils.AreEqual(a1++, r1); + + double2x3 a2 = double2x3(-333.05045262586816, 287.22045649551808, -170.10464366250886, -270.65246380057766, -162.86024792625579, 454.48881003562769); + double2x3 r2 = double2x3(-333.05045262586816, 287.22045649551808, -170.10464366250886, -270.65246380057766, -162.86024792625579, 454.48881003562769); + TestUtils.AreEqual(a2++, r2); + + double2x3 a3 = double2x3(-449.92732045144186, -311.43587103087259, 69.731466087387616, -232.29964433996923, -341.49855271982892, 188.00656685047159); + double2x3 r3 = double2x3(-449.92732045144186, -311.43587103087259, 69.731466087387616, -232.29964433996923, -341.49855271982892, 188.00656685047159); + TestUtils.AreEqual(a3++, r3); + } + + [TestCompiler] + public static void double2x3_operator_prefix_dec() + { + double2x3 a0 = double2x3(-416.20121712992022, -96.637880131899351, -50.145671629414721, -207.31644759295341, 439.47906156977592, -304.40081920493435); + double2x3 r0 = double2x3(-417.20121712992022, -97.637880131899351, -51.145671629414721, -208.31644759295341, 438.47906156977592, -305.40081920493435); + TestUtils.AreEqual(--a0, r0); + + double2x3 a1 = double2x3(337.96895734312432, 171.96452935597142, -227.44280134301761, 298.28480710568135, 326.50782338087811, 400.720900006928); + double2x3 r1 = double2x3(336.96895734312432, 170.96452935597142, -228.44280134301761, 297.28480710568135, 325.50782338087811, 399.720900006928); + TestUtils.AreEqual(--a1, r1); + + double2x3 a2 = double2x3(-478.03137253133178, -24.584499132160317, 112.79684668071422, -341.97629300783217, -503.27416181158003, -79.635249413380052); + double2x3 r2 = double2x3(-479.03137253133178, -25.584499132160317, 111.79684668071422, -342.97629300783217, -504.27416181158003, -80.635249413380052); + TestUtils.AreEqual(--a2, r2); + + double2x3 a3 = double2x3(-131.0041454448384, -15.70865417258284, 188.75845274178243, 307.79193582562357, -406.667706917351, 181.47510703908051); + double2x3 r3 = double2x3(-132.0041454448384, -16.70865417258284, 187.75845274178243, 306.79193582562357, -407.667706917351, 180.47510703908051); + TestUtils.AreEqual(--a3, r3); + } + + [TestCompiler] + public static void double2x3_operator_postfix_dec() + { + double2x3 a0 = double2x3(-376.59242719066907, 16.969734438215255, -0.25066399585949739, -202.32328734282555, 409.55752940175944, 47.856652520530247); + double2x3 r0 = double2x3(-376.59242719066907, 16.969734438215255, -0.25066399585949739, -202.32328734282555, 409.55752940175944, 47.856652520530247); + TestUtils.AreEqual(a0--, r0); + + double2x3 a1 = double2x3(-281.11170376516492, -182.40572866350681, 450.12809559801974, -129.23265582380475, -332.15495768755443, -261.00890052551819); + double2x3 r1 = double2x3(-281.11170376516492, -182.40572866350681, 450.12809559801974, -129.23265582380475, -332.15495768755443, -261.00890052551819); + TestUtils.AreEqual(a1--, r1); + + double2x3 a2 = double2x3(205.46112570793423, -483.06653784358247, 378.64123433578811, 487.34482287212495, -192.17785772689518, -357.05418960985457); + double2x3 r2 = double2x3(205.46112570793423, -483.06653784358247, 378.64123433578811, 487.34482287212495, -192.17785772689518, -357.05418960985457); + TestUtils.AreEqual(a2--, r2); + + double2x3 a3 = double2x3(-396.30206627226528, 115.86774092347719, -20.823201427619551, 323.40538063803933, 379.15614026559342, 311.29903068733358); + double2x3 r3 = double2x3(-396.30206627226528, 115.86774092347719, -20.823201427619551, 323.40538063803933, 379.15614026559342, 311.29903068733358); + TestUtils.AreEqual(a3--, r3); + } + + + } +} diff --git a/package/Tests/Tests/Shared/TestDouble2x3.gen.cs.meta b/package/Tests/Tests/Shared/TestDouble2x3.gen.cs.meta new file mode 100755 index 000000000..a38035f8c --- /dev/null +++ b/package/Tests/Tests/Shared/TestDouble2x3.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: fa8d4556e4d042c4199dca8671bc2817 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/package/Tests/Tests/Shared/TestDouble2x4.gen.cs b/package/Tests/Tests/Shared/TestDouble2x4.gen.cs new file mode 100755 index 000000000..47d9e2456 --- /dev/null +++ b/package/Tests/Tests/Shared/TestDouble2x4.gen.cs @@ -0,0 +1,945 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using NUnit.Framework; +using static Unity.Mathematics.math; +using Burst.Compiler.IL.Tests; + +namespace Unity.Mathematics.Tests +{ + [TestFixture] + public class TestDouble2x4 + { + [TestCompiler] + public static void double2x4_zero() + { + TestUtils.AreEqual(double2x4.zero.c0.x, 0.0); + TestUtils.AreEqual(double2x4.zero.c0.y, 0.0); + TestUtils.AreEqual(double2x4.zero.c1.x, 0.0); + TestUtils.AreEqual(double2x4.zero.c1.y, 0.0); + TestUtils.AreEqual(double2x4.zero.c2.x, 0.0); + TestUtils.AreEqual(double2x4.zero.c2.y, 0.0); + TestUtils.AreEqual(double2x4.zero.c3.x, 0.0); + TestUtils.AreEqual(double2x4.zero.c3.y, 0.0); + } + + [TestCompiler] + public static void double2x4_operator_equal_wide_wide() + { + double2x4 a0 = double2x4(-135.18925172425304, -49.094127439471947, 169.12980778940482, 240.80529772527757, 314.73919382446411, 442.39301916695808, 177.92444881141398, 335.53340283759564); + double2x4 b0 = double2x4(-220.01464591734793, 66.980020792679852, 499.20158576369363, -371.113114291389, 208.44865212610398, 390.80369133074009, -72.443806920407269, 362.97643273089841); + bool2x4 r0 = bool2x4(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + double2x4 a1 = double2x4(168.1544516869609, 350.72955982327903, 367.17843668869625, 46.941470406456574, 188.76415094582558, -97.211392209497944, -293.3210057193977, -234.82292353120766); + double2x4 b1 = double2x4(194.6783255053117, 471.6448635867074, -404.04466719368691, -144.69675476136467, -494.44664334433463, -252.97038209297244, 234.41711746641306, 398.72397465199413); + bool2x4 r1 = bool2x4(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + double2x4 a2 = double2x4(417.03371329653714, 26.386443388828297, 269.24572265764959, 29.474191440955792, 479.48521469509467, -237.23094355186026, -221.98371349181224, -506.67253255596034); + double2x4 b2 = double2x4(260.42872083393331, 370.14420502732708, 89.579862397899774, -434.81684347373289, -109.84533815730612, 336.9730161805511, -409.15498156526826, 500.38755273278218); + bool2x4 r2 = bool2x4(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + double2x4 a3 = double2x4(-22.98943401453522, 487.26083802024868, -419.73195596213077, 337.20329324212082, 245.04388367619549, 390.21586984685428, 84.412977973191573, 434.20789142800868); + double2x4 b3 = double2x4(-174.08180888652885, 395.10115379612012, 350.33930723291792, -243.14458453056614, -416.39737267810727, 151.5764511337394, -18.224320181749931, -431.67792364194895); + bool2x4 r3 = bool2x4(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void double2x4_operator_equal_wide_scalar() + { + double2x4 a0 = double2x4(65.671194345537174, 404.41550440546848, -269.7301577393572, 83.630607882342588, 152.99450476141385, -155.86829836474186, 314.67125597348024, 386.36515325417986); + double b0 = (-155.8157547245807); + bool2x4 r0 = bool2x4(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + double2x4 a1 = double2x4(290.04894007837811, -65.667489797653388, -69.683271678948415, -191.19075521789063, 186.84520086406042, -232.89569221851218, -319.14406481345372, -49.701092981594172); + double b1 = (-132.63519460178691); + bool2x4 r1 = bool2x4(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + double2x4 a2 = double2x4(-300.88189925853248, 386.377503336583, -296.70189084517858, -309.11719741910565, 141.54237968360189, -227.32334314441465, 83.872881689981, -410.91687483848858); + double b2 = (333.39685193328046); + bool2x4 r2 = bool2x4(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + double2x4 a3 = double2x4(110.50128345866744, 36.574313896044259, -427.54144235492754, -268.17085111707956, 175.81170590958175, -193.47994694182648, 291.05195368968509, 423.97165723516218); + double b3 = (-390.10359329269437); + bool2x4 r3 = bool2x4(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void double2x4_operator_equal_scalar_wide() + { + double a0 = (36.383921878591195); + double2x4 b0 = double2x4(-400.48919958644046, -71.286823544319191, 156.97811491646712, -225.23872791288363, 499.14180993435059, -211.97992358542047, 428.31192394174263, -489.50133322621758); + bool2x4 r0 = bool2x4(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + double a1 = (-5.6915457275190988); + double2x4 b1 = double2x4(-30.865948453017495, -362.98307221149241, 184.50319322594589, -160.47062142215231, 316.66882315122928, 390.36923879681581, 505.10510301268891, -294.64870967280524); + bool2x4 r1 = bool2x4(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + double a2 = (443.19909283295226); + double2x4 b2 = double2x4(96.559236333034619, -257.01294601010761, -245.05497538533757, 326.46485176983515, -23.959890138339176, -168.6948808025079, 386.24859279498855, -227.09065185631192); + bool2x4 r2 = bool2x4(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + double a3 = (-336.61242524562982); + double2x4 b3 = double2x4(365.10812752559229, -405.39083952707745, -473.99549959320365, 298.43535174915348, -149.86322386090796, 450.06639191604518, 153.47643358701669, 56.287803437694834); + bool2x4 r3 = bool2x4(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void double2x4_operator_not_equal_wide_wide() + { + double2x4 a0 = double2x4(279.99414576217259, -43.342018386042696, -465.72473523846116, 317.46655645848557, 85.714987079480238, 360.89050572034466, 366.08152668833804, 154.5428384070018); + double2x4 b0 = double2x4(-460.912120318465, -476.00904844515446, 468.13642070635058, -341.01254312182431, -62.658060341448561, -458.80166718866752, -457.73023316717251, -59.523265627922171); + bool2x4 r0 = bool2x4(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + double2x4 a1 = double2x4(332.426219856565, 397.11323160543725, -431.3749584776233, 489.01079319837072, 398.43358320669904, -489.81794594685454, 171.4049242340983, -67.829682620162941); + double2x4 b1 = double2x4(3.024243117787023, 155.81276352508587, -19.839918384253963, -6.0169332055453992, -406.20792145571107, -102.42070083619126, -40.362921018322425, 452.67542645552919); + bool2x4 r1 = bool2x4(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + double2x4 a2 = double2x4(-192.27871498478515, 227.84082494854965, 62.138187675801191, 262.18648755838467, -404.05309052209049, 34.449567572423007, -204.79578719138902, -285.41180314003111); + double2x4 b2 = double2x4(93.257571979080126, -258.37806689849964, -184.04980405794913, -379.23531192319251, -370.68729537105526, -255.94724023339677, 29.055771602809273, 322.40763226263584); + bool2x4 r2 = bool2x4(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + double2x4 a3 = double2x4(-72.206820760018559, 444.74925228801987, 238.81779991780309, 365.18011563139976, -437.92291351683571, -362.4426316518535, 445.95436665320506, -0.41746735592255391); + double2x4 b3 = double2x4(415.07170005099465, -467.72613189542949, -433.78467508488552, -212.16593585357344, 474.67491481950265, 452.48318621724991, -92.112742705323171, -385.92209190219739); + bool2x4 r3 = bool2x4(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void double2x4_operator_not_equal_wide_scalar() + { + double2x4 a0 = double2x4(-155.44111282911206, -19.426602134214079, 174.63305409934048, 507.9207296352464, 59.177048472304364, 171.15146430356026, -58.923273352404692, -398.17684835855704); + double b0 = (-393.41354173860213); + bool2x4 r0 = bool2x4(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + double2x4 a1 = double2x4(492.20105361016522, 270.34102333259818, -380.24326222960059, 501.8990516615562, -134.34545642433011, 458.40042302496749, 46.771004937016869, 161.45995123752391); + double b1 = (-165.24150879925185); + bool2x4 r1 = bool2x4(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + double2x4 a2 = double2x4(261.51423442620512, -0.44992661497087738, 350.46143047439932, 202.22103724359579, 242.66402232025939, 382.67707675633812, -468.96794221781562, -497.45947789468778); + double b2 = (-145.61239559278471); + bool2x4 r2 = bool2x4(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + double2x4 a3 = double2x4(-80.932258882062627, -506.49033260088896, 449.34814640942409, 210.77098784724762, 249.18179690520367, -338.46854058768065, 229.67068420614612, -76.543291365980792); + double b3 = (-328.58774844211888); + bool2x4 r3 = bool2x4(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void double2x4_operator_not_equal_scalar_wide() + { + double a0 = (478.35313938481409); + double2x4 b0 = double2x4(459.55319592894671, 436.45324369727314, -488.71416806090349, 392.76794475725296, -266.73665369056937, 338.55788270503183, -338.10012475498957, -152.3145445102428); + bool2x4 r0 = bool2x4(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + double a1 = (-452.82067868338); + double2x4 b1 = double2x4(209.43931422449612, 50.107968592135194, 372.4343656843688, -488.0213141329686, 489.74075697816011, 270.40006149485714, -472.8467831429312, -286.85046090132113); + bool2x4 r1 = bool2x4(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + double a2 = (-384.69186681541237); + double2x4 b2 = double2x4(443.42352959300558, 358.74720900074919, -15.414077527548216, -342.17916194637269, 468.96750400446706, -130.56808501601597, 401.7858013593526, -268.35225761511936); + bool2x4 r2 = bool2x4(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + double a3 = (-239.231014124691); + double2x4 b3 = double2x4(411.38655800902586, 139.76932460617707, 334.52206031164246, -223.62923036498449, -12.488468414400018, 113.46889238872984, -189.65225204716074, -212.84655127900027); + bool2x4 r3 = bool2x4(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void double2x4_operator_less_wide_wide() + { + double2x4 a0 = double2x4(51.710243010758518, -313.85556450200062, 283.04767359562572, 235.02188621974642, 44.0783565249659, -207.25566659088042, 3.3829410091894943, -144.30134326978651); + double2x4 b0 = double2x4(-261.83523881707117, -19.810742149041403, -149.25882084167506, 205.99822316225539, -306.02438535635565, 102.12168006884008, 231.90633760760829, 179.49885305180158); + bool2x4 r0 = bool2x4(false, true, false, false, false, true, true, true); + TestUtils.AreEqual(a0 < b0, r0); + + double2x4 a1 = double2x4(-69.369597705718888, -135.66796762108243, -194.78736576567746, -33.473868147225062, -19.675088653189619, 423.23796697297973, -71.698315415390937, -501.88598870760109); + double2x4 b1 = double2x4(473.22488496882136, 15.891647107848712, 270.04990614114786, 490.91400240869916, -185.73412164753961, 76.433086669274189, 97.75231246731812, 419.30080600236579); + bool2x4 r1 = bool2x4(true, true, true, true, false, false, true, true); + TestUtils.AreEqual(a1 < b1, r1); + + double2x4 a2 = double2x4(7.6438391244242894, 302.26289214857991, -140.55051786291904, -436.586703265359, -351.441728040316, 364.97084896870467, 301.894133946809, 407.55097336673691); + double2x4 b2 = double2x4(73.953208242521214, 481.03232382285978, 7.00747371046225, -7.3240954910051528, -413.07575793428146, -154.1188920261892, 449.20288989003882, 502.01430797111914); + bool2x4 r2 = bool2x4(true, true, true, true, false, false, true, true); + TestUtils.AreEqual(a2 < b2, r2); + + double2x4 a3 = double2x4(269.10777128353141, 462.98824737173891, 223.8841808884797, -287.18923319838439, 283.63862933015389, 511.86434650414822, -60.496787814654795, -234.30346142235373); + double2x4 b3 = double2x4(-382.31586259525079, 251.53517758638372, 143.17396957388803, 293.66033686961066, -292.76956691069972, -43.218204756834666, -353.41120044952777, 458.32604405764766); + bool2x4 r3 = bool2x4(false, false, false, true, false, false, false, true); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void double2x4_operator_less_wide_scalar() + { + double2x4 a0 = double2x4(-221.86977325280651, -121.54646807608498, -97.52392511140738, 479.88107775146193, 67.118990214131259, 137.32880574899207, 282.96659601990439, 258.27909362422258); + double b0 = (199.06751808853244); + bool2x4 r0 = bool2x4(true, true, true, false, true, true, false, false); + TestUtils.AreEqual(a0 < b0, r0); + + double2x4 a1 = double2x4(-111.41316061439608, 82.665427008022334, -361.64292042406413, -68.088202269788951, 12.788020378345664, -66.703050406045747, -78.762971199472872, 25.727694284975428); + double b1 = (-288.08113278452356); + bool2x4 r1 = bool2x4(false, false, true, false, false, false, false, false); + TestUtils.AreEqual(a1 < b1, r1); + + double2x4 a2 = double2x4(101.37087182950734, -48.920521520506838, 359.60440914686978, -8.15008759878117, 241.27682101040932, -183.43778165776178, 423.02713580756779, -334.62272349680904); + double b2 = (-330.442660724019); + bool2x4 r2 = bool2x4(false, false, false, false, false, false, false, true); + TestUtils.AreEqual(a2 < b2, r2); + + double2x4 a3 = double2x4(-98.315578744893685, 297.92523850962766, -492.108162870681, -395.80724806143309, 95.788790032169231, -220.62145791790516, -455.37556740985048, 360.29156344025); + double b3 = (300.41017617863145); + bool2x4 r3 = bool2x4(true, true, true, true, true, true, true, false); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void double2x4_operator_less_scalar_wide() + { + double a0 = (-250.4849370692321); + double2x4 b0 = double2x4(-377.19654887597846, -505.14754104295167, 375.92672198634909, 110.17393474940855, -118.09757452742082, -40.45089079833167, -299.74430932651478, 31.437125935888389); + bool2x4 r0 = bool2x4(false, false, true, true, true, true, false, true); + TestUtils.AreEqual(a0 < b0, r0); + + double a1 = (-458.904539560389); + double2x4 b1 = double2x4(13.684679276163024, -458.50690839183841, 248.27646624682302, 389.23142999654237, 488.74553679337055, -221.63786731550368, -424.26720329013989, 249.05904948388184); + bool2x4 r1 = bool2x4(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 < b1, r1); + + double a2 = (-22.136127720650336); + double2x4 b2 = double2x4(-442.24773928255206, -340.85755721705851, -95.1117256130612, 15.409410245441563, 87.292497437117845, 495.06764220402931, 316.01850309782594, -125.56811505442863); + bool2x4 r2 = bool2x4(false, false, false, true, true, true, true, false); + TestUtils.AreEqual(a2 < b2, r2); + + double a3 = (122.16476803746298); + double2x4 b3 = double2x4(96.75540046429046, -228.90633808304852, -143.95269662884652, -230.238279688283, -327.61262885090548, 103.39802770661095, 434.488835775521, -157.45019228637693); + bool2x4 r3 = bool2x4(false, false, false, false, false, false, true, false); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void double2x4_operator_greater_wide_wide() + { + double2x4 a0 = double2x4(-229.29066501804192, 505.536608216137, -73.80706862071861, 100.29203777215071, -419.21478124112582, -159.55974753180504, -396.7703608929973, 127.03739482119556); + double2x4 b0 = double2x4(-445.84502407808088, -420.03529210576568, 299.02440108872224, -13.880978829171966, 151.56173593903043, -163.5094302461992, -391.09603733154762, 479.2837710228207); + bool2x4 r0 = bool2x4(true, true, false, true, false, true, false, false); + TestUtils.AreEqual(a0 > b0, r0); + + double2x4 a1 = double2x4(489.13989733585151, 51.91890885863404, 155.38475544535777, -135.63165027258526, -425.97813554572787, -228.430505143679, 383.03834909155887, 136.53358298937496); + double2x4 b1 = double2x4(-77.674873149802409, -46.5841996886694, -415.37701888353422, 71.466978344818131, -206.06102643071722, 360.83628218287424, 236.96878658838978, 14.550342328171382); + bool2x4 r1 = bool2x4(true, true, true, false, false, false, true, true); + TestUtils.AreEqual(a1 > b1, r1); + + double2x4 a2 = double2x4(8.602427725029429, -251.3243674018068, -345.954920691417, -170.565928777012, -293.25441588706076, 139.1249764613458, 214.3030732675935, 238.76991211565678); + double2x4 b2 = double2x4(364.735178402036, -159.0612996365229, 226.63117490831348, 182.79602512288659, 341.83937398616195, -79.130463875425278, -247.29681956362765, 164.58913882290437); + bool2x4 r2 = bool2x4(false, false, false, false, false, true, true, true); + TestUtils.AreEqual(a2 > b2, r2); + + double2x4 a3 = double2x4(105.53519086983761, -170.92529280992471, 26.98023964230913, -188.92831405854241, 201.78662619450438, -506.05715656003781, 15.454906232401186, 115.08067207926911); + double2x4 b3 = double2x4(-352.15977327533056, 9.8226540134394327, 186.72162613026876, -325.91364613450764, -77.930370128681147, -379.74604219000139, 251.45575558927646, -144.1835678295156); + bool2x4 r3 = bool2x4(true, false, false, true, true, false, false, true); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void double2x4_operator_greater_wide_scalar() + { + double2x4 a0 = double2x4(11.156317000815761, -411.02322382993214, 385.88556188432756, -485.10304831206008, -491.18003033622171, 405.17534632476759, 173.57509740329124, 69.269281181166548); + double b0 = (-302.81693877969724); + bool2x4 r0 = bool2x4(true, false, true, false, false, true, true, true); + TestUtils.AreEqual(a0 > b0, r0); + + double2x4 a1 = double2x4(501.30683183172107, -86.124509613087639, -489.09058998948456, -172.51816066192379, -18.149639853346002, -236.41493498367021, -238.8945134798505, -27.239137900638923); + double b1 = (-367.027771405423); + bool2x4 r1 = bool2x4(true, true, false, true, true, true, true, true); + TestUtils.AreEqual(a1 > b1, r1); + + double2x4 a2 = double2x4(471.77934072528933, -481.47807930478734, 185.59438547193747, 33.294723764664809, -510.22814702905163, -183.28619607877278, -386.12766260007754, -13.638212448748845); + double b2 = (240.16453253485474); + bool2x4 r2 = bool2x4(true, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 > b2, r2); + + double2x4 a3 = double2x4(-7.3478887115362568, 52.24950768996473, 16.323217637987455, -410.51010985416832, -262.26747978025463, -458.25599000335484, -218.86613069235631, -34.692342535915031); + double b3 = (-261.86596477304863); + bool2x4 r3 = bool2x4(true, true, true, false, false, false, true, true); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void double2x4_operator_greater_scalar_wide() + { + double a0 = (453.54610201974685); + double2x4 b0 = double2x4(-226.20441423459187, -423.46500487973213, 409.40550227156166, 453.87706277048073, 87.475727837288673, 113.79560308987072, 176.40926154721956, -140.44002944810319); + bool2x4 r0 = bool2x4(true, true, true, false, true, true, true, true); + TestUtils.AreEqual(a0 > b0, r0); + + double a1 = (-182.48286804113673); + double2x4 b1 = double2x4(-158.29329188088576, -162.68531830733889, -193.328676075362, 230.18129955519987, -102.58784227379965, 392.5205878655056, -177.47865947404813, -10.295010809924008); + bool2x4 r1 = bool2x4(false, false, true, false, false, false, false, false); + TestUtils.AreEqual(a1 > b1, r1); + + double a2 = (-24.048938524000789); + double2x4 b2 = double2x4(172.44867499752377, 374.04800503982608, -368.99763958947619, -210.19528804076617, 149.47022325800276, -281.34327019441093, -100.46916608720511, 304.86444320569956); + bool2x4 r2 = bool2x4(false, false, true, true, false, true, true, false); + TestUtils.AreEqual(a2 > b2, r2); + + double a3 = (-361.52483360912879); + double2x4 b3 = double2x4(-372.45236056505348, -33.909547583157917, -69.595290454847429, -460.43241498453187, -309.34166278938841, 486.13155602204222, 471.92098138850224, 479.36154411703421); + bool2x4 r3 = bool2x4(true, false, false, true, false, false, false, false); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void double2x4_operator_less_equal_wide_wide() + { + double2x4 a0 = double2x4(240.09053169940159, 462.2131528622532, 293.08251561461134, -427.87067361728782, -405.5227226715175, 204.59190211286386, 294.670105832941, -327.56444445604666); + double2x4 b0 = double2x4(-81.203838624620744, 493.63743876555816, -411.47211451617636, 99.164449499530974, -295.66769875943089, -480.46254824123463, 74.414040361723892, 260.916124226952); + bool2x4 r0 = bool2x4(false, true, false, true, true, false, false, true); + TestUtils.AreEqual(a0 <= b0, r0); + + double2x4 a1 = double2x4(-456.12326667091031, 282.3012408140587, 421.8811549720732, -311.71284809322697, 84.5674827492644, 447.24461647832982, -154.49435217422172, -424.36474986763892); + double2x4 b1 = double2x4(306.17329730939741, 139.56480438055689, -505.75247955031341, -489.62680958659706, -280.03260267899958, 303.15991058161478, 511.19015788994272, -104.65973358259527); + bool2x4 r1 = bool2x4(true, false, false, false, false, false, true, true); + TestUtils.AreEqual(a1 <= b1, r1); + + double2x4 a2 = double2x4(36.684489505684269, 267.07029283562224, 307.89391937288167, -351.76015369582927, -157.36036570247279, 152.70902712303632, 372.26716750313858, 202.36828837281485); + double2x4 b2 = double2x4(95.1465771641333, -125.6363432992419, 376.239777024947, -415.7747320680761, -47.481050275024529, 117.72210293529656, 469.37837264937275, -263.04235780567041); + bool2x4 r2 = bool2x4(true, false, true, false, true, false, true, false); + TestUtils.AreEqual(a2 <= b2, r2); + + double2x4 a3 = double2x4(-77.043453014010311, 438.18483253856414, 260.28234088620275, 386.03408759927106, -281.49099053139378, -102.9300439837063, -346.71673099450618, -258.34119832624737); + double2x4 b3 = double2x4(-216.00231109187115, 66.734246046624207, 99.218598173567329, 233.843011249715, 439.8399624488502, 61.115118293610976, -219.03058419890266, -404.71288056146022); + bool2x4 r3 = bool2x4(false, false, false, false, true, true, true, false); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void double2x4_operator_less_equal_wide_scalar() + { + double2x4 a0 = double2x4(309.1924356469849, 69.673792633076118, -101.72418622939114, -315.97240629604664, -346.01106731314724, 424.15386577330241, -410.87006945669191, -483.90265320423185); + double b0 = (292.92427148154206); + bool2x4 r0 = bool2x4(false, true, true, true, true, false, true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + double2x4 a1 = double2x4(183.82114538169515, -257.87003791419329, -386.801748694294, -182.9388249772316, 349.25012962392077, 485.31159304329731, 373.56911652794531, 259.15151822713744); + double b1 = (320.44249287268258); + bool2x4 r1 = bool2x4(true, true, true, true, false, false, false, true); + TestUtils.AreEqual(a1 <= b1, r1); + + double2x4 a2 = double2x4(450.13007828692446, -43.874866744445114, 457.38574549992836, -77.638293064030961, 479.45184038553941, -499.51644372358754, -398.13294643821797, 402.48485893871862); + double b2 = (-128.5255282523695); + bool2x4 r2 = bool2x4(false, false, false, false, false, true, true, false); + TestUtils.AreEqual(a2 <= b2, r2); + + double2x4 a3 = double2x4(87.9161055497434, 125.95081263685177, -54.493607308014134, 250.66739737739204, 97.942930982421558, 228.02151809820043, -213.37865243357544, 42.260789175639275); + double b3 = (-502.17362308044619); + bool2x4 r3 = bool2x4(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void double2x4_operator_less_equal_scalar_wide() + { + double a0 = (-511.15238141974078); + double2x4 b0 = double2x4(51.159012579898786, 340.44369022010062, 312.81429519914752, 354.19252626699983, 136.39671165142056, -94.767871185563422, 288.544332877055, 304.04282369466625); + bool2x4 r0 = bool2x4(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + double a1 = (-148.61806089646092); + double2x4 b1 = double2x4(-506.30010127755816, 27.581254256694251, 48.471146844546865, 104.88351326104419, -488.6858386884843, -480.43516968210935, 421.9366516647566, 239.72105299668431); + bool2x4 r1 = bool2x4(false, true, true, true, false, false, true, true); + TestUtils.AreEqual(a1 <= b1, r1); + + double a2 = (-101.01844673092404); + double2x4 b2 = double2x4(-283.95147551407638, -55.2435333986038, -455.80483147865385, 131.10721618081777, -461.69878099006542, -388.48285001725094, -258.93605125087129, -225.2235287284588); + bool2x4 r2 = bool2x4(false, true, false, true, false, false, false, false); + TestUtils.AreEqual(a2 <= b2, r2); + + double a3 = (-116.01998215355911); + double2x4 b3 = double2x4(-442.59525629626364, 297.33334579008317, 36.687250392831515, 485.09780930220052, 344.44564859217292, 237.59216724969087, 230.39086471795611, -413.98479266370873); + bool2x4 r3 = bool2x4(false, true, true, true, true, true, true, false); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void double2x4_operator_greater_equal_wide_wide() + { + double2x4 a0 = double2x4(-386.59181302906563, -157.12078221008215, 391.01526445477054, -511.88687133783793, -5.4220387960886569, 287.64527501149348, -122.53520184500849, 7.4814426933794493); + double2x4 b0 = double2x4(153.44301350109424, 49.892483019219981, 78.025787628267835, 138.81373292711271, -225.51057802211056, -339.35611335344436, -373.302078182484, 364.9358934671319); + bool2x4 r0 = bool2x4(false, false, true, false, true, true, true, false); + TestUtils.AreEqual(a0 >= b0, r0); + + double2x4 a1 = double2x4(152.94642765491574, 48.986223482054811, 57.338148859021317, 300.46493138953338, 349.25705139211243, 85.749700824613569, -230.95330654408468, 418.7112159294594); + double2x4 b1 = double2x4(-322.71539870030961, 125.47818165900105, -25.776589167200314, 297.51890792395864, 73.222349439385539, 462.78374288174496, 393.19134515951919, -95.001432224643168); + bool2x4 r1 = bool2x4(true, false, true, true, true, false, false, true); + TestUtils.AreEqual(a1 >= b1, r1); + + double2x4 a2 = double2x4(-131.03991824530061, -126.51221257378916, -156.81847841889527, 422.37748761772059, -413.08933348818186, 219.44273553576443, 35.591133372667741, 447.18153521380464); + double2x4 b2 = double2x4(381.35702556248611, 93.031928344178937, 254.25326287665087, 90.672789377473691, 348.93816892660141, 161.33763106229605, 79.435611046587837, 420.24346824187944); + bool2x4 r2 = bool2x4(false, false, false, true, false, true, false, true); + TestUtils.AreEqual(a2 >= b2, r2); + + double2x4 a3 = double2x4(-223.49299560463663, 302.12299194099523, 459.85272834256887, -347.12802879285442, 364.97808211156075, 212.63543162710755, 504.27608680365427, -142.23296052880255); + double2x4 b3 = double2x4(453.68485209610537, -154.0116427661905, -97.290078923706915, 151.18477613813468, 57.360309865959152, -194.207084984615, -462.67061421958294, 113.38661604439221); + bool2x4 r3 = bool2x4(false, true, true, false, true, true, true, false); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void double2x4_operator_greater_equal_wide_scalar() + { + double2x4 a0 = double2x4(495.457423679278, -14.345115906719627, -463.47478053694346, 217.51749215718246, -246.86571776441565, -377.65869706573835, 53.815095211293169, -123.33294373533357); + double b0 = (189.20512804258851); + bool2x4 r0 = bool2x4(true, false, false, true, false, false, false, false); + TestUtils.AreEqual(a0 >= b0, r0); + + double2x4 a1 = double2x4(-221.50546441856096, -116.44038277326172, -395.36331028275345, 164.77259667439978, -287.00733889593153, 355.83704559683667, 184.19556316369938, 273.01225555735277); + double b1 = (252.99433410027734); + bool2x4 r1 = bool2x4(false, false, false, false, false, true, false, true); + TestUtils.AreEqual(a1 >= b1, r1); + + double2x4 a2 = double2x4(-418.14240308205706, 396.39213938098032, 332.66542044871744, 243.76141392614761, -335.121477998384, -302.08690442800844, 254.44223344253476, 179.00504287472234); + double b2 = (249.38409697701411); + bool2x4 r2 = bool2x4(false, true, true, false, false, false, true, false); + TestUtils.AreEqual(a2 >= b2, r2); + + double2x4 a3 = double2x4(71.176674637560154, 307.89058008226129, -388.57851737950858, 150.60576422075076, -219.89257989632551, -491.68100213058341, 30.997067704329766, 199.23222861030706); + double b3 = (-331.27167788672807); + bool2x4 r3 = bool2x4(true, true, false, true, true, false, true, true); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void double2x4_operator_greater_equal_scalar_wide() + { + double a0 = (215.43534169692327); + double2x4 b0 = double2x4(204.80295310020585, -101.10404853760451, -122.05503827056617, -70.456147941973143, -239.62025677395064, -185.99272426683115, -455.61258027312, 276.66581476697036); + bool2x4 r0 = bool2x4(true, true, true, true, true, true, true, false); + TestUtils.AreEqual(a0 >= b0, r0); + + double a1 = (79.39918831707871); + double2x4 b1 = double2x4(416.42054791768112, 379.27350801009379, -439.51472612820322, 67.141009600433108, -74.560638224035813, -367.25635474140586, 494.950765601802, -61.235545425319856); + bool2x4 r1 = bool2x4(false, false, true, true, true, true, false, true); + TestUtils.AreEqual(a1 >= b1, r1); + + double a2 = (-429.17024846988278); + double2x4 b2 = double2x4(-213.82468924942646, -264.31016242891093, 243.11378275748052, -22.383876095704693, 304.86197175870745, -323.68615332417477, 67.938025267765852, 125.30356818312009); + bool2x4 r2 = bool2x4(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 >= b2, r2); + + double a3 = (-400.47050280145857); + double2x4 b3 = double2x4(-283.15963162256389, -42.319595595039232, -429.51037355396448, 499.3958854616601, -289.96307887228352, -136.00878554955534, -351.12526123184955, -381.81828921931719); + bool2x4 r3 = bool2x4(false, false, true, false, false, false, false, false); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void double2x4_operator_add_wide_wide() + { + double2x4 a0 = double2x4(465.14837644302679, 278.91072548502621, -277.52992237616792, -65.197214395365336, -473.32437561141529, -4.6955420992782138, -470.53676698661258, -109.95011453980118); + double2x4 b0 = double2x4(483.99436186440028, -204.07667193379098, -365.67356007437854, -509.92086076639634, -270.69751108377125, 486.76397846954126, 267.49177587567442, 251.6425212601398); + double2x4 r0 = double2x4(949.14273830742707, 74.834053551235229, -643.20348245054652, -575.11807516176168, -744.02188669518659, 482.06843637026304, -203.04499111093816, 141.69240672033862); + TestUtils.AreEqual(a0 + b0, r0); + + double2x4 a1 = double2x4(-178.70145782209067, -420.03378339299644, 290.71109236903078, -446.5296368294068, 491.066454400805, -261.11730039358014, -298.40688409395835, 502.42861890347149); + double2x4 b1 = double2x4(244.4951094335388, -78.675763882079991, 352.20551340291536, 82.779185095233515, 462.54732606492348, -405.492017696375, -428.4983238785054, -41.872599859662614); + double2x4 r1 = double2x4(65.793651611448126, -498.70954727507643, 642.91660577194614, -363.75045173417328, 953.6137804657285, -666.6093180899552, -726.90520797246381, 460.55601904380887); + TestUtils.AreEqual(a1 + b1, r1); + + double2x4 a2 = double2x4(284.59432925125316, 401.12844366632794, -36.263498084742366, -102.94915657069026, 503.19817161150195, -384.42911857386542, -45.22821452339565, -198.67394337368847); + double2x4 b2 = double2x4(-269.9274958436971, 75.204465662690041, -141.91339380196922, -222.1867559990784, 41.305726308983594, 148.33947117083676, -177.23311217931712, -176.51887830370987); + double2x4 r2 = double2x4(14.666833407556055, 476.332909329018, -178.17689188671159, -325.13591256976866, 544.50389792048554, -236.08964740302866, -222.46132670271277, -375.19282167739834); + TestUtils.AreEqual(a2 + b2, r2); + + double2x4 a3 = double2x4(-62.8800013358146, -79.55225447544467, 413.0982751385767, -100.87757997441923, 418.523998693807, -183.143126334596, 407.44374031920165, 300.48602332756207); + double2x4 b3 = double2x4(492.69246768052335, 439.04383942067807, -511.74275922763292, -399.05713695988857, -315.8684596102072, -228.0772484410914, -171.70519669899028, 467.17394826709005); + double2x4 r3 = double2x4(429.81246634470875, 359.4915849452334, -98.64448408905622, -499.9347169343078, 102.65553908359982, -411.22037477568739, 235.73854362021137, 767.65997159465212); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void double2x4_operator_add_wide_scalar() + { + double2x4 a0 = double2x4(459.89829728561369, -447.66336104258119, -94.438627525436971, 126.42986279652916, -36.254356162741033, -349.64130060264904, -2.7912590516690443, -478.41478489265535); + double b0 = (500.99725913489112); + double2x4 r0 = double2x4(960.89555642050482, 53.333898092309937, 406.55863160945415, 627.42712193142029, 464.74290297215009, 151.35595853224208, 498.20600008322208, 22.582474242235776); + TestUtils.AreEqual(a0 + b0, r0); + + double2x4 a1 = double2x4(443.11525246273504, 41.32102133767728, -471.25607584009697, -2.6649749291431704, 78.985822952811532, 202.14799151297098, 311.7254551908585, 10.345855002452595); + double b1 = (268.092225914864); + double2x4 r1 = double2x4(711.207478377599, 309.41324725254128, -203.16384992523297, 265.42725098572083, 347.07804886767553, 470.240217427835, 579.8176811057225, 278.4380809173166); + TestUtils.AreEqual(a1 + b1, r1); + + double2x4 a2 = double2x4(-151.24445898423181, -197.80076584490052, 255.95526587961024, 244.14709793969394, -181.6265695940827, -2.4549267303454485, 300.90065469448484, -236.49194895312746); + double b2 = (355.23276703210206); + double2x4 r2 = double2x4(203.98830804787025, 157.43200118720154, 611.1880329117123, 599.379864971796, 173.60619743801936, 352.77784030175661, 656.1334217265869, 118.7408180789746); + TestUtils.AreEqual(a2 + b2, r2); + + double2x4 a3 = double2x4(-160.5840962680914, -242.9410861669765, 466.34409902353957, 237.98745810146795, 264.294014815378, 372.86684029775995, -198.83777699192882, -381.930974899759); + double b3 = (-172.54221566605486); + double2x4 r3 = double2x4(-333.12631193414626, -415.48330183303136, 293.80188335748471, 65.445242435413093, 91.751799149323119, 200.32462463170509, -371.37999265798368, -554.47319056581387); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void double2x4_operator_add_scalar_wide() + { + double a0 = (-325.51276484388518); + double2x4 b0 = double2x4(-264.08813178915909, -106.00925998855814, -355.44729320865463, -447.33029362528134, -158.70021040677102, -199.48369154682553, 180.31809123806568, 337.57936898692481); + double2x4 r0 = double2x4(-589.60089663304427, -431.52202483244332, -680.96005805253981, -772.84305846916652, -484.2129752506562, -524.9964563907107, -145.1946736058195, 12.066604143039626); + TestUtils.AreEqual(a0 + b0, r0); + + double a1 = (-37.05501486596421); + double2x4 b1 = double2x4(230.80498014707348, -140.17433339924287, 18.02419591789328, -138.61435825126915, 26.904163611542458, -374.53758233345, 154.4676006559597, 268.3838204203098); + double2x4 r1 = double2x4(193.74996528110927, -177.22934826520708, -19.03081894807093, -175.66937311723336, -10.150851254421752, -411.59259719941423, 117.41258578999549, 231.32880555434559); + TestUtils.AreEqual(a1 + b1, r1); + + double a2 = (-190.96302255939833); + double2x4 b2 = double2x4(188.61725362977813, -504.91612386373623, 20.454013595568995, 197.94534525552081, 251.41194474483461, -421.09037538109828, 111.44540052835146, -73.268883024001923); + double2x4 r2 = double2x4(-2.345768929620192, -695.87914642313456, -170.50900896382933, 6.9823226961224805, 60.448922185436288, -612.05339794049655, -79.517622031046869, -264.23190558340025); + TestUtils.AreEqual(a2 + b2, r2); + + double a3 = (480.88455770950975); + double2x4 b3 = double2x4(438.05301233662897, 66.844289095534123, -270.79599941465818, -44.02192189359198, 197.69471916821544, 19.113929995854392, 349.23776857426287, 366.23449271090067); + double2x4 r3 = double2x4(918.93757004613872, 547.72884680504387, 210.08855829485157, 436.86263581591777, 678.57927687772519, 499.99848770536414, 830.12232628377262, 847.11905042041042); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void double2x4_operator_sub_wide_wide() + { + double2x4 a0 = double2x4(133.37101680290471, -131.8321183341705, -197.29314407952739, -485.286571013409, -337.55033103448818, 471.66710470228782, 146.5066197600712, -130.58504372955537); + double2x4 b0 = double2x4(123.46028739002543, 359.56010048443454, -48.24847819667707, 478.97904680621764, 207.15832886805686, 142.36730462981723, -125.60551005490379, -65.299004823574307); + double2x4 r0 = double2x4(9.9107294128792773, -491.39221881860504, -149.04466588285032, -964.26561781962664, -544.708659902545, 329.29980007247059, 272.112129814975, -65.286038905981059); + TestUtils.AreEqual(a0 - b0, r0); + + double2x4 a1 = double2x4(110.77707367333448, -235.54160486699158, 78.879356659427, -347.68616811730254, -470.82054565419469, -11.459293609233271, -167.94791730118351, 330.67676917215658); + double2x4 b1 = double2x4(-477.876434787119, 164.50000031501986, 428.00958915614035, 72.6278169493321, -446.880505531505, 432.09146114443035, -225.55465637219822, -112.45196705332586); + double2x4 r1 = double2x4(588.65350846045351, -400.04160518201144, -349.13023249671335, -420.31398506663464, -23.940040122689709, -443.55075475366363, 57.606739071014715, 443.12873622548244); + TestUtils.AreEqual(a1 - b1, r1); + + double2x4 a2 = double2x4(-508.35086822339838, -252.03190457636111, -427.93418737311578, 192.6576150360786, 168.42931016182024, 457.3087858899072, 470.05851457550125, -299.71188058504458); + double2x4 b2 = double2x4(-210.61278853687122, -172.92506011432272, -80.60749415336528, 270.04610861001822, -154.25558550388348, 148.47577745675846, 13.661130673094249, 70.671096596248049); + double2x4 r2 = double2x4(-297.73807968652716, -79.1068444620384, -347.3266932197505, -77.388493573939627, 322.68489566570372, 308.83300843314873, 456.397383902407, -370.38297718129263); + TestUtils.AreEqual(a2 - b2, r2); + + double2x4 a3 = double2x4(-308.93956937870922, 454.53341052240387, 26.106923830745245, -482.71181105203544, -40.853544492671972, 318.38064613862923, 475.21081541255614, 134.9269641074012); + double2x4 b3 = double2x4(-221.32544551665217, -9.2588145775994235, 288.1738385111903, 217.36142764676424, 307.54006471649745, -262.41263854802241, -405.3780321578393, 400.00432533771004); + double2x4 r3 = double2x4(-87.614123862057056, 463.79222510000329, -262.06691468044505, -700.07323869879974, -348.39360920916943, 580.79328468665165, 880.5888475703955, -265.07736123030884); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void double2x4_operator_sub_wide_scalar() + { + double2x4 a0 = double2x4(48.936717294592768, 410.45158953706346, -364.44171612544062, 163.98060353285666, -460.06732318367222, 110.91942339340198, 204.35834441164434, 180.26971420099483); + double b0 = (-291.59041442144212); + double2x4 r0 = double2x4(340.52713171603489, 702.04200395850557, -72.8513017039985, 455.57101795429878, -168.4769087622301, 402.5098378148441, 495.94875883308646, 471.86012862243695); + TestUtils.AreEqual(a0 - b0, r0); + + double2x4 a1 = double2x4(-377.92569344952972, 400.53491968686455, 461.50756499800252, -246.28726660753006, 21.605312595891405, 246.35072171238755, -121.42736178330489, -122.71842413894757); + double b1 = (-470.26204297983185); + double2x4 r1 = double2x4(92.33634953030213, 870.79696266669634, 931.76960797783431, 223.97477637230179, 491.86735557572325, 716.61276469221934, 348.83468119652696, 347.54361884088428); + TestUtils.AreEqual(a1 - b1, r1); + + double2x4 a2 = double2x4(-122.93872099879138, 342.87457887403411, 18.929827460520869, 164.60235245740148, 97.0436885808798, 485.9149813530571, -205.75765690848124, 253.44322717070725); + double b2 = (360.15095417581074); + double2x4 r2 = double2x4(-483.08967517460212, -17.276375301776625, -341.22112671528987, -195.54860171840926, -263.10726559493094, 125.76402717724636, -565.908611084292, -106.70772700510349); + TestUtils.AreEqual(a2 - b2, r2); + + double2x4 a3 = double2x4(-121.16305619159857, -450.820273370864, -248.07337128746946, -26.996065390760123, 441.55261942444031, 449.91060969322484, 354.88602678612153, 98.821485803845121); + double b3 = (187.99838813953022); + double2x4 r3 = double2x4(-309.16144433112879, -638.81866151039424, -436.07175942699968, -214.99445353029034, 253.55423128491009, 261.91222155369462, 166.88763864659131, -89.1769023356851); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void double2x4_operator_sub_scalar_wide() + { + double a0 = (294.58645905861); + double2x4 b0 = double2x4(452.35251757705237, 256.98980891750648, -275.159888634067, -89.027518075437968, 488.22838829840919, -333.21728030462623, -64.232989102710519, -66.041730196234653); + double2x4 r0 = double2x4(-157.76605851844238, 37.59665014110351, 569.746347692677, 383.61397713404796, -193.6419292397992, 627.80373936323622, 358.81944816132051, 360.62818925484464); + TestUtils.AreEqual(a0 - b0, r0); + + double a1 = (341.20492831859963); + double2x4 b1 = double2x4(-385.775056303374, 75.394746577085357, 354.94371645289641, 169.13141520746581, 88.216608326982964, 1.7350065716240124, 122.53803997977548, -264.94502771317264); + double2x4 r1 = double2x4(726.9799846219737, 265.81018174151427, -13.738788134296783, 172.07351311113382, 252.98831999161666, 339.46992174697561, 218.66688833882415, 606.14995603177226); + TestUtils.AreEqual(a1 - b1, r1); + + double a2 = (-50.837180399725753); + double2x4 b2 = double2x4(-347.65032283759228, 4.0655586738445209, -79.095424450512724, 354.35833923628479, -292.4925116470514, -53.208983207684469, -246.34760033634848, 299.20334138497867); + double2x4 r2 = double2x4(296.81314243786653, -54.902739073570274, 28.258244050786971, -405.19551963601054, 241.65533124732565, 2.3718028079587157, 195.51041993662272, -350.04052178470442); + TestUtils.AreEqual(a2 - b2, r2); + + double a3 = (432.18467422583353); + double2x4 b3 = double2x4(-163.88000090600923, 176.74255546216978, -104.9858415615679, -445.7976302792307, -28.873155368898608, -169.58822901993443, -270.35924614144454, 68.0476272423042); + double2x4 r3 = double2x4(596.06467513184271, 255.44211876366376, 537.17051578740143, 877.98230450506423, 461.05782959473214, 601.772903245768, 702.54392036727813, 364.13704698352933); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void double2x4_operator_mul_wide_wide() + { + double2x4 a0 = double2x4(-394.78053898121254, -412.37219519744264, -25.874570143350638, -241.04595886964626, -93.675987525692221, 244.15999257013198, 494.68846606402121, 53.537962700025105); + double2x4 b0 = double2x4(-149.76397831261346, -345.04538671348496, -284.33404721148963, 267.97923648915219, -326.64849558782225, -150.68967754705329, 207.73243794577775, 366.19289248352538); + double2x4 r0 = double2x4(59123.904078224172, 142287.1235617903, 7357.0212487164608, -64595.312016683383, 30599.120397970968, -36792.390550284115, 102762.84107913627, 19605.221418797286); + TestUtils.AreEqual(a0 * b0, r0); + + double2x4 a1 = double2x4(-239.49641167349017, 236.67584644848284, -211.85620818466703, -216.65482030466887, 467.95832870339893, -178.02191146557311, -386.3942503344241, -422.43540521265726); + double2x4 b1 = double2x4(358.88076202891807, 214.85359368792433, 253.42280900358355, -307.71382751488773, 184.4711149597872, 426.43644185850235, -144.28142625851621, 459.47961518703016); + double2x4 r1 = double2x4(-85950.654724573629, 50850.6561485879, -53689.195383006307, 66667.684005499876, 86324.794650634591, -75915.030498228327, 55749.513536340863, -194100.45742848891); + TestUtils.AreEqual(a1 * b1, r1); + + double2x4 a2 = double2x4(464.58952758488692, -251.3156646468284, -104.97877912641445, -66.934159071619717, -39.829896707008572, 401.56559080703448, 434.14618250082538, -336.45419589451245); + double2x4 b2 = double2x4(-358.31334917541284, -201.36521563370025, 254.90996539541982, 168.52096303204121, 8.7945530455533572, -194.84647974504458, -405.36266178887462, -180.7321890242082); + double2x4 r2 = double2x4(-166468.62962076368, 50606.233003735295, -26760.136954367728, -11279.808946489193, -350.28613938869785, -78243.6417554897, -175986.65214401312, 60808.103330394995); + TestUtils.AreEqual(a2 * b2, r2); + + double2x4 a3 = double2x4(-83.11415318544681, 329.96027842627848, -316.97214594342381, 474.9379296130212, -445.10915800794453, -301.00371541688389, 405.68786425408337, 142.37348682357629); + double2x4 b3 = double2x4(-189.74690946831691, -35.518455760329232, 120.31664210200154, -136.2033479847961, 407.34163231744503, 301.65431489686216, -155.4824007281486, -461.39456126717596); + double2x4 r3 = double2x4(15770.6537000148, -11719.679551949688, -38137.024239778322, -64688.136098260919, -181311.49098239967, -90799.069555490176, -63077.323080500144, -65690.352489042038); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void double2x4_operator_mul_wide_scalar() + { + double2x4 a0 = double2x4(328.20302191758674, -290.10672272839895, 236.99572454998065, 120.48136692889102, 357.90315811610924, 134.86723214707672, -477.31047104173825, -438.272912467957); + double b0 = (192.21119055161773); + double2x4 r0 = double2x4(63084.293585418032, -55761.758562653624, 45553.230371395039, 23157.866976688449, 68792.992123681237, 25922.99125739103, -91744.41390168597, -84240.958291990959); + TestUtils.AreEqual(a0 * b0, r0); + + double2x4 a1 = double2x4(-46.729179165665585, 422.08249374017237, -48.83483722099794, 355.30832998608628, 119.35660391643489, -196.995807977857, 98.2360046367329, -325.55215683837991); + double b1 = (-238.40500103608008); + double2x4 r1 = double2x4(11140.470007405675, -100626.57735743705, 11642.469418268816, -84707.28277846078, -28455.211280360661, 46964.785805064428, -23419.954787200673, 77613.262288352067); + TestUtils.AreEqual(a1 * b1, r1); + + double2x4 a2 = double2x4(53.937323833786536, -130.47412949915702, -222.59457145565869, 126.01503211167415, 293.36108769726059, 174.38195737375963, -327.12007704708731, 56.629123475695565); + double b2 = (-87.4509838034636); + double2x4 r2 = double2x4(-4716.8720329906373, 11410.090985601793, 19466.114263107731, -11020.138532190962, -25654.7157287796, -15249.873729908933, 28606.9725596326, -4952.2725598773932); + TestUtils.AreEqual(a2 * b2, r2); + + double2x4 a3 = double2x4(257.54154241156834, -452.69189450363251, -49.220605157884108, 141.60094959177115, 431.58568330834885, 180.35518583113105, -40.92345454214302, 279.54350842141707); + double b3 = (-475.60871551726422); + double2x4 r3 = double2x4(-122489.00217870105, 215304.21046994952, 23409.748796123691, -67346.645751367163, -205265.91247392457, -85778.498270021737, 19463.551649317793, -132953.32897149969); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void double2x4_operator_mul_scalar_wide() + { + double a0 = (-464.534700371574); + double2x4 b0 = double2x4(329.36093846399376, -198.68342671109525, 184.07942518223047, 256.01618754864489, 266.22629297255833, -97.894749448585685, 159.74810583877752, -351.82222263506719); + double2x4 r0 = double2x4(-152999.58486347177, 92295.346096036214, -85511.280621599, -118928.40297318244, -123671.35123704225, 45475.508103049062, -74208.538480743009, 163433.63077584215); + TestUtils.AreEqual(a0 * b0, r0); + + double a1 = (491.80157660497423); + double2x4 b1 = double2x4(49.902031206480274, 424.46256871915546, 160.11807616060514, -395.99208492599058, 125.20168858636248, -265.01581991138676, 314.65609779705107, -292.71202029507236); + double2x4 r1 = double2x4(24541.897623137622, 208751.36050587788, 78746.322298740954, -194749.53168969302, 61574.387840378076, -130335.19805767993, 154748.36498495867, -143956.23307234381); + TestUtils.AreEqual(a1 * b1, r1); + + double a2 = (-37.729878681586058); + double2x4 b2 = double2x4(165.3622206027444, 356.51773302467438, -188.81332906932261, 504.91572475103465, 40.572113771257932, -206.77510581108515, -61.602680473403382, 118.97158938225903); + double2x4 r2 = double2x4(-6239.0965218592164, -13451.370814855052, 7123.9039992519283, -19050.409039281636, -1530.7809304450689, 7801.599656624363, 2324.2616607220198, -4488.7836339481055); + TestUtils.AreEqual(a2 * b2, r2); + + double a3 = (53.7483275186961); + double2x4 b3 = double2x4(-198.66941771221786, 96.23611287783649, -20.241880664714529, -31.123976006696012, 38.890465516080326, -13.133307701504464, 507.87128209875493, 95.017933651347562); + double2x4 r3 = double2x4(-10678.14893114493, 5172.530114084163, -1087.9672315614384, -1672.8616560919363, 2090.2974779128417, -705.89332374427579, 27297.232007583982, 5107.0550180423643); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void double2x4_operator_div_wide_wide() + { + double2x4 a0 = double2x4(246.26574933075619, -269.85612953354428, -451.61952588130697, -7.38850236283082, -308.20558681534862, -373.394808704683, 360.41863482092447, 25.80972458133931); + double2x4 b0 = double2x4(172.11981423763552, -77.141104972521362, -325.8353723612779, -450.60868117334724, -261.26215398556656, -122.44949847201326, -93.210781379235357, -442.00522705633438); + double2x4 r0 = double2x4(1.4307809383918566, 3.4982144685336105, 1.3860359070548143, 0.016396715535066435, 1.1796794220427942, 3.0493780159501847, -3.8667054335113131, -0.05839235149599218); + TestUtils.AreEqual(a0 / b0, r0); + + double2x4 a1 = double2x4(-274.050461181463, 127.53858977534742, -447.6717600522897, -137.4586017771897, -136.13317424437645, 12.43763423545181, 228.51298319013461, 356.9723681681661); + double2x4 b1 = double2x4(484.36271380091216, -390.78178686219348, 402.02531714086672, 316.65072193585831, 397.15440744774151, -303.26218643005109, -118.59124451437555, -81.650312223308845); + double2x4 r1 = double2x4(-0.56579594872388561, -0.32636779415802974, -1.1135412148569459, -0.43410165287743668, -0.3427714050039572, -0.041012809351094658, -1.9268959030313104, -4.37196574572633); + TestUtils.AreEqual(a1 / b1, r1); + + double2x4 a2 = double2x4(-24.762040865031111, 411.66839356518744, -204.07890067066944, 11.365393882321882, 82.152295389283609, 37.389483230835481, 394.26582903147948, -429.91279645912016); + double2x4 b2 = double2x4(-84.346871176896116, -488.41943549011808, 404.16049999937434, -136.72883731533256, -19.832707652744261, -102.6072290421497, 166.11604960547572, -112.84016590604568); + double2x4 r2 = double2x4(0.29357391115432163, -0.84285833783843456, -0.50494519051462317, -0.083123605125890912, -4.1422632162843458, -0.36439423985883462, 2.3734361006528726, 3.8099270149698223); + TestUtils.AreEqual(a2 / b2, r2); + + double2x4 a3 = double2x4(315.37384071730719, -122.66599255551864, 447.52615067340719, -210.48151574399395, -202.42158398517483, -453.00793072814491, 173.7269934032704, -167.1216643634819); + double2x4 b3 = double2x4(-218.2096851888158, 458.51754042995981, 119.5872405132219, 356.24043218988948, -74.506851469402591, -336.77393332904853, -216.12631593277973, 322.385657699027); + double2x4 r3 = double2x4(-1.4452788401413792, -0.26752737188743669, 3.7422566885296384, -0.59084117557941718, 2.7168183864044027, 1.3451395309907455, -0.80382156450260089, -0.51839050643966134); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void double2x4_operator_div_wide_scalar() + { + double2x4 a0 = double2x4(-244.51745116175965, 69.112274917360537, -333.02311888943575, 257.39682519500923, 403.24561257066466, 154.34436066185322, 131.52659160062979, -261.88639200007844); + double b0 = (-60.024377612408443); + double2x4 r0 = double2x4(4.0736357608014941, -1.1514034408425655, 5.5481311449798705, -4.2882048166676752, -6.7180307170282818, -2.5713612835520117, -2.1912195816494422, 4.3630005410658415); + TestUtils.AreEqual(a0 / b0, r0); + + double2x4 a1 = double2x4(-348.92380516087815, 210.55792174607416, 287.64239968342815, 504.37224626185946, 491.78708600056689, -26.63160015392657, -253.23667275776933, 272.89512098622276); + double b1 = (-275.53868187383688); + double2x4 r1 = double2x4(1.26633328862567, -0.76416828415577609, -1.0439274722782237, -1.8304952423805252, -1.7848204929199212, 0.096652854593100634, 0.91906033314669355, -0.990405844763297); + TestUtils.AreEqual(a1 / b1, r1); + + double2x4 a2 = double2x4(178.09617313095191, -502.64601611655485, -84.324793139623864, -174.69034036187935, 83.796309271732525, 197.04206690427009, 317.16826525198678, 403.38711781212464); + double b2 = (-460.87559030059521); + double2x4 r2 = double2x4(-0.3864300407291974, 1.0906327579395469, 0.18296649879987137, 0.37904012284083372, -0.18181980351156884, -0.42753851809715948, -0.68818629566630174, -0.87526249231169939); + TestUtils.AreEqual(a2 / b2, r2); + + double2x4 a3 = double2x4(81.646461763254592, -413.56048102563273, 207.34099803089214, 358.5621036768714, 20.749072799807891, -68.577131064877449, 310.70246257945075, 417.40490193730443); + double b3 = (60.606869964211683); + double2x4 r3 = double2x4(1.3471486287192653, -6.8236568110156472, 3.4210807809960628, 5.9161957033683157, 0.34235512924624228, -1.1315075519552849, 5.1265221708845941, 6.88708890896002); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void double2x4_operator_div_scalar_wide() + { + double a0 = (41.737658758525527); + double2x4 b0 = double2x4(-422.676129776368, 248.12963235011773, 449.39137741988122, 245.85813796047967, -326.62061253498337, 163.71510489457989, 333.664472020075, 38.291076916405473); + double2x4 r0 = double2x4(-0.098746193168297289, 0.1682090863683405, 0.092875967042706856, 0.16976317767945767, -0.12778635871933872, 0.25494079355354177, 0.12508871114097631, 1.0900100524632514); + TestUtils.AreEqual(a0 / b0, r0); + + double a1 = (-472.97976062864984); + double2x4 b1 = double2x4(192.23013958345643, -200.29686960964318, -490.18150376257557, -211.10257468517057, -322.85234108700058, -137.98529035317961, 84.32973555677097, 355.06345550858578); + double2x4 r1 = double2x4(-2.4604870061143891, 2.3613936730535827, 0.96490740062224467, 2.2405210421238673, 1.4650033480822544, 3.4277549398058063, -5.6086949343062837, -1.332099243925746); + TestUtils.AreEqual(a1 / b1, r1); + + double a2 = (276.42724455354141); + double2x4 b2 = double2x4(-382.9880213136729, -488.647160996053, 344.84603826368505, 168.85499938244698, -44.19558837087618, 420.550703959796, -175.6152060849663, -9.2205684227964753); + double2x4 r2 = double2x4(-0.72176472675406045, -0.56569907004079412, 0.80159611502386607, 1.637068760560944, -6.2546343366637984, 0.65729825666863562, -1.574050736926506, -29.979414703991178); + TestUtils.AreEqual(a2 / b2, r2); + + double a3 = (-344.19428865248074); + double2x4 b3 = double2x4(-449.07149216582604, 117.70491724726969, -337.02741710144437, 239.39341389359595, -389.35516304027067, 242.71606718875285, 496.27646445495839, 91.745798392102984); + double2x4 r3 = double2x4(0.766457668003967, -2.9242133353648381, 1.0212649511208138, -1.4377767669308814, 0.8840111068897808, -1.4180943710859133, -0.69355351967072676, -3.751608190071702); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void double2x4_operator_mod_wide_wide() + { + double2x4 a0 = double2x4(-442.30985924336585, 368.50046246522129, -1.0938966279355213, -364.67383473211612, -197.34394487987458, -34.034902350062, -101.34858350704826, 208.31857142612273); + double2x4 b0 = double2x4(-43.245045443645211, -144.19587690392319, -62.640481739603217, -336.82826510855381, -154.6102545981343, -154.02935583611452, 487.0462093237071, -469.82909105244516); + double2x4 r0 = double2x4(-9.8594048069137443, 80.1087086573749, -1.0938966279355213, -27.845569623562312, -42.73369028174028, -34.034902350062, -101.34858350704826, 208.31857142612273); + TestUtils.AreEqual(a0 % b0, r0); + + double2x4 a1 = double2x4(-140.77031404374645, 183.446989383291, -463.36838100076113, 83.839106360375467, -64.714058190916717, 295.06681050689281, 212.257051805154, 349.62829916068745); + double2x4 b1 = double2x4(-145.20377237405802, -203.38401780062543, -22.520082245823062, 224.6900237652892, -435.62674614210925, 12.095571285158144, 40.378765363422531, 345.78484813579587); + double2x4 r1 = double2x4(-140.77031404374645, 183.446989383291, -12.966736084299896, 83.839106360375467, -64.714058190916717, 4.773099663097355, 10.363224988041338, 3.8434510248915785); + TestUtils.AreEqual(a1 % b1, r1); + + double2x4 a2 = double2x4(119.87592106679267, -37.805828350505692, 142.41158515886013, 332.24425593588694, -464.19427249589671, -296.14783801517814, 225.17535863871467, -212.06027732233531); + double2x4 b2 = double2x4(-433.47126146474443, -355.64996712079733, 4.0154273528677322, 66.659781725453058, -221.85363088448236, -355.05676405274158, 357.93597118832918, 71.375334057666009); + double2x4 r2 = double2x4(119.87592106679267, -37.805828350505692, 1.8716278084895066, 65.605129034074707, -20.487010726932, -296.14783801517814, 225.17535863871467, -69.309609207003291); + TestUtils.AreEqual(a2 % b2, r2); + + double2x4 a3 = double2x4(156.98570425668061, 507.61831092630439, 270.83043897842538, 337.734341063413, 384.91584819597927, 432.51818128699347, 154.29270775350403, -37.0853169137078); + double2x4 b3 = double2x4(-131.41830188195144, -473.98760078567432, 76.2178585884244, 92.210223002457155, -368.18956130006796, -77.467150485826267, 135.23059398272574, 274.27728975670288); + double2x4 r3 = double2x4(25.56740237472917, 33.630710140630072, 42.17686321315216, 61.103672056041546, 16.7262868959113, 45.182428857862135, 19.062113770778296, -37.0853169137078); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void double2x4_operator_mod_wide_scalar() + { + double2x4 a0 = double2x4(-433.41699548876704, -5.5141427542614565, 393.39439958771425, 299.41153277988155, -120.80601626299602, -502.939041133476, -450.80766245853511, 186.09479698263794); + double b0 = (-90.499235433758827); + double2x4 r0 = double2x4(-71.420053753731736, -5.5141427542614565, 31.39745785267894, 27.913826478605074, -30.306780829237198, -50.442863964681862, -88.8107207234998, 5.0963261151202914); + TestUtils.AreEqual(a0 % b0, r0); + + double2x4 a1 = double2x4(-84.473635951277629, 433.45469041981482, -54.6001856581309, -172.33886607565864, -429.71466728193434, 222.36186109406958, 5.796394112425105, 254.51082885196); + double b1 = (-318.78148356023314); + double2x4 r1 = double2x4(-84.473635951277629, 114.67320685958168, -54.6001856581309, -172.33886607565864, -110.9331837217012, 222.36186109406958, 5.796394112425105, 254.51082885196); + TestUtils.AreEqual(a1 % b1, r1); + + double2x4 a2 = double2x4(-433.09369703433185, -75.356399809641971, 252.28909385031511, -69.403906139267576, 5.3372299696026175, -279.06042803407666, 483.55059097872606, -331.99334660730949); + double b2 = (-203.08261284748215); + double2x4 r2 = double2x4(-26.928471339367547, -75.356399809641971, 49.206481002832959, -69.403906139267576, 5.3372299696026175, -75.977815186594512, 77.385365283761757, -128.91073375982734); + TestUtils.AreEqual(a2 % b2, r2); + + double2x4 a3 = double2x4(335.99997655302286, -124.72076731767544, 38.175906437531125, 271.28698671575955, 405.77360100567978, -194.76144489774549, 235.72397314557986, 465.98487804177444); + double b3 = (67.839589388966374); + double2x4 r3 = double2x4(64.641618997157366, -56.881177928709064, 38.175906437531125, 67.768218548860432, 66.57565406084791, -59.082266119812743, 32.20520497868074, 58.947341707976193); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void double2x4_operator_mod_scalar_wide() + { + double a0 = (-396.4224028049141); + double2x4 b0 = double2x4(-159.14024384279747, 230.17333399046834, 14.779358632294134, -303.15649738123477, 399.63502020371845, 206.69470534412881, 397.04482263934096, -393.89064735634747); + double2x4 r0 = double2x4(-78.141915119319151, -166.24906881444576, -12.159078365266623, -93.265905423679328, -396.4224028049141, -189.72769746078529, -396.4224028049141, -2.5317554485666278); + TestUtils.AreEqual(a0 % b0, r0); + + double a1 = (-372.06709426085797); + double2x4 b1 = double2x4(201.01229796233224, -95.5668547598491, -258.95146882671463, 106.98357563232241, 469.3235559264773, -34.808985011097491, 184.83653434777466, 374.79425376224992); + double2x4 r1 = double2x4(-171.05479629852573, -85.366529981310691, -113.11562543414334, -51.116367363890731, -372.06709426085797, -23.977244149883063, -2.3940255653086524, -372.06709426085797); + TestUtils.AreEqual(a1 % b1, r1); + + double a2 = (-131.87271911086174); + double2x4 b2 = double2x4(-120.09286003936683, 4.506670715523228, -111.40195732535886, 391.54249710195813, -218.66887078931035, 196.37741980160467, -511.03262233689082, 499.95350598727987); + double2x4 r2 = double2x4(-11.779859071494911, -1.1792683606881269, -20.470761785502873, -131.87271911086174, -131.87271911086174, -131.87271911086174, -131.87271911086174, -131.87271911086174); + TestUtils.AreEqual(a2 % b2, r2); + + double a3 = (-433.52306505363578); + double2x4 b3 = double2x4(-163.8668559360629, 177.00401099818009, 110.65016441729392, 17.68454910148148, -95.85296754532169, -432.44096561541824, 192.69208654793545, -268.13177621929526); + double2x4 r3 = double2x4(-105.78935318150997, -79.515043057275591, -101.57257180175401, -9.093886618080262, -50.111194872349017, -1.08209943821754, -48.138891957764884, -165.39128883434051); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void double2x4_operator_plus() + { + double2x4 a0 = double2x4(271.6708086802023, -79.080240524876956, -330.98506203805334, 31.824682965793045, 315.44952860262686, 319.22218742930431, 190.32466015141677, -350.30858270745193); + double2x4 r0 = double2x4(271.6708086802023, -79.080240524876956, -330.98506203805334, 31.824682965793045, 315.44952860262686, 319.22218742930431, 190.32466015141677, -350.30858270745193); + TestUtils.AreEqual(+a0, r0); + + double2x4 a1 = double2x4(-320.51845875406565, -107.00351267075331, -428.77622075973835, 377.23016208095021, 234.77393042052813, 34.283600107898792, 258.33039414991174, 465.35593555185756); + double2x4 r1 = double2x4(-320.51845875406565, -107.00351267075331, -428.77622075973835, 377.23016208095021, 234.77393042052813, 34.283600107898792, 258.33039414991174, 465.35593555185756); + TestUtils.AreEqual(+a1, r1); + + double2x4 a2 = double2x4(309.59316530339106, -230.05266557915724, 301.78512229667285, 2.585727931273027, 350.24640981771347, 60.819777278611355, -472.44209526127304, -364.80255644619581); + double2x4 r2 = double2x4(309.59316530339106, -230.05266557915724, 301.78512229667285, 2.585727931273027, 350.24640981771347, 60.819777278611355, -472.44209526127304, -364.80255644619581); + TestUtils.AreEqual(+a2, r2); + + double2x4 a3 = double2x4(239.15236937215195, 285.80893935161123, -273.26378191321334, -206.68638310520276, -113.36231785331029, -351.7548708169511, -116.53621798219916, -496.05329274388652); + double2x4 r3 = double2x4(239.15236937215195, 285.80893935161123, -273.26378191321334, -206.68638310520276, -113.36231785331029, -351.7548708169511, -116.53621798219916, -496.05329274388652); + TestUtils.AreEqual(+a3, r3); + } + + [TestCompiler] + public static void double2x4_operator_neg() + { + double2x4 a0 = double2x4(420.22718854445372, -196.25749811728366, -335.42683068636188, 509.04366969924592, -33.014395013923945, -498.57532071442125, -495.8379526063045, -270.85946787095605); + double2x4 r0 = double2x4(-420.22718854445372, 196.25749811728366, 335.42683068636188, -509.04366969924592, 33.014395013923945, 498.57532071442125, 495.8379526063045, 270.85946787095605); + TestUtils.AreEqual(-a0, r0); + + double2x4 a1 = double2x4(19.686896571743773, -180.60051473444349, 223.38126312167446, -410.39206070936848, -395.68154186554324, -349.14948885010062, -110.9393032113739, -238.21960913307015); + double2x4 r1 = double2x4(-19.686896571743773, 180.60051473444349, -223.38126312167446, 410.39206070936848, 395.68154186554324, 349.14948885010062, 110.9393032113739, 238.21960913307015); + TestUtils.AreEqual(-a1, r1); + + double2x4 a2 = double2x4(292.54351224216794, 48.290685914592245, 88.7237785275671, 66.148520738886873, 55.707977559281517, 464.54141090090457, 499.24280213715645, 175.01502259774838); + double2x4 r2 = double2x4(-292.54351224216794, -48.290685914592245, -88.7237785275671, -66.148520738886873, -55.707977559281517, -464.54141090090457, -499.24280213715645, -175.01502259774838); + TestUtils.AreEqual(-a2, r2); + + double2x4 a3 = double2x4(196.38759169186824, 149.66006023700356, 320.3917383255399, -359.83381168909079, 22.03845144344416, -159.55426199713457, 419.82245011805674, 303.32339992342679); + double2x4 r3 = double2x4(-196.38759169186824, -149.66006023700356, -320.3917383255399, 359.83381168909079, -22.03845144344416, 159.55426199713457, -419.82245011805674, -303.32339992342679); + TestUtils.AreEqual(-a3, r3); + } + + [TestCompiler] + public static void double2x4_operator_prefix_inc() + { + double2x4 a0 = double2x4(-99.79557113526181, 458.74185082816609, 96.179026886904126, -48.552469514567633, -315.728967098393, -299.23014583216525, -323.61485853959567, -456.89028832730384); + double2x4 r0 = double2x4(-98.79557113526181, 459.74185082816609, 97.179026886904126, -47.552469514567633, -314.728967098393, -298.23014583216525, -322.61485853959567, -455.89028832730384); + TestUtils.AreEqual(++a0, r0); + + double2x4 a1 = double2x4(-76.507656371457358, 64.0964734852763, 148.67930967578627, 363.2849182390072, -115.5592263283018, -326.87781992874937, -179.89464839729231, 339.8765849265626); + double2x4 r1 = double2x4(-75.507656371457358, 65.0964734852763, 149.67930967578627, 364.2849182390072, -114.5592263283018, -325.87781992874937, -178.89464839729231, 340.8765849265626); + TestUtils.AreEqual(++a1, r1); + + double2x4 a2 = double2x4(-38.410431164507941, 261.62557304167444, 155.03081877298223, -396.65022892348946, 301.30576791488829, -221.35540328796736, -429.69815011960367, -271.28932893988178); + double2x4 r2 = double2x4(-37.410431164507941, 262.62557304167444, 156.03081877298223, -395.65022892348946, 302.30576791488829, -220.35540328796736, -428.69815011960367, -270.28932893988178); + TestUtils.AreEqual(++a2, r2); + + double2x4 a3 = double2x4(-264.38006246480165, 223.23241792583485, -71.076339993195745, -388.22791713673058, 131.28316909227669, 22.304934273615913, -480.76047228312143, 200.95175967037289); + double2x4 r3 = double2x4(-263.38006246480165, 224.23241792583485, -70.076339993195745, -387.22791713673058, 132.28316909227669, 23.304934273615913, -479.76047228312143, 201.95175967037289); + TestUtils.AreEqual(++a3, r3); + } + + [TestCompiler] + public static void double2x4_operator_postfix_inc() + { + double2x4 a0 = double2x4(322.94356623429042, 472.05246542024076, 203.48761925636211, -49.854570650427888, -31.420532002775246, 455.33662459595905, 271.45466840986842, 55.736877228942149); + double2x4 r0 = double2x4(322.94356623429042, 472.05246542024076, 203.48761925636211, -49.854570650427888, -31.420532002775246, 455.33662459595905, 271.45466840986842, 55.736877228942149); + TestUtils.AreEqual(a0++, r0); + + double2x4 a1 = double2x4(153.75031645305, -427.40105100506969, 215.11022744658874, 159.86103184514729, -333.05045262586816, 241.46487509527469, 287.22045649551808, -170.10464366250886); + double2x4 r1 = double2x4(153.75031645305, -427.40105100506969, 215.11022744658874, 159.86103184514729, -333.05045262586816, 241.46487509527469, 287.22045649551808, -170.10464366250886); + TestUtils.AreEqual(a1++, r1); + + double2x4 a2 = double2x4(-270.65246380057766, 454.48881003562769, -449.92732045144186, 209.52264294844247, -311.43587103087259, 69.731466087387616, -232.29964433996923, -341.49855271982892); + double2x4 r2 = double2x4(-270.65246380057766, 454.48881003562769, -449.92732045144186, 209.52264294844247, -311.43587103087259, 69.731466087387616, -232.29964433996923, -341.49855271982892); + TestUtils.AreEqual(a2++, r2); + + double2x4 a3 = double2x4(188.00656685047159, 25.565661203845252, -463.72565982478005, 504.44898509627626, -310.1449584020977, -117.39846258861871, 403.50871271803453, -111.27954178269931); + double2x4 r3 = double2x4(188.00656685047159, 25.565661203845252, -463.72565982478005, 504.44898509627626, -310.1449584020977, -117.39846258861871, 403.50871271803453, -111.27954178269931); + TestUtils.AreEqual(a3++, r3); + } + + [TestCompiler] + public static void double2x4_operator_prefix_dec() + { + double2x4 a0 = double2x4(-416.20121712992022, -96.637880131899351, -50.145671629414721, -207.31644759295341, 439.47906156977592, -304.40081920493435, 337.96895734312432, 246.08898293510492); + double2x4 r0 = double2x4(-417.20121712992022, -97.637880131899351, -51.145671629414721, -208.31644759295341, 438.47906156977592, -305.40081920493435, 336.96895734312432, 245.08898293510492); + TestUtils.AreEqual(--a0, r0); + + double2x4 a1 = double2x4(171.96452935597142, 298.28480710568135, 326.50782338087811, 400.720900006928, -478.03137253133178, -326.45297852459038, -24.584499132160317, 112.79684668071422); + double2x4 r1 = double2x4(170.96452935597142, 297.28480710568135, 325.50782338087811, 399.720900006928, -479.03137253133178, -327.45297852459038, -25.584499132160317, 111.79684668071422); + TestUtils.AreEqual(--a1, r1); + + double2x4 a2 = double2x4(-341.97629300783217, -79.635249413380052, -131.0041454448384, 147.89369566174867, -15.70865417258284, 188.75845274178243, 307.79193582562357, -406.667706917351); + double2x4 r2 = double2x4(-342.97629300783217, -80.635249413380052, -132.0041454448384, 146.89369566174867, -16.70865417258284, 187.75845274178243, 306.79193582562357, -407.667706917351); + TestUtils.AreEqual(--a2, r2); + + double2x4 a3 = double2x4(181.47510703908051, -505.2156915633081, -372.24192898918034, -4.0317671317754957, 83.767736235525376, -30.631410374600193, -436.90656181653333, -51.668396258572329); + double2x4 r3 = double2x4(180.47510703908051, -506.2156915633081, -373.24192898918034, -5.0317671317754957, 82.767736235525376, -31.631410374600193, -437.90656181653333, -52.668396258572329); + TestUtils.AreEqual(--a3, r3); + } + + [TestCompiler] + public static void double2x4_operator_postfix_dec() + { + double2x4 a0 = double2x4(-376.59242719066907, 16.969734438215255, -0.25066399585949739, -202.32328734282555, 409.55752940175944, 47.856652520530247, -281.11170376516492, -262.062590959511); + double2x4 r0 = double2x4(-376.59242719066907, 16.969734438215255, -0.25066399585949739, -202.32328734282555, 409.55752940175944, 47.856652520530247, -281.11170376516492, -262.062590959511); + TestUtils.AreEqual(a0--, r0); + + double2x4 a1 = double2x4(-182.40572866350681, -129.23265582380475, -332.15495768755443, -261.00890052551819, 205.46112570793423, -230.22777878038016, -483.06653784358247, 378.64123433578811); + double2x4 r1 = double2x4(-182.40572866350681, -129.23265582380475, -332.15495768755443, -261.00890052551819, 205.46112570793423, -230.22777878038016, -483.06653784358247, 378.64123433578811); + TestUtils.AreEqual(a1--, r1); + + double2x4 a2 = double2x4(487.34482287212495, -357.05418960985457, -396.30206627226528, 279.42425287860647, 115.86774092347719, -20.823201427619551, 323.40538063803933, 379.15614026559342); + double2x4 r2 = double2x4(487.34482287212495, -357.05418960985457, -396.30206627226528, 279.42425287860647, 115.86774092347719, -20.823201427619551, 323.40538063803933, 379.15614026559342); + TestUtils.AreEqual(a2--, r2); + + double2x4 a3 = double2x4(311.29903068733358, -428.25672479544613, -425.2883748604396, -194.64129671577427, -258.84836089743692, -208.98576388553982, -313.42591657928466, 178.31252797800698); + double2x4 r3 = double2x4(311.29903068733358, -428.25672479544613, -425.2883748604396, -194.64129671577427, -258.84836089743692, -208.98576388553982, -313.42591657928466, 178.31252797800698); + TestUtils.AreEqual(a3--, r3); + } + + + } +} diff --git a/package/Tests/Tests/Shared/TestDouble2x4.gen.cs.meta b/package/Tests/Tests/Shared/TestDouble2x4.gen.cs.meta new file mode 100755 index 000000000..1c44a3ff9 --- /dev/null +++ b/package/Tests/Tests/Shared/TestDouble2x4.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 93f2834619d034346a15285ea2156089 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/package/Tests/Tests/Shared/TestDouble3.gen.cs b/package/Tests/Tests/Shared/TestDouble3.gen.cs new file mode 100755 index 000000000..fba5107c3 --- /dev/null +++ b/package/Tests/Tests/Shared/TestDouble3.gen.cs @@ -0,0 +1,1062 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using NUnit.Framework; +using static Unity.Mathematics.math; +using Burst.Compiler.IL.Tests; + +namespace Unity.Mathematics.Tests +{ + [TestFixture] + public class TestDouble3 + { + [TestCompiler] + public static void double3_zero() + { + TestUtils.AreEqual(double3.zero.x, 0.0); + TestUtils.AreEqual(double3.zero.y, 0.0); + TestUtils.AreEqual(double3.zero.z, 0.0); + } + + [TestCompiler] + public static void double3_constructor() + { + double3 a = new double3(1, 2, 3); + TestUtils.AreEqual(a.x, 1); + TestUtils.AreEqual(a.y, 2); + TestUtils.AreEqual(a.z, 3); + } + + [TestCompiler] + public static void double3_scalar_constructor() + { + double3 a = new double3(17.0); + TestUtils.AreEqual(a.x, 17.0); + TestUtils.AreEqual(a.y, 17.0); + TestUtils.AreEqual(a.z, 17.0); + } + + [TestCompiler] + public static void double3_static_constructor() + { + double3 a = double3(1, 2, 3); + TestUtils.AreEqual(a.x, 1); + TestUtils.AreEqual(a.y, 2); + TestUtils.AreEqual(a.z, 3); + } + + [TestCompiler] + public static void double3_static_scalar_constructor() + { + double3 a = double3(17.0); + TestUtils.AreEqual(a.x, 17.0); + TestUtils.AreEqual(a.y, 17.0); + TestUtils.AreEqual(a.z, 17.0); + } + + [TestCompiler] + public static void double3_operator_equal_wide_wide() + { + double3 a0 = double3(-135.18925172425304, -49.094127439471947, 169.12980778940482); + double3 b0 = double3(-220.01464591734793, 66.980020792679852, 499.20158576369363); + bool3 r0 = bool3(false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + double3 a1 = double3(240.80529772527757, 314.73919382446411, 442.39301916695808); + double3 b1 = double3(-371.113114291389, 208.44865212610398, 390.80369133074009); + bool3 r1 = bool3(false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + double3 a2 = double3(177.92444881141398, 335.53340283759564, 168.1544516869609); + double3 b2 = double3(-72.443806920407269, 362.97643273089841, 194.6783255053117); + bool3 r2 = bool3(false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + double3 a3 = double3(350.72955982327903, 367.17843668869625, 46.941470406456574); + double3 b3 = double3(471.6448635867074, -404.04466719368691, -144.69675476136467); + bool3 r3 = bool3(false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void double3_operator_equal_wide_scalar() + { + double3 a0 = double3(65.671194345537174, 404.41550440546848, -269.7301577393572); + double b0 = (-155.8157547245807); + bool3 r0 = bool3(false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + double3 a1 = double3(83.630607882342588, -155.86829836474186, 314.67125597348024); + double b1 = (152.99450476141385); + bool3 r1 = bool3(false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + double3 a2 = double3(386.36515325417986, -132.63519460178691, -65.667489797653388); + double b2 = (290.04894007837811); + bool3 r2 = bool3(false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + double3 a3 = double3(-69.683271678948415, 186.84520086406042, -232.89569221851218); + double b3 = (-191.19075521789063); + bool3 r3 = bool3(false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void double3_operator_equal_scalar_wide() + { + double a0 = (36.383921878591195); + double3 b0 = double3(-400.48919958644046, -71.286823544319191, 156.97811491646712); + bool3 r0 = bool3(false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + double a1 = (-225.23872791288363); + double3 b1 = double3(499.14180993435059, -211.97992358542047, 428.31192394174263); + bool3 r1 = bool3(false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + double a2 = (-489.50133322621758); + double3 b2 = double3(-5.6915457275190988, -30.865948453017495, -362.98307221149241); + bool3 r2 = bool3(false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + double a3 = (184.50319322594589); + double3 b3 = double3(-160.47062142215231, 316.66882315122928, 390.36923879681581); + bool3 r3 = bool3(false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void double3_operator_not_equal_wide_wide() + { + double3 a0 = double3(279.99414576217259, -43.342018386042696, -465.72473523846116); + double3 b0 = double3(-460.912120318465, -476.00904844515446, 468.13642070635058); + bool3 r0 = bool3(true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + double3 a1 = double3(317.46655645848557, 85.714987079480238, 360.89050572034466); + double3 b1 = double3(-341.01254312182431, -62.658060341448561, -458.80166718866752); + bool3 r1 = bool3(true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + double3 a2 = double3(366.08152668833804, 154.5428384070018, 332.426219856565); + double3 b2 = double3(-457.73023316717251, -59.523265627922171, 3.024243117787023); + bool3 r2 = bool3(true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + double3 a3 = double3(397.11323160543725, -431.3749584776233, 489.01079319837072); + double3 b3 = double3(155.81276352508587, -19.839918384253963, -6.0169332055453992); + bool3 r3 = bool3(true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void double3_operator_not_equal_wide_scalar() + { + double3 a0 = double3(-155.44111282911206, -19.426602134214079, 174.63305409934048); + double b0 = (-393.41354173860213); + bool3 r0 = bool3(true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + double3 a1 = double3(507.9207296352464, 171.15146430356026, -58.923273352404692); + double b1 = (59.177048472304364); + bool3 r1 = bool3(true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + double3 a2 = double3(-398.17684835855704, -165.24150879925185, 270.34102333259818); + double b2 = (492.20105361016522); + bool3 r2 = bool3(true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + double3 a3 = double3(-380.24326222960059, -134.34545642433011, 458.40042302496749); + double b3 = (501.8990516615562); + bool3 r3 = bool3(true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void double3_operator_not_equal_scalar_wide() + { + double a0 = (478.35313938481409); + double3 b0 = double3(459.55319592894671, 436.45324369727314, -488.71416806090349); + bool3 r0 = bool3(true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + double a1 = (392.76794475725296); + double3 b1 = double3(-266.73665369056937, 338.55788270503183, -338.10012475498957); + bool3 r1 = bool3(true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + double a2 = (-152.3145445102428); + double3 b2 = double3(-452.82067868338, 209.43931422449612, 50.107968592135194); + bool3 r2 = bool3(true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + double a3 = (372.4343656843688); + double3 b3 = double3(-488.0213141329686, 489.74075697816011, 270.40006149485714); + bool3 r3 = bool3(true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void double3_operator_less_wide_wide() + { + double3 a0 = double3(51.710243010758518, -313.85556450200062, 283.04767359562572); + double3 b0 = double3(-261.83523881707117, -19.810742149041403, -149.25882084167506); + bool3 r0 = bool3(false, true, false); + TestUtils.AreEqual(a0 < b0, r0); + + double3 a1 = double3(235.02188621974642, 44.0783565249659, -207.25566659088042); + double3 b1 = double3(205.99822316225539, -306.02438535635565, 102.12168006884008); + bool3 r1 = bool3(false, false, true); + TestUtils.AreEqual(a1 < b1, r1); + + double3 a2 = double3(3.3829410091894943, -144.30134326978651, -69.369597705718888); + double3 b2 = double3(231.90633760760829, 179.49885305180158, 473.22488496882136); + bool3 r2 = bool3(true, true, true); + TestUtils.AreEqual(a2 < b2, r2); + + double3 a3 = double3(-135.66796762108243, -194.78736576567746, -33.473868147225062); + double3 b3 = double3(15.891647107848712, 270.04990614114786, 490.91400240869916); + bool3 r3 = bool3(true, true, true); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void double3_operator_less_wide_scalar() + { + double3 a0 = double3(-221.86977325280651, -121.54646807608498, -97.52392511140738); + double b0 = (199.06751808853244); + bool3 r0 = bool3(true, true, true); + TestUtils.AreEqual(a0 < b0, r0); + + double3 a1 = double3(479.88107775146193, 137.32880574899207, 282.96659601990439); + double b1 = (67.118990214131259); + bool3 r1 = bool3(false, false, false); + TestUtils.AreEqual(a1 < b1, r1); + + double3 a2 = double3(258.27909362422258, -288.08113278452356, 82.665427008022334); + double b2 = (-111.41316061439608); + bool3 r2 = bool3(false, true, false); + TestUtils.AreEqual(a2 < b2, r2); + + double3 a3 = double3(-361.64292042406413, 12.788020378345664, -66.703050406045747); + double b3 = (-68.088202269788951); + bool3 r3 = bool3(true, false, false); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void double3_operator_less_scalar_wide() + { + double a0 = (-250.4849370692321); + double3 b0 = double3(-377.19654887597846, -505.14754104295167, 375.92672198634909); + bool3 r0 = bool3(false, false, true); + TestUtils.AreEqual(a0 < b0, r0); + + double a1 = (110.17393474940855); + double3 b1 = double3(-118.09757452742082, -40.45089079833167, -299.74430932651478); + bool3 r1 = bool3(false, false, false); + TestUtils.AreEqual(a1 < b1, r1); + + double a2 = (31.437125935888389); + double3 b2 = double3(-458.904539560389, 13.684679276163024, -458.50690839183841); + bool3 r2 = bool3(false, false, false); + TestUtils.AreEqual(a2 < b2, r2); + + double a3 = (248.27646624682302); + double3 b3 = double3(389.23142999654237, 488.74553679337055, -221.63786731550368); + bool3 r3 = bool3(true, true, false); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void double3_operator_greater_wide_wide() + { + double3 a0 = double3(-229.29066501804192, 505.536608216137, -73.80706862071861); + double3 b0 = double3(-445.84502407808088, -420.03529210576568, 299.02440108872224); + bool3 r0 = bool3(true, true, false); + TestUtils.AreEqual(a0 > b0, r0); + + double3 a1 = double3(100.29203777215071, -419.21478124112582, -159.55974753180504); + double3 b1 = double3(-13.880978829171966, 151.56173593903043, -163.5094302461992); + bool3 r1 = bool3(true, false, true); + TestUtils.AreEqual(a1 > b1, r1); + + double3 a2 = double3(-396.7703608929973, 127.03739482119556, 489.13989733585151); + double3 b2 = double3(-391.09603733154762, 479.2837710228207, -77.674873149802409); + bool3 r2 = bool3(false, false, true); + TestUtils.AreEqual(a2 > b2, r2); + + double3 a3 = double3(51.91890885863404, 155.38475544535777, -135.63165027258526); + double3 b3 = double3(-46.5841996886694, -415.37701888353422, 71.466978344818131); + bool3 r3 = bool3(true, true, false); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void double3_operator_greater_wide_scalar() + { + double3 a0 = double3(11.156317000815761, -411.02322382993214, 385.88556188432756); + double b0 = (-302.81693877969724); + bool3 r0 = bool3(true, false, true); + TestUtils.AreEqual(a0 > b0, r0); + + double3 a1 = double3(-485.10304831206008, 405.17534632476759, 173.57509740329124); + double b1 = (-491.18003033622171); + bool3 r1 = bool3(true, true, true); + TestUtils.AreEqual(a1 > b1, r1); + + double3 a2 = double3(69.269281181166548, -367.027771405423, -86.124509613087639); + double b2 = (501.30683183172107); + bool3 r2 = bool3(false, false, false); + TestUtils.AreEqual(a2 > b2, r2); + + double3 a3 = double3(-489.09058998948456, -18.149639853346002, -236.41493498367021); + double b3 = (-172.51816066192379); + bool3 r3 = bool3(false, true, false); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void double3_operator_greater_scalar_wide() + { + double a0 = (453.54610201974685); + double3 b0 = double3(-226.20441423459187, -423.46500487973213, 409.40550227156166); + bool3 r0 = bool3(true, true, true); + TestUtils.AreEqual(a0 > b0, r0); + + double a1 = (453.87706277048073); + double3 b1 = double3(87.475727837288673, 113.79560308987072, 176.40926154721956); + bool3 r1 = bool3(true, true, true); + TestUtils.AreEqual(a1 > b1, r1); + + double a2 = (-140.44002944810319); + double3 b2 = double3(-182.48286804113673, -158.29329188088576, -162.68531830733889); + bool3 r2 = bool3(true, true, true); + TestUtils.AreEqual(a2 > b2, r2); + + double a3 = (-193.328676075362); + double3 b3 = double3(230.18129955519987, -102.58784227379965, 392.5205878655056); + bool3 r3 = bool3(false, false, false); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void double3_operator_less_equal_wide_wide() + { + double3 a0 = double3(240.09053169940159, 462.2131528622532, 293.08251561461134); + double3 b0 = double3(-81.203838624620744, 493.63743876555816, -411.47211451617636); + bool3 r0 = bool3(false, true, false); + TestUtils.AreEqual(a0 <= b0, r0); + + double3 a1 = double3(-427.87067361728782, -405.5227226715175, 204.59190211286386); + double3 b1 = double3(99.164449499530974, -295.66769875943089, -480.46254824123463); + bool3 r1 = bool3(true, true, false); + TestUtils.AreEqual(a1 <= b1, r1); + + double3 a2 = double3(294.670105832941, -327.56444445604666, -456.12326667091031); + double3 b2 = double3(74.414040361723892, 260.916124226952, 306.17329730939741); + bool3 r2 = bool3(false, true, true); + TestUtils.AreEqual(a2 <= b2, r2); + + double3 a3 = double3(282.3012408140587, 421.8811549720732, -311.71284809322697); + double3 b3 = double3(139.56480438055689, -505.75247955031341, -489.62680958659706); + bool3 r3 = bool3(false, false, false); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void double3_operator_less_equal_wide_scalar() + { + double3 a0 = double3(309.1924356469849, 69.673792633076118, -101.72418622939114); + double b0 = (292.92427148154206); + bool3 r0 = bool3(false, true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + double3 a1 = double3(-315.97240629604664, 424.15386577330241, -410.87006945669191); + double b1 = (-346.01106731314724); + bool3 r1 = bool3(false, false, true); + TestUtils.AreEqual(a1 <= b1, r1); + + double3 a2 = double3(-483.90265320423185, 320.44249287268258, -257.87003791419329); + double b2 = (183.82114538169515); + bool3 r2 = bool3(true, false, true); + TestUtils.AreEqual(a2 <= b2, r2); + + double3 a3 = double3(-386.801748694294, 349.25012962392077, 485.31159304329731); + double b3 = (-182.9388249772316); + bool3 r3 = bool3(true, false, false); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void double3_operator_less_equal_scalar_wide() + { + double a0 = (-511.15238141974078); + double3 b0 = double3(51.159012579898786, 340.44369022010062, 312.81429519914752); + bool3 r0 = bool3(true, true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + double a1 = (354.19252626699983); + double3 b1 = double3(136.39671165142056, -94.767871185563422, 288.544332877055); + bool3 r1 = bool3(false, false, false); + TestUtils.AreEqual(a1 <= b1, r1); + + double a2 = (304.04282369466625); + double3 b2 = double3(-148.61806089646092, -506.30010127755816, 27.581254256694251); + bool3 r2 = bool3(false, false, false); + TestUtils.AreEqual(a2 <= b2, r2); + + double a3 = (48.471146844546865); + double3 b3 = double3(104.88351326104419, -488.6858386884843, -480.43516968210935); + bool3 r3 = bool3(true, false, false); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void double3_operator_greater_equal_wide_wide() + { + double3 a0 = double3(-386.59181302906563, -157.12078221008215, 391.01526445477054); + double3 b0 = double3(153.44301350109424, 49.892483019219981, 78.025787628267835); + bool3 r0 = bool3(false, false, true); + TestUtils.AreEqual(a0 >= b0, r0); + + double3 a1 = double3(-511.88687133783793, -5.4220387960886569, 287.64527501149348); + double3 b1 = double3(138.81373292711271, -225.51057802211056, -339.35611335344436); + bool3 r1 = bool3(false, true, true); + TestUtils.AreEqual(a1 >= b1, r1); + + double3 a2 = double3(-122.53520184500849, 7.4814426933794493, 152.94642765491574); + double3 b2 = double3(-373.302078182484, 364.9358934671319, -322.71539870030961); + bool3 r2 = bool3(true, false, true); + TestUtils.AreEqual(a2 >= b2, r2); + + double3 a3 = double3(48.986223482054811, 57.338148859021317, 300.46493138953338); + double3 b3 = double3(125.47818165900105, -25.776589167200314, 297.51890792395864); + bool3 r3 = bool3(false, true, true); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void double3_operator_greater_equal_wide_scalar() + { + double3 a0 = double3(495.457423679278, -14.345115906719627, -463.47478053694346); + double b0 = (189.20512804258851); + bool3 r0 = bool3(true, false, false); + TestUtils.AreEqual(a0 >= b0, r0); + + double3 a1 = double3(217.51749215718246, -377.65869706573835, 53.815095211293169); + double b1 = (-246.86571776441565); + bool3 r1 = bool3(true, false, true); + TestUtils.AreEqual(a1 >= b1, r1); + + double3 a2 = double3(-123.33294373533357, 252.99433410027734, -116.44038277326172); + double b2 = (-221.50546441856096); + bool3 r2 = bool3(true, true, true); + TestUtils.AreEqual(a2 >= b2, r2); + + double3 a3 = double3(-395.36331028275345, -287.00733889593153, 355.83704559683667); + double b3 = (164.77259667439978); + bool3 r3 = bool3(false, false, true); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void double3_operator_greater_equal_scalar_wide() + { + double a0 = (215.43534169692327); + double3 b0 = double3(204.80295310020585, -101.10404853760451, -122.05503827056617); + bool3 r0 = bool3(true, true, true); + TestUtils.AreEqual(a0 >= b0, r0); + + double a1 = (-70.456147941973143); + double3 b1 = double3(-239.62025677395064, -185.99272426683115, -455.61258027312); + bool3 r1 = bool3(true, true, true); + TestUtils.AreEqual(a1 >= b1, r1); + + double a2 = (276.66581476697036); + double3 b2 = double3(79.39918831707871, 416.42054791768112, 379.27350801009379); + bool3 r2 = bool3(true, false, false); + TestUtils.AreEqual(a2 >= b2, r2); + + double a3 = (-439.51472612820322); + double3 b3 = double3(67.141009600433108, -74.560638224035813, -367.25635474140586); + bool3 r3 = bool3(false, false, false); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void double3_operator_add_wide_wide() + { + double3 a0 = double3(465.14837644302679, 278.91072548502621, -277.52992237616792); + double3 b0 = double3(483.99436186440028, -204.07667193379098, -365.67356007437854); + double3 r0 = double3(949.14273830742707, 74.834053551235229, -643.20348245054652); + TestUtils.AreEqual(a0 + b0, r0); + + double3 a1 = double3(-65.197214395365336, -473.32437561141529, -4.6955420992782138); + double3 b1 = double3(-509.92086076639634, -270.69751108377125, 486.76397846954126); + double3 r1 = double3(-575.11807516176168, -744.02188669518659, 482.06843637026304); + TestUtils.AreEqual(a1 + b1, r1); + + double3 a2 = double3(-470.53676698661258, -109.95011453980118, -178.70145782209067); + double3 b2 = double3(267.49177587567442, 251.6425212601398, 244.4951094335388); + double3 r2 = double3(-203.04499111093816, 141.69240672033862, 65.793651611448126); + TestUtils.AreEqual(a2 + b2, r2); + + double3 a3 = double3(-420.03378339299644, 290.71109236903078, -446.5296368294068); + double3 b3 = double3(-78.675763882079991, 352.20551340291536, 82.779185095233515); + double3 r3 = double3(-498.70954727507643, 642.91660577194614, -363.75045173417328); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void double3_operator_add_wide_scalar() + { + double3 a0 = double3(459.89829728561369, -447.66336104258119, -94.438627525436971); + double b0 = (500.99725913489112); + double3 r0 = double3(960.89555642050482, 53.333898092309937, 406.55863160945415); + TestUtils.AreEqual(a0 + b0, r0); + + double3 a1 = double3(126.42986279652916, -349.64130060264904, -2.7912590516690443); + double b1 = (-36.254356162741033); + double3 r1 = double3(90.175506633788132, -385.89565676539007, -39.045615214410077); + TestUtils.AreEqual(a1 + b1, r1); + + double3 a2 = double3(-478.41478489265535, 268.092225914864, 41.32102133767728); + double b2 = (443.11525246273504); + double3 r2 = double3(-35.299532429920305, 711.207478377599, 484.43627380041232); + TestUtils.AreEqual(a2 + b2, r2); + + double3 a3 = double3(-471.25607584009697, 78.985822952811532, 202.14799151297098); + double b3 = (-2.6649749291431704); + double3 r3 = double3(-473.92105076924014, 76.320848023668361, 199.4830165838278); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void double3_operator_add_scalar_wide() + { + double a0 = (-325.51276484388518); + double3 b0 = double3(-264.08813178915909, -106.00925998855814, -355.44729320865463); + double3 r0 = double3(-589.60089663304427, -431.52202483244332, -680.96005805253981); + TestUtils.AreEqual(a0 + b0, r0); + + double a1 = (-447.33029362528134); + double3 b1 = double3(-158.70021040677102, -199.48369154682553, 180.31809123806568); + double3 r1 = double3(-606.03050403205236, -646.81398517210687, -267.01220238721567); + TestUtils.AreEqual(a1 + b1, r1); + + double a2 = (337.57936898692481); + double3 b2 = double3(-37.05501486596421, 230.80498014707348, -140.17433339924287); + double3 r2 = double3(300.5243541209606, 568.38434913399828, 197.40503558768194); + TestUtils.AreEqual(a2 + b2, r2); + + double a3 = (18.02419591789328); + double3 b3 = double3(-138.61435825126915, 26.904163611542458, -374.53758233345); + double3 r3 = double3(-120.59016233337587, 44.928359529435738, -356.51338641555674); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void double3_operator_sub_wide_wide() + { + double3 a0 = double3(133.37101680290471, -131.8321183341705, -197.29314407952739); + double3 b0 = double3(123.46028739002543, 359.56010048443454, -48.24847819667707); + double3 r0 = double3(9.9107294128792773, -491.39221881860504, -149.04466588285032); + TestUtils.AreEqual(a0 - b0, r0); + + double3 a1 = double3(-485.286571013409, -337.55033103448818, 471.66710470228782); + double3 b1 = double3(478.97904680621764, 207.15832886805686, 142.36730462981723); + double3 r1 = double3(-964.26561781962664, -544.708659902545, 329.29980007247059); + TestUtils.AreEqual(a1 - b1, r1); + + double3 a2 = double3(146.5066197600712, -130.58504372955537, 110.77707367333448); + double3 b2 = double3(-125.60551005490379, -65.299004823574307, -477.876434787119); + double3 r2 = double3(272.112129814975, -65.286038905981059, 588.65350846045351); + TestUtils.AreEqual(a2 - b2, r2); + + double3 a3 = double3(-235.54160486699158, 78.879356659427, -347.68616811730254); + double3 b3 = double3(164.50000031501986, 428.00958915614035, 72.6278169493321); + double3 r3 = double3(-400.04160518201144, -349.13023249671335, -420.31398506663464); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void double3_operator_sub_wide_scalar() + { + double3 a0 = double3(48.936717294592768, 410.45158953706346, -364.44171612544062); + double b0 = (-291.59041442144212); + double3 r0 = double3(340.52713171603489, 702.04200395850557, -72.8513017039985); + TestUtils.AreEqual(a0 - b0, r0); + + double3 a1 = double3(163.98060353285666, 110.91942339340198, 204.35834441164434); + double b1 = (-460.06732318367222); + double3 r1 = double3(624.04792671652888, 570.9867465770742, 664.42566759531655); + TestUtils.AreEqual(a1 - b1, r1); + + double3 a2 = double3(180.26971420099483, -470.26204297983185, 400.53491968686455); + double b2 = (-377.92569344952972); + double3 r2 = double3(558.19540765052454, -92.33634953030213, 778.46061313639427); + TestUtils.AreEqual(a2 - b2, r2); + + double3 a3 = double3(461.50756499800252, 21.605312595891405, 246.35072171238755); + double b3 = (-246.28726660753006); + double3 r3 = double3(707.79483160553264, 267.89257920342146, 492.63798831991761); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void double3_operator_sub_scalar_wide() + { + double a0 = (294.58645905861); + double3 b0 = double3(452.35251757705237, 256.98980891750648, -275.159888634067); + double3 r0 = double3(-157.76605851844238, 37.59665014110351, 569.746347692677); + TestUtils.AreEqual(a0 - b0, r0); + + double a1 = (-89.027518075437968); + double3 b1 = double3(488.22838829840919, -333.21728030462623, -64.232989102710519); + double3 r1 = double3(-577.25590637384721, 244.18976222918826, -24.794528972727448); + TestUtils.AreEqual(a1 - b1, r1); + + double a2 = (-66.041730196234653); + double3 b2 = double3(341.20492831859963, -385.775056303374, 75.394746577085357); + double3 r2 = double3(-407.24665851483428, 319.73332610713936, -141.43647677332); + TestUtils.AreEqual(a2 - b2, r2); + + double a3 = (354.94371645289641); + double3 b3 = double3(169.13141520746581, 88.216608326982964, 1.7350065716240124); + double3 r3 = double3(185.8123012454306, 266.72710812591345, 353.2087098812724); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void double3_operator_mul_wide_wide() + { + double3 a0 = double3(-394.78053898121254, -412.37219519744264, -25.874570143350638); + double3 b0 = double3(-149.76397831261346, -345.04538671348496, -284.33404721148963); + double3 r0 = double3(59123.904078224172, 142287.1235617903, 7357.0212487164608); + TestUtils.AreEqual(a0 * b0, r0); + + double3 a1 = double3(-241.04595886964626, -93.675987525692221, 244.15999257013198); + double3 b1 = double3(267.97923648915219, -326.64849558782225, -150.68967754705329); + double3 r1 = double3(-64595.312016683383, 30599.120397970968, -36792.390550284115); + TestUtils.AreEqual(a1 * b1, r1); + + double3 a2 = double3(494.68846606402121, 53.537962700025105, -239.49641167349017); + double3 b2 = double3(207.73243794577775, 366.19289248352538, 358.88076202891807); + double3 r2 = double3(102762.84107913627, 19605.221418797286, -85950.654724573629); + TestUtils.AreEqual(a2 * b2, r2); + + double3 a3 = double3(236.67584644848284, -211.85620818466703, -216.65482030466887); + double3 b3 = double3(214.85359368792433, 253.42280900358355, -307.71382751488773); + double3 r3 = double3(50850.6561485879, -53689.195383006307, 66667.684005499876); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void double3_operator_mul_wide_scalar() + { + double3 a0 = double3(328.20302191758674, -290.10672272839895, 236.99572454998065); + double b0 = (192.21119055161773); + double3 r0 = double3(63084.293585418032, -55761.758562653624, 45553.230371395039); + TestUtils.AreEqual(a0 * b0, r0); + + double3 a1 = double3(120.48136692889102, 134.86723214707672, -477.31047104173825); + double b1 = (357.90315811610924); + double3 r1 = double3(43120.661717995856, 48269.408311817213, -170830.92498772583); + TestUtils.AreEqual(a1 * b1, r1); + + double3 a2 = double3(-438.272912467957, -238.40500103608008, 422.08249374017237); + double b2 = (-46.729179165665585); + double3 r2 = double3(20480.133450173231, 11140.470007405675, -19723.568472675437); + TestUtils.AreEqual(a2 * b2, r2); + + double3 a3 = double3(-48.83483722099794, 119.35660391643489, -196.995807977857); + double b3 = (355.30832998608628); + double3 r3 = double3(-17351.424458135145, 42408.39561035925, -69994.2515468721); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void double3_operator_mul_scalar_wide() + { + double a0 = (-464.534700371574); + double3 b0 = double3(329.36093846399376, -198.68342671109525, 184.07942518223047); + double3 r0 = double3(-152999.58486347177, 92295.346096036214, -85511.280621599); + TestUtils.AreEqual(a0 * b0, r0); + + double a1 = (256.01618754864489); + double3 b1 = double3(266.22629297255833, -97.894749448585685, 159.74810583877752); + double3 r1 = double3(68158.240552042975, -25062.640534856713, 40898.101024961237); + TestUtils.AreEqual(a1 * b1, r1); + + double a2 = (-351.82222263506719); + double3 b2 = double3(491.80157660497423, 49.902031206480274, 424.46256871915546); + double3 r2 = double3(-173026.72377659229, -17556.643533068374, -149335.36435216322); + TestUtils.AreEqual(a2 * b2, r2); + + double a3 = (160.11807616060514); + double3 b3 = double3(-395.99208492599058, 125.20168858636248, -265.01581991138676); + double3 r3 = double3(-63405.490813176577, 20047.053508507553, -42433.823236336641); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void double3_operator_div_wide_wide() + { + double3 a0 = double3(246.26574933075619, -269.85612953354428, -451.61952588130697); + double3 b0 = double3(172.11981423763552, -77.141104972521362, -325.8353723612779); + double3 r0 = double3(1.4307809383918566, 3.4982144685336105, 1.3860359070548143); + TestUtils.AreEqual(a0 / b0, r0); + + double3 a1 = double3(-7.38850236283082, -308.20558681534862, -373.394808704683); + double3 b1 = double3(-450.60868117334724, -261.26215398556656, -122.44949847201326); + double3 r1 = double3(0.016396715535066435, 1.1796794220427942, 3.0493780159501847); + TestUtils.AreEqual(a1 / b1, r1); + + double3 a2 = double3(360.41863482092447, 25.80972458133931, -274.050461181463); + double3 b2 = double3(-93.210781379235357, -442.00522705633438, 484.36271380091216); + double3 r2 = double3(-3.8667054335113131, -0.05839235149599218, -0.56579594872388561); + TestUtils.AreEqual(a2 / b2, r2); + + double3 a3 = double3(127.53858977534742, -447.6717600522897, -137.4586017771897); + double3 b3 = double3(-390.78178686219348, 402.02531714086672, 316.65072193585831); + double3 r3 = double3(-0.32636779415802974, -1.1135412148569459, -0.43410165287743668); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void double3_operator_div_wide_scalar() + { + double3 a0 = double3(-244.51745116175965, 69.112274917360537, -333.02311888943575); + double b0 = (-60.024377612408443); + double3 r0 = double3(4.0736357608014941, -1.1514034408425655, 5.5481311449798705); + TestUtils.AreEqual(a0 / b0, r0); + + double3 a1 = double3(257.39682519500923, 154.34436066185322, 131.52659160062979); + double b1 = (403.24561257066466); + double3 r1 = double3(0.63831277308665835, 0.38275521382097105, 0.32616992597180733); + TestUtils.AreEqual(a1 / b1, r1); + + double3 a2 = double3(-261.88639200007844, -275.53868187383688, 210.55792174607416); + double b2 = (-348.92380516087815); + double3 r2 = double3(0.75055467161184541, 0.78968152300985706, -0.60344957446796244); + TestUtils.AreEqual(a2 / b2, r2); + + double3 a3 = double3(287.64239968342815, 491.78708600056689, -26.63160015392657); + double b3 = (504.37224626185946); + double3 r3 = double3(0.57029783421923308, 0.97504787316398334, -0.052801478176695719); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void double3_operator_div_scalar_wide() + { + double a0 = (41.737658758525527); + double3 b0 = double3(-422.676129776368, 248.12963235011773, 449.39137741988122); + double3 r0 = double3(-0.098746193168297289, 0.1682090863683405, 0.092875967042706856); + TestUtils.AreEqual(a0 / b0, r0); + + double a1 = (245.85813796047967); + double3 b1 = double3(-326.62061253498337, 163.71510489457989, 333.664472020075); + double3 r1 = double3(-0.75273307478151441, 1.5017437646867933, 0.73684242278478951); + TestUtils.AreEqual(a1 / b1, r1); + + double a2 = (38.291076916405473); + double3 b2 = double3(-472.97976062864984, 192.23013958345643, -200.29686960964318); + double3 r2 = double3(-0.080957115089896864, 0.19919392973119834, -0.19117161936195318); + TestUtils.AreEqual(a2 / b2, r2); + + double a3 = (-490.18150376257557); + double3 b3 = double3(-211.10257468517057, -322.85234108700058, -137.98529035317961); + double3 r3 = double3(2.3220062781972768, 1.5182838758802248, 3.5524185404685804); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void double3_operator_mod_wide_wide() + { + double3 a0 = double3(-442.30985924336585, 368.50046246522129, -1.0938966279355213); + double3 b0 = double3(-43.245045443645211, -144.19587690392319, -62.640481739603217); + double3 r0 = double3(-9.8594048069137443, 80.1087086573749, -1.0938966279355213); + TestUtils.AreEqual(a0 % b0, r0); + + double3 a1 = double3(-364.67383473211612, -197.34394487987458, -34.034902350062); + double3 b1 = double3(-336.82826510855381, -154.6102545981343, -154.02935583611452); + double3 r1 = double3(-27.845569623562312, -42.73369028174028, -34.034902350062); + TestUtils.AreEqual(a1 % b1, r1); + + double3 a2 = double3(-101.34858350704826, 208.31857142612273, -140.77031404374645); + double3 b2 = double3(487.0462093237071, -469.82909105244516, -145.20377237405802); + double3 r2 = double3(-101.34858350704826, 208.31857142612273, -140.77031404374645); + TestUtils.AreEqual(a2 % b2, r2); + + double3 a3 = double3(183.446989383291, -463.36838100076113, 83.839106360375467); + double3 b3 = double3(-203.38401780062543, -22.520082245823062, 224.6900237652892); + double3 r3 = double3(183.446989383291, -12.966736084299896, 83.839106360375467); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void double3_operator_mod_wide_scalar() + { + double3 a0 = double3(-433.41699548876704, -5.5141427542614565, 393.39439958771425); + double b0 = (-90.499235433758827); + double3 r0 = double3(-71.420053753731736, -5.5141427542614565, 31.39745785267894); + TestUtils.AreEqual(a0 % b0, r0); + + double3 a1 = double3(299.41153277988155, -502.939041133476, -450.80766245853511); + double b1 = (-120.80601626299602); + double3 r1 = double3(57.799500253889505, -19.714976081491898, -88.389613669547032); + TestUtils.AreEqual(a1 % b1, r1); + + double3 a2 = double3(186.09479698263794, -318.78148356023314, 433.45469041981482); + double b2 = (-84.473635951277629); + double3 r2 = double3(17.147525080082687, -65.360575706400255, 11.086510663426679); + TestUtils.AreEqual(a2 % b2, r2); + + double3 a3 = double3(-54.6001856581309, -429.71466728193434, 222.36186109406958); + double b3 = (-172.33886607565864); + double3 r3 = double3(-54.6001856581309, -85.036935130617053, 50.022995018410938); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void double3_operator_mod_scalar_wide() + { + double a0 = (-396.4224028049141); + double3 b0 = double3(-159.14024384279747, 230.17333399046834, 14.779358632294134); + double3 r0 = double3(-78.141915119319151, -166.24906881444576, -12.159078365266623); + TestUtils.AreEqual(a0 % b0, r0); + + double a1 = (-303.15649738123477); + double3 b1 = double3(399.63502020371845, 206.69470534412881, 397.04482263934096); + double3 r1 = double3(-303.15649738123477, -96.461792037105965, -303.15649738123477); + TestUtils.AreEqual(a1 % b1, r1); + + double a2 = (-393.89064735634747); + double3 b2 = double3(-372.06709426085797, 201.01229796233224, -95.5668547598491); + double3 r2 = double3(-21.8235530954895, -192.87834939401523, -11.6232283169511); + TestUtils.AreEqual(a2 % b2, r2); + + double a3 = (-258.95146882671463); + double3 b3 = double3(106.98357563232241, 469.3235559264773, -34.808985011097491); + double3 r3 = double3(-44.984317562069805, -258.95146882671463, -15.288573749032196); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void double3_operator_plus() + { + double3 a0 = double3(271.6708086802023, -79.080240524876956, -330.98506203805334); + double3 r0 = double3(271.6708086802023, -79.080240524876956, -330.98506203805334); + TestUtils.AreEqual(+a0, r0); + + double3 a1 = double3(31.824682965793045, 319.22218742930431, 190.32466015141677); + double3 r1 = double3(31.824682965793045, 319.22218742930431, 190.32466015141677); + TestUtils.AreEqual(+a1, r1); + + double3 a2 = double3(-350.30858270745193, 102.0544069288552, -107.00351267075331); + double3 r2 = double3(-350.30858270745193, 102.0544069288552, -107.00351267075331); + TestUtils.AreEqual(+a2, r2); + + double3 a3 = double3(-428.77622075973835, 234.77393042052813, 34.283600107898792); + double3 r3 = double3(-428.77622075973835, 234.77393042052813, 34.283600107898792); + TestUtils.AreEqual(+a3, r3); + } + + [TestCompiler] + public static void double3_operator_neg() + { + double3 a0 = double3(420.22718854445372, -196.25749811728366, -335.42683068636188); + double3 r0 = double3(-420.22718854445372, 196.25749811728366, 335.42683068636188); + TestUtils.AreEqual(-a0, r0); + + double3 a1 = double3(509.04366969924592, -498.57532071442125, -495.8379526063045); + double3 r1 = double3(-509.04366969924592, 498.57532071442125, 495.8379526063045); + TestUtils.AreEqual(-a1, r1); + + double3 a2 = double3(-270.85946787095605, 268.23670662019254, -180.60051473444349); + double3 r2 = double3(270.85946787095605, -268.23670662019254, 180.60051473444349); + TestUtils.AreEqual(-a2, r2); + + double3 a3 = double3(223.38126312167446, -395.68154186554324, -349.14948885010062); + double3 r3 = double3(-223.38126312167446, 395.68154186554324, 349.14948885010062); + TestUtils.AreEqual(-a3, r3); + } + + [TestCompiler] + public static void double3_operator_prefix_inc() + { + double3 a0 = double3(-99.79557113526181, 458.74185082816609, 96.179026886904126); + double3 r0 = double3(-98.79557113526181, 459.74185082816609, 97.179026886904126); + TestUtils.AreEqual(++a0, r0); + + double3 a1 = double3(-48.552469514567633, -299.23014583216525, -323.61485853959567); + double3 r1 = double3(-47.552469514567633, -298.23014583216525, -322.61485853959567); + TestUtils.AreEqual(++a1, r1); + + double3 a2 = double3(-456.89028832730384, -305.58477344437722, 64.0964734852763); + double3 r2 = double3(-455.89028832730384, -304.58477344437722, 65.0964734852763); + TestUtils.AreEqual(++a2, r2); + + double3 a3 = double3(148.67930967578627, -115.5592263283018, -326.87781992874937); + double3 r3 = double3(149.67930967578627, -114.5592263283018, -325.87781992874937); + TestUtils.AreEqual(++a3, r3); + } + + [TestCompiler] + public static void double3_operator_postfix_inc() + { + double3 a0 = double3(322.94356623429042, 472.05246542024076, 203.48761925636211); + double3 r0 = double3(322.94356623429042, 472.05246542024076, 203.48761925636211); + TestUtils.AreEqual(a0++, r0); + + double3 a1 = double3(-49.854570650427888, 455.33662459595905, 271.45466840986842); + double3 r1 = double3(-49.854570650427888, 455.33662459595905, 271.45466840986842); + TestUtils.AreEqual(a1++, r1); + + double3 a2 = double3(55.736877228942149, -174.17301925186672, -427.40105100506969); + double3 r2 = double3(55.736877228942149, -174.17301925186672, -427.40105100506969); + TestUtils.AreEqual(a2++, r2); + + double3 a3 = double3(215.11022744658874, -333.05045262586816, 241.46487509527469); + double3 r3 = double3(215.11022744658874, -333.05045262586816, 241.46487509527469); + TestUtils.AreEqual(a3++, r3); + } + + [TestCompiler] + public static void double3_operator_prefix_dec() + { + double3 a0 = double3(-416.20121712992022, -96.637880131899351, -50.145671629414721); + double3 r0 = double3(-417.20121712992022, -97.637880131899351, -51.145671629414721); + TestUtils.AreEqual(--a0, r0); + + double3 a1 = double3(-207.31644759295341, -304.40081920493435, 337.96895734312432); + double3 r1 = double3(-208.31644759295341, -305.40081920493435, 336.96895734312432); + TestUtils.AreEqual(--a1, r1); + + double3 a2 = double3(246.08898293510492, -227.44280134301761, 298.28480710568135); + double3 r2 = double3(245.08898293510492, -228.44280134301761, 297.28480710568135); + TestUtils.AreEqual(--a2, r2); + + double3 a3 = double3(326.50782338087811, -478.03137253133178, -326.45297852459038); + double3 r3 = double3(325.50782338087811, -479.03137253133178, -327.45297852459038); + TestUtils.AreEqual(--a3, r3); + } + + [TestCompiler] + public static void double3_operator_postfix_dec() + { + double3 a0 = double3(-376.59242719066907, 16.969734438215255, -0.25066399585949739); + double3 r0 = double3(-376.59242719066907, 16.969734438215255, -0.25066399585949739); + TestUtils.AreEqual(a0--, r0); + + double3 a1 = double3(-202.32328734282555, 47.856652520530247, -281.11170376516492); + double3 r1 = double3(-202.32328734282555, 47.856652520530247, -281.11170376516492); + TestUtils.AreEqual(a1--, r1); + + double3 a2 = double3(-262.062590959511, 450.12809559801974, -129.23265582380475); + double3 r2 = double3(-262.062590959511, 450.12809559801974, -129.23265582380475); + TestUtils.AreEqual(a2--, r2); + + double3 a3 = double3(-332.15495768755443, 205.46112570793423, -230.22777878038016); + double3 r3 = double3(-332.15495768755443, 205.46112570793423, -230.22777878038016); + TestUtils.AreEqual(a3--, r3); + } + + [TestCompiler] + public static void double3_shuffle_result_1() + { + double3 a = double3(0, 1, 2); + double3 b = double3(3, 4, 5); + + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftX), (0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftY), (1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftZ), (2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX), (3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY), (4)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ), (5)); + } + + [TestCompiler] + public static void double3_shuffle_result_2() + { + double3 a = double3(0, 1, 2); + double3 b = double3(3, 4, 5); + + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.RightY), double2(4, 4)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.RightX), double2(4, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftY, ShuffleComponent.RightX), double2(1, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ, ShuffleComponent.LeftZ), double2(5, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ, ShuffleComponent.LeftY), double2(5, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftY, ShuffleComponent.LeftZ), double2(1, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.LeftZ), double2(3, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ, ShuffleComponent.LeftX), double2(5, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ, ShuffleComponent.RightZ), double2(5, 5)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.LeftY), double2(4, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.RightZ), double2(4, 5)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ, ShuffleComponent.LeftX), double2(5, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.RightX), double2(4, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ, ShuffleComponent.RightY), double2(5, 4)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.LeftX), double2(3, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftY, ShuffleComponent.LeftZ), double2(1, 2)); + } + + [TestCompiler] + public static void double3_shuffle_result_3() + { + double3 a = double3(0, 1, 2); + double3 b = double3(3, 4, 5); + + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftY, ShuffleComponent.RightZ, ShuffleComponent.RightX), double3(1, 5, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.LeftX, ShuffleComponent.LeftZ), double3(4, 0, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftZ, ShuffleComponent.RightZ, ShuffleComponent.RightX), double3(2, 5, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.LeftX, ShuffleComponent.LeftY), double3(4, 0, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ, ShuffleComponent.RightY, ShuffleComponent.LeftZ), double3(5, 4, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftZ, ShuffleComponent.LeftX, ShuffleComponent.LeftY), double3(2, 0, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftZ, ShuffleComponent.RightY, ShuffleComponent.RightX), double3(2, 4, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftZ, ShuffleComponent.LeftY, ShuffleComponent.RightZ), double3(2, 1, 5)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.RightY, ShuffleComponent.RightZ), double3(4, 4, 5)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.RightX, ShuffleComponent.LeftY), double3(4, 3, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ, ShuffleComponent.RightZ, ShuffleComponent.LeftX), double3(5, 5, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ, ShuffleComponent.LeftY, ShuffleComponent.RightX), double3(5, 1, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.LeftY, ShuffleComponent.RightZ), double3(4, 1, 5)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftZ, ShuffleComponent.RightX, ShuffleComponent.RightY), double3(2, 3, 4)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.LeftX, ShuffleComponent.RightY), double3(4, 0, 4)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.LeftX, ShuffleComponent.RightZ), double3(4, 0, 5)); + } + + [TestCompiler] + public static void double3_shuffle_result_4() + { + double3 a = double3(0, 1, 2); + double3 b = double3(3, 4, 5); + + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftY, ShuffleComponent.LeftZ, ShuffleComponent.RightX, ShuffleComponent.LeftY), double4(1, 2, 3, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.LeftZ, ShuffleComponent.RightZ, ShuffleComponent.RightY), double4(4, 2, 5, 4)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.RightY, ShuffleComponent.RightZ, ShuffleComponent.LeftY), double4(4, 4, 5, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.RightX, ShuffleComponent.LeftY, ShuffleComponent.LeftY), double4(3, 3, 1, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.LeftY, ShuffleComponent.LeftY, ShuffleComponent.LeftX), double4(4, 1, 1, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.RightY, ShuffleComponent.RightX, ShuffleComponent.RightZ), double4(3, 4, 3, 5)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftY, ShuffleComponent.RightZ, ShuffleComponent.LeftX, ShuffleComponent.RightZ), double4(1, 5, 0, 5)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.LeftX, ShuffleComponent.LeftX, ShuffleComponent.LeftX), double4(4, 0, 0, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.RightZ, ShuffleComponent.LeftZ, ShuffleComponent.LeftX), double4(3, 5, 2, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.RightX, ShuffleComponent.LeftY, ShuffleComponent.RightX), double4(4, 3, 1, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftX, ShuffleComponent.LeftZ, ShuffleComponent.RightZ, ShuffleComponent.LeftX), double4(0, 2, 5, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftY, ShuffleComponent.RightY, ShuffleComponent.RightZ, ShuffleComponent.RightZ), double4(1, 4, 5, 5)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftZ, ShuffleComponent.RightX, ShuffleComponent.LeftY, ShuffleComponent.RightX), double4(2, 3, 1, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.LeftX, ShuffleComponent.LeftY, ShuffleComponent.LeftZ), double4(3, 0, 1, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ, ShuffleComponent.RightX, ShuffleComponent.LeftX, ShuffleComponent.RightY), double4(5, 3, 0, 4)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftZ, ShuffleComponent.RightZ, ShuffleComponent.LeftX, ShuffleComponent.RightY), double4(2, 5, 0, 4)); + } + + + } +} diff --git a/package/Tests/Tests/Shared/TestDouble3.gen.cs.meta b/package/Tests/Tests/Shared/TestDouble3.gen.cs.meta new file mode 100755 index 000000000..1d5e30653 --- /dev/null +++ b/package/Tests/Tests/Shared/TestDouble3.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 617e00812628df941a5b85ca46e4ca9d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/package/Tests/Tests/Shared/TestDouble3x2.gen.cs b/package/Tests/Tests/Shared/TestDouble3x2.gen.cs new file mode 100755 index 000000000..8022b755b --- /dev/null +++ b/package/Tests/Tests/Shared/TestDouble3x2.gen.cs @@ -0,0 +1,943 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using NUnit.Framework; +using static Unity.Mathematics.math; +using Burst.Compiler.IL.Tests; + +namespace Unity.Mathematics.Tests +{ + [TestFixture] + public class TestDouble3x2 + { + [TestCompiler] + public static void double3x2_zero() + { + TestUtils.AreEqual(double3x2.zero.c0.x, 0.0); + TestUtils.AreEqual(double3x2.zero.c0.y, 0.0); + TestUtils.AreEqual(double3x2.zero.c0.z, 0.0); + TestUtils.AreEqual(double3x2.zero.c1.x, 0.0); + TestUtils.AreEqual(double3x2.zero.c1.y, 0.0); + TestUtils.AreEqual(double3x2.zero.c1.z, 0.0); + } + + [TestCompiler] + public static void double3x2_operator_equal_wide_wide() + { + double3x2 a0 = double3x2(-135.18925172425304, -49.094127439471947, 169.12980778940482, 240.80529772527757, 314.73919382446411, 442.39301916695808); + double3x2 b0 = double3x2(-220.01464591734793, 66.980020792679852, 499.20158576369363, -371.113114291389, 208.44865212610398, 390.80369133074009); + bool3x2 r0 = bool3x2(false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + double3x2 a1 = double3x2(177.92444881141398, 335.53340283759564, 168.1544516869609, 350.72955982327903, 367.17843668869625, 46.941470406456574); + double3x2 b1 = double3x2(-72.443806920407269, 362.97643273089841, 194.6783255053117, 471.6448635867074, -404.04466719368691, -144.69675476136467); + bool3x2 r1 = bool3x2(false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + double3x2 a2 = double3x2(188.76415094582558, -97.211392209497944, -293.3210057193977, -234.82292353120766, 417.03371329653714, 26.386443388828297); + double3x2 b2 = double3x2(-494.44664334433463, -252.97038209297244, 234.41711746641306, 398.72397465199413, 260.42872083393331, 370.14420502732708); + bool3x2 r2 = bool3x2(false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + double3x2 a3 = double3x2(269.24572265764959, 29.474191440955792, 479.48521469509467, -237.23094355186026, -221.98371349181224, -506.67253255596034); + double3x2 b3 = double3x2(89.579862397899774, -434.81684347373289, -109.84533815730612, 336.9730161805511, -409.15498156526826, 500.38755273278218); + bool3x2 r3 = bool3x2(false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void double3x2_operator_equal_wide_scalar() + { + double3x2 a0 = double3x2(65.671194345537174, 404.41550440546848, -269.7301577393572, 83.630607882342588, 152.99450476141385, -155.86829836474186); + double b0 = (-155.8157547245807); + bool3x2 r0 = bool3x2(false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + double3x2 a1 = double3x2(314.67125597348024, 290.04894007837811, -132.63519460178691, -65.667489797653388, -69.683271678948415, -191.19075521789063); + double b1 = (386.36515325417986); + bool3x2 r1 = bool3x2(false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + double3x2 a2 = double3x2(186.84520086406042, -319.14406481345372, -49.701092981594172, -300.88189925853248, 333.39685193328046, 386.377503336583); + double b2 = (-232.89569221851218); + bool3x2 r2 = bool3x2(false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + double3x2 a3 = double3x2(-296.70189084517858, 141.54237968360189, -227.32334314441465, 83.872881689981, -410.91687483848858, 110.50128345866744); + double b3 = (-309.11719741910565); + bool3x2 r3 = bool3x2(false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void double3x2_operator_equal_scalar_wide() + { + double a0 = (36.383921878591195); + double3x2 b0 = double3x2(-400.48919958644046, -71.286823544319191, 156.97811491646712, -225.23872791288363, 499.14180993435059, -211.97992358542047); + bool3x2 r0 = bool3x2(false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + double a1 = (428.31192394174263); + double3x2 b1 = double3x2(-489.50133322621758, -5.6915457275190988, -30.865948453017495, -362.98307221149241, 184.50319322594589, -160.47062142215231); + bool3x2 r1 = bool3x2(false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + double a2 = (316.66882315122928); + double3x2 b2 = double3x2(390.36923879681581, 505.10510301268891, -294.64870967280524, 443.19909283295226, 96.559236333034619, -257.01294601010761); + bool3x2 r2 = bool3x2(false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + double a3 = (-245.05497538533757); + double3x2 b3 = double3x2(326.46485176983515, -23.959890138339176, -168.6948808025079, 386.24859279498855, -227.09065185631192, -336.61242524562982); + bool3x2 r3 = bool3x2(false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void double3x2_operator_not_equal_wide_wide() + { + double3x2 a0 = double3x2(279.99414576217259, -43.342018386042696, -465.72473523846116, 317.46655645848557, 85.714987079480238, 360.89050572034466); + double3x2 b0 = double3x2(-460.912120318465, -476.00904844515446, 468.13642070635058, -341.01254312182431, -62.658060341448561, -458.80166718866752); + bool3x2 r0 = bool3x2(true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + double3x2 a1 = double3x2(366.08152668833804, 154.5428384070018, 332.426219856565, 397.11323160543725, -431.3749584776233, 489.01079319837072); + double3x2 b1 = double3x2(-457.73023316717251, -59.523265627922171, 3.024243117787023, 155.81276352508587, -19.839918384253963, -6.0169332055453992); + bool3x2 r1 = bool3x2(true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + double3x2 a2 = double3x2(398.43358320669904, -489.81794594685454, 171.4049242340983, -67.829682620162941, -192.27871498478515, 227.84082494854965); + double3x2 b2 = double3x2(-406.20792145571107, -102.42070083619126, -40.362921018322425, 452.67542645552919, 93.257571979080126, -258.37806689849964); + bool3x2 r2 = bool3x2(true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + double3x2 a3 = double3x2(62.138187675801191, 262.18648755838467, -404.05309052209049, 34.449567572423007, -204.79578719138902, -285.41180314003111); + double3x2 b3 = double3x2(-184.04980405794913, -379.23531192319251, -370.68729537105526, -255.94724023339677, 29.055771602809273, 322.40763226263584); + bool3x2 r3 = bool3x2(true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void double3x2_operator_not_equal_wide_scalar() + { + double3x2 a0 = double3x2(-155.44111282911206, -19.426602134214079, 174.63305409934048, 507.9207296352464, 59.177048472304364, 171.15146430356026); + double b0 = (-393.41354173860213); + bool3x2 r0 = bool3x2(true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + double3x2 a1 = double3x2(-58.923273352404692, 492.20105361016522, -165.24150879925185, 270.34102333259818, -380.24326222960059, 501.8990516615562); + double b1 = (-398.17684835855704); + bool3x2 r1 = bool3x2(true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + double3x2 a2 = double3x2(-134.34545642433011, 46.771004937016869, 161.45995123752391, 261.51423442620512, -145.61239559278471, -0.44992661497087738); + double b2 = (458.40042302496749); + bool3x2 r2 = bool3x2(true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + double3x2 a3 = double3x2(350.46143047439932, 242.66402232025939, 382.67707675633812, -468.96794221781562, -497.45947789468778, -80.932258882062627); + double b3 = (202.22103724359579); + bool3x2 r3 = bool3x2(true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void double3x2_operator_not_equal_scalar_wide() + { + double a0 = (478.35313938481409); + double3x2 b0 = double3x2(459.55319592894671, 436.45324369727314, -488.71416806090349, 392.76794475725296, -266.73665369056937, 338.55788270503183); + bool3x2 r0 = bool3x2(true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + double a1 = (-338.10012475498957); + double3x2 b1 = double3x2(-152.3145445102428, -452.82067868338, 209.43931422449612, 50.107968592135194, 372.4343656843688, -488.0213141329686); + bool3x2 r1 = bool3x2(true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + double a2 = (489.74075697816011); + double3x2 b2 = double3x2(270.40006149485714, -472.8467831429312, -286.85046090132113, -384.69186681541237, 443.42352959300558, 358.74720900074919); + bool3x2 r2 = bool3x2(true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + double a3 = (-15.414077527548216); + double3x2 b3 = double3x2(-342.17916194637269, 468.96750400446706, -130.56808501601597, 401.7858013593526, -268.35225761511936, -239.231014124691); + bool3x2 r3 = bool3x2(true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void double3x2_operator_less_wide_wide() + { + double3x2 a0 = double3x2(51.710243010758518, -313.85556450200062, 283.04767359562572, 235.02188621974642, 44.0783565249659, -207.25566659088042); + double3x2 b0 = double3x2(-261.83523881707117, -19.810742149041403, -149.25882084167506, 205.99822316225539, -306.02438535635565, 102.12168006884008); + bool3x2 r0 = bool3x2(false, true, false, false, false, true); + TestUtils.AreEqual(a0 < b0, r0); + + double3x2 a1 = double3x2(3.3829410091894943, -144.30134326978651, -69.369597705718888, -135.66796762108243, -194.78736576567746, -33.473868147225062); + double3x2 b1 = double3x2(231.90633760760829, 179.49885305180158, 473.22488496882136, 15.891647107848712, 270.04990614114786, 490.91400240869916); + bool3x2 r1 = bool3x2(true, true, true, true, true, true); + TestUtils.AreEqual(a1 < b1, r1); + + double3x2 a2 = double3x2(-19.675088653189619, 423.23796697297973, -71.698315415390937, -501.88598870760109, 7.6438391244242894, 302.26289214857991); + double3x2 b2 = double3x2(-185.73412164753961, 76.433086669274189, 97.75231246731812, 419.30080600236579, 73.953208242521214, 481.03232382285978); + bool3x2 r2 = bool3x2(false, false, true, true, true, true); + TestUtils.AreEqual(a2 < b2, r2); + + double3x2 a3 = double3x2(-140.55051786291904, -436.586703265359, -351.441728040316, 364.97084896870467, 301.894133946809, 407.55097336673691); + double3x2 b3 = double3x2(7.00747371046225, -7.3240954910051528, -413.07575793428146, -154.1188920261892, 449.20288989003882, 502.01430797111914); + bool3x2 r3 = bool3x2(true, true, false, false, true, true); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void double3x2_operator_less_wide_scalar() + { + double3x2 a0 = double3x2(-221.86977325280651, -121.54646807608498, -97.52392511140738, 479.88107775146193, 67.118990214131259, 137.32880574899207); + double b0 = (199.06751808853244); + bool3x2 r0 = bool3x2(true, true, true, false, true, true); + TestUtils.AreEqual(a0 < b0, r0); + + double3x2 a1 = double3x2(282.96659601990439, -111.41316061439608, -288.08113278452356, 82.665427008022334, -361.64292042406413, -68.088202269788951); + double b1 = (258.27909362422258); + bool3x2 r1 = bool3x2(false, true, true, true, true, true); + TestUtils.AreEqual(a1 < b1, r1); + + double3x2 a2 = double3x2(12.788020378345664, -78.762971199472872, 25.727694284975428, 101.37087182950734, -330.442660724019, -48.920521520506838); + double b2 = (-66.703050406045747); + bool3x2 r2 = bool3x2(false, true, false, false, true, false); + TestUtils.AreEqual(a2 < b2, r2); + + double3x2 a3 = double3x2(359.60440914686978, 241.27682101040932, -183.43778165776178, 423.02713580756779, -334.62272349680904, -98.315578744893685); + double b3 = (-8.15008759878117); + bool3x2 r3 = bool3x2(false, false, true, false, true, true); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void double3x2_operator_less_scalar_wide() + { + double a0 = (-250.4849370692321); + double3x2 b0 = double3x2(-377.19654887597846, -505.14754104295167, 375.92672198634909, 110.17393474940855, -118.09757452742082, -40.45089079833167); + bool3x2 r0 = bool3x2(false, false, true, true, true, true); + TestUtils.AreEqual(a0 < b0, r0); + + double a1 = (-299.74430932651478); + double3x2 b1 = double3x2(31.437125935888389, -458.904539560389, 13.684679276163024, -458.50690839183841, 248.27646624682302, 389.23142999654237); + bool3x2 r1 = bool3x2(true, false, true, false, true, true); + TestUtils.AreEqual(a1 < b1, r1); + + double a2 = (488.74553679337055); + double3x2 b2 = double3x2(-221.63786731550368, -424.26720329013989, 249.05904948388184, -22.136127720650336, -442.24773928255206, -340.85755721705851); + bool3x2 r2 = bool3x2(false, false, false, false, false, false); + TestUtils.AreEqual(a2 < b2, r2); + + double a3 = (-95.1117256130612); + double3x2 b3 = double3x2(15.409410245441563, 87.292497437117845, 495.06764220402931, 316.01850309782594, -125.56811505442863, 122.16476803746298); + bool3x2 r3 = bool3x2(true, true, true, true, false, true); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void double3x2_operator_greater_wide_wide() + { + double3x2 a0 = double3x2(-229.29066501804192, 505.536608216137, -73.80706862071861, 100.29203777215071, -419.21478124112582, -159.55974753180504); + double3x2 b0 = double3x2(-445.84502407808088, -420.03529210576568, 299.02440108872224, -13.880978829171966, 151.56173593903043, -163.5094302461992); + bool3x2 r0 = bool3x2(true, true, false, true, false, true); + TestUtils.AreEqual(a0 > b0, r0); + + double3x2 a1 = double3x2(-396.7703608929973, 127.03739482119556, 489.13989733585151, 51.91890885863404, 155.38475544535777, -135.63165027258526); + double3x2 b1 = double3x2(-391.09603733154762, 479.2837710228207, -77.674873149802409, -46.5841996886694, -415.37701888353422, 71.466978344818131); + bool3x2 r1 = bool3x2(false, false, true, true, true, false); + TestUtils.AreEqual(a1 > b1, r1); + + double3x2 a2 = double3x2(-425.97813554572787, -228.430505143679, 383.03834909155887, 136.53358298937496, 8.602427725029429, -251.3243674018068); + double3x2 b2 = double3x2(-206.06102643071722, 360.83628218287424, 236.96878658838978, 14.550342328171382, 364.735178402036, -159.0612996365229); + bool3x2 r2 = bool3x2(false, false, true, true, false, false); + TestUtils.AreEqual(a2 > b2, r2); + + double3x2 a3 = double3x2(-345.954920691417, -170.565928777012, -293.25441588706076, 139.1249764613458, 214.3030732675935, 238.76991211565678); + double3x2 b3 = double3x2(226.63117490831348, 182.79602512288659, 341.83937398616195, -79.130463875425278, -247.29681956362765, 164.58913882290437); + bool3x2 r3 = bool3x2(false, false, false, true, true, true); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void double3x2_operator_greater_wide_scalar() + { + double3x2 a0 = double3x2(11.156317000815761, -411.02322382993214, 385.88556188432756, -485.10304831206008, -491.18003033622171, 405.17534632476759); + double b0 = (-302.81693877969724); + bool3x2 r0 = bool3x2(true, false, true, false, false, true); + TestUtils.AreEqual(a0 > b0, r0); + + double3x2 a1 = double3x2(173.57509740329124, 501.30683183172107, -367.027771405423, -86.124509613087639, -489.09058998948456, -172.51816066192379); + double b1 = (69.269281181166548); + bool3x2 r1 = bool3x2(true, true, false, false, false, false); + TestUtils.AreEqual(a1 > b1, r1); + + double3x2 a2 = double3x2(-18.149639853346002, -238.8945134798505, -27.239137900638923, 471.77934072528933, 240.16453253485474, -481.47807930478734); + double b2 = (-236.41493498367021); + bool3x2 r2 = bool3x2(true, false, true, true, true, false); + TestUtils.AreEqual(a2 > b2, r2); + + double3x2 a3 = double3x2(185.59438547193747, -510.22814702905163, -183.28619607877278, -386.12766260007754, -13.638212448748845, -7.3478887115362568); + double b3 = (33.294723764664809); + bool3x2 r3 = bool3x2(true, false, false, false, false, false); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void double3x2_operator_greater_scalar_wide() + { + double a0 = (453.54610201974685); + double3x2 b0 = double3x2(-226.20441423459187, -423.46500487973213, 409.40550227156166, 453.87706277048073, 87.475727837288673, 113.79560308987072); + bool3x2 r0 = bool3x2(true, true, true, false, true, true); + TestUtils.AreEqual(a0 > b0, r0); + + double a1 = (176.40926154721956); + double3x2 b1 = double3x2(-140.44002944810319, -182.48286804113673, -158.29329188088576, -162.68531830733889, -193.328676075362, 230.18129955519987); + bool3x2 r1 = bool3x2(true, true, true, true, true, false); + TestUtils.AreEqual(a1 > b1, r1); + + double a2 = (-102.58784227379965); + double3x2 b2 = double3x2(392.5205878655056, -177.47865947404813, -10.295010809924008, -24.048938524000789, 172.44867499752377, 374.04800503982608); + bool3x2 r2 = bool3x2(false, true, false, false, false, false); + TestUtils.AreEqual(a2 > b2, r2); + + double a3 = (-368.99763958947619); + double3x2 b3 = double3x2(-210.19528804076617, 149.47022325800276, -281.34327019441093, -100.46916608720511, 304.86444320569956, -361.52483360912879); + bool3x2 r3 = bool3x2(false, false, false, false, false, false); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void double3x2_operator_less_equal_wide_wide() + { + double3x2 a0 = double3x2(240.09053169940159, 462.2131528622532, 293.08251561461134, -427.87067361728782, -405.5227226715175, 204.59190211286386); + double3x2 b0 = double3x2(-81.203838624620744, 493.63743876555816, -411.47211451617636, 99.164449499530974, -295.66769875943089, -480.46254824123463); + bool3x2 r0 = bool3x2(false, true, false, true, true, false); + TestUtils.AreEqual(a0 <= b0, r0); + + double3x2 a1 = double3x2(294.670105832941, -327.56444445604666, -456.12326667091031, 282.3012408140587, 421.8811549720732, -311.71284809322697); + double3x2 b1 = double3x2(74.414040361723892, 260.916124226952, 306.17329730939741, 139.56480438055689, -505.75247955031341, -489.62680958659706); + bool3x2 r1 = bool3x2(false, true, true, false, false, false); + TestUtils.AreEqual(a1 <= b1, r1); + + double3x2 a2 = double3x2(84.5674827492644, 447.24461647832982, -154.49435217422172, -424.36474986763892, 36.684489505684269, 267.07029283562224); + double3x2 b2 = double3x2(-280.03260267899958, 303.15991058161478, 511.19015788994272, -104.65973358259527, 95.1465771641333, -125.6363432992419); + bool3x2 r2 = bool3x2(false, false, true, true, true, false); + TestUtils.AreEqual(a2 <= b2, r2); + + double3x2 a3 = double3x2(307.89391937288167, -351.76015369582927, -157.36036570247279, 152.70902712303632, 372.26716750313858, 202.36828837281485); + double3x2 b3 = double3x2(376.239777024947, -415.7747320680761, -47.481050275024529, 117.72210293529656, 469.37837264937275, -263.04235780567041); + bool3x2 r3 = bool3x2(true, false, true, false, true, false); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void double3x2_operator_less_equal_wide_scalar() + { + double3x2 a0 = double3x2(309.1924356469849, 69.673792633076118, -101.72418622939114, -315.97240629604664, -346.01106731314724, 424.15386577330241); + double b0 = (292.92427148154206); + bool3x2 r0 = bool3x2(false, true, true, true, true, false); + TestUtils.AreEqual(a0 <= b0, r0); + + double3x2 a1 = double3x2(-410.87006945669191, 183.82114538169515, 320.44249287268258, -257.87003791419329, -386.801748694294, -182.9388249772316); + double b1 = (-483.90265320423185); + bool3x2 r1 = bool3x2(false, false, false, false, false, false); + TestUtils.AreEqual(a1 <= b1, r1); + + double3x2 a2 = double3x2(349.25012962392077, 373.56911652794531, 259.15151822713744, 450.13007828692446, -128.5255282523695, -43.874866744445114); + double b2 = (485.31159304329731); + bool3x2 r2 = bool3x2(true, true, true, true, true, true); + TestUtils.AreEqual(a2 <= b2, r2); + + double3x2 a3 = double3x2(457.38574549992836, 479.45184038553941, -499.51644372358754, -398.13294643821797, 402.48485893871862, 87.9161055497434); + double b3 = (-77.638293064030961); + bool3x2 r3 = bool3x2(false, false, true, true, false, false); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void double3x2_operator_less_equal_scalar_wide() + { + double a0 = (-511.15238141974078); + double3x2 b0 = double3x2(51.159012579898786, 340.44369022010062, 312.81429519914752, 354.19252626699983, 136.39671165142056, -94.767871185563422); + bool3x2 r0 = bool3x2(true, true, true, true, true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + double a1 = (288.544332877055); + double3x2 b1 = double3x2(304.04282369466625, -148.61806089646092, -506.30010127755816, 27.581254256694251, 48.471146844546865, 104.88351326104419); + bool3x2 r1 = bool3x2(true, false, false, false, false, false); + TestUtils.AreEqual(a1 <= b1, r1); + + double a2 = (-488.6858386884843); + double3x2 b2 = double3x2(-480.43516968210935, 421.9366516647566, 239.72105299668431, -101.01844673092404, -283.95147551407638, -55.2435333986038); + bool3x2 r2 = bool3x2(true, true, true, true, true, true); + TestUtils.AreEqual(a2 <= b2, r2); + + double a3 = (-455.80483147865385); + double3x2 b3 = double3x2(131.10721618081777, -461.69878099006542, -388.48285001725094, -258.93605125087129, -225.2235287284588, -116.01998215355911); + bool3x2 r3 = bool3x2(true, false, true, true, true, true); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void double3x2_operator_greater_equal_wide_wide() + { + double3x2 a0 = double3x2(-386.59181302906563, -157.12078221008215, 391.01526445477054, -511.88687133783793, -5.4220387960886569, 287.64527501149348); + double3x2 b0 = double3x2(153.44301350109424, 49.892483019219981, 78.025787628267835, 138.81373292711271, -225.51057802211056, -339.35611335344436); + bool3x2 r0 = bool3x2(false, false, true, false, true, true); + TestUtils.AreEqual(a0 >= b0, r0); + + double3x2 a1 = double3x2(-122.53520184500849, 7.4814426933794493, 152.94642765491574, 48.986223482054811, 57.338148859021317, 300.46493138953338); + double3x2 b1 = double3x2(-373.302078182484, 364.9358934671319, -322.71539870030961, 125.47818165900105, -25.776589167200314, 297.51890792395864); + bool3x2 r1 = bool3x2(true, false, true, false, true, true); + TestUtils.AreEqual(a1 >= b1, r1); + + double3x2 a2 = double3x2(349.25705139211243, 85.749700824613569, -230.95330654408468, 418.7112159294594, -131.03991824530061, -126.51221257378916); + double3x2 b2 = double3x2(73.222349439385539, 462.78374288174496, 393.19134515951919, -95.001432224643168, 381.35702556248611, 93.031928344178937); + bool3x2 r2 = bool3x2(true, false, false, true, false, false); + TestUtils.AreEqual(a2 >= b2, r2); + + double3x2 a3 = double3x2(-156.81847841889527, 422.37748761772059, -413.08933348818186, 219.44273553576443, 35.591133372667741, 447.18153521380464); + double3x2 b3 = double3x2(254.25326287665087, 90.672789377473691, 348.93816892660141, 161.33763106229605, 79.435611046587837, 420.24346824187944); + bool3x2 r3 = bool3x2(false, true, false, true, false, true); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void double3x2_operator_greater_equal_wide_scalar() + { + double3x2 a0 = double3x2(495.457423679278, -14.345115906719627, -463.47478053694346, 217.51749215718246, -246.86571776441565, -377.65869706573835); + double b0 = (189.20512804258851); + bool3x2 r0 = bool3x2(true, false, false, true, false, false); + TestUtils.AreEqual(a0 >= b0, r0); + + double3x2 a1 = double3x2(53.815095211293169, -221.50546441856096, 252.99433410027734, -116.44038277326172, -395.36331028275345, 164.77259667439978); + double b1 = (-123.33294373533357); + bool3x2 r1 = bool3x2(true, false, true, true, false, true); + TestUtils.AreEqual(a1 >= b1, r1); + + double3x2 a2 = double3x2(-287.00733889593153, 184.19556316369938, 273.01225555735277, -418.14240308205706, 249.38409697701411, 396.39213938098032); + double b2 = (355.83704559683667); + bool3x2 r2 = bool3x2(false, false, false, false, false, true); + TestUtils.AreEqual(a2 >= b2, r2); + + double3x2 a3 = double3x2(332.66542044871744, -335.121477998384, -302.08690442800844, 254.44223344253476, 179.00504287472234, 71.176674637560154); + double b3 = (243.76141392614761); + bool3x2 r3 = bool3x2(true, false, false, true, false, false); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void double3x2_operator_greater_equal_scalar_wide() + { + double a0 = (215.43534169692327); + double3x2 b0 = double3x2(204.80295310020585, -101.10404853760451, -122.05503827056617, -70.456147941973143, -239.62025677395064, -185.99272426683115); + bool3x2 r0 = bool3x2(true, true, true, true, true, true); + TestUtils.AreEqual(a0 >= b0, r0); + + double a1 = (-455.61258027312); + double3x2 b1 = double3x2(276.66581476697036, 79.39918831707871, 416.42054791768112, 379.27350801009379, -439.51472612820322, 67.141009600433108); + bool3x2 r1 = bool3x2(false, false, false, false, false, false); + TestUtils.AreEqual(a1 >= b1, r1); + + double a2 = (-74.560638224035813); + double3x2 b2 = double3x2(-367.25635474140586, 494.950765601802, -61.235545425319856, -429.17024846988278, -213.82468924942646, -264.31016242891093); + bool3x2 r2 = bool3x2(true, false, false, true, true, true); + TestUtils.AreEqual(a2 >= b2, r2); + + double a3 = (243.11378275748052); + double3x2 b3 = double3x2(-22.383876095704693, 304.86197175870745, -323.68615332417477, 67.938025267765852, 125.30356818312009, -400.47050280145857); + bool3x2 r3 = bool3x2(true, false, true, true, true, true); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void double3x2_operator_add_wide_wide() + { + double3x2 a0 = double3x2(465.14837644302679, 278.91072548502621, -277.52992237616792, -65.197214395365336, -473.32437561141529, -4.6955420992782138); + double3x2 b0 = double3x2(483.99436186440028, -204.07667193379098, -365.67356007437854, -509.92086076639634, -270.69751108377125, 486.76397846954126); + double3x2 r0 = double3x2(949.14273830742707, 74.834053551235229, -643.20348245054652, -575.11807516176168, -744.02188669518659, 482.06843637026304); + TestUtils.AreEqual(a0 + b0, r0); + + double3x2 a1 = double3x2(-470.53676698661258, -109.95011453980118, -178.70145782209067, -420.03378339299644, 290.71109236903078, -446.5296368294068); + double3x2 b1 = double3x2(267.49177587567442, 251.6425212601398, 244.4951094335388, -78.675763882079991, 352.20551340291536, 82.779185095233515); + double3x2 r1 = double3x2(-203.04499111093816, 141.69240672033862, 65.793651611448126, -498.70954727507643, 642.91660577194614, -363.75045173417328); + TestUtils.AreEqual(a1 + b1, r1); + + double3x2 a2 = double3x2(491.066454400805, -261.11730039358014, -298.40688409395835, 502.42861890347149, 284.59432925125316, 401.12844366632794); + double3x2 b2 = double3x2(462.54732606492348, -405.492017696375, -428.4983238785054, -41.872599859662614, -269.9274958436971, 75.204465662690041); + double3x2 r2 = double3x2(953.6137804657285, -666.6093180899552, -726.90520797246381, 460.55601904380887, 14.666833407556055, 476.332909329018); + TestUtils.AreEqual(a2 + b2, r2); + + double3x2 a3 = double3x2(-36.263498084742366, -102.94915657069026, 503.19817161150195, -384.42911857386542, -45.22821452339565, -198.67394337368847); + double3x2 b3 = double3x2(-141.91339380196922, -222.1867559990784, 41.305726308983594, 148.33947117083676, -177.23311217931712, -176.51887830370987); + double3x2 r3 = double3x2(-178.17689188671159, -325.13591256976866, 544.50389792048554, -236.08964740302866, -222.46132670271277, -375.19282167739834); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void double3x2_operator_add_wide_scalar() + { + double3x2 a0 = double3x2(459.89829728561369, -447.66336104258119, -94.438627525436971, 126.42986279652916, -36.254356162741033, -349.64130060264904); + double b0 = (500.99725913489112); + double3x2 r0 = double3x2(960.89555642050482, 53.333898092309937, 406.55863160945415, 627.42712193142029, 464.74290297215009, 151.35595853224208); + TestUtils.AreEqual(a0 + b0, r0); + + double3x2 a1 = double3x2(-2.7912590516690443, 443.11525246273504, 268.092225914864, 41.32102133767728, -471.25607584009697, -2.6649749291431704); + double b1 = (-478.41478489265535); + double3x2 r1 = double3x2(-481.20604394432439, -35.299532429920305, -210.32255897779135, -437.09376355497807, -949.67086073275232, -481.07975982179852); + TestUtils.AreEqual(a1 + b1, r1); + + double3x2 a2 = double3x2(78.985822952811532, 311.7254551908585, 10.345855002452595, -151.24445898423181, 355.23276703210206, -197.80076584490052); + double b2 = (202.14799151297098); + double3x2 r2 = double3x2(281.13381446578251, 513.87344670382947, 212.49384651542357, 50.903532528739163, 557.380758545073, 4.34722566807045); + TestUtils.AreEqual(a2 + b2, r2); + + double3x2 a3 = double3x2(255.95526587961024, -181.6265695940827, -2.4549267303454485, 300.90065469448484, -236.49194895312746, -160.5840962680914); + double b3 = (244.14709793969394); + double3x2 r3 = double3x2(500.10236381930417, 62.52052834561124, 241.69217120934849, 545.04775263417878, 7.6551489865664735, 83.563001671602535); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void double3x2_operator_add_scalar_wide() + { + double a0 = (-325.51276484388518); + double3x2 b0 = double3x2(-264.08813178915909, -106.00925998855814, -355.44729320865463, -447.33029362528134, -158.70021040677102, -199.48369154682553); + double3x2 r0 = double3x2(-589.60089663304427, -431.52202483244332, -680.96005805253981, -772.84305846916652, -484.2129752506562, -524.9964563907107); + TestUtils.AreEqual(a0 + b0, r0); + + double a1 = (180.31809123806568); + double3x2 b1 = double3x2(337.57936898692481, -37.05501486596421, 230.80498014707348, -140.17433339924287, 18.02419591789328, -138.61435825126915); + double3x2 r1 = double3x2(517.89746022499048, 143.26307637210147, 411.12307138513916, 40.143757838822808, 198.34228715595896, 41.703732986796524); + TestUtils.AreEqual(a1 + b1, r1); + + double a2 = (26.904163611542458); + double3x2 b2 = double3x2(-374.53758233345, 154.4676006559597, 268.3838204203098, -190.96302255939833, 188.61725362977813, -504.91612386373623); + double3x2 r2 = double3x2(-347.63341872190756, 181.37176426750216, 295.28798403185226, -164.05885894785587, 215.52141724132059, -478.01196025219377); + TestUtils.AreEqual(a2 + b2, r2); + + double a3 = (20.454013595568995); + double3x2 b3 = double3x2(197.94534525552081, 251.41194474483461, -421.09037538109828, 111.44540052835146, -73.268883024001923, 480.88455770950975); + double3x2 r3 = double3x2(218.3993588510898, 271.86595834040361, -400.63636178552929, 131.89941412392045, -52.814869428432928, 501.33857130507874); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void double3x2_operator_sub_wide_wide() + { + double3x2 a0 = double3x2(133.37101680290471, -131.8321183341705, -197.29314407952739, -485.286571013409, -337.55033103448818, 471.66710470228782); + double3x2 b0 = double3x2(123.46028739002543, 359.56010048443454, -48.24847819667707, 478.97904680621764, 207.15832886805686, 142.36730462981723); + double3x2 r0 = double3x2(9.9107294128792773, -491.39221881860504, -149.04466588285032, -964.26561781962664, -544.708659902545, 329.29980007247059); + TestUtils.AreEqual(a0 - b0, r0); + + double3x2 a1 = double3x2(146.5066197600712, -130.58504372955537, 110.77707367333448, -235.54160486699158, 78.879356659427, -347.68616811730254); + double3x2 b1 = double3x2(-125.60551005490379, -65.299004823574307, -477.876434787119, 164.50000031501986, 428.00958915614035, 72.6278169493321); + double3x2 r1 = double3x2(272.112129814975, -65.286038905981059, 588.65350846045351, -400.04160518201144, -349.13023249671335, -420.31398506663464); + TestUtils.AreEqual(a1 - b1, r1); + + double3x2 a2 = double3x2(-470.82054565419469, -11.459293609233271, -167.94791730118351, 330.67676917215658, -508.35086822339838, -252.03190457636111); + double3x2 b2 = double3x2(-446.880505531505, 432.09146114443035, -225.55465637219822, -112.45196705332586, -210.61278853687122, -172.92506011432272); + double3x2 r2 = double3x2(-23.940040122689709, -443.55075475366363, 57.606739071014715, 443.12873622548244, -297.73807968652716, -79.1068444620384); + TestUtils.AreEqual(a2 - b2, r2); + + double3x2 a3 = double3x2(-427.93418737311578, 192.6576150360786, 168.42931016182024, 457.3087858899072, 470.05851457550125, -299.71188058504458); + double3x2 b3 = double3x2(-80.60749415336528, 270.04610861001822, -154.25558550388348, 148.47577745675846, 13.661130673094249, 70.671096596248049); + double3x2 r3 = double3x2(-347.3266932197505, -77.388493573939627, 322.68489566570372, 308.83300843314873, 456.397383902407, -370.38297718129263); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void double3x2_operator_sub_wide_scalar() + { + double3x2 a0 = double3x2(48.936717294592768, 410.45158953706346, -364.44171612544062, 163.98060353285666, -460.06732318367222, 110.91942339340198); + double b0 = (-291.59041442144212); + double3x2 r0 = double3x2(340.52713171603489, 702.04200395850557, -72.8513017039985, 455.57101795429878, -168.4769087622301, 402.5098378148441); + TestUtils.AreEqual(a0 - b0, r0); + + double3x2 a1 = double3x2(204.35834441164434, -377.92569344952972, -470.26204297983185, 400.53491968686455, 461.50756499800252, -246.28726660753006); + double b1 = (180.26971420099483); + double3x2 r1 = double3x2(24.088630210649512, -558.19540765052454, -650.53175718082662, 220.26520548586973, 281.2378507970077, -426.55698080852488); + TestUtils.AreEqual(a1 - b1, r1); + + double3x2 a2 = double3x2(21.605312595891405, -121.42736178330489, -122.71842413894757, -122.93872099879138, 360.15095417581074, 342.87457887403411); + double b2 = (246.35072171238755); + double3x2 r2 = double3x2(-224.74540911649615, -367.77808349569244, -369.06914585133512, -369.28944271117894, 113.80023246342319, 96.523857161646561); + TestUtils.AreEqual(a2 - b2, r2); + + double3x2 a3 = double3x2(18.929827460520869, 97.0436885808798, 485.9149813530571, -205.75765690848124, 253.44322717070725, -121.16305619159857); + double b3 = (164.60235245740148); + double3x2 r3 = double3x2(-145.67252499688061, -67.558663876521678, 321.31262889565562, -370.36000936588272, 88.840874713305766, -285.76540864900005); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void double3x2_operator_sub_scalar_wide() + { + double a0 = (294.58645905861); + double3x2 b0 = double3x2(452.35251757705237, 256.98980891750648, -275.159888634067, -89.027518075437968, 488.22838829840919, -333.21728030462623); + double3x2 r0 = double3x2(-157.76605851844238, 37.59665014110351, 569.746347692677, 383.61397713404796, -193.6419292397992, 627.80373936323622); + TestUtils.AreEqual(a0 - b0, r0); + + double a1 = (-64.232989102710519); + double3x2 b1 = double3x2(-66.041730196234653, 341.20492831859963, -385.775056303374, 75.394746577085357, 354.94371645289641, 169.13141520746581); + double3x2 r1 = double3x2(1.8087410935241337, -405.43791742131015, 321.5420672006635, -139.62773567979588, -419.17670555560693, -233.36440431017633); + TestUtils.AreEqual(a1 - b1, r1); + + double a2 = (88.216608326982964); + double3x2 b2 = double3x2(1.7350065716240124, 122.53803997977548, -264.94502771317264, -50.837180399725753, -347.65032283759228, 4.0655586738445209); + double3x2 r2 = double3x2(86.481601755358952, -34.321431652792512, 353.1616360401556, 139.05378872670872, 435.86693116457525, 84.151049653138443); + TestUtils.AreEqual(a2 - b2, r2); + + double a3 = (-79.095424450512724); + double3x2 b3 = double3x2(354.35833923628479, -292.4925116470514, -53.208983207684469, -246.34760033634848, 299.20334138497867, 432.18467422583353); + double3x2 r3 = double3x2(-433.45376368679752, 213.39708719653868, -25.886441242828255, 167.25217588583575, -378.29876583549139, -511.28009867634626); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void double3x2_operator_mul_wide_wide() + { + double3x2 a0 = double3x2(-394.78053898121254, -412.37219519744264, -25.874570143350638, -241.04595886964626, -93.675987525692221, 244.15999257013198); + double3x2 b0 = double3x2(-149.76397831261346, -345.04538671348496, -284.33404721148963, 267.97923648915219, -326.64849558782225, -150.68967754705329); + double3x2 r0 = double3x2(59123.904078224172, 142287.1235617903, 7357.0212487164608, -64595.312016683383, 30599.120397970968, -36792.390550284115); + TestUtils.AreEqual(a0 * b0, r0); + + double3x2 a1 = double3x2(494.68846606402121, 53.537962700025105, -239.49641167349017, 236.67584644848284, -211.85620818466703, -216.65482030466887); + double3x2 b1 = double3x2(207.73243794577775, 366.19289248352538, 358.88076202891807, 214.85359368792433, 253.42280900358355, -307.71382751488773); + double3x2 r1 = double3x2(102762.84107913627, 19605.221418797286, -85950.654724573629, 50850.6561485879, -53689.195383006307, 66667.684005499876); + TestUtils.AreEqual(a1 * b1, r1); + + double3x2 a2 = double3x2(467.95832870339893, -178.02191146557311, -386.3942503344241, -422.43540521265726, 464.58952758488692, -251.3156646468284); + double3x2 b2 = double3x2(184.4711149597872, 426.43644185850235, -144.28142625851621, 459.47961518703016, -358.31334917541284, -201.36521563370025); + double3x2 r2 = double3x2(86324.794650634591, -75915.030498228327, 55749.513536340863, -194100.45742848891, -166468.62962076368, 50606.233003735295); + TestUtils.AreEqual(a2 * b2, r2); + + double3x2 a3 = double3x2(-104.97877912641445, -66.934159071619717, -39.829896707008572, 401.56559080703448, 434.14618250082538, -336.45419589451245); + double3x2 b3 = double3x2(254.90996539541982, 168.52096303204121, 8.7945530455533572, -194.84647974504458, -405.36266178887462, -180.7321890242082); + double3x2 r3 = double3x2(-26760.136954367728, -11279.808946489193, -350.28613938869785, -78243.6417554897, -175986.65214401312, 60808.103330394995); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void double3x2_operator_mul_wide_scalar() + { + double3x2 a0 = double3x2(328.20302191758674, -290.10672272839895, 236.99572454998065, 120.48136692889102, 357.90315811610924, 134.86723214707672); + double b0 = (192.21119055161773); + double3x2 r0 = double3x2(63084.293585418032, -55761.758562653624, 45553.230371395039, 23157.866976688449, 68792.992123681237, 25922.99125739103); + TestUtils.AreEqual(a0 * b0, r0); + + double3x2 a1 = double3x2(-477.31047104173825, -46.729179165665585, -238.40500103608008, 422.08249374017237, -48.83483722099794, 355.30832998608628); + double b1 = (-438.272912467957); + double3x2 r1 = double3x2(209192.25029491508, 20480.133450173231, 104486.45415100912, -184987.32383324357, 21402.986338745359, -155722.01660712797); + TestUtils.AreEqual(a1 * b1, r1); + + double3x2 a2 = double3x2(119.35660391643489, 98.2360046367329, -325.55215683837991, 53.937323833786536, -87.4509838034636, -130.47412949915702); + double b2 = (-196.995807977857); + double3x2 r2 = double3x2(-23512.750626011144, -19352.081105929705, 64132.410175310673, -10625.426688800102, 17227.4772128218, 25702.856560893983); + TestUtils.AreEqual(a2 * b2, r2); + + double3x2 a3 = double3x2(-222.59457145565869, 293.36108769726059, 174.38195737375963, -327.12007704708731, 56.629123475695565, 257.54154241156834); + double b3 = (126.01503211167415); + double3x2 r3 = double3x2(-28050.262069869175, 36967.906886485951, 21974.747958150911, -41222.047013462026, 7136.1208132457368, 32454.105737083875); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void double3x2_operator_mul_scalar_wide() + { + double a0 = (-464.534700371574); + double3x2 b0 = double3x2(329.36093846399376, -198.68342671109525, 184.07942518223047, 256.01618754864489, 266.22629297255833, -97.894749448585685); + double3x2 r0 = double3x2(-152999.58486347177, 92295.346096036214, -85511.280621599, -118928.40297318244, -123671.35123704225, 45475.508103049062); + TestUtils.AreEqual(a0 * b0, r0); + + double a1 = (159.74810583877752); + double3x2 b1 = double3x2(-351.82222263506719, 491.80157660497423, 49.902031206480274, 424.46256871915546, 160.11807616060514, -395.99208492599058); + double3x2 r1 = double3x2(-56202.933657940659, 78564.37031116907, 7971.75496274279, 67807.091352347023, 25578.559377205791, -63258.985494075321); + TestUtils.AreEqual(a1 * b1, r1); + + double a2 = (125.20168858636248); + double3x2 b2 = double3x2(-265.01581991138676, 314.65609779705107, -292.71202029507236, -37.729878681586058, 165.3622206027444, 356.51773302467438); + double3x2 r2 = double3x2(-33180.428155004964, 39395.4747681864, -36648.039210468662, -4723.8445210931741, 20703.629247854176, 44636.6221856712); + TestUtils.AreEqual(a2 * b2, r2); + + double a3 = (-188.81332906932261); + double3x2 b3 = double3x2(504.91572475103465, 40.572113771257932, -206.77510581108515, -61.602680473403382, 118.97158938225903, 53.7483275186961); + double3x2 r3 = double3x2(-95334.818889692615, -7660.55586853052, 39041.896096852419, 11631.407179777047, -22463.4218559328, -10148.400650713294); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void double3x2_operator_div_wide_wide() + { + double3x2 a0 = double3x2(246.26574933075619, -269.85612953354428, -451.61952588130697, -7.38850236283082, -308.20558681534862, -373.394808704683); + double3x2 b0 = double3x2(172.11981423763552, -77.141104972521362, -325.8353723612779, -450.60868117334724, -261.26215398556656, -122.44949847201326); + double3x2 r0 = double3x2(1.4307809383918566, 3.4982144685336105, 1.3860359070548143, 0.016396715535066435, 1.1796794220427942, 3.0493780159501847); + TestUtils.AreEqual(a0 / b0, r0); + + double3x2 a1 = double3x2(360.41863482092447, 25.80972458133931, -274.050461181463, 127.53858977534742, -447.6717600522897, -137.4586017771897); + double3x2 b1 = double3x2(-93.210781379235357, -442.00522705633438, 484.36271380091216, -390.78178686219348, 402.02531714086672, 316.65072193585831); + double3x2 r1 = double3x2(-3.8667054335113131, -0.05839235149599218, -0.56579594872388561, -0.32636779415802974, -1.1135412148569459, -0.43410165287743668); + TestUtils.AreEqual(a1 / b1, r1); + + double3x2 a2 = double3x2(-136.13317424437645, 12.43763423545181, 228.51298319013461, 356.9723681681661, -24.762040865031111, 411.66839356518744); + double3x2 b2 = double3x2(397.15440744774151, -303.26218643005109, -118.59124451437555, -81.650312223308845, -84.346871176896116, -488.41943549011808); + double3x2 r2 = double3x2(-0.3427714050039572, -0.041012809351094658, -1.9268959030313104, -4.37196574572633, 0.29357391115432163, -0.84285833783843456); + TestUtils.AreEqual(a2 / b2, r2); + + double3x2 a3 = double3x2(-204.07890067066944, 11.365393882321882, 82.152295389283609, 37.389483230835481, 394.26582903147948, -429.91279645912016); + double3x2 b3 = double3x2(404.16049999937434, -136.72883731533256, -19.832707652744261, -102.6072290421497, 166.11604960547572, -112.84016590604568); + double3x2 r3 = double3x2(-0.50494519051462317, -0.083123605125890912, -4.1422632162843458, -0.36439423985883462, 2.3734361006528726, 3.8099270149698223); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void double3x2_operator_div_wide_scalar() + { + double3x2 a0 = double3x2(-244.51745116175965, 69.112274917360537, -333.02311888943575, 257.39682519500923, 403.24561257066466, 154.34436066185322); + double b0 = (-60.024377612408443); + double3x2 r0 = double3x2(4.0736357608014941, -1.1514034408425655, 5.5481311449798705, -4.2882048166676752, -6.7180307170282818, -2.5713612835520117); + TestUtils.AreEqual(a0 / b0, r0); + + double3x2 a1 = double3x2(131.52659160062979, -348.92380516087815, -275.53868187383688, 210.55792174607416, 287.64239968342815, 504.37224626185946); + double b1 = (-261.88639200007844); + double3x2 r1 = double3x2(-0.50222766672271535, 1.332347979198452, 1.0521305813925388, -0.80400482109055549, -1.0983480183397309, -1.9259200236020984); + TestUtils.AreEqual(a1 / b1, r1); + + double3x2 a2 = double3x2(491.78708600056689, -253.23667275776933, 272.89512098622276, 178.09617313095191, -460.87559030059521, -502.64601611655485); + double b2 = (-26.63160015392657); + double3x2 r2 = double3x2(-18.466298801353012, 9.50887934987384, -10.247041837851679, -6.6874003853160646, 17.305591389056794, 18.874044864421883); + TestUtils.AreEqual(a2 / b2, r2); + + double3x2 a3 = double3x2(-84.324793139623864, 83.796309271732525, 197.04206690427009, 317.16826525198678, 403.38711781212464, 81.646461763254592); + double b3 = (-174.69034036187935); + double3x2 r3 = double3x2(0.48271010844069023, -0.47968484747436224, -1.1279505580908942, -1.815602766558, -2.309155257105167, -0.4673782282072384); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void double3x2_operator_div_scalar_wide() + { + double a0 = (41.737658758525527); + double3x2 b0 = double3x2(-422.676129776368, 248.12963235011773, 449.39137741988122, 245.85813796047967, -326.62061253498337, 163.71510489457989); + double3x2 r0 = double3x2(-0.098746193168297289, 0.1682090863683405, 0.092875967042706856, 0.16976317767945767, -0.12778635871933872, 0.25494079355354177); + TestUtils.AreEqual(a0 / b0, r0); + + double a1 = (333.664472020075); + double3x2 b1 = double3x2(38.291076916405473, -472.97976062864984, 192.23013958345643, -200.29686960964318, -490.18150376257557, -211.10257468517057); + double3x2 r1 = double3x2(8.7138962622678129, -0.70545190258583745, 1.7357552397511267, -1.6658496594098089, -0.68069576158811729, -1.5805798319498852); + TestUtils.AreEqual(a1 / b1, r1); + + double a2 = (-322.85234108700058); + double3x2 b2 = double3x2(-137.98529035317961, 84.32973555677097, 355.06345550858578, 276.42724455354141, -382.9880213136729, -488.647160996053); + double3x2 r2 = double3x2(2.3397591167916914, -3.8284519565421338, -0.909280682306641, -1.1679468918067049, 0.8429828692281206, 0.660706470552089); + TestUtils.AreEqual(a2 / b2, r2); + + double a3 = (344.84603826368505); + double3x2 b3 = double3x2(168.85499938244698, -44.19558837087618, 420.550703959796, -175.6152060849663, -9.2205684227964753, -344.19428865248074); + double3x2 r3 = double3x2(2.0422613456805525, -7.8027253618582941, 0.81998682921394372, -1.9636456657223711, -37.399650699527896, -1.0018935514989395); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void double3x2_operator_mod_wide_wide() + { + double3x2 a0 = double3x2(-442.30985924336585, 368.50046246522129, -1.0938966279355213, -364.67383473211612, -197.34394487987458, -34.034902350062); + double3x2 b0 = double3x2(-43.245045443645211, -144.19587690392319, -62.640481739603217, -336.82826510855381, -154.6102545981343, -154.02935583611452); + double3x2 r0 = double3x2(-9.8594048069137443, 80.1087086573749, -1.0938966279355213, -27.845569623562312, -42.73369028174028, -34.034902350062); + TestUtils.AreEqual(a0 % b0, r0); + + double3x2 a1 = double3x2(-101.34858350704826, 208.31857142612273, -140.77031404374645, 183.446989383291, -463.36838100076113, 83.839106360375467); + double3x2 b1 = double3x2(487.0462093237071, -469.82909105244516, -145.20377237405802, -203.38401780062543, -22.520082245823062, 224.6900237652892); + double3x2 r1 = double3x2(-101.34858350704826, 208.31857142612273, -140.77031404374645, 183.446989383291, -12.966736084299896, 83.839106360375467); + TestUtils.AreEqual(a1 % b1, r1); + + double3x2 a2 = double3x2(-64.714058190916717, 295.06681050689281, 212.257051805154, 349.62829916068745, 119.87592106679267, -37.805828350505692); + double3x2 b2 = double3x2(-435.62674614210925, 12.095571285158144, 40.378765363422531, 345.78484813579587, -433.47126146474443, -355.64996712079733); + double3x2 r2 = double3x2(-64.714058190916717, 4.773099663097355, 10.363224988041338, 3.8434510248915785, 119.87592106679267, -37.805828350505692); + TestUtils.AreEqual(a2 % b2, r2); + + double3x2 a3 = double3x2(142.41158515886013, 332.24425593588694, -464.19427249589671, -296.14783801517814, 225.17535863871467, -212.06027732233531); + double3x2 b3 = double3x2(4.0154273528677322, 66.659781725453058, -221.85363088448236, -355.05676405274158, 357.93597118832918, 71.375334057666009); + double3x2 r3 = double3x2(1.8716278084895066, 65.605129034074707, -20.487010726932, -296.14783801517814, 225.17535863871467, -69.309609207003291); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void double3x2_operator_mod_wide_scalar() + { + double3x2 a0 = double3x2(-433.41699548876704, -5.5141427542614565, 393.39439958771425, 299.41153277988155, -120.80601626299602, -502.939041133476); + double b0 = (-90.499235433758827); + double3x2 r0 = double3x2(-71.420053753731736, -5.5141427542614565, 31.39745785267894, 27.913826478605074, -30.306780829237198, -50.442863964681862); + TestUtils.AreEqual(a0 % b0, r0); + + double3x2 a1 = double3x2(-450.80766245853511, -84.473635951277629, -318.78148356023314, 433.45469041981482, -54.6001856581309, -172.33886607565864); + double b1 = (186.09479698263794); + double3x2 r1 = double3x2(-78.618068493259216, -84.473635951277629, -132.6866865775952, 61.265096454538934, -54.6001856581309, -172.33886607565864); + TestUtils.AreEqual(a1 % b1, r1); + + double3x2 a2 = double3x2(-429.71466728193434, 5.796394112425105, 254.51082885196, -433.09369703433185, -203.08261284748215, -75.356399809641971); + double b2 = (222.36186109406958); + double3x2 r2 = double3x2(-207.35280618786476, 5.796394112425105, 32.148967757890432, -210.73183594026227, -203.08261284748215, -75.356399809641971); + TestUtils.AreEqual(a2 % b2, r2); + + double3x2 a3 = double3x2(252.28909385031511, 5.3372299696026175, -279.06042803407666, 483.55059097872606, -331.99334660730949, 335.99997655302286); + double b3 = (-69.403906139267576); + double3x2 r3 = double3x2(44.077375432512383, 5.3372299696026175, -1.44480347700636, 67.1271541431206, -54.377722050239186, 58.384351995952557); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void double3x2_operator_mod_scalar_wide() + { + double a0 = (-396.4224028049141); + double3x2 b0 = double3x2(-159.14024384279747, 230.17333399046834, 14.779358632294134, -303.15649738123477, 399.63502020371845, 206.69470534412881); + double3x2 r0 = double3x2(-78.141915119319151, -166.24906881444576, -12.159078365266623, -93.265905423679328, -396.4224028049141, -189.72769746078529); + TestUtils.AreEqual(a0 % b0, r0); + + double a1 = (397.04482263934096); + double3x2 b1 = double3x2(-393.89064735634747, -372.06709426085797, 201.01229796233224, -95.5668547598491, -258.95146882671463, 106.98357563232241); + double3x2 r1 = double3x2(3.1541752829934921, 24.977728378482993, 196.03252467700872, 14.777403599944591, 138.09335381262633, 76.094095742373725); + TestUtils.AreEqual(a1 % b1, r1); + + double a2 = (469.3235559264773); + double3x2 b2 = double3x2(-34.808985011097491, 184.83653434777466, 374.79425376224992, -131.87271911086174, -120.09286003936683, 4.506670715523228); + double3x2 r2 = double3x2(16.806750782209917, 99.650487230927979, 94.529302164227374, 73.705398593892085, 109.04497580837682, 0.62980151206159007); + TestUtils.AreEqual(a2 % b2, r2); + + double a3 = (-111.40195732535886); + double3x2 b3 = double3x2(391.54249710195813, -218.66887078931035, 196.37741980160467, -511.03262233689082, 499.95350598727987, -433.52306505363578); + double3x2 r3 = double3x2(-111.40195732535886, -111.40195732535886, -111.40195732535886, -111.40195732535886, -111.40195732535886, -111.40195732535886); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void double3x2_operator_plus() + { + double3x2 a0 = double3x2(271.6708086802023, -79.080240524876956, -330.98506203805334, 31.824682965793045, 315.44952860262686, 319.22218742930431); + double3x2 r0 = double3x2(271.6708086802023, -79.080240524876956, -330.98506203805334, 31.824682965793045, 315.44952860262686, 319.22218742930431); + TestUtils.AreEqual(+a0, r0); + + double3x2 a1 = double3x2(190.32466015141677, -320.51845875406565, 102.0544069288552, -107.00351267075331, -428.77622075973835, 377.23016208095021); + double3x2 r1 = double3x2(190.32466015141677, -320.51845875406565, 102.0544069288552, -107.00351267075331, -428.77622075973835, 377.23016208095021); + TestUtils.AreEqual(+a1, r1); + + double3x2 a2 = double3x2(234.77393042052813, 258.33039414991174, 465.35593555185756, 309.59316530339106, -316.93713655925222, -230.05266557915724); + double3x2 r2 = double3x2(234.77393042052813, 258.33039414991174, 465.35593555185756, 309.59316530339106, -316.93713655925222, -230.05266557915724); + TestUtils.AreEqual(+a2, r2); + + double3x2 a3 = double3x2(301.78512229667285, 350.24640981771347, 60.819777278611355, -472.44209526127304, -364.80255644619581, 239.15236937215195); + double3x2 r3 = double3x2(301.78512229667285, 350.24640981771347, 60.819777278611355, -472.44209526127304, -364.80255644619581, 239.15236937215195); + TestUtils.AreEqual(+a3, r3); + } + + [TestCompiler] + public static void double3x2_operator_neg() + { + double3x2 a0 = double3x2(420.22718854445372, -196.25749811728366, -335.42683068636188, 509.04366969924592, -33.014395013923945, -498.57532071442125); + double3x2 r0 = double3x2(-420.22718854445372, 196.25749811728366, 335.42683068636188, -509.04366969924592, 33.014395013923945, 498.57532071442125); + TestUtils.AreEqual(-a0, r0); + + double3x2 a1 = double3x2(-495.8379526063045, 19.686896571743773, 268.23670662019254, -180.60051473444349, 223.38126312167446, -410.39206070936848); + double3x2 r1 = double3x2(495.8379526063045, -19.686896571743773, -268.23670662019254, 180.60051473444349, -223.38126312167446, 410.39206070936848); + TestUtils.AreEqual(-a1, r1); + + double3x2 a2 = double3x2(-395.68154186554324, -110.9393032113739, -238.21960913307015, 292.54351224216794, 469.29257867731735, 48.290685914592245); + double3x2 r2 = double3x2(395.68154186554324, 110.9393032113739, 238.21960913307015, -292.54351224216794, -469.29257867731735, -48.290685914592245); + TestUtils.AreEqual(-a2, r2); + + double3x2 a3 = double3x2(88.7237785275671, 55.707977559281517, 464.54141090090457, 499.24280213715645, 175.01502259774838, 196.38759169186824); + double3x2 r3 = double3x2(-88.7237785275671, -55.707977559281517, -464.54141090090457, -499.24280213715645, -175.01502259774838, -196.38759169186824); + TestUtils.AreEqual(-a3, r3); + } + + [TestCompiler] + public static void double3x2_operator_prefix_inc() + { + double3x2 a0 = double3x2(-99.79557113526181, 458.74185082816609, 96.179026886904126, -48.552469514567633, -315.728967098393, -299.23014583216525); + double3x2 r0 = double3x2(-98.79557113526181, 459.74185082816609, 97.179026886904126, -47.552469514567633, -314.728967098393, -298.23014583216525); + TestUtils.AreEqual(++a0, r0); + + double3x2 a1 = double3x2(-323.61485853959567, -76.507656371457358, -305.58477344437722, 64.0964734852763, 148.67930967578627, 363.2849182390072); + double3x2 r1 = double3x2(-322.61485853959567, -75.507656371457358, -304.58477344437722, 65.0964734852763, 149.67930967578627, 364.2849182390072); + TestUtils.AreEqual(++a1, r1); + + double3x2 a2 = double3x2(-115.5592263283018, -179.89464839729231, 339.8765849265626, -38.410431164507941, -153.3736775635619, 261.62557304167444); + double3x2 r2 = double3x2(-114.5592263283018, -178.89464839729231, 340.8765849265626, -37.410431164507941, -152.3736775635619, 262.62557304167444); + TestUtils.AreEqual(++a2, r2); + + double3x2 a3 = double3x2(155.03081877298223, 301.30576791488829, -221.35540328796736, -429.69815011960367, -271.28932893988178, -264.38006246480165); + double3x2 r3 = double3x2(156.03081877298223, 302.30576791488829, -220.35540328796736, -428.69815011960367, -270.28932893988178, -263.38006246480165); + TestUtils.AreEqual(++a3, r3); + } + + [TestCompiler] + public static void double3x2_operator_postfix_inc() + { + double3x2 a0 = double3x2(322.94356623429042, 472.05246542024076, 203.48761925636211, -49.854570650427888, -31.420532002775246, 455.33662459595905); + double3x2 r0 = double3x2(322.94356623429042, 472.05246542024076, 203.48761925636211, -49.854570650427888, -31.420532002775246, 455.33662459595905); + TestUtils.AreEqual(a0++, r0); + + double3x2 a1 = double3x2(271.45466840986842, 153.75031645305, -174.17301925186672, -427.40105100506969, 215.11022744658874, 159.86103184514729); + double3x2 r1 = double3x2(271.45466840986842, 153.75031645305, -174.17301925186672, -427.40105100506969, 215.11022744658874, 159.86103184514729); + TestUtils.AreEqual(a1++, r1); + + double3x2 a2 = double3x2(-333.05045262586816, 287.22045649551808, -170.10464366250886, -270.65246380057766, -162.86024792625579, 454.48881003562769); + double3x2 r2 = double3x2(-333.05045262586816, 287.22045649551808, -170.10464366250886, -270.65246380057766, -162.86024792625579, 454.48881003562769); + TestUtils.AreEqual(a2++, r2); + + double3x2 a3 = double3x2(-449.92732045144186, -311.43587103087259, 69.731466087387616, -232.29964433996923, -341.49855271982892, 188.00656685047159); + double3x2 r3 = double3x2(-449.92732045144186, -311.43587103087259, 69.731466087387616, -232.29964433996923, -341.49855271982892, 188.00656685047159); + TestUtils.AreEqual(a3++, r3); + } + + [TestCompiler] + public static void double3x2_operator_prefix_dec() + { + double3x2 a0 = double3x2(-416.20121712992022, -96.637880131899351, -50.145671629414721, -207.31644759295341, 439.47906156977592, -304.40081920493435); + double3x2 r0 = double3x2(-417.20121712992022, -97.637880131899351, -51.145671629414721, -208.31644759295341, 438.47906156977592, -305.40081920493435); + TestUtils.AreEqual(--a0, r0); + + double3x2 a1 = double3x2(337.96895734312432, 171.96452935597142, -227.44280134301761, 298.28480710568135, 326.50782338087811, 400.720900006928); + double3x2 r1 = double3x2(336.96895734312432, 170.96452935597142, -228.44280134301761, 297.28480710568135, 325.50782338087811, 399.720900006928); + TestUtils.AreEqual(--a1, r1); + + double3x2 a2 = double3x2(-478.03137253133178, -24.584499132160317, 112.79684668071422, -341.97629300783217, -503.27416181158003, -79.635249413380052); + double3x2 r2 = double3x2(-479.03137253133178, -25.584499132160317, 111.79684668071422, -342.97629300783217, -504.27416181158003, -80.635249413380052); + TestUtils.AreEqual(--a2, r2); + + double3x2 a3 = double3x2(-131.0041454448384, -15.70865417258284, 188.75845274178243, 307.79193582562357, -406.667706917351, 181.47510703908051); + double3x2 r3 = double3x2(-132.0041454448384, -16.70865417258284, 187.75845274178243, 306.79193582562357, -407.667706917351, 180.47510703908051); + TestUtils.AreEqual(--a3, r3); + } + + [TestCompiler] + public static void double3x2_operator_postfix_dec() + { + double3x2 a0 = double3x2(-376.59242719066907, 16.969734438215255, -0.25066399585949739, -202.32328734282555, 409.55752940175944, 47.856652520530247); + double3x2 r0 = double3x2(-376.59242719066907, 16.969734438215255, -0.25066399585949739, -202.32328734282555, 409.55752940175944, 47.856652520530247); + TestUtils.AreEqual(a0--, r0); + + double3x2 a1 = double3x2(-281.11170376516492, -182.40572866350681, 450.12809559801974, -129.23265582380475, -332.15495768755443, -261.00890052551819); + double3x2 r1 = double3x2(-281.11170376516492, -182.40572866350681, 450.12809559801974, -129.23265582380475, -332.15495768755443, -261.00890052551819); + TestUtils.AreEqual(a1--, r1); + + double3x2 a2 = double3x2(205.46112570793423, -483.06653784358247, 378.64123433578811, 487.34482287212495, -192.17785772689518, -357.05418960985457); + double3x2 r2 = double3x2(205.46112570793423, -483.06653784358247, 378.64123433578811, 487.34482287212495, -192.17785772689518, -357.05418960985457); + TestUtils.AreEqual(a2--, r2); + + double3x2 a3 = double3x2(-396.30206627226528, 115.86774092347719, -20.823201427619551, 323.40538063803933, 379.15614026559342, 311.29903068733358); + double3x2 r3 = double3x2(-396.30206627226528, 115.86774092347719, -20.823201427619551, 323.40538063803933, 379.15614026559342, 311.29903068733358); + TestUtils.AreEqual(a3--, r3); + } + + + } +} diff --git a/package/Tests/Tests/Shared/TestDouble3x2.gen.cs.meta b/package/Tests/Tests/Shared/TestDouble3x2.gen.cs.meta new file mode 100755 index 000000000..26df49cc6 --- /dev/null +++ b/package/Tests/Tests/Shared/TestDouble3x2.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f95b40a83bedc474aa2badff08c0b04b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/package/Tests/Tests/Shared/TestDouble3x3.gen.cs b/package/Tests/Tests/Shared/TestDouble3x3.gen.cs new file mode 100755 index 000000000..6c21c777b --- /dev/null +++ b/package/Tests/Tests/Shared/TestDouble3x3.gen.cs @@ -0,0 +1,960 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using NUnit.Framework; +using static Unity.Mathematics.math; +using Burst.Compiler.IL.Tests; + +namespace Unity.Mathematics.Tests +{ + [TestFixture] + public class TestDouble3x3 + { + [TestCompiler] + public static void double3x3_zero() + { + TestUtils.AreEqual(double3x3.zero.c0.x, 0.0); + TestUtils.AreEqual(double3x3.zero.c0.y, 0.0); + TestUtils.AreEqual(double3x3.zero.c0.z, 0.0); + TestUtils.AreEqual(double3x3.zero.c1.x, 0.0); + TestUtils.AreEqual(double3x3.zero.c1.y, 0.0); + TestUtils.AreEqual(double3x3.zero.c1.z, 0.0); + TestUtils.AreEqual(double3x3.zero.c2.x, 0.0); + TestUtils.AreEqual(double3x3.zero.c2.y, 0.0); + TestUtils.AreEqual(double3x3.zero.c2.z, 0.0); + } + + [TestCompiler] + public static void double3x3_identity() + { + TestUtils.AreEqual(double3x3.identity.c0.x, 1.0); + TestUtils.AreEqual(double3x3.identity.c0.y, 0.0); + TestUtils.AreEqual(double3x3.identity.c0.z, 0.0); + TestUtils.AreEqual(double3x3.identity.c1.x, 0.0); + TestUtils.AreEqual(double3x3.identity.c1.y, 1.0); + TestUtils.AreEqual(double3x3.identity.c1.z, 0.0); + TestUtils.AreEqual(double3x3.identity.c2.x, 0.0); + TestUtils.AreEqual(double3x3.identity.c2.y, 0.0); + TestUtils.AreEqual(double3x3.identity.c2.z, 1.0); + } + + [TestCompiler] + public static void double3x3_operator_equal_wide_wide() + { + double3x3 a0 = double3x3(-135.18925172425304, -49.094127439471947, 169.12980778940482, 240.80529772527757, 314.73919382446411, 442.39301916695808, 177.92444881141398, 335.53340283759564, 168.1544516869609); + double3x3 b0 = double3x3(-220.01464591734793, 66.980020792679852, 499.20158576369363, -371.113114291389, 208.44865212610398, 390.80369133074009, -72.443806920407269, 362.97643273089841, 194.6783255053117); + bool3x3 r0 = bool3x3(false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + double3x3 a1 = double3x3(350.72955982327903, 367.17843668869625, 46.941470406456574, 188.76415094582558, -97.211392209497944, -293.3210057193977, -234.82292353120766, 417.03371329653714, 26.386443388828297); + double3x3 b1 = double3x3(471.6448635867074, -404.04466719368691, -144.69675476136467, -494.44664334433463, -252.97038209297244, 234.41711746641306, 398.72397465199413, 260.42872083393331, 370.14420502732708); + bool3x3 r1 = bool3x3(false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + double3x3 a2 = double3x3(269.24572265764959, 29.474191440955792, 479.48521469509467, -237.23094355186026, -221.98371349181224, -506.67253255596034, -22.98943401453522, 487.26083802024868, -419.73195596213077); + double3x3 b2 = double3x3(89.579862397899774, -434.81684347373289, -109.84533815730612, 336.9730161805511, -409.15498156526826, 500.38755273278218, -174.08180888652885, 395.10115379612012, 350.33930723291792); + bool3x3 r2 = bool3x3(false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + double3x3 a3 = double3x3(337.20329324212082, 245.04388367619549, 390.21586984685428, 84.412977973191573, 434.20789142800868, -68.728424342688356, 485.76997803420295, 413.16974969076443, -418.26928992675118); + double3x3 b3 = double3x3(-243.14458453056614, -416.39737267810727, 151.5764511337394, -18.224320181749931, -431.67792364194895, -468.3309554850361, 429.49572797748056, 477.38919781026857, -433.42541071093893); + bool3x3 r3 = bool3x3(false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void double3x3_operator_equal_wide_scalar() + { + double3x3 a0 = double3x3(65.671194345537174, 404.41550440546848, -269.7301577393572, 83.630607882342588, 152.99450476141385, -155.86829836474186, 314.67125597348024, 386.36515325417986, 290.04894007837811); + double b0 = (-155.8157547245807); + bool3x3 r0 = bool3x3(false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + double3x3 a1 = double3x3(-132.63519460178691, -69.683271678948415, -191.19075521789063, 186.84520086406042, -232.89569221851218, -319.14406481345372, -49.701092981594172, -300.88189925853248, 333.39685193328046); + double b1 = (-65.667489797653388); + bool3x3 r1 = bool3x3(false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + double3x3 a2 = double3x3(386.377503336583, -309.11719741910565, 141.54237968360189, -227.32334314441465, 83.872881689981, -410.91687483848858, 110.50128345866744, -390.10359329269437, 36.574313896044259); + double b2 = (-296.70189084517858); + bool3x3 r2 = bool3x3(false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + double3x3 a3 = double3x3(-427.54144235492754, 175.81170590958175, -193.47994694182648, 291.05195368968509, 423.97165723516218, -429.87391849508225, -275.15694750247383, -56.332365300661138, -95.835959717554942); + double b3 = (-268.17085111707956); + bool3x3 r3 = bool3x3(false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void double3x3_operator_equal_scalar_wide() + { + double a0 = (36.383921878591195); + double3x3 b0 = double3x3(-400.48919958644046, -71.286823544319191, 156.97811491646712, -225.23872791288363, 499.14180993435059, -211.97992358542047, 428.31192394174263, -489.50133322621758, -5.6915457275190988); + bool3x3 r0 = bool3x3(false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + double a1 = (-30.865948453017495); + double3x3 b1 = double3x3(-362.98307221149241, 184.50319322594589, -160.47062142215231, 316.66882315122928, 390.36923879681581, 505.10510301268891, -294.64870967280524, 443.19909283295226, 96.559236333034619); + bool3x3 r1 = bool3x3(false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + double a2 = (-257.01294601010761); + double3x3 b2 = double3x3(-245.05497538533757, 326.46485176983515, -23.959890138339176, -168.6948808025079, 386.24859279498855, -227.09065185631192, -336.61242524562982, 365.10812752559229, -405.39083952707745); + bool3x3 r2 = bool3x3(false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + double a3 = (-473.99549959320365); + double3x3 b3 = double3x3(298.43535174915348, -149.86322386090796, 450.06639191604518, 153.47643358701669, 56.287803437694834, 39.342111844263059, -350.40371744260369, -482.71723221368961, 239.96540772168214); + bool3x3 r3 = bool3x3(false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void double3x3_operator_not_equal_wide_wide() + { + double3x3 a0 = double3x3(279.99414576217259, -43.342018386042696, -465.72473523846116, 317.46655645848557, 85.714987079480238, 360.89050572034466, 366.08152668833804, 154.5428384070018, 332.426219856565); + double3x3 b0 = double3x3(-460.912120318465, -476.00904844515446, 468.13642070635058, -341.01254312182431, -62.658060341448561, -458.80166718866752, -457.73023316717251, -59.523265627922171, 3.024243117787023); + bool3x3 r0 = bool3x3(true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + double3x3 a1 = double3x3(397.11323160543725, -431.3749584776233, 489.01079319837072, 398.43358320669904, -489.81794594685454, 171.4049242340983, -67.829682620162941, -192.27871498478515, 227.84082494854965); + double3x3 b1 = double3x3(155.81276352508587, -19.839918384253963, -6.0169332055453992, -406.20792145571107, -102.42070083619126, -40.362921018322425, 452.67542645552919, 93.257571979080126, -258.37806689849964); + bool3x3 r1 = bool3x3(true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + double3x3 a2 = double3x3(62.138187675801191, 262.18648755838467, -404.05309052209049, 34.449567572423007, -204.79578719138902, -285.41180314003111, -72.206820760018559, 444.74925228801987, 238.81779991780309); + double3x3 b2 = double3x3(-184.04980405794913, -379.23531192319251, -370.68729537105526, -255.94724023339677, 29.055771602809273, 322.40763226263584, 415.07170005099465, -467.72613189542949, -433.78467508488552); + bool3x3 r2 = bool3x3(true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + double3x3 a3 = double3x3(365.18011563139976, -437.92291351683571, -362.4426316518535, 445.95436665320506, -0.41746735592255391, -506.82837772128562, 245.47704779611763, -173.57105811572217, 390.33854669627669); + double3x3 b3 = double3x3(-212.16593585357344, 474.67491481950265, 452.48318621724991, -92.112742705323171, -385.92209190219739, 420.21507926481547, -239.17604529074208, -99.079094694498508, 4.4760239145141441); + bool3x3 r3 = bool3x3(true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void double3x3_operator_not_equal_wide_scalar() + { + double3x3 a0 = double3x3(-155.44111282911206, -19.426602134214079, 174.63305409934048, 507.9207296352464, 59.177048472304364, 171.15146430356026, -58.923273352404692, -398.17684835855704, 492.20105361016522); + double b0 = (-393.41354173860213); + bool3x3 r0 = bool3x3(true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + double3x3 a1 = double3x3(-165.24150879925185, -380.24326222960059, 501.8990516615562, -134.34545642433011, 458.40042302496749, 46.771004937016869, 161.45995123752391, 261.51423442620512, -145.61239559278471); + double b1 = (270.34102333259818); + bool3x3 r1 = bool3x3(true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + double3x3 a2 = double3x3(-0.44992661497087738, 202.22103724359579, 242.66402232025939, 382.67707675633812, -468.96794221781562, -497.45947789468778, -80.932258882062627, -328.58774844211888, -506.49033260088896); + double b2 = (350.46143047439932); + bool3x3 r2 = bool3x3(true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + double3x3 a3 = double3x3(449.34814640942409, 249.18179690520367, -338.46854058768065, 229.67068420614612, -76.543291365980792, 317.28609314434516, 401.93959612489664, 210.98484502126689, -147.09631616766393); + double b3 = (210.77098784724762); + bool3x3 r3 = bool3x3(true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void double3x3_operator_not_equal_scalar_wide() + { + double a0 = (478.35313938481409); + double3x3 b0 = double3x3(459.55319592894671, 436.45324369727314, -488.71416806090349, 392.76794475725296, -266.73665369056937, 338.55788270503183, -338.10012475498957, -152.3145445102428, -452.82067868338); + bool3x3 r0 = bool3x3(true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + double a1 = (209.43931422449612); + double3x3 b1 = double3x3(50.107968592135194, 372.4343656843688, -488.0213141329686, 489.74075697816011, 270.40006149485714, -472.8467831429312, -286.85046090132113, -384.69186681541237, 443.42352959300558); + bool3x3 r1 = bool3x3(true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + double a2 = (358.74720900074919); + double3x3 b2 = double3x3(-15.414077527548216, -342.17916194637269, 468.96750400446706, -130.56808501601597, 401.7858013593526, -268.35225761511936, -239.231014124691, 411.38655800902586, 139.76932460617707); + bool3x3 r2 = bool3x3(true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + double a3 = (334.52206031164246); + double3x3 b3 = double3x3(-223.62923036498449, -12.488468414400018, 113.46889238872984, -189.65225204716074, -212.84655127900027, 306.1256321902041, -178.33037885386977, 382.14199203166277, -340.86559478420094); + bool3x3 r3 = bool3x3(true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void double3x3_operator_less_wide_wide() + { + double3x3 a0 = double3x3(51.710243010758518, -313.85556450200062, 283.04767359562572, 235.02188621974642, 44.0783565249659, -207.25566659088042, 3.3829410091894943, -144.30134326978651, -69.369597705718888); + double3x3 b0 = double3x3(-261.83523881707117, -19.810742149041403, -149.25882084167506, 205.99822316225539, -306.02438535635565, 102.12168006884008, 231.90633760760829, 179.49885305180158, 473.22488496882136); + bool3x3 r0 = bool3x3(false, true, false, false, false, true, true, true, true); + TestUtils.AreEqual(a0 < b0, r0); + + double3x3 a1 = double3x3(-135.66796762108243, -194.78736576567746, -33.473868147225062, -19.675088653189619, 423.23796697297973, -71.698315415390937, -501.88598870760109, 7.6438391244242894, 302.26289214857991); + double3x3 b1 = double3x3(15.891647107848712, 270.04990614114786, 490.91400240869916, -185.73412164753961, 76.433086669274189, 97.75231246731812, 419.30080600236579, 73.953208242521214, 481.03232382285978); + bool3x3 r1 = bool3x3(true, true, true, false, false, true, true, true, true); + TestUtils.AreEqual(a1 < b1, r1); + + double3x3 a2 = double3x3(-140.55051786291904, -436.586703265359, -351.441728040316, 364.97084896870467, 301.894133946809, 407.55097336673691, 269.10777128353141, 462.98824737173891, 223.8841808884797); + double3x3 b2 = double3x3(7.00747371046225, -7.3240954910051528, -413.07575793428146, -154.1188920261892, 449.20288989003882, 502.01430797111914, -382.31586259525079, 251.53517758638372, 143.17396957388803); + bool3x3 r2 = bool3x3(true, true, false, false, true, true, false, false, false); + TestUtils.AreEqual(a2 < b2, r2); + + double3x3 a3 = double3x3(-287.18923319838439, 283.63862933015389, 511.86434650414822, -60.496787814654795, -234.30346142235373, -316.13839664875456, -417.52215905558421, 441.6434454590285, -191.95062908527939); + double3x3 b3 = double3x3(293.66033686961066, -292.76956691069972, -43.218204756834666, -353.41120044952777, 458.32604405764766, -114.55647259324627, 441.42973276666817, -113.33366709264629, 435.622928583819); + bool3x3 r3 = bool3x3(true, false, false, false, true, true, true, false, true); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void double3x3_operator_less_wide_scalar() + { + double3x3 a0 = double3x3(-221.86977325280651, -121.54646807608498, -97.52392511140738, 479.88107775146193, 67.118990214131259, 137.32880574899207, 282.96659601990439, 258.27909362422258, -111.41316061439608); + double b0 = (199.06751808853244); + bool3x3 r0 = bool3x3(true, true, true, false, true, true, false, false, true); + TestUtils.AreEqual(a0 < b0, r0); + + double3x3 a1 = double3x3(-288.08113278452356, -361.64292042406413, -68.088202269788951, 12.788020378345664, -66.703050406045747, -78.762971199472872, 25.727694284975428, 101.37087182950734, -330.442660724019); + double b1 = (82.665427008022334); + bool3x3 r1 = bool3x3(true, true, true, true, true, true, true, false, true); + TestUtils.AreEqual(a1 < b1, r1); + + double3x3 a2 = double3x3(-48.920521520506838, -8.15008759878117, 241.27682101040932, -183.43778165776178, 423.02713580756779, -334.62272349680904, -98.315578744893685, 300.41017617863145, 297.92523850962766); + double b2 = (359.60440914686978); + bool3x3 r2 = bool3x3(true, true, true, true, false, true, true, true, true); + TestUtils.AreEqual(a2 < b2, r2); + + double3x3 a3 = double3x3(-492.108162870681, 95.788790032169231, -220.62145791790516, -455.37556740985048, 360.29156344025, -296.37211884948056, 272.4883617239484, 360.20793097103387, 389.7274403002707); + double b3 = (-395.80724806143309); + bool3x3 r3 = bool3x3(true, false, false, true, false, false, false, false, false); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void double3x3_operator_less_scalar_wide() + { + double a0 = (-250.4849370692321); + double3x3 b0 = double3x3(-377.19654887597846, -505.14754104295167, 375.92672198634909, 110.17393474940855, -118.09757452742082, -40.45089079833167, -299.74430932651478, 31.437125935888389, -458.904539560389); + bool3x3 r0 = bool3x3(false, false, true, true, true, true, false, true, false); + TestUtils.AreEqual(a0 < b0, r0); + + double a1 = (13.684679276163024); + double3x3 b1 = double3x3(-458.50690839183841, 248.27646624682302, 389.23142999654237, 488.74553679337055, -221.63786731550368, -424.26720329013989, 249.05904948388184, -22.136127720650336, -442.24773928255206); + bool3x3 r1 = bool3x3(false, true, true, true, false, false, true, false, false); + TestUtils.AreEqual(a1 < b1, r1); + + double a2 = (-340.85755721705851); + double3x3 b2 = double3x3(-95.1117256130612, 15.409410245441563, 87.292497437117845, 495.06764220402931, 316.01850309782594, -125.56811505442863, 122.16476803746298, 96.75540046429046, -228.90633808304852); + bool3x3 r2 = bool3x3(true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 < b2, r2); + + double a3 = (-143.95269662884652); + double3x3 b3 = double3x3(-230.238279688283, -327.61262885090548, 103.39802770661095, 434.488835775521, -157.45019228637693, 190.57215914063727, 108.25831871305513, 132.55076056930739, -431.51522155828553); + bool3x3 r3 = bool3x3(false, false, true, true, false, true, true, true, false); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void double3x3_operator_greater_wide_wide() + { + double3x3 a0 = double3x3(-229.29066501804192, 505.536608216137, -73.80706862071861, 100.29203777215071, -419.21478124112582, -159.55974753180504, -396.7703608929973, 127.03739482119556, 489.13989733585151); + double3x3 b0 = double3x3(-445.84502407808088, -420.03529210576568, 299.02440108872224, -13.880978829171966, 151.56173593903043, -163.5094302461992, -391.09603733154762, 479.2837710228207, -77.674873149802409); + bool3x3 r0 = bool3x3(true, true, false, true, false, true, false, false, true); + TestUtils.AreEqual(a0 > b0, r0); + + double3x3 a1 = double3x3(51.91890885863404, 155.38475544535777, -135.63165027258526, -425.97813554572787, -228.430505143679, 383.03834909155887, 136.53358298937496, 8.602427725029429, -251.3243674018068); + double3x3 b1 = double3x3(-46.5841996886694, -415.37701888353422, 71.466978344818131, -206.06102643071722, 360.83628218287424, 236.96878658838978, 14.550342328171382, 364.735178402036, -159.0612996365229); + bool3x3 r1 = bool3x3(true, true, false, false, false, true, true, false, false); + TestUtils.AreEqual(a1 > b1, r1); + + double3x3 a2 = double3x3(-345.954920691417, -170.565928777012, -293.25441588706076, 139.1249764613458, 214.3030732675935, 238.76991211565678, 105.53519086983761, -170.92529280992471, 26.98023964230913); + double3x3 b2 = double3x3(226.63117490831348, 182.79602512288659, 341.83937398616195, -79.130463875425278, -247.29681956362765, 164.58913882290437, -352.15977327533056, 9.8226540134394327, 186.72162613026876); + bool3x3 r2 = bool3x3(false, false, false, true, true, true, true, false, false); + TestUtils.AreEqual(a2 > b2, r2); + + double3x3 a3 = double3x3(-188.92831405854241, 201.78662619450438, -506.05715656003781, 15.454906232401186, 115.08067207926911, -496.97184705034448, 339.88814202877143, 372.22833007025918, 313.2386917142378); + double3x3 b3 = double3x3(-325.91364613450764, -77.930370128681147, -379.74604219000139, 251.45575558927646, -144.1835678295156, 337.88991014002352, -249.50553929503332, -225.90130554228148, -249.49127757246202); + bool3x3 r3 = bool3x3(true, true, false, false, true, false, true, true, true); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void double3x3_operator_greater_wide_scalar() + { + double3x3 a0 = double3x3(11.156317000815761, -411.02322382993214, 385.88556188432756, -485.10304831206008, -491.18003033622171, 405.17534632476759, 173.57509740329124, 69.269281181166548, 501.30683183172107); + double b0 = (-302.81693877969724); + bool3x3 r0 = bool3x3(true, false, true, false, false, true, true, true, true); + TestUtils.AreEqual(a0 > b0, r0); + + double3x3 a1 = double3x3(-367.027771405423, -489.09058998948456, -172.51816066192379, -18.149639853346002, -236.41493498367021, -238.8945134798505, -27.239137900638923, 471.77934072528933, 240.16453253485474); + double b1 = (-86.124509613087639); + bool3x3 r1 = bool3x3(false, false, false, true, false, false, true, true, true); + TestUtils.AreEqual(a1 > b1, r1); + + double3x3 a2 = double3x3(-481.47807930478734, 33.294723764664809, -510.22814702905163, -183.28619607877278, -386.12766260007754, -13.638212448748845, -7.3478887115362568, -261.86596477304863, 52.24950768996473); + double b2 = (185.59438547193747); + bool3x3 r2 = bool3x3(false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 > b2, r2); + + double3x3 a3 = double3x3(16.323217637987455, -262.26747978025463, -458.25599000335484, -218.86613069235631, -34.692342535915031, 290.57303752124915, 180.263321722049, -482.86394690110529, 100.70627574841785); + double b3 = (-410.51010985416832); + bool3x3 r3 = bool3x3(true, true, false, true, true, true, true, false, true); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void double3x3_operator_greater_scalar_wide() + { + double a0 = (453.54610201974685); + double3x3 b0 = double3x3(-226.20441423459187, -423.46500487973213, 409.40550227156166, 453.87706277048073, 87.475727837288673, 113.79560308987072, 176.40926154721956, -140.44002944810319, -182.48286804113673); + bool3x3 r0 = bool3x3(true, true, true, false, true, true, true, true, true); + TestUtils.AreEqual(a0 > b0, r0); + + double a1 = (-158.29329188088576); + double3x3 b1 = double3x3(-162.68531830733889, -193.328676075362, 230.18129955519987, -102.58784227379965, 392.5205878655056, -177.47865947404813, -10.295010809924008, -24.048938524000789, 172.44867499752377); + bool3x3 r1 = bool3x3(true, true, false, false, false, true, false, false, false); + TestUtils.AreEqual(a1 > b1, r1); + + double a2 = (374.04800503982608); + double3x3 b2 = double3x3(-368.99763958947619, -210.19528804076617, 149.47022325800276, -281.34327019441093, -100.46916608720511, 304.86444320569956, -361.52483360912879, -372.45236056505348, -33.909547583157917); + bool3x3 r2 = bool3x3(true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 > b2, r2); + + double a3 = (-69.595290454847429); + double3x3 b3 = double3x3(-460.43241498453187, -309.34166278938841, 486.13155602204222, 471.92098138850224, 479.36154411703421, -107.00416784500896, 331.63653746789157, -340.84013120310385, -384.21461147079924); + bool3x3 r3 = bool3x3(true, true, false, false, false, true, false, true, true); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void double3x3_operator_less_equal_wide_wide() + { + double3x3 a0 = double3x3(240.09053169940159, 462.2131528622532, 293.08251561461134, -427.87067361728782, -405.5227226715175, 204.59190211286386, 294.670105832941, -327.56444445604666, -456.12326667091031); + double3x3 b0 = double3x3(-81.203838624620744, 493.63743876555816, -411.47211451617636, 99.164449499530974, -295.66769875943089, -480.46254824123463, 74.414040361723892, 260.916124226952, 306.17329730939741); + bool3x3 r0 = bool3x3(false, true, false, true, true, false, false, true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + double3x3 a1 = double3x3(282.3012408140587, 421.8811549720732, -311.71284809322697, 84.5674827492644, 447.24461647832982, -154.49435217422172, -424.36474986763892, 36.684489505684269, 267.07029283562224); + double3x3 b1 = double3x3(139.56480438055689, -505.75247955031341, -489.62680958659706, -280.03260267899958, 303.15991058161478, 511.19015788994272, -104.65973358259527, 95.1465771641333, -125.6363432992419); + bool3x3 r1 = bool3x3(false, false, false, false, false, true, true, true, false); + TestUtils.AreEqual(a1 <= b1, r1); + + double3x3 a2 = double3x3(307.89391937288167, -351.76015369582927, -157.36036570247279, 152.70902712303632, 372.26716750313858, 202.36828837281485, -77.043453014010311, 438.18483253856414, 260.28234088620275); + double3x3 b2 = double3x3(376.239777024947, -415.7747320680761, -47.481050275024529, 117.72210293529656, 469.37837264937275, -263.04235780567041, -216.00231109187115, 66.734246046624207, 99.218598173567329); + bool3x3 r2 = bool3x3(true, false, true, false, true, false, false, false, false); + TestUtils.AreEqual(a2 <= b2, r2); + + double3x3 a3 = double3x3(386.03408759927106, -281.49099053139378, -102.9300439837063, -346.71673099450618, -258.34119832624737, -383.30294889179197, -5.1470377469188975, 319.34374752610165, 465.02220485407031); + double3x3 b3 = double3x3(233.843011249715, 439.8399624488502, 61.115118293610976, -219.03058419890266, -404.71288056146022, -202.74836430454087, -312.47647133119244, 310.07189884319519, -320.3630436958573); + bool3x3 r3 = bool3x3(false, true, true, true, false, true, false, false, false); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void double3x3_operator_less_equal_wide_scalar() + { + double3x3 a0 = double3x3(309.1924356469849, 69.673792633076118, -101.72418622939114, -315.97240629604664, -346.01106731314724, 424.15386577330241, -410.87006945669191, -483.90265320423185, 183.82114538169515); + double b0 = (292.92427148154206); + bool3x3 r0 = bool3x3(false, true, true, true, true, false, true, true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + double3x3 a1 = double3x3(320.44249287268258, -386.801748694294, -182.9388249772316, 349.25012962392077, 485.31159304329731, 373.56911652794531, 259.15151822713744, 450.13007828692446, -128.5255282523695); + double b1 = (-257.87003791419329); + bool3x3 r1 = bool3x3(false, true, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 <= b1, r1); + + double3x3 a2 = double3x3(-43.874866744445114, -77.638293064030961, 479.45184038553941, -499.51644372358754, -398.13294643821797, 402.48485893871862, 87.9161055497434, -502.17362308044619, 125.95081263685177); + double b2 = (457.38574549992836); + bool3x3 r2 = bool3x3(true, true, false, true, true, true, true, true, true); + TestUtils.AreEqual(a2 <= b2, r2); + + double3x3 a3 = double3x3(-54.493607308014134, 97.942930982421558, 228.02151809820043, -213.37865243357544, 42.260789175639275, -24.82758070194518, -451.04158684752957, 429.57755132651778, -308.43429031429548); + double b3 = (250.66739737739204); + bool3x3 r3 = bool3x3(true, true, true, true, true, true, true, false, true); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void double3x3_operator_less_equal_scalar_wide() + { + double a0 = (-511.15238141974078); + double3x3 b0 = double3x3(51.159012579898786, 340.44369022010062, 312.81429519914752, 354.19252626699983, 136.39671165142056, -94.767871185563422, 288.544332877055, 304.04282369466625, -148.61806089646092); + bool3x3 r0 = bool3x3(true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + double a1 = (-506.30010127755816); + double3x3 b1 = double3x3(27.581254256694251, 48.471146844546865, 104.88351326104419, -488.6858386884843, -480.43516968210935, 421.9366516647566, 239.72105299668431, -101.01844673092404, -283.95147551407638); + bool3x3 r1 = bool3x3(true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 <= b1, r1); + + double a2 = (-55.2435333986038); + double3x3 b2 = double3x3(-455.80483147865385, 131.10721618081777, -461.69878099006542, -388.48285001725094, -258.93605125087129, -225.2235287284588, -116.01998215355911, -442.59525629626364, 297.33334579008317); + bool3x3 r2 = bool3x3(false, true, false, false, false, false, false, false, true); + TestUtils.AreEqual(a2 <= b2, r2); + + double a3 = (36.687250392831515); + double3x3 b3 = double3x3(485.09780930220052, 344.44564859217292, 237.59216724969087, 230.39086471795611, -413.98479266370873, -215.90167794744565, 39.5603883450666, 22.947996388630941, -162.0605676928817); + bool3x3 r3 = bool3x3(true, true, true, true, false, false, true, false, false); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void double3x3_operator_greater_equal_wide_wide() + { + double3x3 a0 = double3x3(-386.59181302906563, -157.12078221008215, 391.01526445477054, -511.88687133783793, -5.4220387960886569, 287.64527501149348, -122.53520184500849, 7.4814426933794493, 152.94642765491574); + double3x3 b0 = double3x3(153.44301350109424, 49.892483019219981, 78.025787628267835, 138.81373292711271, -225.51057802211056, -339.35611335344436, -373.302078182484, 364.9358934671319, -322.71539870030961); + bool3x3 r0 = bool3x3(false, false, true, false, true, true, true, false, true); + TestUtils.AreEqual(a0 >= b0, r0); + + double3x3 a1 = double3x3(48.986223482054811, 57.338148859021317, 300.46493138953338, 349.25705139211243, 85.749700824613569, -230.95330654408468, 418.7112159294594, -131.03991824530061, -126.51221257378916); + double3x3 b1 = double3x3(125.47818165900105, -25.776589167200314, 297.51890792395864, 73.222349439385539, 462.78374288174496, 393.19134515951919, -95.001432224643168, 381.35702556248611, 93.031928344178937); + bool3x3 r1 = bool3x3(false, true, true, true, false, false, true, false, false); + TestUtils.AreEqual(a1 >= b1, r1); + + double3x3 a2 = double3x3(-156.81847841889527, 422.37748761772059, -413.08933348818186, 219.44273553576443, 35.591133372667741, 447.18153521380464, -223.49299560463663, 302.12299194099523, 459.85272834256887); + double3x3 b2 = double3x3(254.25326287665087, 90.672789377473691, 348.93816892660141, 161.33763106229605, 79.435611046587837, 420.24346824187944, 453.68485209610537, -154.0116427661905, -97.290078923706915); + bool3x3 r2 = bool3x3(false, true, false, true, false, true, false, true, true); + TestUtils.AreEqual(a2 >= b2, r2); + + double3x3 a3 = double3x3(-347.12802879285442, 364.97808211156075, 212.63543162710755, 504.27608680365427, -142.23296052880255, -132.22179395156996, 303.68380489185631, 265.21013439130513, 9.75437188602723); + double3x3 b3 = double3x3(151.18477613813468, 57.360309865959152, -194.207084984615, -462.67061421958294, 113.38661604439221, -129.35329276386335, 8.1077725925052846, 426.44951434920051, 410.69316477826476); + bool3x3 r3 = bool3x3(false, true, true, true, false, false, true, false, false); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void double3x3_operator_greater_equal_wide_scalar() + { + double3x3 a0 = double3x3(495.457423679278, -14.345115906719627, -463.47478053694346, 217.51749215718246, -246.86571776441565, -377.65869706573835, 53.815095211293169, -123.33294373533357, -221.50546441856096); + double b0 = (189.20512804258851); + bool3x3 r0 = bool3x3(true, false, false, true, false, false, false, false, false); + TestUtils.AreEqual(a0 >= b0, r0); + + double3x3 a1 = double3x3(252.99433410027734, -395.36331028275345, 164.77259667439978, -287.00733889593153, 355.83704559683667, 184.19556316369938, 273.01225555735277, -418.14240308205706, 249.38409697701411); + double b1 = (-116.44038277326172); + bool3x3 r1 = bool3x3(true, false, true, false, true, true, true, false, true); + TestUtils.AreEqual(a1 >= b1, r1); + + double3x3 a2 = double3x3(396.39213938098032, 243.76141392614761, -335.121477998384, -302.08690442800844, 254.44223344253476, 179.00504287472234, 71.176674637560154, -331.27167788672807, 307.89058008226129); + double b2 = (332.66542044871744); + bool3x3 r2 = bool3x3(true, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 >= b2, r2); + + double3x3 a3 = double3x3(-388.57851737950858, -219.89257989632551, -491.68100213058341, 30.997067704329766, 199.23222861030706, -74.50001743924804, -343.38647357718389, 216.0315855555383, -420.40314813163275); + double b3 = (150.60576422075076); + bool3x3 r3 = bool3x3(false, false, false, false, true, false, false, true, false); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void double3x3_operator_greater_equal_scalar_wide() + { + double a0 = (215.43534169692327); + double3x3 b0 = double3x3(204.80295310020585, -101.10404853760451, -122.05503827056617, -70.456147941973143, -239.62025677395064, -185.99272426683115, -455.61258027312, 276.66581476697036, 79.39918831707871); + bool3x3 r0 = bool3x3(true, true, true, true, true, true, true, false, true); + TestUtils.AreEqual(a0 >= b0, r0); + + double a1 = (416.42054791768112); + double3x3 b1 = double3x3(379.27350801009379, -439.51472612820322, 67.141009600433108, -74.560638224035813, -367.25635474140586, 494.950765601802, -61.235545425319856, -429.17024846988278, -213.82468924942646); + bool3x3 r1 = bool3x3(true, true, true, true, true, false, true, true, true); + TestUtils.AreEqual(a1 >= b1, r1); + + double a2 = (-264.31016242891093); + double3x3 b2 = double3x3(243.11378275748052, -22.383876095704693, 304.86197175870745, -323.68615332417477, 67.938025267765852, 125.30356818312009, -400.47050280145857, -283.15963162256389, -42.319595595039232); + bool3x3 r2 = bool3x3(false, false, false, true, false, false, true, true, false); + TestUtils.AreEqual(a2 >= b2, r2); + + double a3 = (-429.51037355396448); + double3x3 b3 = double3x3(499.3958854616601, -289.96307887228352, -136.00878554955534, -351.12526123184955, -381.81828921931719, 393.30091089443351, 18.023639925766588, -169.92393048569744, -285.88492669066648); + bool3x3 r3 = bool3x3(false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void double3x3_operator_add_wide_wide() + { + double3x3 a0 = double3x3(465.14837644302679, 278.91072548502621, -277.52992237616792, -65.197214395365336, -473.32437561141529, -4.6955420992782138, -470.53676698661258, -109.95011453980118, -178.70145782209067); + double3x3 b0 = double3x3(483.99436186440028, -204.07667193379098, -365.67356007437854, -509.92086076639634, -270.69751108377125, 486.76397846954126, 267.49177587567442, 251.6425212601398, 244.4951094335388); + double3x3 r0 = double3x3(949.14273830742707, 74.834053551235229, -643.20348245054652, -575.11807516176168, -744.02188669518659, 482.06843637026304, -203.04499111093816, 141.69240672033862, 65.793651611448126); + TestUtils.AreEqual(a0 + b0, r0); + + double3x3 a1 = double3x3(-420.03378339299644, 290.71109236903078, -446.5296368294068, 491.066454400805, -261.11730039358014, -298.40688409395835, 502.42861890347149, 284.59432925125316, 401.12844366632794); + double3x3 b1 = double3x3(-78.675763882079991, 352.20551340291536, 82.779185095233515, 462.54732606492348, -405.492017696375, -428.4983238785054, -41.872599859662614, -269.9274958436971, 75.204465662690041); + double3x3 r1 = double3x3(-498.70954727507643, 642.91660577194614, -363.75045173417328, 953.6137804657285, -666.6093180899552, -726.90520797246381, 460.55601904380887, 14.666833407556055, 476.332909329018); + TestUtils.AreEqual(a1 + b1, r1); + + double3x3 a2 = double3x3(-36.263498084742366, -102.94915657069026, 503.19817161150195, -384.42911857386542, -45.22821452339565, -198.67394337368847, -62.8800013358146, -79.55225447544467, 413.0982751385767); + double3x3 b2 = double3x3(-141.91339380196922, -222.1867559990784, 41.305726308983594, 148.33947117083676, -177.23311217931712, -176.51887830370987, 492.69246768052335, 439.04383942067807, -511.74275922763292); + double3x3 r2 = double3x3(-178.17689188671159, -325.13591256976866, 544.50389792048554, -236.08964740302866, -222.46132670271277, -375.19282167739834, 429.81246634470875, 359.4915849452334, -98.64448408905622); + TestUtils.AreEqual(a2 + b2, r2); + + double3x3 a3 = double3x3(-100.87757997441923, 418.523998693807, -183.143126334596, 407.44374031920165, 300.48602332756207, -261.12612998724273, -309.8303507817119, 378.36333220934648, -224.09398065511789); + double3x3 b3 = double3x3(-399.05713695988857, -315.8684596102072, -228.0772484410914, -171.70519669899028, 467.17394826709005, -474.8229422396156, 311.39072885708447, 326.84541979750873, 475.21193597987849); + double3x3 r3 = double3x3(-499.9347169343078, 102.65553908359982, -411.22037477568739, 235.73854362021137, 767.65997159465212, -735.94907222685833, 1.5603780753725687, 705.20875200685521, 251.1179553247606); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void double3x3_operator_add_wide_scalar() + { + double3x3 a0 = double3x3(459.89829728561369, -447.66336104258119, -94.438627525436971, 126.42986279652916, -36.254356162741033, -349.64130060264904, -2.7912590516690443, -478.41478489265535, 443.11525246273504); + double b0 = (500.99725913489112); + double3x3 r0 = double3x3(960.89555642050482, 53.333898092309937, 406.55863160945415, 627.42712193142029, 464.74290297215009, 151.35595853224208, 498.20600008322208, 22.582474242235776, 944.11251159762617); + TestUtils.AreEqual(a0 + b0, r0); + + double3x3 a1 = double3x3(268.092225914864, -471.25607584009697, -2.6649749291431704, 78.985822952811532, 202.14799151297098, 311.7254551908585, 10.345855002452595, -151.24445898423181, 355.23276703210206); + double b1 = (41.32102133767728); + double3x3 r1 = double3x3(309.41324725254128, -429.93505450241969, 38.65604640853411, 120.30684429048881, 243.46901285064826, 353.04647652853578, 51.666876340129875, -109.92343764655453, 396.55378836977934); + TestUtils.AreEqual(a1 + b1, r1); + + double3x3 a2 = double3x3(-197.80076584490052, 244.14709793969394, -181.6265695940827, -2.4549267303454485, 300.90065469448484, -236.49194895312746, -160.5840962680914, -172.54221566605486, -242.9410861669765); + double b2 = (255.95526587961024); + double3x3 r2 = double3x3(58.154500034709713, 500.10236381930417, 74.328696285527542, 253.50033914926479, 556.85592057409508, 19.463316926482776, 95.371169611518837, 83.41305021355538, 13.014179712633734); + TestUtils.AreEqual(a2 + b2, r2); + + double3x3 a3 = double3x3(466.34409902353957, 264.294014815378, 372.86684029775995, -198.83777699192882, -381.930974899759, 402.16034693371523, -117.02482729639149, 497.37375592504338, 485.90928124166521); + double b3 = (237.98745810146795); + double3x3 r3 = double3x3(704.33155712500752, 502.28147291684593, 610.8542983992279, 39.149681109539131, -143.94351679829106, 640.14780503518318, 120.96263080507646, 735.36121402651133, 723.89673934313316); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void double3x3_operator_add_scalar_wide() + { + double a0 = (-325.51276484388518); + double3x3 b0 = double3x3(-264.08813178915909, -106.00925998855814, -355.44729320865463, -447.33029362528134, -158.70021040677102, -199.48369154682553, 180.31809123806568, 337.57936898692481, -37.05501486596421); + double3x3 r0 = double3x3(-589.60089663304427, -431.52202483244332, -680.96005805253981, -772.84305846916652, -484.2129752506562, -524.9964563907107, -145.1946736058195, 12.066604143039626, -362.56777970984939); + TestUtils.AreEqual(a0 + b0, r0); + + double a1 = (230.80498014707348); + double3x3 b1 = double3x3(-140.17433339924287, 18.02419591789328, -138.61435825126915, 26.904163611542458, -374.53758233345, 154.4676006559597, 268.3838204203098, -190.96302255939833, 188.61725362977813); + double3x3 r1 = double3x3(90.63064674783061, 248.82917606496676, 92.190621895804327, 257.70914375861594, -143.73260218637654, 385.27258080303318, 499.18880056738328, 39.841957587675154, 419.42223377685161); + TestUtils.AreEqual(a1 + b1, r1); + + double a2 = (-504.91612386373623); + double3x3 b2 = double3x3(20.454013595568995, 197.94534525552081, 251.41194474483461, -421.09037538109828, 111.44540052835146, -73.268883024001923, 480.88455770950975, 438.05301233662897, 66.844289095534123); + double3x3 r2 = double3x3(-484.46211026816724, -306.97077860821543, -253.50417911890162, -926.00649924483446, -393.47072333538478, -578.18500688773815, -24.031566154226482, -66.863111527107264, -438.07183476820211); + TestUtils.AreEqual(a2 + b2, r2); + + double a3 = (-270.79599941465818); + double3x3 b3 = double3x3(-44.02192189359198, 197.69471916821544, 19.113929995854392, 349.23776857426287, 366.23449271090067, -413.48026890935387, -260.720191361718, 77.542334831106587, 183.95489009840173); + double3x3 r3 = double3x3(-314.81792130825016, -73.101280246442741, -251.68206941880379, 78.441769159604689, 95.438493296242484, -684.27626832401211, -531.51619077637611, -193.2536645835516, -86.84110931625645); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void double3x3_operator_sub_wide_wide() + { + double3x3 a0 = double3x3(133.37101680290471, -131.8321183341705, -197.29314407952739, -485.286571013409, -337.55033103448818, 471.66710470228782, 146.5066197600712, -130.58504372955537, 110.77707367333448); + double3x3 b0 = double3x3(123.46028739002543, 359.56010048443454, -48.24847819667707, 478.97904680621764, 207.15832886805686, 142.36730462981723, -125.60551005490379, -65.299004823574307, -477.876434787119); + double3x3 r0 = double3x3(9.9107294128792773, -491.39221881860504, -149.04466588285032, -964.26561781962664, -544.708659902545, 329.29980007247059, 272.112129814975, -65.286038905981059, 588.65350846045351); + TestUtils.AreEqual(a0 - b0, r0); + + double3x3 a1 = double3x3(-235.54160486699158, 78.879356659427, -347.68616811730254, -470.82054565419469, -11.459293609233271, -167.94791730118351, 330.67676917215658, -508.35086822339838, -252.03190457636111); + double3x3 b1 = double3x3(164.50000031501986, 428.00958915614035, 72.6278169493321, -446.880505531505, 432.09146114443035, -225.55465637219822, -112.45196705332586, -210.61278853687122, -172.92506011432272); + double3x3 r1 = double3x3(-400.04160518201144, -349.13023249671335, -420.31398506663464, -23.940040122689709, -443.55075475366363, 57.606739071014715, 443.12873622548244, -297.73807968652716, -79.1068444620384); + TestUtils.AreEqual(a1 - b1, r1); + + double3x3 a2 = double3x3(-427.93418737311578, 192.6576150360786, 168.42931016182024, 457.3087858899072, 470.05851457550125, -299.71188058504458, -308.93956937870922, 454.53341052240387, 26.106923830745245); + double3x3 b2 = double3x3(-80.60749415336528, 270.04610861001822, -154.25558550388348, 148.47577745675846, 13.661130673094249, 70.671096596248049, -221.32544551665217, -9.2588145775994235, 288.1738385111903); + double3x3 r2 = double3x3(-347.3266932197505, -77.388493573939627, 322.68489566570372, 308.83300843314873, 456.397383902407, -370.38297718129263, -87.614123862057056, 463.79222510000329, -262.06691468044505); + TestUtils.AreEqual(a2 - b2, r2); + + double3x3 a3 = double3x3(-482.71181105203544, -40.853544492671972, 318.38064613862923, 475.21081541255614, 134.9269641074012, 388.48155969590016, 138.71817285321572, -385.57360547854267, -149.36481745045859); + double3x3 b3 = double3x3(217.36142764676424, 307.54006471649745, -262.41263854802241, -405.3780321578393, 400.00432533771004, 72.119071755613732, -154.88059170305758, -469.65998361523265, -320.61543217330029); + double3x3 r3 = double3x3(-700.07323869879974, -348.39360920916943, 580.79328468665165, 880.5888475703955, -265.07736123030884, 316.36248794028643, 293.5987645562733, 84.086378136689973, 171.2506147228417); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void double3x3_operator_sub_wide_scalar() + { + double3x3 a0 = double3x3(48.936717294592768, 410.45158953706346, -364.44171612544062, 163.98060353285666, -460.06732318367222, 110.91942339340198, 204.35834441164434, 180.26971420099483, -377.92569344952972); + double b0 = (-291.59041442144212); + double3x3 r0 = double3x3(340.52713171603489, 702.04200395850557, -72.8513017039985, 455.57101795429878, -168.4769087622301, 402.5098378148441, 495.94875883308646, 471.86012862243695, -86.3352790280876); + TestUtils.AreEqual(a0 - b0, r0); + + double3x3 a1 = double3x3(-470.26204297983185, 461.50756499800252, -246.28726660753006, 21.605312595891405, 246.35072171238755, -121.42736178330489, -122.71842413894757, -122.93872099879138, 360.15095417581074); + double b1 = (400.53491968686455); + double3x3 r1 = double3x3(-870.79696266669634, 60.972645311137967, -646.82218629439467, -378.92960709097315, -154.184197974477, -521.9622814701695, -523.25334382581218, -523.47364068565594, -40.383965511053816); + TestUtils.AreEqual(a1 - b1, r1); + + double3x3 a2 = double3x3(342.87457887403411, 164.60235245740148, 97.0436885808798, 485.9149813530571, -205.75765690848124, 253.44322717070725, -121.16305619159857, 187.99838813953022, -450.820273370864); + double b2 = (18.929827460520869); + double3x3 r2 = double3x3(323.94475141351325, 145.67252499688061, 78.113861120358933, 466.98515389253623, -224.68748436900211, 234.51339971018638, -140.09288365211944, 169.06856067900935, -469.75010083138488); + TestUtils.AreEqual(a2 - b2, r2); + + double3x3 a3 = double3x3(-248.07337128746946, 441.55261942444031, 449.91060969322484, 354.88602678612153, 98.821485803845121, -189.19323381650878, 269.07481659067548, -59.118566302172155, 363.45839207407948); + double b3 = (-26.996065390760123); + double3x3 r3 = double3x3(-221.07730589670933, 468.54868481520043, 476.90667508398496, 381.88209217688166, 125.81755119460524, -162.19716842574866, 296.0708819814356, -32.122500911412033, 390.45445746483961); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void double3x3_operator_sub_scalar_wide() + { + double a0 = (294.58645905861); + double3x3 b0 = double3x3(452.35251757705237, 256.98980891750648, -275.159888634067, -89.027518075437968, 488.22838829840919, -333.21728030462623, -64.232989102710519, -66.041730196234653, 341.20492831859963); + double3x3 r0 = double3x3(-157.76605851844238, 37.59665014110351, 569.746347692677, 383.61397713404796, -193.6419292397992, 627.80373936323622, 358.81944816132051, 360.62818925484464, -46.618469259989638); + TestUtils.AreEqual(a0 - b0, r0); + + double a1 = (-385.775056303374); + double3x3 b1 = double3x3(75.394746577085357, 354.94371645289641, 169.13141520746581, 88.216608326982964, 1.7350065716240124, 122.53803997977548, -264.94502771317264, -50.837180399725753, -347.65032283759228); + double3x3 r1 = double3x3(-461.16980288045937, -740.71877275627048, -554.90647151083976, -473.991664630357, -387.510062874998, -508.31309628314949, -120.83002859020138, -334.93787590364826, -38.124733465781731); + TestUtils.AreEqual(a1 - b1, r1); + + double a2 = (4.0655586738445209); + double3x3 b2 = double3x3(-79.095424450512724, 354.35833923628479, -292.4925116470514, -53.208983207684469, -246.34760033634848, 299.20334138497867, 432.18467422583353, -163.88000090600923, 176.74255546216978); + double3x3 r2 = double3x3(83.160983124357244, -350.29278056244027, 296.55807032089592, 57.27454188152899, 250.413159010193, -295.13778271113415, -428.119115551989, 167.94555957985375, -172.67699678832525); + TestUtils.AreEqual(a2 - b2, r2); + + double a3 = (-104.9858415615679); + double3x3 b3 = double3x3(-445.7976302792307, -28.873155368898608, -169.58822901993443, -270.35924614144454, 68.0476272423042, -65.531290323255234, 440.38039776328037, 427.36063142649857, -81.472953595906915); + double3x3 r3 = double3x3(340.81178871766281, -76.112686192669287, 64.602387458366536, 165.37340457987665, -173.0334688038721, -39.454551238312661, -545.36623932484827, -532.34647298806647, -23.51288796566098); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void double3x3_operator_mul_wide_wide() + { + double3x3 a0 = double3x3(-394.78053898121254, -412.37219519744264, -25.874570143350638, -241.04595886964626, -93.675987525692221, 244.15999257013198, 494.68846606402121, 53.537962700025105, -239.49641167349017); + double3x3 b0 = double3x3(-149.76397831261346, -345.04538671348496, -284.33404721148963, 267.97923648915219, -326.64849558782225, -150.68967754705329, 207.73243794577775, 366.19289248352538, 358.88076202891807); + double3x3 r0 = double3x3(59123.904078224172, 142287.1235617903, 7357.0212487164608, -64595.312016683383, 30599.120397970968, -36792.390550284115, 102762.84107913627, 19605.221418797286, -85950.654724573629); + TestUtils.AreEqual(a0 * b0, r0); + + double3x3 a1 = double3x3(236.67584644848284, -211.85620818466703, -216.65482030466887, 467.95832870339893, -178.02191146557311, -386.3942503344241, -422.43540521265726, 464.58952758488692, -251.3156646468284); + double3x3 b1 = double3x3(214.85359368792433, 253.42280900358355, -307.71382751488773, 184.4711149597872, 426.43644185850235, -144.28142625851621, 459.47961518703016, -358.31334917541284, -201.36521563370025); + double3x3 r1 = double3x3(50850.6561485879, -53689.195383006307, 66667.684005499876, 86324.794650634591, -75915.030498228327, 55749.513536340863, -194100.45742848891, -166468.62962076368, 50606.233003735295); + TestUtils.AreEqual(a1 * b1, r1); + + double3x3 a2 = double3x3(-104.97877912641445, -66.934159071619717, -39.829896707008572, 401.56559080703448, 434.14618250082538, -336.45419589451245, -83.11415318544681, 329.96027842627848, -316.97214594342381); + double3x3 b2 = double3x3(254.90996539541982, 168.52096303204121, 8.7945530455533572, -194.84647974504458, -405.36266178887462, -180.7321890242082, -189.74690946831691, -35.518455760329232, 120.31664210200154); + double3x3 r2 = double3x3(-26760.136954367728, -11279.808946489193, -350.28613938869785, -78243.6417554897, -175986.65214401312, 60808.103330394995, 15770.6537000148, -11719.679551949688, -38137.024239778322); + TestUtils.AreEqual(a2 * b2, r2); + + double3x3 a3 = double3x3(474.9379296130212, -445.10915800794453, -301.00371541688389, 405.68786425408337, 142.37348682357629, -416.21309037516505, -103.27920513194016, -52.951897407393858, -40.828328390060165); + double3x3 b3 = double3x3(-136.2033479847961, 407.34163231744503, 301.65431489686216, -155.4824007281486, -461.39456126717596, 296.68037738310193, 341.001815239434, -257.09682166627459, 17.593622931089953); + double3x3 r3 = double3x3(-64688.136098260919, -181311.49098239967, -90799.069555490176, -63077.323080500144, -65690.352489042038, -123482.25672429107, -35218.396426477462, 13613.764524639606, -718.31821460143351); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void double3x3_operator_mul_wide_scalar() + { + double3x3 a0 = double3x3(328.20302191758674, -290.10672272839895, 236.99572454998065, 120.48136692889102, 357.90315811610924, 134.86723214707672, -477.31047104173825, -438.272912467957, -46.729179165665585); + double b0 = (192.21119055161773); + double3x3 r0 = double3x3(63084.293585418032, -55761.758562653624, 45553.230371395039, 23157.866976688449, 68792.992123681237, 25922.99125739103, -91744.41390168597, -84240.958291990959, -8981.8711609324328); + TestUtils.AreEqual(a0 * b0, r0); + + double3x3 a1 = double3x3(-238.40500103608008, -48.83483722099794, 355.30832998608628, 119.35660391643489, -196.995807977857, 98.2360046367329, -325.55215683837991, 53.937323833786536, -87.4509838034636); + double b1 = (422.08249374017237); + double3x3 r1 = double3x3(-100626.57735743705, -20612.3298756342, 149969.42596718337, 50378.333025406864, -83148.481887654023, 41463.697812143357, -137409.86620083509, 22766.000149435855, -36911.529323797338); + TestUtils.AreEqual(a1 * b1, r1); + + double3x3 a2 = double3x3(-130.47412949915702, 126.01503211167415, 293.36108769726059, 174.38195737375963, -327.12007704708731, 56.629123475695565, 257.54154241156834, -475.60871551726422, -452.69189450363251); + double b2 = (-222.59457145565869); + double3x3 r2 = double3x3(29042.832941914974, -28050.262069869175, -65300.585597737627, -38816.477071210968, 72815.15336483845, -12605.335471982036, -57327.349265132405, 105867.91821114172, 100766.75825848634); + TestUtils.AreEqual(a2 * b2, r2); + + double3x3 a3 = double3x3(-49.220605157884108, 431.58568330834885, 180.35518583113105, -40.92345454214302, 279.54350842141707, 120.01444226131514, -59.508660105759589, 319.48987236595246, -403.52316040709763); + double b3 = (141.60094959177115); + double3x3 r3 = double3x3(-6969.6844298380192, 61112.942586675614, 25538.465577488507, -5794.8000237431324, 39583.626244687934, 16994.158988929015, -8426.4827799095074, 45240.069311972635, -57139.26269591762); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void double3x3_operator_mul_scalar_wide() + { + double a0 = (-464.534700371574); + double3x3 b0 = double3x3(329.36093846399376, -198.68342671109525, 184.07942518223047, 256.01618754864489, 266.22629297255833, -97.894749448585685, 159.74810583877752, -351.82222263506719, 491.80157660497423); + double3x3 r0 = double3x3(-152999.58486347177, 92295.346096036214, -85511.280621599, -118928.40297318244, -123671.35123704225, 45475.508103049062, -74208.538480743009, 163433.63077584215, -228458.89803045939); + TestUtils.AreEqual(a0 * b0, r0); + + double a1 = (49.902031206480274); + double3x3 b1 = double3x3(424.46256871915546, 160.11807616060514, -395.99208492599058, 125.20168858636248, -265.01581991138676, 314.65609779705107, -292.71202029507236, -37.729878681586058, 165.3622206027444); + double3x3 r1 = double3x3(21181.544350206073, 7990.2172332881028, -19760.809379495968, 6247.8185709406853, -13224.827715428979, 15701.978411577751, -14606.924371276589, -1882.7975833852222, 8251.910692891026); + TestUtils.AreEqual(a1 * b1, r1); + + double a2 = (356.51773302467438); + double3x3 b2 = double3x3(-188.81332906932261, 504.91572475103465, 40.572113771257932, -206.77510581108515, -61.602680473403382, 118.97158938225903, 53.7483275186961, -198.66941771221786, 96.23611287783649); + double3x3 r2 = double3x3(-67315.300044636751, 180011.40955674934, 14464.67802574805, -73718.991969705254, -21962.447990621149, 42415.481340905411, 19162.231880833257, -70829.170424092008, 34309.880798312937); + TestUtils.AreEqual(a2 * b2, r2); + + double a3 = (-20.241880664714529); + double3x3 b3 = double3x3(-31.123976006696012, 38.890465516080326, -13.133307701504464, 507.87128209875493, 95.017933651347562, 340.74862186086762, 438.98690172610191, -227.16596637813655, 452.57297894571582); + double3x3 r3 = double3x3(630.00780813897893, -787.21616197169351, 265.84284722682963, -10280.269885278565, -1923.3416739783402, -6897.3929403736183, -8885.920478112519, 4598.2663825107929, -9160.92823189354); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void double3x3_operator_div_wide_wide() + { + double3x3 a0 = double3x3(246.26574933075619, -269.85612953354428, -451.61952588130697, -7.38850236283082, -308.20558681534862, -373.394808704683, 360.41863482092447, 25.80972458133931, -274.050461181463); + double3x3 b0 = double3x3(172.11981423763552, -77.141104972521362, -325.8353723612779, -450.60868117334724, -261.26215398556656, -122.44949847201326, -93.210781379235357, -442.00522705633438, 484.36271380091216); + double3x3 r0 = double3x3(1.4307809383918566, 3.4982144685336105, 1.3860359070548143, 0.016396715535066435, 1.1796794220427942, 3.0493780159501847, -3.8667054335113131, -0.05839235149599218, -0.56579594872388561); + TestUtils.AreEqual(a0 / b0, r0); + + double3x3 a1 = double3x3(127.53858977534742, -447.6717600522897, -137.4586017771897, -136.13317424437645, 12.43763423545181, 228.51298319013461, 356.9723681681661, -24.762040865031111, 411.66839356518744); + double3x3 b1 = double3x3(-390.78178686219348, 402.02531714086672, 316.65072193585831, 397.15440744774151, -303.26218643005109, -118.59124451437555, -81.650312223308845, -84.346871176896116, -488.41943549011808); + double3x3 r1 = double3x3(-0.32636779415802974, -1.1135412148569459, -0.43410165287743668, -0.3427714050039572, -0.041012809351094658, -1.9268959030313104, -4.37196574572633, 0.29357391115432163, -0.84285833783843456); + TestUtils.AreEqual(a1 / b1, r1); + + double3x3 a2 = double3x3(-204.07890067066944, 11.365393882321882, 82.152295389283609, 37.389483230835481, 394.26582903147948, -429.91279645912016, 315.37384071730719, -122.66599255551864, 447.52615067340719); + double3x3 b2 = double3x3(404.16049999937434, -136.72883731533256, -19.832707652744261, -102.6072290421497, 166.11604960547572, -112.84016590604568, -218.2096851888158, 458.51754042995981, 119.5872405132219); + double3x3 r2 = double3x3(-0.50494519051462317, -0.083123605125890912, -4.1422632162843458, -0.36439423985883462, 2.3734361006528726, 3.8099270149698223, -1.4452788401413792, -0.26752737188743669, 3.7422566885296384); + TestUtils.AreEqual(a2 / b2, r2); + + double3x3 a3 = double3x3(-210.48151574399395, -202.42158398517483, -453.00793072814491, 173.7269934032704, -167.1216643634819, -106.2345221537326, 414.31254239301779, 7.1208250555772565, 274.07367361433512); + double3x3 b3 = double3x3(356.24043218988948, -74.506851469402591, -336.77393332904853, -216.12631593277973, 322.385657699027, 220.25550351862591, -67.234494002179474, 2.229160071457386, -166.21096118083733); + double3x3 r3 = double3x3(-0.59084117557941718, 2.7168183864044027, 1.3451395309907455, -0.80382156450260089, -0.51839050643966134, -0.48232403030396409, -6.1622021336189041, 3.1943982609206638, -1.6489506568471335); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void double3x3_operator_div_wide_scalar() + { + double3x3 a0 = double3x3(-244.51745116175965, 69.112274917360537, -333.02311888943575, 257.39682519500923, 403.24561257066466, 154.34436066185322, 131.52659160062979, -261.88639200007844, -348.92380516087815); + double b0 = (-60.024377612408443); + double3x3 r0 = double3x3(4.0736357608014941, -1.1514034408425655, 5.5481311449798705, -4.2882048166676752, -6.7180307170282818, -2.5713612835520117, -2.1912195816494422, 4.3630005410658415, 5.8130349541308268); + TestUtils.AreEqual(a0 / b0, r0); + + double3x3 a1 = double3x3(-275.53868187383688, 287.64239968342815, 504.37224626185946, 491.78708600056689, -26.63160015392657, -253.23667275776933, 272.89512098622276, 178.09617313095191, -460.87559030059521); + double b1 = (210.55792174607416); + double3x3 r1 = double3x3(-1.308612279171939, 1.3660963087882074, 2.39540855114497, 2.3356380131527215, -0.12648111233755144, -1.2026936372556161, 1.2960572498209078, 0.84582983938134593, -2.1888304485470549); + TestUtils.AreEqual(a1 / b1, r1); + + double3x3 a2 = double3x3(-502.64601611655485, -174.69034036187935, 83.796309271732525, 197.04206690427009, 317.16826525198678, 403.38711781212464, 81.646461763254592, 60.606869964211683, -413.56048102563273); + double b2 = (-84.324793139623864); + double3x3 r2 = double3x3(5.9608330765102533, 2.07163674949821, -0.99373275820533258, -2.3367038277581123, -3.7612694136921725, -4.7837308909160514, -0.968237913469476, -0.71873132097531078, 4.9043758736634526); + TestUtils.AreEqual(a2 / b2, r2); + + double3x3 a3 = double3x3(207.34099803089214, 20.749072799807891, -68.577131064877449, 310.70246257945075, 417.40490193730443, 147.86623079509764, 506.6588964437409, -435.77857300070048, 210.67294011389504); + double b3 = (358.5621036768714); + double3x3 r3 = double3x3(0.57825686514195451, 0.057867444961519181, -0.19125593687022127, 0.8665234261885334, 1.1641076891758224, 0.41238666685298, 1.4130296850900095, -1.2153503354984077, 0.58754937555740427); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void double3x3_operator_div_scalar_wide() + { + double a0 = (41.737658758525527); + double3x3 b0 = double3x3(-422.676129776368, 248.12963235011773, 449.39137741988122, 245.85813796047967, -326.62061253498337, 163.71510489457989, 333.664472020075, 38.291076916405473, -472.97976062864984); + double3x3 r0 = double3x3(-0.098746193168297289, 0.1682090863683405, 0.092875967042706856, 0.16976317767945767, -0.12778635871933872, 0.25494079355354177, 0.12508871114097631, 1.0900100524632514, -0.088244069266411956); + TestUtils.AreEqual(a0 / b0, r0); + + double a1 = (192.23013958345643); + double3x3 b1 = double3x3(-200.29686960964318, -490.18150376257557, -211.10257468517057, -322.85234108700058, -137.98529035317961, 84.32973555677097, 355.06345550858578, 276.42724455354141, -382.9880213136729); + double3x3 r1 = double3x3(-0.95972613030893628, -0.3921611446125986, -0.91060063985548412, -0.59541194261204144, -1.3931205209731754, 2.2795060166416232, 0.5413965774317997, 0.695409527718326, -0.50192206775578785); + TestUtils.AreEqual(a1 / b1, r1); + + double a2 = (-488.647160996053); + double3x3 b2 = double3x3(344.84603826368505, 168.85499938244698, -44.19558837087618, 420.550703959796, -175.6152060849663, -9.2205684227964753, -344.19428865248074, -449.07149216582604, 117.70491724726969); + double3x3 r2 = double3x3(-1.417000941801196, -2.8938862502335212, 11.056469186369281, -1.1619221092607348, 2.7824877576924365, 52.995340264266794, 1.4196841060585423, 1.0881277692319269, -4.1514591949418982); + TestUtils.AreEqual(a2 / b2, r2); + + double a3 = (-337.02741710144437); + double3x3 b3 = double3x3(239.39341389359595, -389.35516304027067, 242.71606718875285, 496.27646445495839, 91.745798392102984, -490.49213360738577, 485.75540922850155, -317.57225504404505, -451.62477871944418); + double3x3 r3 = double3x3(-1.4078391365070895, 0.86560407847111542, -1.3885665708292334, -0.67911223126728126, -3.6734915713639262, 0.68712094243537414, -0.69382123327607692, 1.0612621592358598, 0.74625537167616451); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void double3x3_operator_mod_wide_wide() + { + double3x3 a0 = double3x3(-442.30985924336585, 368.50046246522129, -1.0938966279355213, -364.67383473211612, -197.34394487987458, -34.034902350062, -101.34858350704826, 208.31857142612273, -140.77031404374645); + double3x3 b0 = double3x3(-43.245045443645211, -144.19587690392319, -62.640481739603217, -336.82826510855381, -154.6102545981343, -154.02935583611452, 487.0462093237071, -469.82909105244516, -145.20377237405802); + double3x3 r0 = double3x3(-9.8594048069137443, 80.1087086573749, -1.0938966279355213, -27.845569623562312, -42.73369028174028, -34.034902350062, -101.34858350704826, 208.31857142612273, -140.77031404374645); + TestUtils.AreEqual(a0 % b0, r0); + + double3x3 a1 = double3x3(183.446989383291, -463.36838100076113, 83.839106360375467, -64.714058190916717, 295.06681050689281, 212.257051805154, 349.62829916068745, 119.87592106679267, -37.805828350505692); + double3x3 b1 = double3x3(-203.38401780062543, -22.520082245823062, 224.6900237652892, -435.62674614210925, 12.095571285158144, 40.378765363422531, 345.78484813579587, -433.47126146474443, -355.64996712079733); + double3x3 r1 = double3x3(183.446989383291, -12.966736084299896, 83.839106360375467, -64.714058190916717, 4.773099663097355, 10.363224988041338, 3.8434510248915785, 119.87592106679267, -37.805828350505692); + TestUtils.AreEqual(a1 % b1, r1); + + double3x3 a2 = double3x3(142.41158515886013, 332.24425593588694, -464.19427249589671, -296.14783801517814, 225.17535863871467, -212.06027732233531, 156.98570425668061, 507.61831092630439, 270.83043897842538); + double3x3 b2 = double3x3(4.0154273528677322, 66.659781725453058, -221.85363088448236, -355.05676405274158, 357.93597118832918, 71.375334057666009, -131.41830188195144, -473.98760078567432, 76.2178585884244); + double3x3 r2 = double3x3(1.8716278084895066, 65.605129034074707, -20.487010726932, -296.14783801517814, 225.17535863871467, -69.309609207003291, 25.56740237472917, 33.630710140630072, 42.17686321315216); + TestUtils.AreEqual(a2 % b2, r2); + + double3x3 a3 = double3x3(337.734341063413, 384.91584819597927, 432.51818128699347, 154.29270775350403, -37.0853169137078, 7.7614462411783052, 238.09472309709281, 12.852037674212852, -100.2406762113053); + double3x3 b3 = double3x3(92.210223002457155, -368.18956130006796, -77.467150485826267, 135.23059398272574, 274.27728975670288, 132.18024951414213, -179.87732204230377, 51.968538546920058, 367.21425860338582); + double3x3 r3 = double3x3(61.103672056041546, 16.7262868959113, 45.182428857862135, 19.062113770778296, -37.0853169137078, 7.7614462411783052, 58.217401054789036, 12.852037674212852, -100.2406762113053); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void double3x3_operator_mod_wide_scalar() + { + double3x3 a0 = double3x3(-433.41699548876704, -5.5141427542614565, 393.39439958771425, 299.41153277988155, -120.80601626299602, -502.939041133476, -450.80766245853511, 186.09479698263794, -84.473635951277629); + double b0 = (-90.499235433758827); + double3x3 r0 = double3x3(-71.420053753731736, -5.5141427542614565, 31.39745785267894, 27.913826478605074, -30.306780829237198, -50.442863964681862, -88.8107207234998, 5.0963261151202914, -84.473635951277629); + TestUtils.AreEqual(a0 % b0, r0); + + double3x3 a1 = double3x3(-318.78148356023314, -54.6001856581309, -172.33886607565864, -429.71466728193434, 222.36186109406958, 5.796394112425105, 254.51082885196, -433.09369703433185, -203.08261284748215); + double b1 = (433.45469041981482); + double3x3 r1 = double3x3(-318.78148356023314, -54.6001856581309, -172.33886607565864, -429.71466728193434, 222.36186109406958, 5.796394112425105, 254.51082885196, -433.09369703433185, -203.08261284748215); + TestUtils.AreEqual(a1 % b1, r1); + + double3x3 a2 = double3x3(-75.356399809641971, -69.403906139267576, 5.3372299696026175, -279.06042803407666, 483.55059097872606, -331.99334660730949, 335.99997655302286, 67.839589388966374, -124.72076731767544); + double b2 = (252.28909385031511); + double3x3 r2 = double3x3(-75.356399809641971, -69.403906139267576, 5.3372299696026175, -26.771334183761553, 231.26149712841095, -79.704252756994379, 83.71088270270775, 67.839589388966374, -124.72076731767544); + TestUtils.AreEqual(a2 % b2, r2); + + double3x3 a3 = double3x3(38.175906437531125, 405.77360100567978, -194.76144489774549, 235.72397314557986, 465.98487804177444, -304.153164289963, -295.52024735860539, 313.72239532774427, -232.20264135683078); + double b3 = (271.28698671575955); + double3x3 r3 = double3x3(38.175906437531125, 134.48661428992023, -194.76144489774549, 235.72397314557986, 194.69789132601488, -32.866177574203448, -24.233260642845835, 42.435408611984712, -232.20264135683078); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void double3x3_operator_mod_scalar_wide() + { + double a0 = (-396.4224028049141); + double3x3 b0 = double3x3(-159.14024384279747, 230.17333399046834, 14.779358632294134, -303.15649738123477, 399.63502020371845, 206.69470534412881, 397.04482263934096, -393.89064735634747, -372.06709426085797); + double3x3 r0 = double3x3(-78.141915119319151, -166.24906881444576, -12.159078365266623, -93.265905423679328, -396.4224028049141, -189.72769746078529, -396.4224028049141, -2.5317554485666278, -24.355308544056129); + TestUtils.AreEqual(a0 % b0, r0); + + double a1 = (201.01229796233224); + double3x3 b1 = double3x3(-95.5668547598491, -258.95146882671463, 106.98357563232241, 469.3235559264773, -34.808985011097491, 184.83653434777466, 374.79425376224992, -131.87271911086174, -120.09286003936683); + double3x3 r1 = double3x3(9.8785884426340544, 201.01229796233224, 94.028722330009828, 201.01229796233224, 26.967372906844787, 16.175763614557582, 201.01229796233224, 69.1395788514705, 80.919437922965415); + TestUtils.AreEqual(a1 % b1, r1); + + double a2 = (4.506670715523228); + double3x3 b2 = double3x3(-111.40195732535886, 391.54249710195813, -218.66887078931035, 196.37741980160467, -511.03262233689082, 499.95350598727987, -433.52306505363578, -163.8668559360629, 177.00401099818009); + double3x3 r2 = double3x3(4.506670715523228, 4.506670715523228, 4.506670715523228, 4.506670715523228, 4.506670715523228, 4.506670715523228, 4.506670715523228, 4.506670715523228, 4.506670715523228); + TestUtils.AreEqual(a2 % b2, r2); + + double a3 = (110.65016441729392); + double3x3 b3 = double3x3(17.68454910148148, -95.85296754532169, -432.44096561541824, 192.69208654793545, -268.13177621929526, 271.07511461483091, 423.70268912972074, -413.23324675729185, 127.95621091125361); + double3x3 r3 = double3x3(4.5428698084050438, 14.797196871972233, 110.65016441729392, 110.65016441729392, 110.65016441729392, 110.65016441729392, 110.65016441729392, 110.65016441729392, 110.65016441729392); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void double3x3_operator_plus() + { + double3x3 a0 = double3x3(271.6708086802023, -79.080240524876956, -330.98506203805334, 31.824682965793045, 315.44952860262686, 319.22218742930431, 190.32466015141677, -350.30858270745193, -320.51845875406565); + double3x3 r0 = double3x3(271.6708086802023, -79.080240524876956, -330.98506203805334, 31.824682965793045, 315.44952860262686, 319.22218742930431, 190.32466015141677, -350.30858270745193, -320.51845875406565); + TestUtils.AreEqual(+a0, r0); + + double3x3 a1 = double3x3(102.0544069288552, -428.77622075973835, 377.23016208095021, 234.77393042052813, 34.283600107898792, 258.33039414991174, 465.35593555185756, 309.59316530339106, -316.93713655925222); + double3x3 r1 = double3x3(102.0544069288552, -428.77622075973835, 377.23016208095021, 234.77393042052813, 34.283600107898792, 258.33039414991174, 465.35593555185756, 309.59316530339106, -316.93713655925222); + TestUtils.AreEqual(+a1, r1); + + double3x3 a2 = double3x3(-230.05266557915724, 2.585727931273027, 350.24640981771347, 60.819777278611355, -472.44209526127304, -364.80255644619581, 239.15236937215195, 473.8031363309376, 285.80893935161123); + double3x3 r2 = double3x3(-230.05266557915724, 2.585727931273027, 350.24640981771347, 60.819777278611355, -472.44209526127304, -364.80255644619581, 239.15236937215195, 473.8031363309376, 285.80893935161123); + TestUtils.AreEqual(+a2, r2); + + double3x3 a3 = double3x3(-273.26378191321334, -113.36231785331029, -351.7548708169511, -116.53621798219916, -496.05329274388652, -330.00534716714424, -379.67424100436006, -339.673203864914, -29.083537353707243); + double3x3 r3 = double3x3(-273.26378191321334, -113.36231785331029, -351.7548708169511, -116.53621798219916, -496.05329274388652, -330.00534716714424, -379.67424100436006, -339.673203864914, -29.083537353707243); + TestUtils.AreEqual(+a3, r3); + } + + [TestCompiler] + public static void double3x3_operator_neg() + { + double3x3 a0 = double3x3(420.22718854445372, -196.25749811728366, -335.42683068636188, 509.04366969924592, -33.014395013923945, -498.57532071442125, -495.8379526063045, -270.85946787095605, 19.686896571743773); + double3x3 r0 = double3x3(-420.22718854445372, 196.25749811728366, 335.42683068636188, -509.04366969924592, 33.014395013923945, 498.57532071442125, 495.8379526063045, 270.85946787095605, -19.686896571743773); + TestUtils.AreEqual(-a0, r0); + + double3x3 a1 = double3x3(268.23670662019254, 223.38126312167446, -410.39206070936848, -395.68154186554324, -349.14948885010062, -110.9393032113739, -238.21960913307015, 292.54351224216794, 469.29257867731735); + double3x3 r1 = double3x3(-268.23670662019254, -223.38126312167446, 410.39206070936848, 395.68154186554324, 349.14948885010062, 110.9393032113739, 238.21960913307015, -292.54351224216794, -469.29257867731735); + TestUtils.AreEqual(-a1, r1); + + double3x3 a2 = double3x3(48.290685914592245, 66.148520738886873, 55.707977559281517, 464.54141090090457, 499.24280213715645, 175.01502259774838, 196.38759169186824, -306.1655677790593, 149.66006023700356); + double3x3 r2 = double3x3(-48.290685914592245, -66.148520738886873, -55.707977559281517, -464.54141090090457, -499.24280213715645, -175.01502259774838, -196.38759169186824, 306.1655677790593, -149.66006023700356); + TestUtils.AreEqual(-a2, r2); + + double3x3 a3 = double3x3(320.3917383255399, 22.03845144344416, -159.55426199713457, 419.82245011805674, 303.32339992342679, 363.71671049842462, 280.88790405955535, -270.65131939139746, -201.61574015469091); + double3x3 r3 = double3x3(-320.3917383255399, -22.03845144344416, 159.55426199713457, -419.82245011805674, -303.32339992342679, -363.71671049842462, -280.88790405955535, 270.65131939139746, 201.61574015469091); + TestUtils.AreEqual(-a3, r3); + } + + [TestCompiler] + public static void double3x3_operator_prefix_inc() + { + double3x3 a0 = double3x3(-99.79557113526181, 458.74185082816609, 96.179026886904126, -48.552469514567633, -315.728967098393, -299.23014583216525, -323.61485853959567, -456.89028832730384, -76.507656371457358); + double3x3 r0 = double3x3(-98.79557113526181, 459.74185082816609, 97.179026886904126, -47.552469514567633, -314.728967098393, -298.23014583216525, -322.61485853959567, -455.89028832730384, -75.507656371457358); + TestUtils.AreEqual(++a0, r0); + + double3x3 a1 = double3x3(-305.58477344437722, 148.67930967578627, 363.2849182390072, -115.5592263283018, -326.87781992874937, -179.89464839729231, 339.8765849265626, -38.410431164507941, -153.3736775635619); + double3x3 r1 = double3x3(-304.58477344437722, 149.67930967578627, 364.2849182390072, -114.5592263283018, -325.87781992874937, -178.89464839729231, 340.8765849265626, -37.410431164507941, -152.3736775635619); + TestUtils.AreEqual(++a1, r1); + + double3x3 a2 = double3x3(261.62557304167444, -396.65022892348946, 301.30576791488829, -221.35540328796736, -429.69815011960367, -271.28932893988178, -264.38006246480165, -377.55920785365589, 223.23241792583485); + double3x3 r2 = double3x3(262.62557304167444, -395.65022892348946, 302.30576791488829, -220.35540328796736, -428.69815011960367, -270.28932893988178, -263.38006246480165, -376.55920785365589, 224.23241792583485); + TestUtils.AreEqual(++a2, r2); + + double3x3 a3 = double3x3(-71.076339993195745, 131.28316909227669, 22.304934273615913, -480.76047228312143, 200.95175967037289, 117.95409851798513, 139.52581245243823, 335.68968192473505, 162.6615141195532); + double3x3 r3 = double3x3(-70.076339993195745, 132.28316909227669, 23.304934273615913, -479.76047228312143, 201.95175967037289, 118.95409851798513, 140.52581245243823, 336.68968192473505, 163.6615141195532); + TestUtils.AreEqual(++a3, r3); + } + + [TestCompiler] + public static void double3x3_operator_postfix_inc() + { + double3x3 a0 = double3x3(322.94356623429042, 472.05246542024076, 203.48761925636211, -49.854570650427888, -31.420532002775246, 455.33662459595905, 271.45466840986842, 55.736877228942149, 153.75031645305); + double3x3 r0 = double3x3(322.94356623429042, 472.05246542024076, 203.48761925636211, -49.854570650427888, -31.420532002775246, 455.33662459595905, 271.45466840986842, 55.736877228942149, 153.75031645305); + TestUtils.AreEqual(a0++, r0); + + double3x3 a1 = double3x3(-174.17301925186672, 215.11022744658874, 159.86103184514729, -333.05045262586816, 241.46487509527469, 287.22045649551808, -170.10464366250886, -270.65246380057766, -162.86024792625579); + double3x3 r1 = double3x3(-174.17301925186672, 215.11022744658874, 159.86103184514729, -333.05045262586816, 241.46487509527469, 287.22045649551808, -170.10464366250886, -270.65246380057766, -162.86024792625579); + TestUtils.AreEqual(a1++, r1); + + double3x3 a2 = double3x3(454.48881003562769, 209.52264294844247, -311.43587103087259, 69.731466087387616, -232.29964433996923, -341.49855271982892, 188.00656685047159, 417.72977919957123, 25.565661203845252); + double3x3 r2 = double3x3(454.48881003562769, 209.52264294844247, -311.43587103087259, 69.731466087387616, -232.29964433996923, -341.49855271982892, 188.00656685047159, 417.72977919957123, 25.565661203845252); + TestUtils.AreEqual(a2++, r2); + + double3x3 a3 = double3x3(-463.72565982478005, -310.1449584020977, -117.39846258861871, 403.50871271803453, -111.27954178269931, 446.60767313773169, -12.352577930480493, -232.15012251220185, 64.577020436793987); + double3x3 r3 = double3x3(-463.72565982478005, -310.1449584020977, -117.39846258861871, 403.50871271803453, -111.27954178269931, 446.60767313773169, -12.352577930480493, -232.15012251220185, 64.577020436793987); + TestUtils.AreEqual(a3++, r3); + } + + [TestCompiler] + public static void double3x3_operator_prefix_dec() + { + double3x3 a0 = double3x3(-416.20121712992022, -96.637880131899351, -50.145671629414721, -207.31644759295341, 439.47906156977592, -304.40081920493435, 337.96895734312432, 246.08898293510492, 171.96452935597142); + double3x3 r0 = double3x3(-417.20121712992022, -97.637880131899351, -51.145671629414721, -208.31644759295341, 438.47906156977592, -305.40081920493435, 336.96895734312432, 245.08898293510492, 170.96452935597142); + TestUtils.AreEqual(--a0, r0); + + double3x3 a1 = double3x3(-227.44280134301761, 326.50782338087811, 400.720900006928, -478.03137253133178, -326.45297852459038, -24.584499132160317, 112.79684668071422, -341.97629300783217, -503.27416181158003); + double3x3 r1 = double3x3(-228.44280134301761, 325.50782338087811, 399.720900006928, -479.03137253133178, -327.45297852459038, -25.584499132160317, 111.79684668071422, -342.97629300783217, -504.27416181158003); + TestUtils.AreEqual(--a1, r1); + + double3x3 a2 = double3x3(-79.635249413380052, 147.89369566174867, -15.70865417258284, 188.75845274178243, 307.79193582562357, -406.667706917351, 181.47510703908051, -188.69222578252305, -505.2156915633081); + double3x3 r2 = double3x3(-80.635249413380052, 146.89369566174867, -16.70865417258284, 187.75845274178243, 306.79193582562357, -407.667706917351, 180.47510703908051, -189.69222578252305, -506.2156915633081); + TestUtils.AreEqual(--a2, r2); + + double3x3 a3 = double3x3(-372.24192898918034, 83.767736235525376, -30.631410374600193, -436.90656181653333, -51.668396258572329, 345.02153913351776, 4.7353689692613443, -68.653318198701982, 481.496122346025); + double3x3 r3 = double3x3(-373.24192898918034, 82.767736235525376, -31.631410374600193, -437.90656181653333, -52.668396258572329, 344.02153913351776, 3.7353689692613443, -69.653318198701982, 480.496122346025); + TestUtils.AreEqual(--a3, r3); + } + + [TestCompiler] + public static void double3x3_operator_postfix_dec() + { + double3x3 a0 = double3x3(-376.59242719066907, 16.969734438215255, -0.25066399585949739, -202.32328734282555, 409.55752940175944, 47.856652520530247, -281.11170376516492, -262.062590959511, -182.40572866350681); + double3x3 r0 = double3x3(-376.59242719066907, 16.969734438215255, -0.25066399585949739, -202.32328734282555, 409.55752940175944, 47.856652520530247, -281.11170376516492, -262.062590959511, -182.40572866350681); + TestUtils.AreEqual(a0--, r0); + + double3x3 a1 = double3x3(450.12809559801974, -332.15495768755443, -261.00890052551819, 205.46112570793423, -230.22777878038016, -483.06653784358247, 378.64123433578811, 487.34482287212495, -192.17785772689518); + double3x3 r1 = double3x3(450.12809559801974, -332.15495768755443, -261.00890052551819, 205.46112570793423, -230.22777878038016, -483.06653784358247, 378.64123433578811, 487.34482287212495, -192.17785772689518); + TestUtils.AreEqual(a1--, r1); + + double3x3 a2 = double3x3(-357.05418960985457, 279.42425287860647, 115.86774092347719, -20.823201427619551, 323.40538063803933, 379.15614026559342, 311.29903068733358, 409.22248644811214, -428.25672479544613); + double3x3 r2 = double3x3(-357.05418960985457, 279.42425287860647, 115.86774092347719, -20.823201427619551, 323.40538063803933, 379.15614026559342, 311.29903068733358, 409.22248644811214, -428.25672479544613); + TestUtils.AreEqual(a2--, r2); + + double3x3 a3 = double3x3(-425.2883748604396, -258.84836089743692, -208.98576388553982, -313.42591657928466, 178.31252797800698, 176.78949864990523, -370.78628438095853, 64.903882295314133, 449.63778540568319); + double3x3 r3 = double3x3(-425.2883748604396, -258.84836089743692, -208.98576388553982, -313.42591657928466, 178.31252797800698, 176.78949864990523, -370.78628438095853, 64.903882295314133, 449.63778540568319); + TestUtils.AreEqual(a3--, r3); + } + + + } +} diff --git a/package/Tests/Tests/Shared/TestDouble3x3.gen.cs.meta b/package/Tests/Tests/Shared/TestDouble3x3.gen.cs.meta new file mode 100755 index 000000000..c045174d8 --- /dev/null +++ b/package/Tests/Tests/Shared/TestDouble3x3.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4971c82bdb64ccb49b92ffe0a2d2c59a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/package/Tests/Tests/Shared/TestDouble3x4.gen.cs b/package/Tests/Tests/Shared/TestDouble3x4.gen.cs new file mode 100755 index 000000000..160dd7e3b --- /dev/null +++ b/package/Tests/Tests/Shared/TestDouble3x4.gen.cs @@ -0,0 +1,949 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using NUnit.Framework; +using static Unity.Mathematics.math; +using Burst.Compiler.IL.Tests; + +namespace Unity.Mathematics.Tests +{ + [TestFixture] + public class TestDouble3x4 + { + [TestCompiler] + public static void double3x4_zero() + { + TestUtils.AreEqual(double3x4.zero.c0.x, 0.0); + TestUtils.AreEqual(double3x4.zero.c0.y, 0.0); + TestUtils.AreEqual(double3x4.zero.c0.z, 0.0); + TestUtils.AreEqual(double3x4.zero.c1.x, 0.0); + TestUtils.AreEqual(double3x4.zero.c1.y, 0.0); + TestUtils.AreEqual(double3x4.zero.c1.z, 0.0); + TestUtils.AreEqual(double3x4.zero.c2.x, 0.0); + TestUtils.AreEqual(double3x4.zero.c2.y, 0.0); + TestUtils.AreEqual(double3x4.zero.c2.z, 0.0); + TestUtils.AreEqual(double3x4.zero.c3.x, 0.0); + TestUtils.AreEqual(double3x4.zero.c3.y, 0.0); + TestUtils.AreEqual(double3x4.zero.c3.z, 0.0); + } + + [TestCompiler] + public static void double3x4_operator_equal_wide_wide() + { + double3x4 a0 = double3x4(-135.18925172425304, -49.094127439471947, 169.12980778940482, 240.80529772527757, 314.73919382446411, 442.39301916695808, 177.92444881141398, 335.53340283759564, 168.1544516869609, 350.72955982327903, 367.17843668869625, 46.941470406456574); + double3x4 b0 = double3x4(-220.01464591734793, 66.980020792679852, 499.20158576369363, -371.113114291389, 208.44865212610398, 390.80369133074009, -72.443806920407269, 362.97643273089841, 194.6783255053117, 471.6448635867074, -404.04466719368691, -144.69675476136467); + bool3x4 r0 = bool3x4(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + double3x4 a1 = double3x4(188.76415094582558, -97.211392209497944, -293.3210057193977, -234.82292353120766, 417.03371329653714, 26.386443388828297, 269.24572265764959, 29.474191440955792, 479.48521469509467, -237.23094355186026, -221.98371349181224, -506.67253255596034); + double3x4 b1 = double3x4(-494.44664334433463, -252.97038209297244, 234.41711746641306, 398.72397465199413, 260.42872083393331, 370.14420502732708, 89.579862397899774, -434.81684347373289, -109.84533815730612, 336.9730161805511, -409.15498156526826, 500.38755273278218); + bool3x4 r1 = bool3x4(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + double3x4 a2 = double3x4(-22.98943401453522, 487.26083802024868, -419.73195596213077, 337.20329324212082, 245.04388367619549, 390.21586984685428, 84.412977973191573, 434.20789142800868, -68.728424342688356, 485.76997803420295, 413.16974969076443, -418.26928992675118); + double3x4 b2 = double3x4(-174.08180888652885, 395.10115379612012, 350.33930723291792, -243.14458453056614, -416.39737267810727, 151.5764511337394, -18.224320181749931, -431.67792364194895, -468.3309554850361, 429.49572797748056, 477.38919781026857, -433.42541071093893); + bool3x4 r2 = bool3x4(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + double3x4 a3 = double3x4(-346.79586593564409, 504.15964889161273, 345.18627635817336, -434.71304126955243, -499.77411078837429, 282.01905192156278, 259.15627944616426, 306.4559306141249, 435.22542759181249, -386.89967864886842, 211.3639925510455, -7.2298214469244044); + double3x4 b3 = double3x4(273.54640329701192, -34.976225153997632, 221.96845422590548, 85.919132511093835, -85.598944942280184, 392.76080316713114, -117.92407732732784, -445.30559393638077, -242.46897208060557, 173.64309533575693, 389.8977403072164, -14.290465123155343); + bool3x4 r3 = bool3x4(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void double3x4_operator_equal_wide_scalar() + { + double3x4 a0 = double3x4(65.671194345537174, 404.41550440546848, -269.7301577393572, 83.630607882342588, 152.99450476141385, -155.86829836474186, 314.67125597348024, 386.36515325417986, 290.04894007837811, -132.63519460178691, -65.667489797653388, -69.683271678948415); + double b0 = (-155.8157547245807); + bool3x4 r0 = bool3x4(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + double3x4 a1 = double3x4(-191.19075521789063, -232.89569221851218, -319.14406481345372, -49.701092981594172, -300.88189925853248, 333.39685193328046, 386.377503336583, -296.70189084517858, -309.11719741910565, 141.54237968360189, -227.32334314441465, 83.872881689981); + double b1 = (186.84520086406042); + bool3x4 r1 = bool3x4(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + double3x4 a2 = double3x4(-410.91687483848858, -390.10359329269437, 36.574313896044259, -427.54144235492754, -268.17085111707956, 175.81170590958175, -193.47994694182648, 291.05195368968509, 423.97165723516218, -429.87391849508225, -275.15694750247383, -56.332365300661138); + double b2 = (110.50128345866744); + bool3x4 r2 = bool3x4(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + double3x4 a3 = double3x4(-95.835959717554942, 253.00615632394613, -300.50952949212376, 314.86654320120181, 195.61619886924336, -26.128909838445907, -284.7746838465215, -242.67206560944771, 140.36059886792702, 505.64434194268858, 506.5379443143205, -502.369801993654); + double b3 = (-124.86533385369245); + bool3x4 r3 = bool3x4(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void double3x4_operator_equal_scalar_wide() + { + double a0 = (36.383921878591195); + double3x4 b0 = double3x4(-400.48919958644046, -71.286823544319191, 156.97811491646712, -225.23872791288363, 499.14180993435059, -211.97992358542047, 428.31192394174263, -489.50133322621758, -5.6915457275190988, -30.865948453017495, -362.98307221149241, 184.50319322594589); + bool3x4 r0 = bool3x4(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + double a1 = (-160.47062142215231); + double3x4 b1 = double3x4(316.66882315122928, 390.36923879681581, 505.10510301268891, -294.64870967280524, 443.19909283295226, 96.559236333034619, -257.01294601010761, -245.05497538533757, 326.46485176983515, -23.959890138339176, -168.6948808025079, 386.24859279498855); + bool3x4 r1 = bool3x4(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + double a2 = (-227.09065185631192); + double3x4 b2 = double3x4(-336.61242524562982, 365.10812752559229, -405.39083952707745, -473.99549959320365, 298.43535174915348, -149.86322386090796, 450.06639191604518, 153.47643358701669, 56.287803437694834, 39.342111844263059, -350.40371744260369, -482.71723221368961); + bool3x4 r2 = bool3x4(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + double a3 = (239.96540772168214); + double3x4 b3 = double3x4(-3.4060323254233253, -1.4948394305514512, 105.96042184995508, 151.53752787017152, 63.283196240329744, -289.69317378182575, 137.55377942768564, -247.66646945088473, -339.42056409428858, 23.238285313937013, 21.177870045033274, 477.036560995987); + bool3x4 r3 = bool3x4(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void double3x4_operator_not_equal_wide_wide() + { + double3x4 a0 = double3x4(279.99414576217259, -43.342018386042696, -465.72473523846116, 317.46655645848557, 85.714987079480238, 360.89050572034466, 366.08152668833804, 154.5428384070018, 332.426219856565, 397.11323160543725, -431.3749584776233, 489.01079319837072); + double3x4 b0 = double3x4(-460.912120318465, -476.00904844515446, 468.13642070635058, -341.01254312182431, -62.658060341448561, -458.80166718866752, -457.73023316717251, -59.523265627922171, 3.024243117787023, 155.81276352508587, -19.839918384253963, -6.0169332055453992); + bool3x4 r0 = bool3x4(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + double3x4 a1 = double3x4(398.43358320669904, -489.81794594685454, 171.4049242340983, -67.829682620162941, -192.27871498478515, 227.84082494854965, 62.138187675801191, 262.18648755838467, -404.05309052209049, 34.449567572423007, -204.79578719138902, -285.41180314003111); + double3x4 b1 = double3x4(-406.20792145571107, -102.42070083619126, -40.362921018322425, 452.67542645552919, 93.257571979080126, -258.37806689849964, -184.04980405794913, -379.23531192319251, -370.68729537105526, -255.94724023339677, 29.055771602809273, 322.40763226263584); + bool3x4 r1 = bool3x4(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + double3x4 a2 = double3x4(-72.206820760018559, 444.74925228801987, 238.81779991780309, 365.18011563139976, -437.92291351683571, -362.4426316518535, 445.95436665320506, -0.41746735592255391, -506.82837772128562, 245.47704779611763, -173.57105811572217, 390.33854669627669); + double3x4 b2 = double3x4(415.07170005099465, -467.72613189542949, -433.78467508488552, -212.16593585357344, 474.67491481950265, 452.48318621724991, -92.112742705323171, -385.92209190219739, 420.21507926481547, -239.17604529074208, -99.079094694498508, 4.4760239145141441); + bool3x4 r2 = bool3x4(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + double3x4 a3 = double3x4(252.83775555940235, 47.865854047176413, 457.710514043323, -313.22114601415637, 391.20388168432, 481.7861199238273, 26.887826693657757, -298.14237346227389, 240.07745634768037, -332.45515338166388, -333.60717240609563, -313.18967857639757); + double3x4 b3 = double3x4(264.34854352862976, 451.31233689343196, 232.95803343176749, -142.62218839611029, -300.22557820949032, 268.33322418310365, -112.1035507247334, -270.49403989989963, -71.9932391978769, 99.463272856298545, 321.70330134113476, 200.05965218323263); + bool3x4 r3 = bool3x4(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void double3x4_operator_not_equal_wide_scalar() + { + double3x4 a0 = double3x4(-155.44111282911206, -19.426602134214079, 174.63305409934048, 507.9207296352464, 59.177048472304364, 171.15146430356026, -58.923273352404692, -398.17684835855704, 492.20105361016522, -165.24150879925185, 270.34102333259818, -380.24326222960059); + double b0 = (-393.41354173860213); + bool3x4 r0 = bool3x4(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + double3x4 a1 = double3x4(501.8990516615562, 458.40042302496749, 46.771004937016869, 161.45995123752391, 261.51423442620512, -145.61239559278471, -0.44992661497087738, 350.46143047439932, 202.22103724359579, 242.66402232025939, 382.67707675633812, -468.96794221781562); + double b1 = (-134.34545642433011); + bool3x4 r1 = bool3x4(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + double3x4 a2 = double3x4(-497.45947789468778, -328.58774844211888, -506.49033260088896, 449.34814640942409, 210.77098784724762, 249.18179690520367, -338.46854058768065, 229.67068420614612, -76.543291365980792, 317.28609314434516, 401.93959612489664, 210.98484502126689); + double b2 = (-80.932258882062627); + bool3x4 r2 = bool3x4(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + double3x4 a3 = double3x4(-147.09631616766393, 207.73136410849702, 284.39206208120663, -509.0852923379677, 414.30764718274941, -52.294460082563774, -140.43793660981487, -316.78779402225643, -358.69683592333308, 312.31897249460178, 270.62946260656668, -140.01671153866533); + double b3 = (-193.39904531901658); + bool3x4 r3 = bool3x4(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void double3x4_operator_not_equal_scalar_wide() + { + double a0 = (478.35313938481409); + double3x4 b0 = double3x4(459.55319592894671, 436.45324369727314, -488.71416806090349, 392.76794475725296, -266.73665369056937, 338.55788270503183, -338.10012475498957, -152.3145445102428, -452.82067868338, 209.43931422449612, 50.107968592135194, 372.4343656843688); + bool3x4 r0 = bool3x4(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + double a1 = (-488.0213141329686); + double3x4 b1 = double3x4(489.74075697816011, 270.40006149485714, -472.8467831429312, -286.85046090132113, -384.69186681541237, 443.42352959300558, 358.74720900074919, -15.414077527548216, -342.17916194637269, 468.96750400446706, -130.56808501601597, 401.7858013593526); + bool3x4 r1 = bool3x4(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + double a2 = (-268.35225761511936); + double3x4 b2 = double3x4(-239.231014124691, 411.38655800902586, 139.76932460617707, 334.52206031164246, -223.62923036498449, -12.488468414400018, 113.46889238872984, -189.65225204716074, -212.84655127900027, 306.1256321902041, -178.33037885386977, 382.14199203166277); + bool3x4 r2 = bool3x4(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + double a3 = (-340.86559478420094); + double3x4 b3 = double3x4(-17.580244787773211, -409.87484498036787, -349.70166914057995, 275.85432756871649, -229.37194906425287, -127.50573283410898, 90.753436369240944, -422.08713574990963, -2.4475424301100475, -280.55170954417054, -484.37435959483236, -33.76342226647); + bool3x4 r3 = bool3x4(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void double3x4_operator_less_wide_wide() + { + double3x4 a0 = double3x4(51.710243010758518, -313.85556450200062, 283.04767359562572, 235.02188621974642, 44.0783565249659, -207.25566659088042, 3.3829410091894943, -144.30134326978651, -69.369597705718888, -135.66796762108243, -194.78736576567746, -33.473868147225062); + double3x4 b0 = double3x4(-261.83523881707117, -19.810742149041403, -149.25882084167506, 205.99822316225539, -306.02438535635565, 102.12168006884008, 231.90633760760829, 179.49885305180158, 473.22488496882136, 15.891647107848712, 270.04990614114786, 490.91400240869916); + bool3x4 r0 = bool3x4(false, true, false, false, false, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 < b0, r0); + + double3x4 a1 = double3x4(-19.675088653189619, 423.23796697297973, -71.698315415390937, -501.88598870760109, 7.6438391244242894, 302.26289214857991, -140.55051786291904, -436.586703265359, -351.441728040316, 364.97084896870467, 301.894133946809, 407.55097336673691); + double3x4 b1 = double3x4(-185.73412164753961, 76.433086669274189, 97.75231246731812, 419.30080600236579, 73.953208242521214, 481.03232382285978, 7.00747371046225, -7.3240954910051528, -413.07575793428146, -154.1188920261892, 449.20288989003882, 502.01430797111914); + bool3x4 r1 = bool3x4(false, false, true, true, true, true, true, true, false, false, true, true); + TestUtils.AreEqual(a1 < b1, r1); + + double3x4 a2 = double3x4(269.10777128353141, 462.98824737173891, 223.8841808884797, -287.18923319838439, 283.63862933015389, 511.86434650414822, -60.496787814654795, -234.30346142235373, -316.13839664875456, -417.52215905558421, 441.6434454590285, -191.95062908527939); + double3x4 b2 = double3x4(-382.31586259525079, 251.53517758638372, 143.17396957388803, 293.66033686961066, -292.76956691069972, -43.218204756834666, -353.41120044952777, 458.32604405764766, -114.55647259324627, 441.42973276666817, -113.33366709264629, 435.622928583819); + bool3x4 r2 = bool3x4(false, false, false, true, false, false, false, true, true, true, false, true); + TestUtils.AreEqual(a2 < b2, r2); + + double3x4 a3 = double3x4(397.81158823418036, -144.66662485183525, 417.0790571724433, -322.9801315381099, -81.285095014276521, 319.32531538574267, 146.76406509557933, -316.58337488611386, -150.85755855909434, -314.60630550729405, 7.14312720631392, -458.82730767635036); + double3x4 b3 = double3x4(383.65612786992267, -293.711607831396, -391.35497612103586, 43.122021456771563, 433.2236590018606, -201.38245282014014, -241.42116629398481, 376.46986955053637, -503.39744472103075, -359.78095095221931, 118.63150149147566, -510.03052759078821); + bool3x4 r3 = bool3x4(false, false, false, true, true, false, false, true, false, false, true, false); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void double3x4_operator_less_wide_scalar() + { + double3x4 a0 = double3x4(-221.86977325280651, -121.54646807608498, -97.52392511140738, 479.88107775146193, 67.118990214131259, 137.32880574899207, 282.96659601990439, 258.27909362422258, -111.41316061439608, -288.08113278452356, 82.665427008022334, -361.64292042406413); + double b0 = (199.06751808853244); + bool3x4 r0 = bool3x4(true, true, true, false, true, true, false, false, true, true, true, true); + TestUtils.AreEqual(a0 < b0, r0); + + double3x4 a1 = double3x4(-68.088202269788951, -66.703050406045747, -78.762971199472872, 25.727694284975428, 101.37087182950734, -330.442660724019, -48.920521520506838, 359.60440914686978, -8.15008759878117, 241.27682101040932, -183.43778165776178, 423.02713580756779); + double b1 = (12.788020378345664); + bool3x4 r1 = bool3x4(true, true, true, false, false, true, true, false, true, false, true, false); + TestUtils.AreEqual(a1 < b1, r1); + + double3x4 a2 = double3x4(-334.62272349680904, 300.41017617863145, 297.92523850962766, -492.108162870681, -395.80724806143309, 95.788790032169231, -220.62145791790516, -455.37556740985048, 360.29156344025, -296.37211884948056, 272.4883617239484, 360.20793097103387); + double b2 = (-98.315578744893685); + bool3x4 r2 = bool3x4(true, false, false, true, true, false, true, true, false, true, false, false); + TestUtils.AreEqual(a2 < b2, r2); + + double3x4 a3 = double3x4(389.7274403002707, -400.61523384629527, -85.469117442830054, -467.70215604626674, -51.387892031757133, 201.76466927387037, -47.8412668927765, -180.74006255936814, -409.01566929789988, 229.6990183469369, 176.19784816363722, -410.45517439882047); + double b3 = (68.736721786082171); + bool3x4 r3 = bool3x4(false, true, true, true, true, false, true, true, true, false, false, true); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void double3x4_operator_less_scalar_wide() + { + double a0 = (-250.4849370692321); + double3x4 b0 = double3x4(-377.19654887597846, -505.14754104295167, 375.92672198634909, 110.17393474940855, -118.09757452742082, -40.45089079833167, -299.74430932651478, 31.437125935888389, -458.904539560389, 13.684679276163024, -458.50690839183841, 248.27646624682302); + bool3x4 r0 = bool3x4(false, false, true, true, true, true, false, true, false, true, false, true); + TestUtils.AreEqual(a0 < b0, r0); + + double a1 = (389.23142999654237); + double3x4 b1 = double3x4(488.74553679337055, -221.63786731550368, -424.26720329013989, 249.05904948388184, -22.136127720650336, -442.24773928255206, -340.85755721705851, -95.1117256130612, 15.409410245441563, 87.292497437117845, 495.06764220402931, 316.01850309782594); + bool3x4 r1 = bool3x4(true, false, false, false, false, false, false, false, false, false, true, false); + TestUtils.AreEqual(a1 < b1, r1); + + double a2 = (-125.56811505442863); + double3x4 b2 = double3x4(122.16476803746298, 96.75540046429046, -228.90633808304852, -143.95269662884652, -230.238279688283, -327.61262885090548, 103.39802770661095, 434.488835775521, -157.45019228637693, 190.57215914063727, 108.25831871305513, 132.55076056930739); + bool3x4 r2 = bool3x4(true, true, false, false, false, false, true, true, false, true, true, true); + TestUtils.AreEqual(a2 < b2, r2); + + double a3 = (-431.51522155828553); + double3x4 b3 = double3x4(-192.20350727448402, -431.83499284825984, -85.581249515331024, 328.67053977058765, 273.5778516612844, -178.66905816768718, 352.63627235621038, -82.605815687498932, 238.90886675515628, 291.3353070185218, 183.35733875229835, -185.03260597262187); + bool3x4 r3 = bool3x4(true, false, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void double3x4_operator_greater_wide_wide() + { + double3x4 a0 = double3x4(-229.29066501804192, 505.536608216137, -73.80706862071861, 100.29203777215071, -419.21478124112582, -159.55974753180504, -396.7703608929973, 127.03739482119556, 489.13989733585151, 51.91890885863404, 155.38475544535777, -135.63165027258526); + double3x4 b0 = double3x4(-445.84502407808088, -420.03529210576568, 299.02440108872224, -13.880978829171966, 151.56173593903043, -163.5094302461992, -391.09603733154762, 479.2837710228207, -77.674873149802409, -46.5841996886694, -415.37701888353422, 71.466978344818131); + bool3x4 r0 = bool3x4(true, true, false, true, false, true, false, false, true, true, true, false); + TestUtils.AreEqual(a0 > b0, r0); + + double3x4 a1 = double3x4(-425.97813554572787, -228.430505143679, 383.03834909155887, 136.53358298937496, 8.602427725029429, -251.3243674018068, -345.954920691417, -170.565928777012, -293.25441588706076, 139.1249764613458, 214.3030732675935, 238.76991211565678); + double3x4 b1 = double3x4(-206.06102643071722, 360.83628218287424, 236.96878658838978, 14.550342328171382, 364.735178402036, -159.0612996365229, 226.63117490831348, 182.79602512288659, 341.83937398616195, -79.130463875425278, -247.29681956362765, 164.58913882290437); + bool3x4 r1 = bool3x4(false, false, true, true, false, false, false, false, false, true, true, true); + TestUtils.AreEqual(a1 > b1, r1); + + double3x4 a2 = double3x4(105.53519086983761, -170.92529280992471, 26.98023964230913, -188.92831405854241, 201.78662619450438, -506.05715656003781, 15.454906232401186, 115.08067207926911, -496.97184705034448, 339.88814202877143, 372.22833007025918, 313.2386917142378); + double3x4 b2 = double3x4(-352.15977327533056, 9.8226540134394327, 186.72162613026876, -325.91364613450764, -77.930370128681147, -379.74604219000139, 251.45575558927646, -144.1835678295156, 337.88991014002352, -249.50553929503332, -225.90130554228148, -249.49127757246202); + bool3x4 r2 = bool3x4(true, false, false, true, true, false, false, true, false, true, true, true); + TestUtils.AreEqual(a2 > b2, r2); + + double3x4 a3 = double3x4(-419.10894437279035, -265.32978380160864, -42.501995344880015, 369.16390507722451, 67.169061453626, -256.69890868696336, -104.10592060168551, 499.57010268586225, 41.663492460578482, 151.15207416897272, 220.68833146835129, -344.65888110951471); + double3x4 b3 = double3x4(381.12288373574745, 325.54538145919582, 455.49881360283996, 333.31868401789973, 118.98035603341668, 223.19812236688949, -385.28907102406447, 333.88080159476067, -437.41072126729915, 243.97544943726405, -302.81988658701061, -32.710171476337223); + bool3x4 r3 = bool3x4(false, false, false, true, false, false, true, true, true, false, true, false); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void double3x4_operator_greater_wide_scalar() + { + double3x4 a0 = double3x4(11.156317000815761, -411.02322382993214, 385.88556188432756, -485.10304831206008, -491.18003033622171, 405.17534632476759, 173.57509740329124, 69.269281181166548, 501.30683183172107, -367.027771405423, -86.124509613087639, -489.09058998948456); + double b0 = (-302.81693877969724); + bool3x4 r0 = bool3x4(true, false, true, false, false, true, true, true, true, false, true, false); + TestUtils.AreEqual(a0 > b0, r0); + + double3x4 a1 = double3x4(-172.51816066192379, -236.41493498367021, -238.8945134798505, -27.239137900638923, 471.77934072528933, 240.16453253485474, -481.47807930478734, 185.59438547193747, 33.294723764664809, -510.22814702905163, -183.28619607877278, -386.12766260007754); + double b1 = (-18.149639853346002); + bool3x4 r1 = bool3x4(false, false, false, false, true, true, false, true, true, false, false, false); + TestUtils.AreEqual(a1 > b1, r1); + + double3x4 a2 = double3x4(-13.638212448748845, -261.86596477304863, 52.24950768996473, 16.323217637987455, -410.51010985416832, -262.26747978025463, -458.25599000335484, -218.86613069235631, -34.692342535915031, 290.57303752124915, 180.263321722049, -482.86394690110529); + double b2 = (-7.3478887115362568); + bool3x4 r2 = bool3x4(false, false, true, true, false, false, false, false, false, true, true, false); + TestUtils.AreEqual(a2 > b2, r2); + + double3x4 a3 = double3x4(100.70627574841785, 501.31978749731547, -289.28097046971368, -25.849692595121326, 455.1624288294289, -63.3173549470107, -17.446765669363913, 53.017790103805169, 88.819595139855323, 182.3580006018085, -428.92720933860505, 408.336862515815); + double b3 = (180.6725166685286); + bool3x4 r3 = bool3x4(false, true, false, false, true, false, false, false, false, true, false, true); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void double3x4_operator_greater_scalar_wide() + { + double a0 = (453.54610201974685); + double3x4 b0 = double3x4(-226.20441423459187, -423.46500487973213, 409.40550227156166, 453.87706277048073, 87.475727837288673, 113.79560308987072, 176.40926154721956, -140.44002944810319, -182.48286804113673, -158.29329188088576, -162.68531830733889, -193.328676075362); + bool3x4 r0 = bool3x4(true, true, true, false, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 > b0, r0); + + double a1 = (230.18129955519987); + double3x4 b1 = double3x4(-102.58784227379965, 392.5205878655056, -177.47865947404813, -10.295010809924008, -24.048938524000789, 172.44867499752377, 374.04800503982608, -368.99763958947619, -210.19528804076617, 149.47022325800276, -281.34327019441093, -100.46916608720511); + bool3x4 r1 = bool3x4(true, false, true, true, true, true, false, true, true, true, true, true); + TestUtils.AreEqual(a1 > b1, r1); + + double a2 = (304.86444320569956); + double3x4 b2 = double3x4(-361.52483360912879, -372.45236056505348, -33.909547583157917, -69.595290454847429, -460.43241498453187, -309.34166278938841, 486.13155602204222, 471.92098138850224, 479.36154411703421, -107.00416784500896, 331.63653746789157, -340.84013120310385); + bool3x4 r2 = bool3x4(true, true, true, true, true, true, false, false, false, true, false, true); + TestUtils.AreEqual(a2 > b2, r2); + + double a3 = (-384.21461147079924); + double3x4 b3 = double3x4(-451.7265658097931, 467.97876355982328, -236.5691269545672, 44.654746314815611, -285.79786671595548, 42.7309816082618, 338.18510762703841, 274.01702202205411, -108.60437088301609, -211.37325606652223, -19.004157313613291, 194.114679188521); + bool3x4 r3 = bool3x4(true, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void double3x4_operator_less_equal_wide_wide() + { + double3x4 a0 = double3x4(240.09053169940159, 462.2131528622532, 293.08251561461134, -427.87067361728782, -405.5227226715175, 204.59190211286386, 294.670105832941, -327.56444445604666, -456.12326667091031, 282.3012408140587, 421.8811549720732, -311.71284809322697); + double3x4 b0 = double3x4(-81.203838624620744, 493.63743876555816, -411.47211451617636, 99.164449499530974, -295.66769875943089, -480.46254824123463, 74.414040361723892, 260.916124226952, 306.17329730939741, 139.56480438055689, -505.75247955031341, -489.62680958659706); + bool3x4 r0 = bool3x4(false, true, false, true, true, false, false, true, true, false, false, false); + TestUtils.AreEqual(a0 <= b0, r0); + + double3x4 a1 = double3x4(84.5674827492644, 447.24461647832982, -154.49435217422172, -424.36474986763892, 36.684489505684269, 267.07029283562224, 307.89391937288167, -351.76015369582927, -157.36036570247279, 152.70902712303632, 372.26716750313858, 202.36828837281485); + double3x4 b1 = double3x4(-280.03260267899958, 303.15991058161478, 511.19015788994272, -104.65973358259527, 95.1465771641333, -125.6363432992419, 376.239777024947, -415.7747320680761, -47.481050275024529, 117.72210293529656, 469.37837264937275, -263.04235780567041); + bool3x4 r1 = bool3x4(false, false, true, true, true, false, true, false, true, false, true, false); + TestUtils.AreEqual(a1 <= b1, r1); + + double3x4 a2 = double3x4(-77.043453014010311, 438.18483253856414, 260.28234088620275, 386.03408759927106, -281.49099053139378, -102.9300439837063, -346.71673099450618, -258.34119832624737, -383.30294889179197, -5.1470377469188975, 319.34374752610165, 465.02220485407031); + double3x4 b2 = double3x4(-216.00231109187115, 66.734246046624207, 99.218598173567329, 233.843011249715, 439.8399624488502, 61.115118293610976, -219.03058419890266, -404.71288056146022, -202.74836430454087, -312.47647133119244, 310.07189884319519, -320.3630436958573); + bool3x4 r2 = bool3x4(false, false, false, false, true, true, true, false, true, false, false, false); + TestUtils.AreEqual(a2 <= b2, r2); + + double3x4 a3 = double3x4(145.93345100522663, -215.07482991697026, -146.46150667334979, -349.8939770897357, 29.599108948185631, -131.79663640437491, -438.99467464862141, 147.05792553120193, 221.11248956486236, -356.14535276784807, -32.830178991346713, 442.94199892642996); + double3x4 b3 = double3x4(186.07597288213481, -42.637794752902266, 82.565048971476472, 127.18911009989176, 198.28697428400017, -450.49204108235057, 20.901004085736872, 449.46589133211683, -478.77271841409276, 380.05395692403147, 99.1247280105598, -450.32978150357019); + bool3x4 r3 = bool3x4(true, true, true, true, true, false, true, true, false, true, true, false); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void double3x4_operator_less_equal_wide_scalar() + { + double3x4 a0 = double3x4(309.1924356469849, 69.673792633076118, -101.72418622939114, -315.97240629604664, -346.01106731314724, 424.15386577330241, -410.87006945669191, -483.90265320423185, 183.82114538169515, 320.44249287268258, -257.87003791419329, -386.801748694294); + double b0 = (292.92427148154206); + bool3x4 r0 = bool3x4(false, true, true, true, true, false, true, true, true, false, true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + double3x4 a1 = double3x4(-182.9388249772316, 485.31159304329731, 373.56911652794531, 259.15151822713744, 450.13007828692446, -128.5255282523695, -43.874866744445114, 457.38574549992836, -77.638293064030961, 479.45184038553941, -499.51644372358754, -398.13294643821797); + double b1 = (349.25012962392077); + bool3x4 r1 = bool3x4(true, false, false, true, false, true, true, false, true, false, true, true); + TestUtils.AreEqual(a1 <= b1, r1); + + double3x4 a2 = double3x4(402.48485893871862, -502.17362308044619, 125.95081263685177, -54.493607308014134, 250.66739737739204, 97.942930982421558, 228.02151809820043, -213.37865243357544, 42.260789175639275, -24.82758070194518, -451.04158684752957, 429.57755132651778); + double b2 = (87.9161055497434); + bool3x4 r2 = bool3x4(false, true, false, true, false, false, false, true, true, true, true, false); + TestUtils.AreEqual(a2 <= b2, r2); + + double3x4 a3 = double3x4(-308.43429031429548, -279.40712011950421, 181.6722582232544, -290.14875401656548, -184.84408411050407, 447.6939139066701, 168.88657696958933, 26.378954661255193, 392.55852789085293, 255.60484015923214, 162.16346867483276, 195.49629482789726); + double b3 = (355.16031114904229); + bool3x4 r3 = bool3x4(true, true, true, true, true, false, true, true, false, true, true, true); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void double3x4_operator_less_equal_scalar_wide() + { + double a0 = (-511.15238141974078); + double3x4 b0 = double3x4(51.159012579898786, 340.44369022010062, 312.81429519914752, 354.19252626699983, 136.39671165142056, -94.767871185563422, 288.544332877055, 304.04282369466625, -148.61806089646092, -506.30010127755816, 27.581254256694251, 48.471146844546865); + bool3x4 r0 = bool3x4(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + double a1 = (104.88351326104419); + double3x4 b1 = double3x4(-488.6858386884843, -480.43516968210935, 421.9366516647566, 239.72105299668431, -101.01844673092404, -283.95147551407638, -55.2435333986038, -455.80483147865385, 131.10721618081777, -461.69878099006542, -388.48285001725094, -258.93605125087129); + bool3x4 r1 = bool3x4(false, false, true, true, false, false, false, false, true, false, false, false); + TestUtils.AreEqual(a1 <= b1, r1); + + double a2 = (-225.2235287284588); + double3x4 b2 = double3x4(-116.01998215355911, -442.59525629626364, 297.33334579008317, 36.687250392831515, 485.09780930220052, 344.44564859217292, 237.59216724969087, 230.39086471795611, -413.98479266370873, -215.90167794744565, 39.5603883450666, 22.947996388630941); + bool3x4 r2 = bool3x4(true, false, true, true, true, true, true, true, false, true, true, true); + TestUtils.AreEqual(a2 <= b2, r2); + + double a3 = (-162.0605676928817); + double3x4 b3 = double3x4(236.73373352584133, -253.95195853614803, -204.71909985538531, -161.61653550044474, -64.3859322370896, -229.815656530585, -484.82564591096047, -135.04042989343424, 351.69478599712943, 111.82539778194644, -249.98255431371859, 435.80731769828469); + bool3x4 r3 = bool3x4(true, false, false, true, true, false, false, true, true, true, false, true); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void double3x4_operator_greater_equal_wide_wide() + { + double3x4 a0 = double3x4(-386.59181302906563, -157.12078221008215, 391.01526445477054, -511.88687133783793, -5.4220387960886569, 287.64527501149348, -122.53520184500849, 7.4814426933794493, 152.94642765491574, 48.986223482054811, 57.338148859021317, 300.46493138953338); + double3x4 b0 = double3x4(153.44301350109424, 49.892483019219981, 78.025787628267835, 138.81373292711271, -225.51057802211056, -339.35611335344436, -373.302078182484, 364.9358934671319, -322.71539870030961, 125.47818165900105, -25.776589167200314, 297.51890792395864); + bool3x4 r0 = bool3x4(false, false, true, false, true, true, true, false, true, false, true, true); + TestUtils.AreEqual(a0 >= b0, r0); + + double3x4 a1 = double3x4(349.25705139211243, 85.749700824613569, -230.95330654408468, 418.7112159294594, -131.03991824530061, -126.51221257378916, -156.81847841889527, 422.37748761772059, -413.08933348818186, 219.44273553576443, 35.591133372667741, 447.18153521380464); + double3x4 b1 = double3x4(73.222349439385539, 462.78374288174496, 393.19134515951919, -95.001432224643168, 381.35702556248611, 93.031928344178937, 254.25326287665087, 90.672789377473691, 348.93816892660141, 161.33763106229605, 79.435611046587837, 420.24346824187944); + bool3x4 r1 = bool3x4(true, false, false, true, false, false, false, true, false, true, false, true); + TestUtils.AreEqual(a1 >= b1, r1); + + double3x4 a2 = double3x4(-223.49299560463663, 302.12299194099523, 459.85272834256887, -347.12802879285442, 364.97808211156075, 212.63543162710755, 504.27608680365427, -142.23296052880255, -132.22179395156996, 303.68380489185631, 265.21013439130513, 9.75437188602723); + double3x4 b2 = double3x4(453.68485209610537, -154.0116427661905, -97.290078923706915, 151.18477613813468, 57.360309865959152, -194.207084984615, -462.67061421958294, 113.38661604439221, -129.35329276386335, 8.1077725925052846, 426.44951434920051, 410.69316477826476); + bool3x4 r2 = bool3x4(false, true, true, false, true, true, true, false, false, true, false, false); + TestUtils.AreEqual(a2 >= b2, r2); + + double3x4 a3 = double3x4(-233.09288631803025, 26.567515147182917, 266.78067529703526, -250.0722254487091, 138.0408142255809, 174.27673848638165, -420.93164678147605, -42.854160567211977, 216.48505435534059, 240.05384623261818, -470.38216875045663, 98.396702573819425); + double3x4 b3 = double3x4(470.31343410458112, 220.39997993241991, -372.87269967276262, -242.17855965447546, 177.50623258273413, -172.63815864019011, 60.722858695649961, 478.25016067840636, 234.30301128807616, 297.82121171514564, 104.58457260233558, -462.41871926859892); + bool3x4 r3 = bool3x4(false, false, true, false, false, true, false, false, false, false, false, true); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void double3x4_operator_greater_equal_wide_scalar() + { + double3x4 a0 = double3x4(495.457423679278, -14.345115906719627, -463.47478053694346, 217.51749215718246, -246.86571776441565, -377.65869706573835, 53.815095211293169, -123.33294373533357, -221.50546441856096, 252.99433410027734, -116.44038277326172, -395.36331028275345); + double b0 = (189.20512804258851); + bool3x4 r0 = bool3x4(true, false, false, true, false, false, false, false, false, true, false, false); + TestUtils.AreEqual(a0 >= b0, r0); + + double3x4 a1 = double3x4(164.77259667439978, 355.83704559683667, 184.19556316369938, 273.01225555735277, -418.14240308205706, 249.38409697701411, 396.39213938098032, 332.66542044871744, 243.76141392614761, -335.121477998384, -302.08690442800844, 254.44223344253476); + double b1 = (-287.00733889593153); + bool3x4 r1 = bool3x4(true, true, true, true, false, true, true, true, true, false, false, true); + TestUtils.AreEqual(a1 >= b1, r1); + + double3x4 a2 = double3x4(179.00504287472234, -331.27167788672807, 307.89058008226129, -388.57851737950858, 150.60576422075076, -219.89257989632551, -491.68100213058341, 30.997067704329766, 199.23222861030706, -74.50001743924804, -343.38647357718389, 216.0315855555383); + double b2 = (71.176674637560154); + bool3x4 r2 = bool3x4(true, false, true, false, true, false, false, false, true, false, false, true); + TestUtils.AreEqual(a2 >= b2, r2); + + double3x4 a3 = double3x4(-420.40314813163275, -336.6411160606151, 317.0945958183587, -262.42494666875569, -228.41125522759336, 123.46545964268296, 264.10247362037308, 223.62332569045168, 440.53538366804617, -420.72700830024064, 74.844301497025526, -177.07789405485516); + double b3 = (-78.384021080277876); + bool3x4 r3 = bool3x4(false, false, true, false, false, true, true, true, true, false, true, false); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void double3x4_operator_greater_equal_scalar_wide() + { + double a0 = (215.43534169692327); + double3x4 b0 = double3x4(204.80295310020585, -101.10404853760451, -122.05503827056617, -70.456147941973143, -239.62025677395064, -185.99272426683115, -455.61258027312, 276.66581476697036, 79.39918831707871, 416.42054791768112, 379.27350801009379, -439.51472612820322); + bool3x4 r0 = bool3x4(true, true, true, true, true, true, true, false, true, false, false, true); + TestUtils.AreEqual(a0 >= b0, r0); + + double a1 = (67.141009600433108); + double3x4 b1 = double3x4(-74.560638224035813, -367.25635474140586, 494.950765601802, -61.235545425319856, -429.17024846988278, -213.82468924942646, -264.31016242891093, 243.11378275748052, -22.383876095704693, 304.86197175870745, -323.68615332417477, 67.938025267765852); + bool3x4 r1 = bool3x4(true, true, false, true, true, true, true, false, true, false, true, false); + TestUtils.AreEqual(a1 >= b1, r1); + + double a2 = (125.30356818312009); + double3x4 b2 = double3x4(-400.47050280145857, -283.15963162256389, -42.319595595039232, -429.51037355396448, 499.3958854616601, -289.96307887228352, -136.00878554955534, -351.12526123184955, -381.81828921931719, 393.30091089443351, 18.023639925766588, -169.92393048569744); + bool3x4 r2 = bool3x4(true, true, true, true, false, true, true, true, true, false, true, true); + TestUtils.AreEqual(a2 >= b2, r2); + + double a3 = (-285.88492669066648); + double3x4 b3 = double3x4(163.75110037799516, 191.85533317916804, 114.01553230826539, -395.98584169707533, 189.3665684151307, 176.19814618686132, 61.713796405919766, 507.54848241598745, 224.04381595554003, -422.99370570806491, -127.05500394061909, 95.528642460484321); + bool3x4 r3 = bool3x4(false, false, false, true, false, false, false, false, false, true, false, false); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void double3x4_operator_add_wide_wide() + { + double3x4 a0 = double3x4(465.14837644302679, 278.91072548502621, -277.52992237616792, -65.197214395365336, -473.32437561141529, -4.6955420992782138, -470.53676698661258, -109.95011453980118, -178.70145782209067, -420.03378339299644, 290.71109236903078, -446.5296368294068); + double3x4 b0 = double3x4(483.99436186440028, -204.07667193379098, -365.67356007437854, -509.92086076639634, -270.69751108377125, 486.76397846954126, 267.49177587567442, 251.6425212601398, 244.4951094335388, -78.675763882079991, 352.20551340291536, 82.779185095233515); + double3x4 r0 = double3x4(949.14273830742707, 74.834053551235229, -643.20348245054652, -575.11807516176168, -744.02188669518659, 482.06843637026304, -203.04499111093816, 141.69240672033862, 65.793651611448126, -498.70954727507643, 642.91660577194614, -363.75045173417328); + TestUtils.AreEqual(a0 + b0, r0); + + double3x4 a1 = double3x4(491.066454400805, -261.11730039358014, -298.40688409395835, 502.42861890347149, 284.59432925125316, 401.12844366632794, -36.263498084742366, -102.94915657069026, 503.19817161150195, -384.42911857386542, -45.22821452339565, -198.67394337368847); + double3x4 b1 = double3x4(462.54732606492348, -405.492017696375, -428.4983238785054, -41.872599859662614, -269.9274958436971, 75.204465662690041, -141.91339380196922, -222.1867559990784, 41.305726308983594, 148.33947117083676, -177.23311217931712, -176.51887830370987); + double3x4 r1 = double3x4(953.6137804657285, -666.6093180899552, -726.90520797246381, 460.55601904380887, 14.666833407556055, 476.332909329018, -178.17689188671159, -325.13591256976866, 544.50389792048554, -236.08964740302866, -222.46132670271277, -375.19282167739834); + TestUtils.AreEqual(a1 + b1, r1); + + double3x4 a2 = double3x4(-62.8800013358146, -79.55225447544467, 413.0982751385767, -100.87757997441923, 418.523998693807, -183.143126334596, 407.44374031920165, 300.48602332756207, -261.12612998724273, -309.8303507817119, 378.36333220934648, -224.09398065511789); + double3x4 b2 = double3x4(492.69246768052335, 439.04383942067807, -511.74275922763292, -399.05713695988857, -315.8684596102072, -228.0772484410914, -171.70519669899028, 467.17394826709005, -474.8229422396156, 311.39072885708447, 326.84541979750873, 475.21193597987849); + double3x4 r2 = double3x4(429.81246634470875, 359.4915849452334, -98.64448408905622, -499.9347169343078, 102.65553908359982, -411.22037477568739, 235.73854362021137, 767.65997159465212, -735.94907222685833, 1.5603780753725687, 705.20875200685521, 251.1179553247606); + TestUtils.AreEqual(a2 + b2, r2); + + double3x4 a3 = double3x4(-164.55573399577094, -69.873935493581882, 224.63463197678072, -383.99260038137095, 149.2212694386119, 169.38798363943954, 163.05393059693927, 57.02912500176069, 342.95008413072219, 168.68046696888302, -470.77026746737317, -117.63049631828); + double3x4 b3 = double3x4(314.152972606082, -262.59463393995287, -82.869108000243614, 156.29956658012213, 427.40157791012973, -279.09935177448176, -448.61522051720658, 284.33708847888613, 288.18558062621651, -232.39503847453511, -386.87190812959892, 162.90336831049217); + double3x4 r3 = double3x4(149.59723861031108, -332.46856943353475, 141.76552397653711, -227.69303380124882, 576.62284734874163, -109.71136813504222, -285.56128992026731, 341.36621348064682, 631.1356647569387, -63.714571505652088, -857.642175596972, 45.272871992212174); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void double3x4_operator_add_wide_scalar() + { + double3x4 a0 = double3x4(459.89829728561369, -447.66336104258119, -94.438627525436971, 126.42986279652916, -36.254356162741033, -349.64130060264904, -2.7912590516690443, -478.41478489265535, 443.11525246273504, 268.092225914864, 41.32102133767728, -471.25607584009697); + double b0 = (500.99725913489112); + double3x4 r0 = double3x4(960.89555642050482, 53.333898092309937, 406.55863160945415, 627.42712193142029, 464.74290297215009, 151.35595853224208, 498.20600008322208, 22.582474242235776, 944.11251159762617, 769.08948504975513, 542.3182804725684, 29.741183294794155); + TestUtils.AreEqual(a0 + b0, r0); + + double3x4 a1 = double3x4(-2.6649749291431704, 202.14799151297098, 311.7254551908585, 10.345855002452595, -151.24445898423181, 355.23276703210206, -197.80076584490052, 255.95526587961024, 244.14709793969394, -181.6265695940827, -2.4549267303454485, 300.90065469448484); + double b1 = (78.985822952811532); + double3x4 r1 = double3x4(76.320848023668361, 281.13381446578251, 390.71127814367003, 89.331677955264126, -72.258636031420281, 434.21858998491359, -118.814942892089, 334.94108883242177, 323.13292089250547, -102.64074664127116, 76.530896222466083, 379.88647764729637); + TestUtils.AreEqual(a1 + b1, r1); + + double3x4 a2 = double3x4(-236.49194895312746, -172.54221566605486, -242.9410861669765, 466.34409902353957, 237.98745810146795, 264.294014815378, 372.86684029775995, -198.83777699192882, -381.930974899759, 402.16034693371523, -117.02482729639149, 497.37375592504338); + double b2 = (-160.5840962680914); + double3x4 r2 = double3x4(-397.07604522121886, -333.12631193414626, -403.5251824350679, 305.76000275544817, 77.40336183337655, 103.70991854728658, 212.28274402966855, -359.42187326002022, -542.51507116785046, 241.57625066562383, -277.60892356448289, 336.789659656952); + TestUtils.AreEqual(a2 + b2, r2); + + double3x4 a3 = double3x4(485.90928124166521, 77.81479338454767, -271.54797304400614, -133.25178605562627, 211.86678777070097, 253.15022504196975, -342.78316823708974, -185.24833997769667, -403.38548845955427, -358.84824125787628, 65.247578889712486, 127.2016943093397); + double b3 = (-47.757128976172339); + double3x4 r3 = double3x4(438.15215226549287, 30.057664408375331, -319.30510202017848, -181.00891503179861, 164.10965879452863, 205.39309606579741, -390.54029721326208, -233.005468953869, -451.14261743572661, -406.60537023404862, 17.490449913540147, 79.444565333167361); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void double3x4_operator_add_scalar_wide() + { + double a0 = (-325.51276484388518); + double3x4 b0 = double3x4(-264.08813178915909, -106.00925998855814, -355.44729320865463, -447.33029362528134, -158.70021040677102, -199.48369154682553, 180.31809123806568, 337.57936898692481, -37.05501486596421, 230.80498014707348, -140.17433339924287, 18.02419591789328); + double3x4 r0 = double3x4(-589.60089663304427, -431.52202483244332, -680.96005805253981, -772.84305846916652, -484.2129752506562, -524.9964563907107, -145.1946736058195, 12.066604143039626, -362.56777970984939, -94.7077846968117, -465.68709824312805, -307.4885689259919); + TestUtils.AreEqual(a0 + b0, r0); + + double a1 = (-138.61435825126915); + double3x4 b1 = double3x4(26.904163611542458, -374.53758233345, 154.4676006559597, 268.3838204203098, -190.96302255939833, 188.61725362977813, -504.91612386373623, 20.454013595568995, 197.94534525552081, 251.41194474483461, -421.09037538109828, 111.44540052835146); + double3x4 r1 = double3x4(-111.71019463972669, -513.15194058471911, 15.853242404690548, 129.76946216904065, -329.57738081066748, 50.002895378508981, -643.53048211500538, -118.16034465570016, 59.330987004251654, 112.79758649356546, -559.70473363236738, -27.168957722917696); + TestUtils.AreEqual(a1 + b1, r1); + + double a2 = (-73.268883024001923); + double3x4 b2 = double3x4(480.88455770950975, 438.05301233662897, 66.844289095534123, -270.79599941465818, -44.02192189359198, 197.69471916821544, 19.113929995854392, 349.23776857426287, 366.23449271090067, -413.48026890935387, -260.720191361718, 77.542334831106587); + double3x4 r2 = double3x4(407.61567468550783, 364.78412931262704, -6.4245939284678, -344.06488243866011, -117.2908049175939, 124.42583614421352, -54.154953028147531, 275.96888555026095, 292.96560968689874, -486.74915193335579, -333.9890743857199, 4.2734518071046637); + TestUtils.AreEqual(a2 + b2, r2); + + double a3 = (183.95489009840173); + double3x4 b3 = double3x4(-51.498981738229759, -472.4974751288525, 107.12689285498436, 349.07720033688338, 431.59597774576207, -314.11096468293618, 396.99665302643393, -167.30862935227742, -157.11451895400626, 287.76251591730977, -367.33903544365387, 96.2368000001818); + double3x4 r3 = double3x4(132.45590836017197, -288.54258503045077, 291.0817829533861, 533.03209043528511, 615.5508678441638, -130.15607458453445, 580.95154312483567, 16.646260746124312, 26.840371144395476, 471.7174060157115, -183.38414534525214, 280.19169009858354); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void double3x4_operator_sub_wide_wide() + { + double3x4 a0 = double3x4(133.37101680290471, -131.8321183341705, -197.29314407952739, -485.286571013409, -337.55033103448818, 471.66710470228782, 146.5066197600712, -130.58504372955537, 110.77707367333448, -235.54160486699158, 78.879356659427, -347.68616811730254); + double3x4 b0 = double3x4(123.46028739002543, 359.56010048443454, -48.24847819667707, 478.97904680621764, 207.15832886805686, 142.36730462981723, -125.60551005490379, -65.299004823574307, -477.876434787119, 164.50000031501986, 428.00958915614035, 72.6278169493321); + double3x4 r0 = double3x4(9.9107294128792773, -491.39221881860504, -149.04466588285032, -964.26561781962664, -544.708659902545, 329.29980007247059, 272.112129814975, -65.286038905981059, 588.65350846045351, -400.04160518201144, -349.13023249671335, -420.31398506663464); + TestUtils.AreEqual(a0 - b0, r0); + + double3x4 a1 = double3x4(-470.82054565419469, -11.459293609233271, -167.94791730118351, 330.67676917215658, -508.35086822339838, -252.03190457636111, -427.93418737311578, 192.6576150360786, 168.42931016182024, 457.3087858899072, 470.05851457550125, -299.71188058504458); + double3x4 b1 = double3x4(-446.880505531505, 432.09146114443035, -225.55465637219822, -112.45196705332586, -210.61278853687122, -172.92506011432272, -80.60749415336528, 270.04610861001822, -154.25558550388348, 148.47577745675846, 13.661130673094249, 70.671096596248049); + double3x4 r1 = double3x4(-23.940040122689709, -443.55075475366363, 57.606739071014715, 443.12873622548244, -297.73807968652716, -79.1068444620384, -347.3266932197505, -77.388493573939627, 322.68489566570372, 308.83300843314873, 456.397383902407, -370.38297718129263); + TestUtils.AreEqual(a1 - b1, r1); + + double3x4 a2 = double3x4(-308.93956937870922, 454.53341052240387, 26.106923830745245, -482.71181105203544, -40.853544492671972, 318.38064613862923, 475.21081541255614, 134.9269641074012, 388.48155969590016, 138.71817285321572, -385.57360547854267, -149.36481745045859); + double3x4 b2 = double3x4(-221.32544551665217, -9.2588145775994235, 288.1738385111903, 217.36142764676424, 307.54006471649745, -262.41263854802241, -405.3780321578393, 400.00432533771004, 72.119071755613732, -154.88059170305758, -469.65998361523265, -320.61543217330029); + double3x4 r2 = double3x4(-87.614123862057056, 463.79222510000329, -262.06691468044505, -700.07323869879974, -348.39360920916943, 580.79328468665165, 880.5888475703955, -265.07736123030884, 316.36248794028643, 293.5987645562733, 84.086378136689973, 171.2506147228417); + TestUtils.AreEqual(a2 - b2, r2); + + double3x4 a3 = double3x4(-158.53404982319756, 508.07069015319962, 482.70080326623315, 114.56930237383085, 364.83137505353955, 229.03103052313952, -168.08806689460204, 373.44110911592895, -239.90097748483578, 379.92848437834925, 113.01185970800555, 306.83529319746197); + double3x4 b3 = double3x4(6.4122865229902573, -278.86505783668952, 15.838054425939049, 27.518323672711062, 429.86960979451874, -458.62247178453134, -172.064416250244, -284.52470673458868, 42.606667776874588, -223.47425208961323, -56.92974641589899, 61.8073423196596); + double3x4 r3 = double3x4(-164.94633634618782, 786.93574798988914, 466.8627488402941, 87.050978701119789, -65.038234740979192, 687.65350230767081, 3.9763493556419576, 657.96581585051763, -282.50764526171037, 603.40273646796254, 169.94160612390453, 245.02795087780237); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void double3x4_operator_sub_wide_scalar() + { + double3x4 a0 = double3x4(48.936717294592768, 410.45158953706346, -364.44171612544062, 163.98060353285666, -460.06732318367222, 110.91942339340198, 204.35834441164434, 180.26971420099483, -377.92569344952972, -470.26204297983185, 400.53491968686455, 461.50756499800252); + double b0 = (-291.59041442144212); + double3x4 r0 = double3x4(340.52713171603489, 702.04200395850557, -72.8513017039985, 455.57101795429878, -168.4769087622301, 402.5098378148441, 495.94875883308646, 471.86012862243695, -86.3352790280876, -178.67162855838973, 692.12533410830667, 753.09797941944464); + TestUtils.AreEqual(a0 - b0, r0); + + double3x4 a1 = double3x4(-246.28726660753006, 246.35072171238755, -121.42736178330489, -122.71842413894757, -122.93872099879138, 360.15095417581074, 342.87457887403411, 18.929827460520869, 164.60235245740148, 97.0436885808798, 485.9149813530571, -205.75765690848124); + double b1 = (21.605312595891405); + double3x4 r1 = double3x4(-267.89257920342146, 224.74540911649615, -143.03267437919629, -144.32373673483897, -144.54403359468279, 338.54564157991933, 321.26926627814271, -2.6754851353705362, 142.99703986151007, 75.4383759849884, 464.3096687571657, -227.36296950437264); + TestUtils.AreEqual(a1 - b1, r1); + + double3x4 a2 = double3x4(253.44322717070725, 187.99838813953022, -450.820273370864, -248.07337128746946, -26.996065390760123, 441.55261942444031, 449.91060969322484, 354.88602678612153, 98.821485803845121, -189.19323381650878, 269.07481659067548, -59.118566302172155); + double b2 = (-121.16305619159857); + double3x4 r2 = double3x4(374.60628336230582, 309.16144433112879, -329.65721717926544, -126.91031509587089, 94.166990800838448, 562.71567561603888, 571.07366588482341, 476.0490829777201, 219.98454199544369, -68.030177624910209, 390.23787278227405, 62.044489889426416); + TestUtils.AreEqual(a2 - b2, r2); + + double3x4 a3 = double3x4(363.45839207407948, -46.155220768486743, 109.9132454907118, 182.64693483274755, 229.01577411825576, -144.92867405010793, 469.25061414635309, -150.49230797146089, -192.31251177206286, -224.35684810595438, 285.87681855162452, -63.010835438506149); + double b3 = (-73.779217515969265); + double3x4 r3 = double3x4(437.23760959004875, 27.623996747482522, 183.69246300668107, 256.42615234871681, 302.794991634225, -71.149456534138665, 543.02983166232229, -76.713090455491624, -118.5332942560936, -150.57763058998512, 359.65603606759379, 10.768382077463116); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void double3x4_operator_sub_scalar_wide() + { + double a0 = (294.58645905861); + double3x4 b0 = double3x4(452.35251757705237, 256.98980891750648, -275.159888634067, -89.027518075437968, 488.22838829840919, -333.21728030462623, -64.232989102710519, -66.041730196234653, 341.20492831859963, -385.775056303374, 75.394746577085357, 354.94371645289641); + double3x4 r0 = double3x4(-157.76605851844238, 37.59665014110351, 569.746347692677, 383.61397713404796, -193.6419292397992, 627.80373936323622, 358.81944816132051, 360.62818925484464, -46.618469259989638, 680.361515361984, 219.19171248152463, -60.357257394286421); + TestUtils.AreEqual(a0 - b0, r0); + + double a1 = (169.13141520746581); + double3x4 b1 = double3x4(88.216608326982964, 1.7350065716240124, 122.53803997977548, -264.94502771317264, -50.837180399725753, -347.65032283759228, 4.0655586738445209, -79.095424450512724, 354.35833923628479, -292.4925116470514, -53.208983207684469, -246.34760033634848); + double3x4 r1 = double3x4(80.914806880482843, 167.39640863584179, 46.593375227690331, 434.07644292063844, 219.96859560719156, 516.78173804505809, 165.06585653362129, 248.22683965797853, -185.22692402881898, 461.62392685451721, 222.34039841515028, 415.47901554381428); + TestUtils.AreEqual(a1 - b1, r1); + + double a2 = (299.20334138497867); + double3x4 b2 = double3x4(432.18467422583353, -163.88000090600923, 176.74255546216978, -104.9858415615679, -445.7976302792307, -28.873155368898608, -169.58822901993443, -270.35924614144454, 68.0476272423042, -65.531290323255234, 440.38039776328037, 427.36063142649857); + double3x4 r2 = double3x4(-132.98133284085486, 463.0833422909879, 122.4607859228089, 404.18918294654657, 745.00097166420937, 328.07649675387728, 468.7915704049131, 569.56258752642316, 231.15571414267447, 364.73463170823391, -141.1770563783017, -128.1572900415199); + TestUtils.AreEqual(a2 - b2, r2); + + double a3 = (-81.472953595906915); + double3x4 b3 = double3x4(41.713177461974851, 175.82078059754372, -214.94915900703018, -163.44686253529363, -218.82914672551169, 389.1168579483018, -74.109779154001615, -448.13723751908969, -410.37498278653948, 363.21098177657041, -263.53538120143833, 473.54599283335074); + double3x4 r3 = double3x4(-123.18613105788177, -257.29373419345063, 133.47620541112326, 81.973908939386718, 137.35619312960478, -470.58981154420871, -7.3631744419053007, 366.66428392318278, 328.90202919063256, -444.68393537247732, 182.06242760553141, -555.01894642925765); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void double3x4_operator_mul_wide_wide() + { + double3x4 a0 = double3x4(-394.78053898121254, -412.37219519744264, -25.874570143350638, -241.04595886964626, -93.675987525692221, 244.15999257013198, 494.68846606402121, 53.537962700025105, -239.49641167349017, 236.67584644848284, -211.85620818466703, -216.65482030466887); + double3x4 b0 = double3x4(-149.76397831261346, -345.04538671348496, -284.33404721148963, 267.97923648915219, -326.64849558782225, -150.68967754705329, 207.73243794577775, 366.19289248352538, 358.88076202891807, 214.85359368792433, 253.42280900358355, -307.71382751488773); + double3x4 r0 = double3x4(59123.904078224172, 142287.1235617903, 7357.0212487164608, -64595.312016683383, 30599.120397970968, -36792.390550284115, 102762.84107913627, 19605.221418797286, -85950.654724573629, 50850.6561485879, -53689.195383006307, 66667.684005499876); + TestUtils.AreEqual(a0 * b0, r0); + + double3x4 a1 = double3x4(467.95832870339893, -178.02191146557311, -386.3942503344241, -422.43540521265726, 464.58952758488692, -251.3156646468284, -104.97877912641445, -66.934159071619717, -39.829896707008572, 401.56559080703448, 434.14618250082538, -336.45419589451245); + double3x4 b1 = double3x4(184.4711149597872, 426.43644185850235, -144.28142625851621, 459.47961518703016, -358.31334917541284, -201.36521563370025, 254.90996539541982, 168.52096303204121, 8.7945530455533572, -194.84647974504458, -405.36266178887462, -180.7321890242082); + double3x4 r1 = double3x4(86324.794650634591, -75915.030498228327, 55749.513536340863, -194100.45742848891, -166468.62962076368, 50606.233003735295, -26760.136954367728, -11279.808946489193, -350.28613938869785, -78243.6417554897, -175986.65214401312, 60808.103330394995); + TestUtils.AreEqual(a1 * b1, r1); + + double3x4 a2 = double3x4(-83.11415318544681, 329.96027842627848, -316.97214594342381, 474.9379296130212, -445.10915800794453, -301.00371541688389, 405.68786425408337, 142.37348682357629, -416.21309037516505, -103.27920513194016, -52.951897407393858, -40.828328390060165); + double3x4 b2 = double3x4(-189.74690946831691, -35.518455760329232, 120.31664210200154, -136.2033479847961, 407.34163231744503, 301.65431489686216, -155.4824007281486, -461.39456126717596, 296.68037738310193, 341.001815239434, -257.09682166627459, 17.593622931089953); + double3x4 r2 = double3x4(15770.6537000148, -11719.679551949688, -38137.024239778322, -64688.136098260919, -181311.49098239967, -90799.069555490176, -63077.323080500144, -65690.352489042038, -123482.25672429107, -35218.396426477462, 13613.764524639606, -718.31821460143351); + TestUtils.AreEqual(a2 * b2, r2); + + double3x4 a3 = double3x4(-86.185078899462269, -257.3165096050671, 363.85721819654907, -229.86001001571304, 8.925310854299596, -2.4494049560508984, 37.75829531520526, 264.45176113045386, -321.251278788434, -268.25605762575572, 43.91368081230371, 274.83309877795773); + double3x4 b3 = double3x4(-443.84511658355831, 291.3492387697795, 490.1916594403757, 361.32099049227361, -509.28972244136486, 315.35265913389276, 125.08305054767197, -167.72711451711467, 396.8876833379677, -0.32041144385954112, 143.41152603151818, -396.34749597885997); + double3x4 r3 = double3x4(38252.826391895, -74968.969196332953, 178359.77358712527, -83053.246493441373, -4545.5690876891422, -772.42636618638653, 4722.9227615057453, -44355.730823380291, -127500.67580770116, 85.95231074793665, 6297.7279789534741, -108929.41051275423); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void double3x4_operator_mul_wide_scalar() + { + double3x4 a0 = double3x4(328.20302191758674, -290.10672272839895, 236.99572454998065, 120.48136692889102, 357.90315811610924, 134.86723214707672, -477.31047104173825, -438.272912467957, -46.729179165665585, -238.40500103608008, 422.08249374017237, -48.83483722099794); + double b0 = (192.21119055161773); + double3x4 r0 = double3x4(63084.293585418032, -55761.758562653624, 45553.230371395039, 23157.866976688449, 68792.992123681237, 25922.99125739103, -91744.41390168597, -84240.958291990959, -8981.8711609324328, -45824.109082604613, 81128.978632794271, -9386.6022026424689); + TestUtils.AreEqual(a0 * b0, r0); + + double3x4 a1 = double3x4(355.30832998608628, -196.995807977857, 98.2360046367329, -325.55215683837991, 53.937323833786536, -87.4509838034636, -130.47412949915702, -222.59457145565869, 126.01503211167415, 293.36108769726059, 174.38195737375963, -327.12007704708731); + double b1 = (119.35660391643489); + double3x4 r1 = double3x4(42408.39561035925, -23512.750626011144, 11725.115895759591, -38856.799837899605, 6437.7757971417432, -10437.852435932567, -15572.948995972518, -26568.132099181617, 15040.726275269915, 35014.583148776452, 20813.63821643246, -39043.941469222867); + TestUtils.AreEqual(a1 * b1, r1); + + double3x4 a2 = double3x4(56.629123475695565, -475.60871551726422, -452.69189450363251, -49.220605157884108, 141.60094959177115, 431.58568330834885, 180.35518583113105, -40.92345454214302, 279.54350842141707, 120.01444226131514, -59.508660105759589, 319.48987236595246); + double b2 = (257.54154241156834); + double3x4 r2 = double3x4(14584.35180534579, -122489.00217870105, -116586.9687476805, -12676.35057079227, 36468.126964807481, 111151.24256198283, 46448.952740874527, -10539.489603593216, 71994.066329993, 30908.704571643215, -15325.952110483087, 82281.9145140025); + TestUtils.AreEqual(a2 * b2, r2); + + double3x4 a3 = double3x4(-403.52316040709763, -335.39319554688092, -364.24254601273805, 150.68615085942952, 391.87204212316874, 179.3124121070432, 354.52978460608506, 497.76140164665946, 418.43656964713546, -413.33335967237753, -329.5207184895504, -322.70306339985837); + double b3 = (-408.19309849673562); + double3x4 r3 = double3x4(164715.36916176844, 136905.18770500287, 148681.29346127933, -61509.046819857074, -159959.46308849956, -73194.089096897529, -144716.61128773814, -203182.76885022805, -170802.91988860932, 168719.82479673345, 134508.08309912015, 131725.16334357671); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void double3x4_operator_mul_scalar_wide() + { + double a0 = (-464.534700371574); + double3x4 b0 = double3x4(329.36093846399376, -198.68342671109525, 184.07942518223047, 256.01618754864489, 266.22629297255833, -97.894749448585685, 159.74810583877752, -351.82222263506719, 491.80157660497423, 49.902031206480274, 424.46256871915546, 160.11807616060514); + double3x4 r0 = double3x4(-152999.58486347177, 92295.346096036214, -85511.280621599, -118928.40297318244, -123671.35123704225, 45475.508103049062, -74208.538480743009, 163433.63077584215, -228458.89803045939, -23181.225114435249, -197177.59217890151, -74380.402533339569); + TestUtils.AreEqual(a0 * b0, r0); + + double a1 = (-395.99208492599058); + double3x4 b1 = double3x4(125.20168858636248, -265.01581991138676, 314.65609779705107, -292.71202029507236, -37.729878681586058, 165.3622206027444, 356.51773302467438, -188.81332906932261, 504.91572475103465, 40.572113771257932, -206.77510581108515, -61.602680473403382); + double3x4 r1 = double3x4(-49578.877699568278, 104944.1670650809, -124601.32420133064, 115911.64319954457, 14940.733323125947, -65482.130504472349, -141178.20041352851, 74768.583839978208, -199942.63055607979, -16066.235922134923, 81881.305260923924, 24394.173877692614); + TestUtils.AreEqual(a1 * b1, r1); + + double a2 = (118.97158938225903); + double3x4 b2 = double3x4(53.7483275186961, -198.66941771221786, 96.23611287783649, -20.241880664714529, -31.123976006696012, 38.890465516080326, -13.133307701504464, 507.87128209875493, 95.017933651347562, 340.74862186086762, 438.98690172610191, -227.16596637813655); + double3x4 r2 = double3x4(6394.523951537486, -23636.01638687048, 11449.363305046692, -2408.2087147671054, -3702.86889341192, 4626.8604942640131, -1562.4904910942491, 60422.253632894513, 11304.434586318854, 40539.405122601791, 52226.969416347893, -27026.296073563721); + TestUtils.AreEqual(a2 * b2, r2); + + double a3 = (452.57297894571582); + double3x4 b3 = double3x4(144.01496774703958, -31.586035981581574, 42.297746916440246, -466.02715013270597, 287.454008951529, 328.99688378395365, -164.24312146205602, -511.26830100979112, -9.5943138644072974, 431.19011875204285, -132.14180642559279, -87.502642910695954); + double3x4 r3 = double3x4(65177.282966048886, -14294.986397270941, 19142.817324665328, -210911.29560514109, 130093.91714108193, 148895.09975796138, -74331.998751425723, -231386.2180285161, -4342.1272065549929, 195144.996535569, -59803.810977298665, -39601.331767716889); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void double3x4_operator_div_wide_wide() + { + double3x4 a0 = double3x4(246.26574933075619, -269.85612953354428, -451.61952588130697, -7.38850236283082, -308.20558681534862, -373.394808704683, 360.41863482092447, 25.80972458133931, -274.050461181463, 127.53858977534742, -447.6717600522897, -137.4586017771897); + double3x4 b0 = double3x4(172.11981423763552, -77.141104972521362, -325.8353723612779, -450.60868117334724, -261.26215398556656, -122.44949847201326, -93.210781379235357, -442.00522705633438, 484.36271380091216, -390.78178686219348, 402.02531714086672, 316.65072193585831); + double3x4 r0 = double3x4(1.4307809383918566, 3.4982144685336105, 1.3860359070548143, 0.016396715535066435, 1.1796794220427942, 3.0493780159501847, -3.8667054335113131, -0.05839235149599218, -0.56579594872388561, -0.32636779415802974, -1.1135412148569459, -0.43410165287743668); + TestUtils.AreEqual(a0 / b0, r0); + + double3x4 a1 = double3x4(-136.13317424437645, 12.43763423545181, 228.51298319013461, 356.9723681681661, -24.762040865031111, 411.66839356518744, -204.07890067066944, 11.365393882321882, 82.152295389283609, 37.389483230835481, 394.26582903147948, -429.91279645912016); + double3x4 b1 = double3x4(397.15440744774151, -303.26218643005109, -118.59124451437555, -81.650312223308845, -84.346871176896116, -488.41943549011808, 404.16049999937434, -136.72883731533256, -19.832707652744261, -102.6072290421497, 166.11604960547572, -112.84016590604568); + double3x4 r1 = double3x4(-0.3427714050039572, -0.041012809351094658, -1.9268959030313104, -4.37196574572633, 0.29357391115432163, -0.84285833783843456, -0.50494519051462317, -0.083123605125890912, -4.1422632162843458, -0.36439423985883462, 2.3734361006528726, 3.8099270149698223); + TestUtils.AreEqual(a1 / b1, r1); + + double3x4 a2 = double3x4(315.37384071730719, -122.66599255551864, 447.52615067340719, -210.48151574399395, -202.42158398517483, -453.00793072814491, 173.7269934032704, -167.1216643634819, -106.2345221537326, 414.31254239301779, 7.1208250555772565, 274.07367361433512); + double3x4 b2 = double3x4(-218.2096851888158, 458.51754042995981, 119.5872405132219, 356.24043218988948, -74.506851469402591, -336.77393332904853, -216.12631593277973, 322.385657699027, 220.25550351862591, -67.234494002179474, 2.229160071457386, -166.21096118083733); + double3x4 r2 = double3x4(-1.4452788401413792, -0.26752737188743669, 3.7422566885296384, -0.59084117557941718, 2.7168183864044027, 1.3451395309907455, -0.80382156450260089, -0.51839050643966134, -0.48232403030396409, -6.1622021336189041, 3.1943982609206638, -1.6489506568471335); + TestUtils.AreEqual(a2 / b2, r2); + + double3x4 a3 = double3x4(-39.002680081409721, 39.065917748522907, -147.36416608996882, 434.38489290437894, 315.06720390686166, -106.63602714735828, -507.92525195885696, -17.176462896716089, -385.86535543290216, 226.00214849505676, 345.16843072751931, 201.5441692813971); + double3x4 b3 = double3x4(-247.73257290932003, 84.1609476004545, 477.14862726496006, 209.75077615014777, -386.72219985850256, -65.2773316210496, 410.45482773820629, 367.65071862174693, -456.57203862470203, 382.42795079873315, -163.86067278862964, -213.72138867793672); + double3x4 r3 = double3x4(0.15743864290178045, 0.464181058582947, -0.3088433198156047, 2.0709572611708924, -0.81471196642484278, 1.6335843469583855, -1.2374693087611059, -0.046719514002603893, 0.84513575687905829, 0.59096660697271775, -2.1064751221470064, -0.94302292591365366); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void double3x4_operator_div_wide_scalar() + { + double3x4 a0 = double3x4(-244.51745116175965, 69.112274917360537, -333.02311888943575, 257.39682519500923, 403.24561257066466, 154.34436066185322, 131.52659160062979, -261.88639200007844, -348.92380516087815, -275.53868187383688, 210.55792174607416, 287.64239968342815); + double b0 = (-60.024377612408443); + double3x4 r0 = double3x4(4.0736357608014941, -1.1514034408425655, 5.5481311449798705, -4.2882048166676752, -6.7180307170282818, -2.5713612835520117, -2.1912195816494422, 4.3630005410658415, 5.8130349541308268, 4.590446295887566, -3.507873469437639, -4.7920929982948417); + TestUtils.AreEqual(a0 / b0, r0); + + double3x4 a1 = double3x4(504.37224626185946, -26.63160015392657, -253.23667275776933, 272.89512098622276, 178.09617313095191, -460.87559030059521, -502.64601611655485, -84.324793139623864, -174.69034036187935, 83.796309271732525, 197.04206690427009, 317.16826525198678); + double b1 = (491.78708600056689); + double3x4 r1 = double3x4(1.0255906684407692, -0.05415270329789805, -0.51493152212922777, 0.55490501632632983, 0.36214080890026995, -0.9371445558862519, -1.0220805515742548, -0.17146605825986788, -0.35521538758274346, 0.17039143901317477, 0.40066539466642881, 0.64493004041920121); + TestUtils.AreEqual(a1 / b1, r1); + + double3x4 a2 = double3x4(403.38711781212464, 60.606869964211683, -413.56048102563273, 207.34099803089214, 358.5621036768714, 20.749072799807891, -68.577131064877449, 310.70246257945075, 417.40490193730443, 147.86623079509764, 506.6588964437409, -435.77857300070048); + double b2 = (81.646461763254592); + double3x4 r2 = double3x4(4.94065644855257, 0.742308590664343, -5.0652590705621705, 2.5394976530900575, 4.3916428946617758, 0.25413315349748711, -0.83992777621798842, 3.8054614476788506, 5.1123452617901393, 1.8110549753381424, 6.2055217764717066, -5.337384665416387); + TestUtils.AreEqual(a2 / b2, r2); + + double3x4 a3 = double3x4(210.67294011389504, -19.190853366251474, 416.5117301496266, 427.01360555506017, 417.1994099175555, -150.91182310456031, 488.98551463009119, -294.73874129668752, -357.29805271574207, 288.77164591884787, 453.4291381563196, 70.724425587209112); + double b3 = (-218.78147636110964); + double3x4 r3 = double3x4(-0.96293773868757038, 0.087716993620502046, -1.9037796849956046, -1.9517813512248774, -1.9069229116497379, 0.6897833656423128, -2.2350407482532773, 1.3471832542632936, 1.6331275328172847, -1.3199090285057589, -2.0725206982693196, -0.32326514457958477); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void double3x4_operator_div_scalar_wide() + { + double a0 = (41.737658758525527); + double3x4 b0 = double3x4(-422.676129776368, 248.12963235011773, 449.39137741988122, 245.85813796047967, -326.62061253498337, 163.71510489457989, 333.664472020075, 38.291076916405473, -472.97976062864984, 192.23013958345643, -200.29686960964318, -490.18150376257557); + double3x4 r0 = double3x4(-0.098746193168297289, 0.1682090863683405, 0.092875967042706856, 0.16976317767945767, -0.12778635871933872, 0.25494079355354177, 0.12508871114097631, 1.0900100524632514, -0.088244069266411956, 0.21712338579666474, -0.20837898685020731, -0.08514735549618288); + TestUtils.AreEqual(a0 / b0, r0); + + double a1 = (-211.10257468517057); + double3x4 b1 = double3x4(-322.85234108700058, -137.98529035317961, 84.32973555677097, 355.06345550858578, 276.42724455354141, -382.9880213136729, -488.647160996053, 344.84603826368505, 168.85499938244698, -44.19558837087618, 420.550703959796, -175.6152060849663); + double3x4 r1 = double3x4(0.65386725700800707, 1.5298918757560602, -2.5032993794111431, -0.59454886559021247, -0.76368223047667771, 0.55119889640693076, 0.43201432758733604, -0.61216470906286558, -1.2502003225088718, 4.7765531010394247, -0.50196699874113548, 1.2020745776594923); + TestUtils.AreEqual(a1 / b1, r1); + + double a2 = (-9.2205684227964753); + double3x4 b2 = double3x4(-344.19428865248074, -449.07149216582604, 117.70491724726969, -337.02741710144437, 239.39341389359595, -389.35516304027067, 242.71606718875285, 496.27646445495839, 91.745798392102984, -490.49213360738577, 485.75540922850155, -317.57225504404505); + double3x4 r2 = double3x4(0.026788847830377906, 0.02053251783658458, -0.078336306064650474, 0.027358511370073814, -0.038516383023364104, 0.023681639022834274, -0.03798911431613599, -0.018579499700682109, -0.1005012609230303, 0.018798606116234018, -0.018981916099382184, 0.029034552850083353); + TestUtils.AreEqual(a2 / b2, r2); + + double a3 = (-451.62477871944418); + double3x4 b3 = double3x4(394.01837677230048, -262.27140939527726, -314.24678697914203, 359.91591446470284, -101.61536865197837, 359.5172828917938, -424.97987981558771, -192.71958431635034, -169.7497170761925, -244.79002224877013, -187.14385255945092, -207.71366343633906); + double3x4 r3 = double3x4(-1.1462023228942793, 1.7219748799945886, 1.4371659391044802, -1.2548063605110056, 4.4444534789438208, -1.2561976856488777, 1.0626968479435275, 2.3434296017269292, 2.6605333222248113, 1.8449476599192278, 2.4132493402420168, 2.1742661086802313); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void double3x4_operator_mod_wide_wide() + { + double3x4 a0 = double3x4(-442.30985924336585, 368.50046246522129, -1.0938966279355213, -364.67383473211612, -197.34394487987458, -34.034902350062, -101.34858350704826, 208.31857142612273, -140.77031404374645, 183.446989383291, -463.36838100076113, 83.839106360375467); + double3x4 b0 = double3x4(-43.245045443645211, -144.19587690392319, -62.640481739603217, -336.82826510855381, -154.6102545981343, -154.02935583611452, 487.0462093237071, -469.82909105244516, -145.20377237405802, -203.38401780062543, -22.520082245823062, 224.6900237652892); + double3x4 r0 = double3x4(-9.8594048069137443, 80.1087086573749, -1.0938966279355213, -27.845569623562312, -42.73369028174028, -34.034902350062, -101.34858350704826, 208.31857142612273, -140.77031404374645, 183.446989383291, -12.966736084299896, 83.839106360375467); + TestUtils.AreEqual(a0 % b0, r0); + + double3x4 a1 = double3x4(-64.714058190916717, 295.06681050689281, 212.257051805154, 349.62829916068745, 119.87592106679267, -37.805828350505692, 142.41158515886013, 332.24425593588694, -464.19427249589671, -296.14783801517814, 225.17535863871467, -212.06027732233531); + double3x4 b1 = double3x4(-435.62674614210925, 12.095571285158144, 40.378765363422531, 345.78484813579587, -433.47126146474443, -355.64996712079733, 4.0154273528677322, 66.659781725453058, -221.85363088448236, -355.05676405274158, 357.93597118832918, 71.375334057666009); + double3x4 r1 = double3x4(-64.714058190916717, 4.773099663097355, 10.363224988041338, 3.8434510248915785, 119.87592106679267, -37.805828350505692, 1.8716278084895066, 65.605129034074707, -20.487010726932, -296.14783801517814, 225.17535863871467, -69.309609207003291); + TestUtils.AreEqual(a1 % b1, r1); + + double3x4 a2 = double3x4(156.98570425668061, 507.61831092630439, 270.83043897842538, 337.734341063413, 384.91584819597927, 432.51818128699347, 154.29270775350403, -37.0853169137078, 7.7614462411783052, 238.09472309709281, 12.852037674212852, -100.2406762113053); + double3x4 b2 = double3x4(-131.41830188195144, -473.98760078567432, 76.2178585884244, 92.210223002457155, -368.18956130006796, -77.467150485826267, 135.23059398272574, 274.27728975670288, 132.18024951414213, -179.87732204230377, 51.968538546920058, 367.21425860338582); + double3x4 r2 = double3x4(25.56740237472917, 33.630710140630072, 42.17686321315216, 61.103672056041546, 16.7262868959113, 45.182428857862135, 19.062113770778296, -37.0853169137078, 7.7614462411783052, 58.217401054789036, 12.852037674212852, -100.2406762113053); + TestUtils.AreEqual(a2 % b2, r2); + + double3x4 a3 = double3x4(34.551971690054984, -251.18974530472872, -238.37224423064487, 511.51466512657453, 288.43353118022605, 367.10986702847754, 44.760454437118256, -437.04559084262962, -259.20560252815744, -228.56581531677665, 83.497246065874265, 424.36707397194914); + double3x4 b3 = double3x4(-395.21279234216212, 270.48524988372128, -73.104129586882948, 89.3499706207541, -288.30852355077332, -168.32464631289463, 311.61589994636176, -468.34193752163179, 381.9839486470371, -1.398853541071901, -102.28859357828674, -87.424866478622391); + double3x4 r3 = double3x4(34.551971690054984, -251.18974530472872, -19.059855469996023, 64.764812022804, 0.12500762945273891, 30.46057440268828, 44.760454437118256, -437.04559084262962, -259.20560252815744, -0.552688122056793, 83.497246065874265, 74.667608057459574); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void double3x4_operator_mod_wide_scalar() + { + double3x4 a0 = double3x4(-433.41699548876704, -5.5141427542614565, 393.39439958771425, 299.41153277988155, -120.80601626299602, -502.939041133476, -450.80766245853511, 186.09479698263794, -84.473635951277629, -318.78148356023314, 433.45469041981482, -54.6001856581309); + double b0 = (-90.499235433758827); + double3x4 r0 = double3x4(-71.420053753731736, -5.5141427542614565, 31.39745785267894, 27.913826478605074, -30.306780829237198, -50.442863964681862, -88.8107207234998, 5.0963261151202914, -84.473635951277629, -47.283777258956661, 71.457748684779517, -54.6001856581309); + TestUtils.AreEqual(a0 % b0, r0); + + double3x4 a1 = double3x4(-172.33886607565864, 222.36186109406958, 5.796394112425105, 254.51082885196, -433.09369703433185, -203.08261284748215, -75.356399809641971, 252.28909385031511, -69.403906139267576, 5.3372299696026175, -279.06042803407666, 483.55059097872606); + double b1 = (-429.71466728193434); + double3x4 r1 = double3x4(-172.33886607565864, 222.36186109406958, 5.796394112425105, 254.51082885196, -3.3790297523975141, -203.08261284748215, -75.356399809641971, 252.28909385031511, -69.403906139267576, 5.3372299696026175, -279.06042803407666, 53.835923696791724); + TestUtils.AreEqual(a1 % b1, r1); + + double3x4 a2 = double3x4(-331.99334660730949, 67.839589388966374, -124.72076731767544, 38.175906437531125, 271.28698671575955, 405.77360100567978, -194.76144489774549, 235.72397314557986, 465.98487804177444, -304.153164289963, -295.52024735860539, 313.72239532774427); + double b2 = (335.99997655302286); + double3x4 r2 = double3x4(-331.99334660730949, 67.839589388966374, -124.72076731767544, 38.175906437531125, 271.28698671575955, 69.773624452656918, -194.76144489774549, 235.72397314557986, 129.98490148875158, -304.153164289963, -295.52024735860539, 313.72239532774427); + TestUtils.AreEqual(a2 % b2, r2); + + double3x4 a3 = double3x4(-232.20264135683078, 244.09660899084838, 162.52424080787421, 390.01615423244243, 90.004538339564874, 155.93352062810845, 217.33769641506376, -306.81927671414769, 149.09372074394196, 503.82839917756075, -194.13014063338289, 214.86302171222076); + double b3 = (191.61973127705028); + double3x4 r3 = double3x4(-40.582910079780504, 52.4768777137981, 162.52424080787421, 6.7766916783418765, 90.004538339564874, 155.93352062810845, 25.717965138013483, -115.19954543709741, 149.09372074394196, 120.5889366234602, -2.510409356332616, 23.243290435170479); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void double3x4_operator_mod_scalar_wide() + { + double a0 = (-396.4224028049141); + double3x4 b0 = double3x4(-159.14024384279747, 230.17333399046834, 14.779358632294134, -303.15649738123477, 399.63502020371845, 206.69470534412881, 397.04482263934096, -393.89064735634747, -372.06709426085797, 201.01229796233224, -95.5668547598491, -258.95146882671463); + double3x4 r0 = double3x4(-78.141915119319151, -166.24906881444576, -12.159078365266623, -93.265905423679328, -396.4224028049141, -189.72769746078529, -396.4224028049141, -2.5317554485666278, -24.355308544056129, -195.41010484258186, -14.154983765517727, -137.47093397819947); + TestUtils.AreEqual(a0 % b0, r0); + + double a1 = (106.98357563232241); + double3x4 b1 = double3x4(469.3235559264773, -34.808985011097491, 184.83653434777466, 374.79425376224992, -131.87271911086174, -120.09286003936683, 4.506670715523228, -111.40195732535886, 391.54249710195813, -218.66887078931035, 196.37741980160467, -511.03262233689082); + double3x4 r1 = double3x4(106.98357563232241, 2.5566205990299409, 106.98357563232241, 106.98357563232241, 106.98357563232241, 106.98357563232241, 3.3301491752881702, 106.98357563232241, 106.98357563232241, 106.98357563232241, 106.98357563232241, 106.98357563232241); + TestUtils.AreEqual(a1 % b1, r1); + + double a2 = (499.95350598727987); + double3x4 b2 = double3x4(-433.52306505363578, -163.8668559360629, 177.00401099818009, 110.65016441729392, 17.68454910148148, -95.85296754532169, -432.44096561541824, 192.69208654793545, -268.13177621929526, 271.07511461483091, 423.70268912972074, -413.23324675729185); + double3x4 r2 = double3x4(66.430440933644093, 8.3529381790911543, 145.94548399091968, 57.352848318104179, 4.7861311457984357, 20.68866826067142, 67.512540371861633, 114.56933289140898, 231.82172976798461, 228.87839137244896, 76.25081685755913, 86.720259229988017); + TestUtils.AreEqual(a2 % b2, r2); + + double a3 = (127.95621091125361); + double3x4 b3 = double3x4(-298.20467843590518, -352.41809122283854, -175.60771592688172, -152.89928944078241, 34.619420306114193, -380.80295556634803, 0.35205721871557216, 485.90088986135129, 266.1508249091687, 483.82075928329527, 11.777843242407698, 274.1358426893762); + double3x4 r3 = double3x4(127.95621091125361, 127.95621091125361, 127.95621091125361, 127.95621091125361, 24.097949992911026, 127.95621091125361, 0.15944051750091148, 127.95621091125361, 127.95621091125361, 127.95621091125361, 10.177778487176624, 127.95621091125361); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void double3x4_operator_plus() + { + double3x4 a0 = double3x4(271.6708086802023, -79.080240524876956, -330.98506203805334, 31.824682965793045, 315.44952860262686, 319.22218742930431, 190.32466015141677, -350.30858270745193, -320.51845875406565, 102.0544069288552, -107.00351267075331, -428.77622075973835); + double3x4 r0 = double3x4(271.6708086802023, -79.080240524876956, -330.98506203805334, 31.824682965793045, 315.44952860262686, 319.22218742930431, 190.32466015141677, -350.30858270745193, -320.51845875406565, 102.0544069288552, -107.00351267075331, -428.77622075973835); + TestUtils.AreEqual(+a0, r0); + + double3x4 a1 = double3x4(377.23016208095021, 34.283600107898792, 258.33039414991174, 465.35593555185756, 309.59316530339106, -316.93713655925222, -230.05266557915724, 301.78512229667285, 2.585727931273027, 350.24640981771347, 60.819777278611355, -472.44209526127304); + double3x4 r1 = double3x4(377.23016208095021, 34.283600107898792, 258.33039414991174, 465.35593555185756, 309.59316530339106, -316.93713655925222, -230.05266557915724, 301.78512229667285, 2.585727931273027, 350.24640981771347, 60.819777278611355, -472.44209526127304); + TestUtils.AreEqual(+a1, r1); + + double3x4 a2 = double3x4(-364.80255644619581, 473.8031363309376, 285.80893935161123, -273.26378191321334, -206.68638310520276, -113.36231785331029, -351.7548708169511, -116.53621798219916, -496.05329274388652, -330.00534716714424, -379.67424100436006, -339.673203864914); + double3x4 r2 = double3x4(-364.80255644619581, 473.8031363309376, 285.80893935161123, -273.26378191321334, -206.68638310520276, -113.36231785331029, -351.7548708169511, -116.53621798219916, -496.05329274388652, -330.00534716714424, -379.67424100436006, -339.673203864914); + TestUtils.AreEqual(+a2, r2); + + double3x4 a3 = double3x4(-29.083537353707243, 485.92661713339692, 183.72484144183102, -258.39246022812671, 486.44689463379177, 245.99093138705518, 231.85467468567879, -216.48996482439804, -163.00918181380683, 175.32546266136944, 404.37801499123589, 87.649255078122565); + double3x4 r3 = double3x4(-29.083537353707243, 485.92661713339692, 183.72484144183102, -258.39246022812671, 486.44689463379177, 245.99093138705518, 231.85467468567879, -216.48996482439804, -163.00918181380683, 175.32546266136944, 404.37801499123589, 87.649255078122565); + TestUtils.AreEqual(+a3, r3); + } + + [TestCompiler] + public static void double3x4_operator_neg() + { + double3x4 a0 = double3x4(420.22718854445372, -196.25749811728366, -335.42683068636188, 509.04366969924592, -33.014395013923945, -498.57532071442125, -495.8379526063045, -270.85946787095605, 19.686896571743773, 268.23670662019254, -180.60051473444349, 223.38126312167446); + double3x4 r0 = double3x4(-420.22718854445372, 196.25749811728366, 335.42683068636188, -509.04366969924592, 33.014395013923945, 498.57532071442125, 495.8379526063045, 270.85946787095605, -19.686896571743773, -268.23670662019254, 180.60051473444349, -223.38126312167446); + TestUtils.AreEqual(-a0, r0); + + double3x4 a1 = double3x4(-410.39206070936848, -349.14948885010062, -110.9393032113739, -238.21960913307015, 292.54351224216794, 469.29257867731735, 48.290685914592245, 88.7237785275671, 66.148520738886873, 55.707977559281517, 464.54141090090457, 499.24280213715645); + double3x4 r1 = double3x4(410.39206070936848, 349.14948885010062, 110.9393032113739, 238.21960913307015, -292.54351224216794, -469.29257867731735, -48.290685914592245, -88.7237785275671, -66.148520738886873, -55.707977559281517, -464.54141090090457, -499.24280213715645); + TestUtils.AreEqual(-a1, r1); + + double3x4 a2 = double3x4(175.01502259774838, -306.1655677790593, 149.66006023700356, 320.3917383255399, -359.83381168909079, 22.03845144344416, -159.55426199713457, 419.82245011805674, 303.32339992342679, 363.71671049842462, 280.88790405955535, -270.65131939139746); + double3x4 r2 = double3x4(-175.01502259774838, 306.1655677790593, -149.66006023700356, -320.3917383255399, 359.83381168909079, -22.03845144344416, 159.55426199713457, -419.82245011805674, -303.32339992342679, -363.71671049842462, -280.88790405955535, 270.65131939139746); + TestUtils.AreEqual(-a2, r2); + + double3x4 a3 = double3x4(-201.61574015469091, 95.489228054643263, 191.07025322274785, 371.97357361948752, 296.51257981756362, -164.16993697181806, -347.45810691800813, -237.40496050445591, -228.70196615378467, 61.082260875535326, 128.33153134599866, 331.25579587149241); + double3x4 r3 = double3x4(201.61574015469091, -95.489228054643263, -191.07025322274785, -371.97357361948752, -296.51257981756362, 164.16993697181806, 347.45810691800813, 237.40496050445591, 228.70196615378467, -61.082260875535326, -128.33153134599866, -331.25579587149241); + TestUtils.AreEqual(-a3, r3); + } + + [TestCompiler] + public static void double3x4_operator_prefix_inc() + { + double3x4 a0 = double3x4(-99.79557113526181, 458.74185082816609, 96.179026886904126, -48.552469514567633, -315.728967098393, -299.23014583216525, -323.61485853959567, -456.89028832730384, -76.507656371457358, -305.58477344437722, 64.0964734852763, 148.67930967578627); + double3x4 r0 = double3x4(-98.79557113526181, 459.74185082816609, 97.179026886904126, -47.552469514567633, -314.728967098393, -298.23014583216525, -322.61485853959567, -455.89028832730384, -75.507656371457358, -304.58477344437722, 65.0964734852763, 149.67930967578627); + TestUtils.AreEqual(++a0, r0); + + double3x4 a1 = double3x4(363.2849182390072, -326.87781992874937, -179.89464839729231, 339.8765849265626, -38.410431164507941, -153.3736775635619, 261.62557304167444, 155.03081877298223, -396.65022892348946, 301.30576791488829, -221.35540328796736, -429.69815011960367); + double3x4 r1 = double3x4(364.2849182390072, -325.87781992874937, -178.89464839729231, 340.8765849265626, -37.410431164507941, -152.3736775635619, 262.62557304167444, 156.03081877298223, -395.65022892348946, 302.30576791488829, -220.35540328796736, -428.69815011960367); + TestUtils.AreEqual(++a1, r1); + + double3x4 a2 = double3x4(-271.28932893988178, -377.55920785365589, 223.23241792583485, -71.076339993195745, -388.22791713673058, 131.28316909227669, 22.304934273615913, -480.76047228312143, 200.95175967037289, 117.95409851798513, 139.52581245243823, 335.68968192473505); + double3x4 r2 = double3x4(-270.28932893988178, -376.55920785365589, 224.23241792583485, -70.076339993195745, -387.22791713673058, 132.28316909227669, 23.304934273615913, -479.76047228312143, 201.95175967037289, 118.95409851798513, 140.52581245243823, 336.68968192473505); + TestUtils.AreEqual(++a2, r2); + + double3x4 a3 = double3x4(162.6615141195532, -254.73151385725083, -89.256037038404486, 314.36555233335378, 244.72812830876933, 34.010626570326622, -90.445278448260069, -472.63621614530507, -34.566777483824069, -71.271847996521672, -396.49010748252743, -314.987458614161); + double3x4 r3 = double3x4(163.6615141195532, -253.73151385725083, -88.256037038404486, 315.36555233335378, 245.72812830876933, 35.010626570326622, -89.445278448260069, -471.63621614530507, -33.566777483824069, -70.271847996521672, -395.49010748252743, -313.987458614161); + TestUtils.AreEqual(++a3, r3); + } + + [TestCompiler] + public static void double3x4_operator_postfix_inc() + { + double3x4 a0 = double3x4(322.94356623429042, 472.05246542024076, 203.48761925636211, -49.854570650427888, -31.420532002775246, 455.33662459595905, 271.45466840986842, 55.736877228942149, 153.75031645305, -174.17301925186672, -427.40105100506969, 215.11022744658874); + double3x4 r0 = double3x4(322.94356623429042, 472.05246542024076, 203.48761925636211, -49.854570650427888, -31.420532002775246, 455.33662459595905, 271.45466840986842, 55.736877228942149, 153.75031645305, -174.17301925186672, -427.40105100506969, 215.11022744658874); + TestUtils.AreEqual(a0++, r0); + + double3x4 a1 = double3x4(159.86103184514729, 241.46487509527469, 287.22045649551808, -170.10464366250886, -270.65246380057766, -162.86024792625579, 454.48881003562769, -449.92732045144186, 209.52264294844247, -311.43587103087259, 69.731466087387616, -232.29964433996923); + double3x4 r1 = double3x4(159.86103184514729, 241.46487509527469, 287.22045649551808, -170.10464366250886, -270.65246380057766, -162.86024792625579, 454.48881003562769, -449.92732045144186, 209.52264294844247, -311.43587103087259, 69.731466087387616, -232.29964433996923); + TestUtils.AreEqual(a1++, r1); + + double3x4 a2 = double3x4(-341.49855271982892, 417.72977919957123, 25.565661203845252, -463.72565982478005, 504.44898509627626, -310.1449584020977, -117.39846258861871, 403.50871271803453, -111.27954178269931, 446.60767313773169, -12.352577930480493, -232.15012251220185); + double3x4 r2 = double3x4(-341.49855271982892, 417.72977919957123, 25.565661203845252, -463.72565982478005, 504.44898509627626, -310.1449584020977, -117.39846258861871, 403.50871271803453, -111.27954178269931, 446.60767313773169, -12.352577930480493, -232.15012251220185); + TestUtils.AreEqual(a2++, r2); + + double3x4 a3 = double3x4(64.577020436793987, 193.58436617328994, 382.05033582358169, -462.06412789880488, -122.30657368633268, 428.77629562317225, 338.97875825454423, 227.54409729109341, -169.32121356265674, -95.765601917992171, -169.85535796445578, 439.299990143301); + double3x4 r3 = double3x4(64.577020436793987, 193.58436617328994, 382.05033582358169, -462.06412789880488, -122.30657368633268, 428.77629562317225, 338.97875825454423, 227.54409729109341, -169.32121356265674, -95.765601917992171, -169.85535796445578, 439.299990143301); + TestUtils.AreEqual(a3++, r3); + } + + [TestCompiler] + public static void double3x4_operator_prefix_dec() + { + double3x4 a0 = double3x4(-416.20121712992022, -96.637880131899351, -50.145671629414721, -207.31644759295341, 439.47906156977592, -304.40081920493435, 337.96895734312432, 246.08898293510492, 171.96452935597142, -227.44280134301761, 298.28480710568135, 326.50782338087811); + double3x4 r0 = double3x4(-417.20121712992022, -97.637880131899351, -51.145671629414721, -208.31644759295341, 438.47906156977592, -305.40081920493435, 336.96895734312432, 245.08898293510492, 170.96452935597142, -228.44280134301761, 297.28480710568135, 325.50782338087811); + TestUtils.AreEqual(--a0, r0); + + double3x4 a1 = double3x4(400.720900006928, -326.45297852459038, -24.584499132160317, 112.79684668071422, -341.97629300783217, -503.27416181158003, -79.635249413380052, -131.0041454448384, 147.89369566174867, -15.70865417258284, 188.75845274178243, 307.79193582562357); + double3x4 r1 = double3x4(399.720900006928, -327.45297852459038, -25.584499132160317, 111.79684668071422, -342.97629300783217, -504.27416181158003, -80.635249413380052, -132.0041454448384, 146.89369566174867, -16.70865417258284, 187.75845274178243, 306.79193582562357); + TestUtils.AreEqual(--a1, r1); + + double3x4 a2 = double3x4(-406.667706917351, -188.69222578252305, -505.2156915633081, -372.24192898918034, -4.0317671317754957, 83.767736235525376, -30.631410374600193, -436.90656181653333, -51.668396258572329, 345.02153913351776, 4.7353689692613443, -68.653318198701982); + double3x4 r2 = double3x4(-407.667706917351, -189.69222578252305, -506.2156915633081, -373.24192898918034, -5.0317671317754957, 82.767736235525376, -31.631410374600193, -437.90656181653333, -52.668396258572329, 344.02153913351776, 3.7353689692613443, -69.653318198701982); + TestUtils.AreEqual(--a2, r2); + + double3x4 a3 = double3x4(481.496122346025, -357.67329399551886, 153.32965023505017, -233.62431751639781, -35.238318221288864, 340.61965743667429, 259.92884195033878, 335.35490886091952, 85.364882747347, -1.3939745432668929, -407.41038651364408, -145.79341251486608); + double3x4 r3 = double3x4(480.496122346025, -358.67329399551886, 152.32965023505017, -234.62431751639781, -36.238318221288864, 339.61965743667429, 258.92884195033878, 334.35490886091952, 84.364882747347, -2.3939745432668929, -408.41038651364408, -146.79341251486608); + TestUtils.AreEqual(--a3, r3); + } + + [TestCompiler] + public static void double3x4_operator_postfix_dec() + { + double3x4 a0 = double3x4(-376.59242719066907, 16.969734438215255, -0.25066399585949739, -202.32328734282555, 409.55752940175944, 47.856652520530247, -281.11170376516492, -262.062590959511, -182.40572866350681, 450.12809559801974, -129.23265582380475, -332.15495768755443); + double3x4 r0 = double3x4(-376.59242719066907, 16.969734438215255, -0.25066399585949739, -202.32328734282555, 409.55752940175944, 47.856652520530247, -281.11170376516492, -262.062590959511, -182.40572866350681, 450.12809559801974, -129.23265582380475, -332.15495768755443); + TestUtils.AreEqual(a0--, r0); + + double3x4 a1 = double3x4(-261.00890052551819, -230.22777878038016, -483.06653784358247, 378.64123433578811, 487.34482287212495, -192.17785772689518, -357.05418960985457, -396.30206627226528, 279.42425287860647, 115.86774092347719, -20.823201427619551, 323.40538063803933); + double3x4 r1 = double3x4(-261.00890052551819, -230.22777878038016, -483.06653784358247, 378.64123433578811, 487.34482287212495, -192.17785772689518, -357.05418960985457, -396.30206627226528, 279.42425287860647, 115.86774092347719, -20.823201427619551, 323.40538063803933); + TestUtils.AreEqual(a1--, r1); + + double3x4 a2 = double3x4(379.15614026559342, 409.22248644811214, -428.25672479544613, -425.2883748604396, -194.64129671577427, -258.84836089743692, -208.98576388553982, -313.42591657928466, 178.31252797800698, 176.78949864990523, -370.78628438095853, 64.903882295314133); + double3x4 r2 = double3x4(379.15614026559342, 409.22248644811214, -428.25672479544613, -425.2883748604396, -194.64129671577427, -258.84836089743692, -208.98576388553982, -313.42591657928466, 178.31252797800698, 176.78949864990523, -370.78628438095853, 64.903882295314133); + TestUtils.AreEqual(a2--, r2); + + double3x4 a3 = double3x4(449.63778540568319, -203.43741021092859, 417.13731093757656, -197.3473556960688, 446.02335020807732, 239.97454058377753, 350.61805431480434, -264.7472652237617, 186.44167980292889, 353.75952093385138, 68.234193118398139, -240.61070048092432); + double3x4 r3 = double3x4(449.63778540568319, -203.43741021092859, 417.13731093757656, -197.3473556960688, 446.02335020807732, 239.97454058377753, 350.61805431480434, -264.7472652237617, 186.44167980292889, 353.75952093385138, 68.234193118398139, -240.61070048092432); + TestUtils.AreEqual(a3--, r3); + } + + + } +} diff --git a/package/Tests/Tests/Shared/TestDouble3x4.gen.cs.meta b/package/Tests/Tests/Shared/TestDouble3x4.gen.cs.meta new file mode 100755 index 000000000..20c7480f3 --- /dev/null +++ b/package/Tests/Tests/Shared/TestDouble3x4.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a43acb77473e8f64189c28afbb4c366a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/package/Tests/Tests/Shared/TestDouble4.gen.cs b/package/Tests/Tests/Shared/TestDouble4.gen.cs new file mode 100755 index 000000000..f36dbc317 --- /dev/null +++ b/package/Tests/Tests/Shared/TestDouble4.gen.cs @@ -0,0 +1,1069 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using NUnit.Framework; +using static Unity.Mathematics.math; +using Burst.Compiler.IL.Tests; + +namespace Unity.Mathematics.Tests +{ + [TestFixture] + public class TestDouble4 + { + [TestCompiler] + public static void double4_zero() + { + TestUtils.AreEqual(double4.zero.x, 0.0); + TestUtils.AreEqual(double4.zero.y, 0.0); + TestUtils.AreEqual(double4.zero.z, 0.0); + TestUtils.AreEqual(double4.zero.w, 0.0); + } + + [TestCompiler] + public static void double4_constructor() + { + double4 a = new double4(1, 2, 3, 4); + TestUtils.AreEqual(a.x, 1); + TestUtils.AreEqual(a.y, 2); + TestUtils.AreEqual(a.z, 3); + TestUtils.AreEqual(a.w, 4); + } + + [TestCompiler] + public static void double4_scalar_constructor() + { + double4 a = new double4(17.0); + TestUtils.AreEqual(a.x, 17.0); + TestUtils.AreEqual(a.y, 17.0); + TestUtils.AreEqual(a.z, 17.0); + TestUtils.AreEqual(a.w, 17.0); + } + + [TestCompiler] + public static void double4_static_constructor() + { + double4 a = double4(1, 2, 3, 4); + TestUtils.AreEqual(a.x, 1); + TestUtils.AreEqual(a.y, 2); + TestUtils.AreEqual(a.z, 3); + TestUtils.AreEqual(a.w, 4); + } + + [TestCompiler] + public static void double4_static_scalar_constructor() + { + double4 a = double4(17.0); + TestUtils.AreEqual(a.x, 17.0); + TestUtils.AreEqual(a.y, 17.0); + TestUtils.AreEqual(a.z, 17.0); + TestUtils.AreEqual(a.w, 17.0); + } + + [TestCompiler] + public static void double4_operator_equal_wide_wide() + { + double4 a0 = double4(-135.18925172425304, -49.094127439471947, 169.12980778940482, 240.80529772527757); + double4 b0 = double4(-220.01464591734793, 66.980020792679852, 499.20158576369363, -371.113114291389); + bool4 r0 = bool4(false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + double4 a1 = double4(314.73919382446411, 442.39301916695808, 177.92444881141398, 335.53340283759564); + double4 b1 = double4(208.44865212610398, 390.80369133074009, -72.443806920407269, 362.97643273089841); + bool4 r1 = bool4(false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + double4 a2 = double4(168.1544516869609, 350.72955982327903, 367.17843668869625, 46.941470406456574); + double4 b2 = double4(194.6783255053117, 471.6448635867074, -404.04466719368691, -144.69675476136467); + bool4 r2 = bool4(false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + double4 a3 = double4(188.76415094582558, -97.211392209497944, -293.3210057193977, -234.82292353120766); + double4 b3 = double4(-494.44664334433463, -252.97038209297244, 234.41711746641306, 398.72397465199413); + bool4 r3 = bool4(false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void double4_operator_equal_wide_scalar() + { + double4 a0 = double4(65.671194345537174, 404.41550440546848, -269.7301577393572, 83.630607882342588); + double b0 = (-155.8157547245807); + bool4 r0 = bool4(false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + double4 a1 = double4(152.99450476141385, 314.67125597348024, 386.36515325417986, 290.04894007837811); + double b1 = (-155.86829836474186); + bool4 r1 = bool4(false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + double4 a2 = double4(-132.63519460178691, -69.683271678948415, -191.19075521789063, 186.84520086406042); + double b2 = (-65.667489797653388); + bool4 r2 = bool4(false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + double4 a3 = double4(-232.89569221851218, -49.701092981594172, -300.88189925853248, 333.39685193328046); + double b3 = (-319.14406481345372); + bool4 r3 = bool4(false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void double4_operator_equal_scalar_wide() + { + double a0 = (36.383921878591195); + double4 b0 = double4(-400.48919958644046, -71.286823544319191, 156.97811491646712, -225.23872791288363); + bool4 r0 = bool4(false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + double a1 = (499.14180993435059); + double4 b1 = double4(-211.97992358542047, 428.31192394174263, -489.50133322621758, -5.6915457275190988); + bool4 r1 = bool4(false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + double a2 = (-30.865948453017495); + double4 b2 = double4(-362.98307221149241, 184.50319322594589, -160.47062142215231, 316.66882315122928); + bool4 r2 = bool4(false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + double a3 = (390.36923879681581); + double4 b3 = double4(505.10510301268891, -294.64870967280524, 443.19909283295226, 96.559236333034619); + bool4 r3 = bool4(false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void double4_operator_not_equal_wide_wide() + { + double4 a0 = double4(279.99414576217259, -43.342018386042696, -465.72473523846116, 317.46655645848557); + double4 b0 = double4(-460.912120318465, -476.00904844515446, 468.13642070635058, -341.01254312182431); + bool4 r0 = bool4(true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + double4 a1 = double4(85.714987079480238, 360.89050572034466, 366.08152668833804, 154.5428384070018); + double4 b1 = double4(-62.658060341448561, -458.80166718866752, -457.73023316717251, -59.523265627922171); + bool4 r1 = bool4(true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + double4 a2 = double4(332.426219856565, 397.11323160543725, -431.3749584776233, 489.01079319837072); + double4 b2 = double4(3.024243117787023, 155.81276352508587, -19.839918384253963, -6.0169332055453992); + bool4 r2 = bool4(true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + double4 a3 = double4(398.43358320669904, -489.81794594685454, 171.4049242340983, -67.829682620162941); + double4 b3 = double4(-406.20792145571107, -102.42070083619126, -40.362921018322425, 452.67542645552919); + bool4 r3 = bool4(true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void double4_operator_not_equal_wide_scalar() + { + double4 a0 = double4(-155.44111282911206, -19.426602134214079, 174.63305409934048, 507.9207296352464); + double b0 = (-393.41354173860213); + bool4 r0 = bool4(true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + double4 a1 = double4(59.177048472304364, -58.923273352404692, -398.17684835855704, 492.20105361016522); + double b1 = (171.15146430356026); + bool4 r1 = bool4(true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + double4 a2 = double4(-165.24150879925185, -380.24326222960059, 501.8990516615562, -134.34545642433011); + double b2 = (270.34102333259818); + bool4 r2 = bool4(true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + double4 a3 = double4(458.40042302496749, 161.45995123752391, 261.51423442620512, -145.61239559278471); + double b3 = (46.771004937016869); + bool4 r3 = bool4(true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void double4_operator_not_equal_scalar_wide() + { + double a0 = (478.35313938481409); + double4 b0 = double4(459.55319592894671, 436.45324369727314, -488.71416806090349, 392.76794475725296); + bool4 r0 = bool4(true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + double a1 = (-266.73665369056937); + double4 b1 = double4(338.55788270503183, -338.10012475498957, -152.3145445102428, -452.82067868338); + bool4 r1 = bool4(true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + double a2 = (209.43931422449612); + double4 b2 = double4(50.107968592135194, 372.4343656843688, -488.0213141329686, 489.74075697816011); + bool4 r2 = bool4(true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + double a3 = (270.40006149485714); + double4 b3 = double4(-472.8467831429312, -286.85046090132113, -384.69186681541237, 443.42352959300558); + bool4 r3 = bool4(true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void double4_operator_less_wide_wide() + { + double4 a0 = double4(51.710243010758518, -313.85556450200062, 283.04767359562572, 235.02188621974642); + double4 b0 = double4(-261.83523881707117, -19.810742149041403, -149.25882084167506, 205.99822316225539); + bool4 r0 = bool4(false, true, false, false); + TestUtils.AreEqual(a0 < b0, r0); + + double4 a1 = double4(44.0783565249659, -207.25566659088042, 3.3829410091894943, -144.30134326978651); + double4 b1 = double4(-306.02438535635565, 102.12168006884008, 231.90633760760829, 179.49885305180158); + bool4 r1 = bool4(false, true, true, true); + TestUtils.AreEqual(a1 < b1, r1); + + double4 a2 = double4(-69.369597705718888, -135.66796762108243, -194.78736576567746, -33.473868147225062); + double4 b2 = double4(473.22488496882136, 15.891647107848712, 270.04990614114786, 490.91400240869916); + bool4 r2 = bool4(true, true, true, true); + TestUtils.AreEqual(a2 < b2, r2); + + double4 a3 = double4(-19.675088653189619, 423.23796697297973, -71.698315415390937, -501.88598870760109); + double4 b3 = double4(-185.73412164753961, 76.433086669274189, 97.75231246731812, 419.30080600236579); + bool4 r3 = bool4(false, false, true, true); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void double4_operator_less_wide_scalar() + { + double4 a0 = double4(-221.86977325280651, -121.54646807608498, -97.52392511140738, 479.88107775146193); + double b0 = (199.06751808853244); + bool4 r0 = bool4(true, true, true, false); + TestUtils.AreEqual(a0 < b0, r0); + + double4 a1 = double4(67.118990214131259, 282.96659601990439, 258.27909362422258, -111.41316061439608); + double b1 = (137.32880574899207); + bool4 r1 = bool4(true, false, false, true); + TestUtils.AreEqual(a1 < b1, r1); + + double4 a2 = double4(-288.08113278452356, -361.64292042406413, -68.088202269788951, 12.788020378345664); + double b2 = (82.665427008022334); + bool4 r2 = bool4(true, true, true, true); + TestUtils.AreEqual(a2 < b2, r2); + + double4 a3 = double4(-66.703050406045747, 25.727694284975428, 101.37087182950734, -330.442660724019); + double b3 = (-78.762971199472872); + bool4 r3 = bool4(false, false, false, true); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void double4_operator_less_scalar_wide() + { + double a0 = (-250.4849370692321); + double4 b0 = double4(-377.19654887597846, -505.14754104295167, 375.92672198634909, 110.17393474940855); + bool4 r0 = bool4(false, false, true, true); + TestUtils.AreEqual(a0 < b0, r0); + + double a1 = (-118.09757452742082); + double4 b1 = double4(-40.45089079833167, -299.74430932651478, 31.437125935888389, -458.904539560389); + bool4 r1 = bool4(true, false, true, false); + TestUtils.AreEqual(a1 < b1, r1); + + double a2 = (13.684679276163024); + double4 b2 = double4(-458.50690839183841, 248.27646624682302, 389.23142999654237, 488.74553679337055); + bool4 r2 = bool4(false, true, true, true); + TestUtils.AreEqual(a2 < b2, r2); + + double a3 = (-221.63786731550368); + double4 b3 = double4(-424.26720329013989, 249.05904948388184, -22.136127720650336, -442.24773928255206); + bool4 r3 = bool4(false, true, true, false); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void double4_operator_greater_wide_wide() + { + double4 a0 = double4(-229.29066501804192, 505.536608216137, -73.80706862071861, 100.29203777215071); + double4 b0 = double4(-445.84502407808088, -420.03529210576568, 299.02440108872224, -13.880978829171966); + bool4 r0 = bool4(true, true, false, true); + TestUtils.AreEqual(a0 > b0, r0); + + double4 a1 = double4(-419.21478124112582, -159.55974753180504, -396.7703608929973, 127.03739482119556); + double4 b1 = double4(151.56173593903043, -163.5094302461992, -391.09603733154762, 479.2837710228207); + bool4 r1 = bool4(false, true, false, false); + TestUtils.AreEqual(a1 > b1, r1); + + double4 a2 = double4(489.13989733585151, 51.91890885863404, 155.38475544535777, -135.63165027258526); + double4 b2 = double4(-77.674873149802409, -46.5841996886694, -415.37701888353422, 71.466978344818131); + bool4 r2 = bool4(true, true, true, false); + TestUtils.AreEqual(a2 > b2, r2); + + double4 a3 = double4(-425.97813554572787, -228.430505143679, 383.03834909155887, 136.53358298937496); + double4 b3 = double4(-206.06102643071722, 360.83628218287424, 236.96878658838978, 14.550342328171382); + bool4 r3 = bool4(false, false, true, true); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void double4_operator_greater_wide_scalar() + { + double4 a0 = double4(11.156317000815761, -411.02322382993214, 385.88556188432756, -485.10304831206008); + double b0 = (-302.81693877969724); + bool4 r0 = bool4(true, false, true, false); + TestUtils.AreEqual(a0 > b0, r0); + + double4 a1 = double4(-491.18003033622171, 173.57509740329124, 69.269281181166548, 501.30683183172107); + double b1 = (405.17534632476759); + bool4 r1 = bool4(false, false, false, true); + TestUtils.AreEqual(a1 > b1, r1); + + double4 a2 = double4(-367.027771405423, -489.09058998948456, -172.51816066192379, -18.149639853346002); + double b2 = (-86.124509613087639); + bool4 r2 = bool4(false, false, false, true); + TestUtils.AreEqual(a2 > b2, r2); + + double4 a3 = double4(-236.41493498367021, -27.239137900638923, 471.77934072528933, 240.16453253485474); + double b3 = (-238.8945134798505); + bool4 r3 = bool4(true, true, true, true); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void double4_operator_greater_scalar_wide() + { + double a0 = (453.54610201974685); + double4 b0 = double4(-226.20441423459187, -423.46500487973213, 409.40550227156166, 453.87706277048073); + bool4 r0 = bool4(true, true, true, false); + TestUtils.AreEqual(a0 > b0, r0); + + double a1 = (87.475727837288673); + double4 b1 = double4(113.79560308987072, 176.40926154721956, -140.44002944810319, -182.48286804113673); + bool4 r1 = bool4(false, false, true, true); + TestUtils.AreEqual(a1 > b1, r1); + + double a2 = (-158.29329188088576); + double4 b2 = double4(-162.68531830733889, -193.328676075362, 230.18129955519987, -102.58784227379965); + bool4 r2 = bool4(true, true, false, false); + TestUtils.AreEqual(a2 > b2, r2); + + double a3 = (392.5205878655056); + double4 b3 = double4(-177.47865947404813, -10.295010809924008, -24.048938524000789, 172.44867499752377); + bool4 r3 = bool4(true, true, true, true); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void double4_operator_less_equal_wide_wide() + { + double4 a0 = double4(240.09053169940159, 462.2131528622532, 293.08251561461134, -427.87067361728782); + double4 b0 = double4(-81.203838624620744, 493.63743876555816, -411.47211451617636, 99.164449499530974); + bool4 r0 = bool4(false, true, false, true); + TestUtils.AreEqual(a0 <= b0, r0); + + double4 a1 = double4(-405.5227226715175, 204.59190211286386, 294.670105832941, -327.56444445604666); + double4 b1 = double4(-295.66769875943089, -480.46254824123463, 74.414040361723892, 260.916124226952); + bool4 r1 = bool4(true, false, false, true); + TestUtils.AreEqual(a1 <= b1, r1); + + double4 a2 = double4(-456.12326667091031, 282.3012408140587, 421.8811549720732, -311.71284809322697); + double4 b2 = double4(306.17329730939741, 139.56480438055689, -505.75247955031341, -489.62680958659706); + bool4 r2 = bool4(true, false, false, false); + TestUtils.AreEqual(a2 <= b2, r2); + + double4 a3 = double4(84.5674827492644, 447.24461647832982, -154.49435217422172, -424.36474986763892); + double4 b3 = double4(-280.03260267899958, 303.15991058161478, 511.19015788994272, -104.65973358259527); + bool4 r3 = bool4(false, false, true, true); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void double4_operator_less_equal_wide_scalar() + { + double4 a0 = double4(309.1924356469849, 69.673792633076118, -101.72418622939114, -315.97240629604664); + double b0 = (292.92427148154206); + bool4 r0 = bool4(false, true, true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + double4 a1 = double4(-346.01106731314724, -410.87006945669191, -483.90265320423185, 183.82114538169515); + double b1 = (424.15386577330241); + bool4 r1 = bool4(true, true, true, true); + TestUtils.AreEqual(a1 <= b1, r1); + + double4 a2 = double4(320.44249287268258, -386.801748694294, -182.9388249772316, 349.25012962392077); + double b2 = (-257.87003791419329); + bool4 r2 = bool4(false, true, false, false); + TestUtils.AreEqual(a2 <= b2, r2); + + double4 a3 = double4(485.31159304329731, 259.15151822713744, 450.13007828692446, -128.5255282523695); + double b3 = (373.56911652794531); + bool4 r3 = bool4(false, true, false, true); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void double4_operator_less_equal_scalar_wide() + { + double a0 = (-511.15238141974078); + double4 b0 = double4(51.159012579898786, 340.44369022010062, 312.81429519914752, 354.19252626699983); + bool4 r0 = bool4(true, true, true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + double a1 = (136.39671165142056); + double4 b1 = double4(-94.767871185563422, 288.544332877055, 304.04282369466625, -148.61806089646092); + bool4 r1 = bool4(false, true, true, false); + TestUtils.AreEqual(a1 <= b1, r1); + + double a2 = (-506.30010127755816); + double4 b2 = double4(27.581254256694251, 48.471146844546865, 104.88351326104419, -488.6858386884843); + bool4 r2 = bool4(true, true, true, true); + TestUtils.AreEqual(a2 <= b2, r2); + + double a3 = (-480.43516968210935); + double4 b3 = double4(421.9366516647566, 239.72105299668431, -101.01844673092404, -283.95147551407638); + bool4 r3 = bool4(true, true, true, true); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void double4_operator_greater_equal_wide_wide() + { + double4 a0 = double4(-386.59181302906563, -157.12078221008215, 391.01526445477054, -511.88687133783793); + double4 b0 = double4(153.44301350109424, 49.892483019219981, 78.025787628267835, 138.81373292711271); + bool4 r0 = bool4(false, false, true, false); + TestUtils.AreEqual(a0 >= b0, r0); + + double4 a1 = double4(-5.4220387960886569, 287.64527501149348, -122.53520184500849, 7.4814426933794493); + double4 b1 = double4(-225.51057802211056, -339.35611335344436, -373.302078182484, 364.9358934671319); + bool4 r1 = bool4(true, true, true, false); + TestUtils.AreEqual(a1 >= b1, r1); + + double4 a2 = double4(152.94642765491574, 48.986223482054811, 57.338148859021317, 300.46493138953338); + double4 b2 = double4(-322.71539870030961, 125.47818165900105, -25.776589167200314, 297.51890792395864); + bool4 r2 = bool4(true, false, true, true); + TestUtils.AreEqual(a2 >= b2, r2); + + double4 a3 = double4(349.25705139211243, 85.749700824613569, -230.95330654408468, 418.7112159294594); + double4 b3 = double4(73.222349439385539, 462.78374288174496, 393.19134515951919, -95.001432224643168); + bool4 r3 = bool4(true, false, false, true); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void double4_operator_greater_equal_wide_scalar() + { + double4 a0 = double4(495.457423679278, -14.345115906719627, -463.47478053694346, 217.51749215718246); + double b0 = (189.20512804258851); + bool4 r0 = bool4(true, false, false, true); + TestUtils.AreEqual(a0 >= b0, r0); + + double4 a1 = double4(-246.86571776441565, 53.815095211293169, -123.33294373533357, -221.50546441856096); + double b1 = (-377.65869706573835); + bool4 r1 = bool4(true, true, true, true); + TestUtils.AreEqual(a1 >= b1, r1); + + double4 a2 = double4(252.99433410027734, -395.36331028275345, 164.77259667439978, -287.00733889593153); + double b2 = (-116.44038277326172); + bool4 r2 = bool4(true, false, true, false); + TestUtils.AreEqual(a2 >= b2, r2); + + double4 a3 = double4(355.83704559683667, 273.01225555735277, -418.14240308205706, 249.38409697701411); + double b3 = (184.19556316369938); + bool4 r3 = bool4(true, true, false, true); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void double4_operator_greater_equal_scalar_wide() + { + double a0 = (215.43534169692327); + double4 b0 = double4(204.80295310020585, -101.10404853760451, -122.05503827056617, -70.456147941973143); + bool4 r0 = bool4(true, true, true, true); + TestUtils.AreEqual(a0 >= b0, r0); + + double a1 = (-239.62025677395064); + double4 b1 = double4(-185.99272426683115, -455.61258027312, 276.66581476697036, 79.39918831707871); + bool4 r1 = bool4(false, true, false, false); + TestUtils.AreEqual(a1 >= b1, r1); + + double a2 = (416.42054791768112); + double4 b2 = double4(379.27350801009379, -439.51472612820322, 67.141009600433108, -74.560638224035813); + bool4 r2 = bool4(true, true, true, true); + TestUtils.AreEqual(a2 >= b2, r2); + + double a3 = (-367.25635474140586); + double4 b3 = double4(494.950765601802, -61.235545425319856, -429.17024846988278, -213.82468924942646); + bool4 r3 = bool4(false, false, true, false); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void double4_operator_add_wide_wide() + { + double4 a0 = double4(465.14837644302679, 278.91072548502621, -277.52992237616792, -65.197214395365336); + double4 b0 = double4(483.99436186440028, -204.07667193379098, -365.67356007437854, -509.92086076639634); + double4 r0 = double4(949.14273830742707, 74.834053551235229, -643.20348245054652, -575.11807516176168); + TestUtils.AreEqual(a0 + b0, r0); + + double4 a1 = double4(-473.32437561141529, -4.6955420992782138, -470.53676698661258, -109.95011453980118); + double4 b1 = double4(-270.69751108377125, 486.76397846954126, 267.49177587567442, 251.6425212601398); + double4 r1 = double4(-744.02188669518659, 482.06843637026304, -203.04499111093816, 141.69240672033862); + TestUtils.AreEqual(a1 + b1, r1); + + double4 a2 = double4(-178.70145782209067, -420.03378339299644, 290.71109236903078, -446.5296368294068); + double4 b2 = double4(244.4951094335388, -78.675763882079991, 352.20551340291536, 82.779185095233515); + double4 r2 = double4(65.793651611448126, -498.70954727507643, 642.91660577194614, -363.75045173417328); + TestUtils.AreEqual(a2 + b2, r2); + + double4 a3 = double4(491.066454400805, -261.11730039358014, -298.40688409395835, 502.42861890347149); + double4 b3 = double4(462.54732606492348, -405.492017696375, -428.4983238785054, -41.872599859662614); + double4 r3 = double4(953.6137804657285, -666.6093180899552, -726.90520797246381, 460.55601904380887); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void double4_operator_add_wide_scalar() + { + double4 a0 = double4(459.89829728561369, -447.66336104258119, -94.438627525436971, 126.42986279652916); + double b0 = (500.99725913489112); + double4 r0 = double4(960.89555642050482, 53.333898092309937, 406.55863160945415, 627.42712193142029); + TestUtils.AreEqual(a0 + b0, r0); + + double4 a1 = double4(-36.254356162741033, -2.7912590516690443, -478.41478489265535, 443.11525246273504); + double b1 = (-349.64130060264904); + double4 r1 = double4(-385.89565676539007, -352.43255965431808, -828.05608549530439, 93.473951860086); + TestUtils.AreEqual(a1 + b1, r1); + + double4 a2 = double4(268.092225914864, -471.25607584009697, -2.6649749291431704, 78.985822952811532); + double b2 = (41.32102133767728); + double4 r2 = double4(309.41324725254128, -429.93505450241969, 38.65604640853411, 120.30684429048881); + TestUtils.AreEqual(a2 + b2, r2); + + double4 a3 = double4(202.14799151297098, 10.345855002452595, -151.24445898423181, 355.23276703210206); + double b3 = (311.7254551908585); + double4 r3 = double4(513.87344670382947, 322.07131019331109, 160.48099620662668, 666.95822222296056); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void double4_operator_add_scalar_wide() + { + double a0 = (-325.51276484388518); + double4 b0 = double4(-264.08813178915909, -106.00925998855814, -355.44729320865463, -447.33029362528134); + double4 r0 = double4(-589.60089663304427, -431.52202483244332, -680.96005805253981, -772.84305846916652); + TestUtils.AreEqual(a0 + b0, r0); + + double a1 = (-158.70021040677102); + double4 b1 = double4(-199.48369154682553, 180.31809123806568, 337.57936898692481, -37.05501486596421); + double4 r1 = double4(-358.18390195359655, 21.617880831294656, 178.87915858015378, -195.75522527273523); + TestUtils.AreEqual(a1 + b1, r1); + + double a2 = (230.80498014707348); + double4 b2 = double4(-140.17433339924287, 18.02419591789328, -138.61435825126915, 26.904163611542458); + double4 r2 = double4(90.63064674783061, 248.82917606496676, 92.190621895804327, 257.70914375861594); + TestUtils.AreEqual(a2 + b2, r2); + + double a3 = (-374.53758233345); + double4 b3 = double4(154.4676006559597, 268.3838204203098, -190.96302255939833, 188.61725362977813); + double4 r3 = double4(-220.06998167749032, -106.15376191314022, -565.50060489284829, -185.92032870367188); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void double4_operator_sub_wide_wide() + { + double4 a0 = double4(133.37101680290471, -131.8321183341705, -197.29314407952739, -485.286571013409); + double4 b0 = double4(123.46028739002543, 359.56010048443454, -48.24847819667707, 478.97904680621764); + double4 r0 = double4(9.9107294128792773, -491.39221881860504, -149.04466588285032, -964.26561781962664); + TestUtils.AreEqual(a0 - b0, r0); + + double4 a1 = double4(-337.55033103448818, 471.66710470228782, 146.5066197600712, -130.58504372955537); + double4 b1 = double4(207.15832886805686, 142.36730462981723, -125.60551005490379, -65.299004823574307); + double4 r1 = double4(-544.708659902545, 329.29980007247059, 272.112129814975, -65.286038905981059); + TestUtils.AreEqual(a1 - b1, r1); + + double4 a2 = double4(110.77707367333448, -235.54160486699158, 78.879356659427, -347.68616811730254); + double4 b2 = double4(-477.876434787119, 164.50000031501986, 428.00958915614035, 72.6278169493321); + double4 r2 = double4(588.65350846045351, -400.04160518201144, -349.13023249671335, -420.31398506663464); + TestUtils.AreEqual(a2 - b2, r2); + + double4 a3 = double4(-470.82054565419469, -11.459293609233271, -167.94791730118351, 330.67676917215658); + double4 b3 = double4(-446.880505531505, 432.09146114443035, -225.55465637219822, -112.45196705332586); + double4 r3 = double4(-23.940040122689709, -443.55075475366363, 57.606739071014715, 443.12873622548244); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void double4_operator_sub_wide_scalar() + { + double4 a0 = double4(48.936717294592768, 410.45158953706346, -364.44171612544062, 163.98060353285666); + double b0 = (-291.59041442144212); + double4 r0 = double4(340.52713171603489, 702.04200395850557, -72.8513017039985, 455.57101795429878); + TestUtils.AreEqual(a0 - b0, r0); + + double4 a1 = double4(-460.06732318367222, 204.35834441164434, 180.26971420099483, -377.92569344952972); + double b1 = (110.91942339340198); + double4 r1 = double4(-570.9867465770742, 93.438921018242354, 69.350290807592842, -488.8451168429317); + TestUtils.AreEqual(a1 - b1, r1); + + double4 a2 = double4(-470.26204297983185, 461.50756499800252, -246.28726660753006, 21.605312595891405); + double b2 = (400.53491968686455); + double4 r2 = double4(-870.79696266669634, 60.972645311137967, -646.82218629439467, -378.92960709097315); + TestUtils.AreEqual(a2 - b2, r2); + + double4 a3 = double4(246.35072171238755, -122.71842413894757, -122.93872099879138, 360.15095417581074); + double b3 = (-121.42736178330489); + double4 r3 = double4(367.77808349569244, -1.29106235564268, -1.5113592154864932, 481.57831595911563); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void double4_operator_sub_scalar_wide() + { + double a0 = (294.58645905861); + double4 b0 = double4(452.35251757705237, 256.98980891750648, -275.159888634067, -89.027518075437968); + double4 r0 = double4(-157.76605851844238, 37.59665014110351, 569.746347692677, 383.61397713404796); + TestUtils.AreEqual(a0 - b0, r0); + + double a1 = (488.22838829840919); + double4 b1 = double4(-333.21728030462623, -64.232989102710519, -66.041730196234653, 341.20492831859963); + double4 r1 = double4(821.44566860303541, 552.46137740111976, 554.27011849464384, 147.02345997980956); + TestUtils.AreEqual(a1 - b1, r1); + + double a2 = (-385.775056303374); + double4 b2 = double4(75.394746577085357, 354.94371645289641, 169.13141520746581, 88.216608326982964); + double4 r2 = double4(-461.16980288045937, -740.71877275627048, -554.90647151083976, -473.991664630357); + TestUtils.AreEqual(a2 - b2, r2); + + double a3 = (1.7350065716240124); + double4 b3 = double4(122.53803997977548, -264.94502771317264, -50.837180399725753, -347.65032283759228); + double4 r3 = double4(-120.80303340815146, 266.68003428479665, 52.572186971349765, 349.3853294092163); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void double4_operator_mul_wide_wide() + { + double4 a0 = double4(-394.78053898121254, -412.37219519744264, -25.874570143350638, -241.04595886964626); + double4 b0 = double4(-149.76397831261346, -345.04538671348496, -284.33404721148963, 267.97923648915219); + double4 r0 = double4(59123.904078224172, 142287.1235617903, 7357.0212487164608, -64595.312016683383); + TestUtils.AreEqual(a0 * b0, r0); + + double4 a1 = double4(-93.675987525692221, 244.15999257013198, 494.68846606402121, 53.537962700025105); + double4 b1 = double4(-326.64849558782225, -150.68967754705329, 207.73243794577775, 366.19289248352538); + double4 r1 = double4(30599.120397970968, -36792.390550284115, 102762.84107913627, 19605.221418797286); + TestUtils.AreEqual(a1 * b1, r1); + + double4 a2 = double4(-239.49641167349017, 236.67584644848284, -211.85620818466703, -216.65482030466887); + double4 b2 = double4(358.88076202891807, 214.85359368792433, 253.42280900358355, -307.71382751488773); + double4 r2 = double4(-85950.654724573629, 50850.6561485879, -53689.195383006307, 66667.684005499876); + TestUtils.AreEqual(a2 * b2, r2); + + double4 a3 = double4(467.95832870339893, -178.02191146557311, -386.3942503344241, -422.43540521265726); + double4 b3 = double4(184.4711149597872, 426.43644185850235, -144.28142625851621, 459.47961518703016); + double4 r3 = double4(86324.794650634591, -75915.030498228327, 55749.513536340863, -194100.45742848891); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void double4_operator_mul_wide_scalar() + { + double4 a0 = double4(328.20302191758674, -290.10672272839895, 236.99572454998065, 120.48136692889102); + double b0 = (192.21119055161773); + double4 r0 = double4(63084.293585418032, -55761.758562653624, 45553.230371395039, 23157.866976688449); + TestUtils.AreEqual(a0 * b0, r0); + + double4 a1 = double4(357.90315811610924, -477.31047104173825, -438.272912467957, -46.729179165665585); + double b1 = (134.86723214707672); + double4 r1 = double4(48269.408311817213, -64373.542104216656, -59108.654629591387, -6302.235054578161); + TestUtils.AreEqual(a1 * b1, r1); + + double4 a2 = double4(-238.40500103608008, -48.83483722099794, 355.30832998608628, 119.35660391643489); + double b2 = (422.08249374017237); + double4 r2 = double4(-100626.57735743705, -20612.3298756342, 149969.42596718337, 50378.333025406864); + TestUtils.AreEqual(a2 * b2, r2); + + double4 a3 = double4(-196.995807977857, -325.55215683837991, 53.937323833786536, -87.4509838034636); + double b3 = (98.2360046367329); + double4 r3 = double4(-19352.081105929705, -31980.943188673486, 5298.5871942288177, -8590.8352504039049); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void double4_operator_mul_scalar_wide() + { + double a0 = (-464.534700371574); + double4 b0 = double4(329.36093846399376, -198.68342671109525, 184.07942518223047, 256.01618754864489); + double4 r0 = double4(-152999.58486347177, 92295.346096036214, -85511.280621599, -118928.40297318244); + TestUtils.AreEqual(a0 * b0, r0); + + double a1 = (266.22629297255833); + double4 b1 = double4(-97.894749448585685, 159.74810583877752, -351.82222263506719, 491.80157660497423); + double4 r1 = double4(-26062.156247174364, 42529.146026845636, -93664.326117500037, 130930.51061760196); + TestUtils.AreEqual(a1 * b1, r1); + + double a2 = (49.902031206480274); + double4 b2 = double4(424.46256871915546, 160.11807616060514, -395.99208492599058, 125.20168858636248); + double4 r2 = double4(21181.544350206073, 7990.2172332881028, -19760.809379495968, 6247.8185709406853); + TestUtils.AreEqual(a2 * b2, r2); + + double a3 = (-265.01581991138676); + double4 b3 = double4(314.65609779705107, -292.71202029507236, -37.729878681586058, 165.3622206027444); + double4 r3 = double4(-83388.843747802981, 77573.316056417083, 9999.0147339576815, -43823.604475403918); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void double4_operator_div_wide_wide() + { + double4 a0 = double4(246.26574933075619, -269.85612953354428, -451.61952588130697, -7.38850236283082); + double4 b0 = double4(172.11981423763552, -77.141104972521362, -325.8353723612779, -450.60868117334724); + double4 r0 = double4(1.4307809383918566, 3.4982144685336105, 1.3860359070548143, 0.016396715535066435); + TestUtils.AreEqual(a0 / b0, r0); + + double4 a1 = double4(-308.20558681534862, -373.394808704683, 360.41863482092447, 25.80972458133931); + double4 b1 = double4(-261.26215398556656, -122.44949847201326, -93.210781379235357, -442.00522705633438); + double4 r1 = double4(1.1796794220427942, 3.0493780159501847, -3.8667054335113131, -0.05839235149599218); + TestUtils.AreEqual(a1 / b1, r1); + + double4 a2 = double4(-274.050461181463, 127.53858977534742, -447.6717600522897, -137.4586017771897); + double4 b2 = double4(484.36271380091216, -390.78178686219348, 402.02531714086672, 316.65072193585831); + double4 r2 = double4(-0.56579594872388561, -0.32636779415802974, -1.1135412148569459, -0.43410165287743668); + TestUtils.AreEqual(a2 / b2, r2); + + double4 a3 = double4(-136.13317424437645, 12.43763423545181, 228.51298319013461, 356.9723681681661); + double4 b3 = double4(397.15440744774151, -303.26218643005109, -118.59124451437555, -81.650312223308845); + double4 r3 = double4(-0.3427714050039572, -0.041012809351094658, -1.9268959030313104, -4.37196574572633); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void double4_operator_div_wide_scalar() + { + double4 a0 = double4(-244.51745116175965, 69.112274917360537, -333.02311888943575, 257.39682519500923); + double b0 = (-60.024377612408443); + double4 r0 = double4(4.0736357608014941, -1.1514034408425655, 5.5481311449798705, -4.2882048166676752); + TestUtils.AreEqual(a0 / b0, r0); + + double4 a1 = double4(403.24561257066466, 131.52659160062979, -261.88639200007844, -348.92380516087815); + double b1 = (154.34436066185322); + double4 r1 = double4(2.6126358672353378, 0.85216324740743876, -1.6967668327956258, -2.2606838608462096); + TestUtils.AreEqual(a1 / b1, r1); + + double4 a2 = double4(-275.53868187383688, 287.64239968342815, 504.37224626185946, 491.78708600056689); + double b2 = (210.55792174607416); + double4 r2 = double4(-1.308612279171939, 1.3660963087882074, 2.39540855114497, 2.3356380131527215); + TestUtils.AreEqual(a2 / b2, r2); + + double4 a3 = double4(-26.63160015392657, 272.89512098622276, 178.09617313095191, -460.87559030059521); + double b3 = (-253.23667275776933); + double4 r3 = double4(0.10516486361910435, -1.0776287573769281, -0.70327954948810989, 1.8199401582781043); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void double4_operator_div_scalar_wide() + { + double a0 = (41.737658758525527); + double4 b0 = double4(-422.676129776368, 248.12963235011773, 449.39137741988122, 245.85813796047967); + double4 r0 = double4(-0.098746193168297289, 0.1682090863683405, 0.092875967042706856, 0.16976317767945767); + TestUtils.AreEqual(a0 / b0, r0); + + double a1 = (-326.62061253498337); + double4 b1 = double4(163.71510489457989, 333.664472020075, 38.291076916405473, -472.97976062864984); + double4 r1 = double4(-1.9950548408181534, -0.97888939316060053, -8.5299406242357652, 0.69055938482624146); + TestUtils.AreEqual(a1 / b1, r1); + + double a2 = (192.23013958345643); + double4 b2 = double4(-200.29686960964318, -490.18150376257557, -211.10257468517057, -322.85234108700058); + double4 r2 = double4(-0.95972613030893628, -0.3921611446125986, -0.91060063985548412, -0.59541194261204144); + TestUtils.AreEqual(a2 / b2, r2); + + double a3 = (-137.98529035317961); + double4 b3 = double4(84.32973555677097, 355.06345550858578, 276.42724455354141, -382.9880213136729); + double4 r3 = double4(-1.6362590187453818, -0.38862149346102726, -0.49917398907636662, 0.36028617782843814); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void double4_operator_mod_wide_wide() + { + double4 a0 = double4(-442.30985924336585, 368.50046246522129, -1.0938966279355213, -364.67383473211612); + double4 b0 = double4(-43.245045443645211, -144.19587690392319, -62.640481739603217, -336.82826510855381); + double4 r0 = double4(-9.8594048069137443, 80.1087086573749, -1.0938966279355213, -27.845569623562312); + TestUtils.AreEqual(a0 % b0, r0); + + double4 a1 = double4(-197.34394487987458, -34.034902350062, -101.34858350704826, 208.31857142612273); + double4 b1 = double4(-154.6102545981343, -154.02935583611452, 487.0462093237071, -469.82909105244516); + double4 r1 = double4(-42.73369028174028, -34.034902350062, -101.34858350704826, 208.31857142612273); + TestUtils.AreEqual(a1 % b1, r1); + + double4 a2 = double4(-140.77031404374645, 183.446989383291, -463.36838100076113, 83.839106360375467); + double4 b2 = double4(-145.20377237405802, -203.38401780062543, -22.520082245823062, 224.6900237652892); + double4 r2 = double4(-140.77031404374645, 183.446989383291, -12.966736084299896, 83.839106360375467); + TestUtils.AreEqual(a2 % b2, r2); + + double4 a3 = double4(-64.714058190916717, 295.06681050689281, 212.257051805154, 349.62829916068745); + double4 b3 = double4(-435.62674614210925, 12.095571285158144, 40.378765363422531, 345.78484813579587); + double4 r3 = double4(-64.714058190916717, 4.773099663097355, 10.363224988041338, 3.8434510248915785); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void double4_operator_mod_wide_scalar() + { + double4 a0 = double4(-433.41699548876704, -5.5141427542614565, 393.39439958771425, 299.41153277988155); + double b0 = (-90.499235433758827); + double4 r0 = double4(-71.420053753731736, -5.5141427542614565, 31.39745785267894, 27.913826478605074); + TestUtils.AreEqual(a0 % b0, r0); + + double4 a1 = double4(-120.80601626299602, -450.80766245853511, 186.09479698263794, -84.473635951277629); + double b1 = (-502.939041133476); + double4 r1 = double4(-120.80601626299602, -450.80766245853511, 186.09479698263794, -84.473635951277629); + TestUtils.AreEqual(a1 % b1, r1); + + double4 a2 = double4(-318.78148356023314, -54.6001856581309, -172.33886607565864, -429.71466728193434); + double b2 = (433.45469041981482); + double4 r2 = double4(-318.78148356023314, -54.6001856581309, -172.33886607565864, -429.71466728193434); + TestUtils.AreEqual(a2 % b2, r2); + + double4 a3 = double4(222.36186109406958, 254.51082885196, -433.09369703433185, -203.08261284748215); + double b3 = (5.796394112425105); + double4 r3 = double4(2.09888482191559, 5.2658820176804966, -4.16053271487408, -0.20881891260347629); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void double4_operator_mod_scalar_wide() + { + double a0 = (-396.4224028049141); + double4 b0 = double4(-159.14024384279747, 230.17333399046834, 14.779358632294134, -303.15649738123477); + double4 r0 = double4(-78.141915119319151, -166.24906881444576, -12.159078365266623, -93.265905423679328); + TestUtils.AreEqual(a0 % b0, r0); + + double a1 = (399.63502020371845); + double4 b1 = double4(206.69470534412881, 397.04482263934096, -393.89064735634747, -372.06709426085797); + double4 r1 = double4(192.94031485958965, 2.5901975643774904, 5.7443728473709825, 27.567925942860484); + TestUtils.AreEqual(a1 % b1, r1); + + double a2 = (201.01229796233224); + double4 b2 = double4(-95.5668547598491, -258.95146882671463, 106.98357563232241, 469.3235559264773); + double4 r2 = double4(9.8785884426340544, 201.01229796233224, 94.028722330009828, 201.01229796233224); + TestUtils.AreEqual(a2 % b2, r2); + + double a3 = (-34.808985011097491); + double4 b3 = double4(184.83653434777466, 374.79425376224992, -131.87271911086174, -120.09286003936683); + double4 r3 = double4(-34.808985011097491, -34.808985011097491, -34.808985011097491, -34.808985011097491); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void double4_operator_plus() + { + double4 a0 = double4(271.6708086802023, -79.080240524876956, -330.98506203805334, 31.824682965793045); + double4 r0 = double4(271.6708086802023, -79.080240524876956, -330.98506203805334, 31.824682965793045); + TestUtils.AreEqual(+a0, r0); + + double4 a1 = double4(315.44952860262686, 190.32466015141677, -350.30858270745193, -320.51845875406565); + double4 r1 = double4(315.44952860262686, 190.32466015141677, -350.30858270745193, -320.51845875406565); + TestUtils.AreEqual(+a1, r1); + + double4 a2 = double4(102.0544069288552, -428.77622075973835, 377.23016208095021, 234.77393042052813); + double4 r2 = double4(102.0544069288552, -428.77622075973835, 377.23016208095021, 234.77393042052813); + TestUtils.AreEqual(+a2, r2); + + double4 a3 = double4(34.283600107898792, 465.35593555185756, 309.59316530339106, -316.93713655925222); + double4 r3 = double4(34.283600107898792, 465.35593555185756, 309.59316530339106, -316.93713655925222); + TestUtils.AreEqual(+a3, r3); + } + + [TestCompiler] + public static void double4_operator_neg() + { + double4 a0 = double4(420.22718854445372, -196.25749811728366, -335.42683068636188, 509.04366969924592); + double4 r0 = double4(-420.22718854445372, 196.25749811728366, 335.42683068636188, -509.04366969924592); + TestUtils.AreEqual(-a0, r0); + + double4 a1 = double4(-33.014395013923945, -495.8379526063045, -270.85946787095605, 19.686896571743773); + double4 r1 = double4(33.014395013923945, 495.8379526063045, 270.85946787095605, -19.686896571743773); + TestUtils.AreEqual(-a1, r1); + + double4 a2 = double4(268.23670662019254, 223.38126312167446, -410.39206070936848, -395.68154186554324); + double4 r2 = double4(-268.23670662019254, -223.38126312167446, 410.39206070936848, 395.68154186554324); + TestUtils.AreEqual(-a2, r2); + + double4 a3 = double4(-349.14948885010062, -238.21960913307015, 292.54351224216794, 469.29257867731735); + double4 r3 = double4(349.14948885010062, 238.21960913307015, -292.54351224216794, -469.29257867731735); + TestUtils.AreEqual(-a3, r3); + } + + [TestCompiler] + public static void double4_operator_prefix_inc() + { + double4 a0 = double4(-99.79557113526181, 458.74185082816609, 96.179026886904126, -48.552469514567633); + double4 r0 = double4(-98.79557113526181, 459.74185082816609, 97.179026886904126, -47.552469514567633); + TestUtils.AreEqual(++a0, r0); + + double4 a1 = double4(-315.728967098393, -323.61485853959567, -456.89028832730384, -76.507656371457358); + double4 r1 = double4(-314.728967098393, -322.61485853959567, -455.89028832730384, -75.507656371457358); + TestUtils.AreEqual(++a1, r1); + + double4 a2 = double4(-305.58477344437722, 148.67930967578627, 363.2849182390072, -115.5592263283018); + double4 r2 = double4(-304.58477344437722, 149.67930967578627, 364.2849182390072, -114.5592263283018); + TestUtils.AreEqual(++a2, r2); + + double4 a3 = double4(-326.87781992874937, 339.8765849265626, -38.410431164507941, -153.3736775635619); + double4 r3 = double4(-325.87781992874937, 340.8765849265626, -37.410431164507941, -152.3736775635619); + TestUtils.AreEqual(++a3, r3); + } + + [TestCompiler] + public static void double4_operator_postfix_inc() + { + double4 a0 = double4(322.94356623429042, 472.05246542024076, 203.48761925636211, -49.854570650427888); + double4 r0 = double4(322.94356623429042, 472.05246542024076, 203.48761925636211, -49.854570650427888); + TestUtils.AreEqual(a0++, r0); + + double4 a1 = double4(-31.420532002775246, 271.45466840986842, 55.736877228942149, 153.75031645305); + double4 r1 = double4(-31.420532002775246, 271.45466840986842, 55.736877228942149, 153.75031645305); + TestUtils.AreEqual(a1++, r1); + + double4 a2 = double4(-174.17301925186672, 215.11022744658874, 159.86103184514729, -333.05045262586816); + double4 r2 = double4(-174.17301925186672, 215.11022744658874, 159.86103184514729, -333.05045262586816); + TestUtils.AreEqual(a2++, r2); + + double4 a3 = double4(241.46487509527469, -170.10464366250886, -270.65246380057766, -162.86024792625579); + double4 r3 = double4(241.46487509527469, -170.10464366250886, -270.65246380057766, -162.86024792625579); + TestUtils.AreEqual(a3++, r3); + } + + [TestCompiler] + public static void double4_operator_prefix_dec() + { + double4 a0 = double4(-416.20121712992022, -96.637880131899351, -50.145671629414721, -207.31644759295341); + double4 r0 = double4(-417.20121712992022, -97.637880131899351, -51.145671629414721, -208.31644759295341); + TestUtils.AreEqual(--a0, r0); + + double4 a1 = double4(439.47906156977592, 337.96895734312432, 246.08898293510492, 171.96452935597142); + double4 r1 = double4(438.47906156977592, 336.96895734312432, 245.08898293510492, 170.96452935597142); + TestUtils.AreEqual(--a1, r1); + + double4 a2 = double4(-227.44280134301761, 326.50782338087811, 400.720900006928, -478.03137253133178); + double4 r2 = double4(-228.44280134301761, 325.50782338087811, 399.720900006928, -479.03137253133178); + TestUtils.AreEqual(--a2, r2); + + double4 a3 = double4(-326.45297852459038, 112.79684668071422, -341.97629300783217, -503.27416181158003); + double4 r3 = double4(-327.45297852459038, 111.79684668071422, -342.97629300783217, -504.27416181158003); + TestUtils.AreEqual(--a3, r3); + } + + [TestCompiler] + public static void double4_operator_postfix_dec() + { + double4 a0 = double4(-376.59242719066907, 16.969734438215255, -0.25066399585949739, -202.32328734282555); + double4 r0 = double4(-376.59242719066907, 16.969734438215255, -0.25066399585949739, -202.32328734282555); + TestUtils.AreEqual(a0--, r0); + + double4 a1 = double4(409.55752940175944, -281.11170376516492, -262.062590959511, -182.40572866350681); + double4 r1 = double4(409.55752940175944, -281.11170376516492, -262.062590959511, -182.40572866350681); + TestUtils.AreEqual(a1--, r1); + + double4 a2 = double4(450.12809559801974, -332.15495768755443, -261.00890052551819, 205.46112570793423); + double4 r2 = double4(450.12809559801974, -332.15495768755443, -261.00890052551819, 205.46112570793423); + TestUtils.AreEqual(a2--, r2); + + double4 a3 = double4(-230.22777878038016, 378.64123433578811, 487.34482287212495, -192.17785772689518); + double4 r3 = double4(-230.22777878038016, 378.64123433578811, 487.34482287212495, -192.17785772689518); + TestUtils.AreEqual(a3--, r3); + } + + [TestCompiler] + public static void double4_shuffle_result_1() + { + double4 a = double4(0, 1, 2, 3); + double4 b = double4(4, 5, 6, 7); + + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftX), (0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftY), (1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftZ), (2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftW), (3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX), (4)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY), (5)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ), (6)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightW), (7)); + } + + [TestCompiler] + public static void double4_shuffle_result_2() + { + double4 a = double4(0, 1, 2, 3); + double4 b = double4(4, 5, 6, 7); + + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.RightZ), double2(5, 6)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ, ShuffleComponent.RightX), double2(6, 4)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftY, ShuffleComponent.RightX), double2(1, 4)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightW, ShuffleComponent.LeftW), double2(7, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightW, ShuffleComponent.LeftZ), double2(7, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftZ, ShuffleComponent.LeftW), double2(2, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.LeftW), double2(5, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightW, ShuffleComponent.LeftX), double2(7, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ, ShuffleComponent.RightW), double2(6, 7)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.LeftZ), double2(5, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ, ShuffleComponent.RightZ), double2(6, 6)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightW, ShuffleComponent.LeftX), double2(7, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.RightX), double2(5, 4)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightW, ShuffleComponent.RightY), double2(7, 5)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.LeftX), double2(4, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftY, ShuffleComponent.LeftW), double2(1, 3)); + } + + [TestCompiler] + public static void double4_shuffle_result_3() + { + double4 a = double4(0, 1, 2, 3); + double4 b = double4(4, 5, 6, 7); + + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftZ, ShuffleComponent.RightW, ShuffleComponent.RightY), double3(2, 7, 5)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ, ShuffleComponent.LeftX, ShuffleComponent.LeftW), double3(6, 0, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftZ, ShuffleComponent.RightW, ShuffleComponent.RightX), double3(2, 7, 4)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.LeftX, ShuffleComponent.LeftZ), double3(5, 0, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightW, ShuffleComponent.RightZ, ShuffleComponent.LeftZ), double3(7, 6, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftW, ShuffleComponent.LeftY, ShuffleComponent.LeftY), double3(3, 1, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftW, ShuffleComponent.RightY, ShuffleComponent.RightX), double3(3, 5, 4)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftW, ShuffleComponent.LeftY, ShuffleComponent.RightW), double3(3, 1, 7)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ, ShuffleComponent.RightY, ShuffleComponent.RightZ), double3(6, 5, 6)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.RightX, ShuffleComponent.LeftY), double3(5, 4, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightW, ShuffleComponent.RightW, ShuffleComponent.LeftX), double3(7, 7, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ, ShuffleComponent.LeftY, ShuffleComponent.RightY), double3(6, 1, 5)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ, ShuffleComponent.LeftY, ShuffleComponent.RightW), double3(6, 1, 7)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftW, ShuffleComponent.RightY, ShuffleComponent.RightY), double3(3, 5, 5)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ, ShuffleComponent.LeftX, ShuffleComponent.RightY), double3(6, 0, 5)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.LeftY, ShuffleComponent.RightW), double3(5, 1, 7)); + } + + [TestCompiler] + public static void double4_shuffle_result_4() + { + double4 a = double4(0, 1, 2, 3); + double4 b = double4(4, 5, 6, 7); + + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftY, ShuffleComponent.LeftW, ShuffleComponent.RightX, ShuffleComponent.LeftZ), double4(1, 3, 4, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.LeftW, ShuffleComponent.RightZ, ShuffleComponent.RightZ), double4(5, 3, 6, 6)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ, ShuffleComponent.RightZ, ShuffleComponent.RightW, ShuffleComponent.LeftZ), double4(6, 6, 7, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.RightY, ShuffleComponent.LeftZ, ShuffleComponent.LeftZ), double4(4, 5, 2, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ, ShuffleComponent.LeftY, ShuffleComponent.LeftY, ShuffleComponent.LeftX), double4(6, 1, 1, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.RightY, ShuffleComponent.RightY, ShuffleComponent.RightW), double4(4, 5, 5, 7)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftY, ShuffleComponent.RightW, ShuffleComponent.LeftX, ShuffleComponent.RightW), double4(1, 7, 0, 7)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.LeftX, ShuffleComponent.LeftY, ShuffleComponent.LeftX), double4(5, 0, 1, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.RightW, ShuffleComponent.LeftW, ShuffleComponent.LeftY), double4(4, 7, 3, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.RightX, ShuffleComponent.LeftY, ShuffleComponent.RightX), double4(5, 4, 1, 4)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftX, ShuffleComponent.LeftZ, ShuffleComponent.RightZ, ShuffleComponent.LeftX), double4(0, 2, 6, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftZ, ShuffleComponent.RightY, ShuffleComponent.RightW, ShuffleComponent.RightW), double4(2, 5, 7, 7)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftW, ShuffleComponent.RightX, ShuffleComponent.LeftZ, ShuffleComponent.RightX), double4(3, 4, 2, 4)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.LeftX, ShuffleComponent.LeftZ, ShuffleComponent.LeftW), double4(4, 0, 2, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ, ShuffleComponent.RightX, ShuffleComponent.LeftX, ShuffleComponent.RightY), double4(6, 4, 0, 5)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftW, ShuffleComponent.RightW, ShuffleComponent.LeftY, ShuffleComponent.RightY), double4(3, 7, 1, 5)); + } + + + } +} diff --git a/package/Tests/Tests/Shared/TestDouble4.gen.cs.meta b/package/Tests/Tests/Shared/TestDouble4.gen.cs.meta new file mode 100755 index 000000000..47631bfce --- /dev/null +++ b/package/Tests/Tests/Shared/TestDouble4.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 872190ea505e35646b9b1e492b8316c7 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/package/Tests/Tests/Shared/TestDouble4x2.gen.cs b/package/Tests/Tests/Shared/TestDouble4x2.gen.cs new file mode 100755 index 000000000..037d8c0c2 --- /dev/null +++ b/package/Tests/Tests/Shared/TestDouble4x2.gen.cs @@ -0,0 +1,945 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using NUnit.Framework; +using static Unity.Mathematics.math; +using Burst.Compiler.IL.Tests; + +namespace Unity.Mathematics.Tests +{ + [TestFixture] + public class TestDouble4x2 + { + [TestCompiler] + public static void double4x2_zero() + { + TestUtils.AreEqual(double4x2.zero.c0.x, 0.0); + TestUtils.AreEqual(double4x2.zero.c0.y, 0.0); + TestUtils.AreEqual(double4x2.zero.c0.z, 0.0); + TestUtils.AreEqual(double4x2.zero.c0.w, 0.0); + TestUtils.AreEqual(double4x2.zero.c1.x, 0.0); + TestUtils.AreEqual(double4x2.zero.c1.y, 0.0); + TestUtils.AreEqual(double4x2.zero.c1.z, 0.0); + TestUtils.AreEqual(double4x2.zero.c1.w, 0.0); + } + + [TestCompiler] + public static void double4x2_operator_equal_wide_wide() + { + double4x2 a0 = double4x2(-135.18925172425304, -49.094127439471947, 169.12980778940482, 240.80529772527757, 314.73919382446411, 442.39301916695808, 177.92444881141398, 335.53340283759564); + double4x2 b0 = double4x2(-220.01464591734793, 66.980020792679852, 499.20158576369363, -371.113114291389, 208.44865212610398, 390.80369133074009, -72.443806920407269, 362.97643273089841); + bool4x2 r0 = bool4x2(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + double4x2 a1 = double4x2(168.1544516869609, 350.72955982327903, 367.17843668869625, 46.941470406456574, 188.76415094582558, -97.211392209497944, -293.3210057193977, -234.82292353120766); + double4x2 b1 = double4x2(194.6783255053117, 471.6448635867074, -404.04466719368691, -144.69675476136467, -494.44664334433463, -252.97038209297244, 234.41711746641306, 398.72397465199413); + bool4x2 r1 = bool4x2(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + double4x2 a2 = double4x2(417.03371329653714, 26.386443388828297, 269.24572265764959, 29.474191440955792, 479.48521469509467, -237.23094355186026, -221.98371349181224, -506.67253255596034); + double4x2 b2 = double4x2(260.42872083393331, 370.14420502732708, 89.579862397899774, -434.81684347373289, -109.84533815730612, 336.9730161805511, -409.15498156526826, 500.38755273278218); + bool4x2 r2 = bool4x2(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + double4x2 a3 = double4x2(-22.98943401453522, 487.26083802024868, -419.73195596213077, 337.20329324212082, 245.04388367619549, 390.21586984685428, 84.412977973191573, 434.20789142800868); + double4x2 b3 = double4x2(-174.08180888652885, 395.10115379612012, 350.33930723291792, -243.14458453056614, -416.39737267810727, 151.5764511337394, -18.224320181749931, -431.67792364194895); + bool4x2 r3 = bool4x2(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void double4x2_operator_equal_wide_scalar() + { + double4x2 a0 = double4x2(65.671194345537174, 404.41550440546848, -269.7301577393572, 83.630607882342588, 152.99450476141385, -155.86829836474186, 314.67125597348024, 386.36515325417986); + double b0 = (-155.8157547245807); + bool4x2 r0 = bool4x2(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + double4x2 a1 = double4x2(290.04894007837811, -65.667489797653388, -69.683271678948415, -191.19075521789063, 186.84520086406042, -232.89569221851218, -319.14406481345372, -49.701092981594172); + double b1 = (-132.63519460178691); + bool4x2 r1 = bool4x2(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + double4x2 a2 = double4x2(-300.88189925853248, 386.377503336583, -296.70189084517858, -309.11719741910565, 141.54237968360189, -227.32334314441465, 83.872881689981, -410.91687483848858); + double b2 = (333.39685193328046); + bool4x2 r2 = bool4x2(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + double4x2 a3 = double4x2(110.50128345866744, 36.574313896044259, -427.54144235492754, -268.17085111707956, 175.81170590958175, -193.47994694182648, 291.05195368968509, 423.97165723516218); + double b3 = (-390.10359329269437); + bool4x2 r3 = bool4x2(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void double4x2_operator_equal_scalar_wide() + { + double a0 = (36.383921878591195); + double4x2 b0 = double4x2(-400.48919958644046, -71.286823544319191, 156.97811491646712, -225.23872791288363, 499.14180993435059, -211.97992358542047, 428.31192394174263, -489.50133322621758); + bool4x2 r0 = bool4x2(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + double a1 = (-5.6915457275190988); + double4x2 b1 = double4x2(-30.865948453017495, -362.98307221149241, 184.50319322594589, -160.47062142215231, 316.66882315122928, 390.36923879681581, 505.10510301268891, -294.64870967280524); + bool4x2 r1 = bool4x2(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + double a2 = (443.19909283295226); + double4x2 b2 = double4x2(96.559236333034619, -257.01294601010761, -245.05497538533757, 326.46485176983515, -23.959890138339176, -168.6948808025079, 386.24859279498855, -227.09065185631192); + bool4x2 r2 = bool4x2(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + double a3 = (-336.61242524562982); + double4x2 b3 = double4x2(365.10812752559229, -405.39083952707745, -473.99549959320365, 298.43535174915348, -149.86322386090796, 450.06639191604518, 153.47643358701669, 56.287803437694834); + bool4x2 r3 = bool4x2(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void double4x2_operator_not_equal_wide_wide() + { + double4x2 a0 = double4x2(279.99414576217259, -43.342018386042696, -465.72473523846116, 317.46655645848557, 85.714987079480238, 360.89050572034466, 366.08152668833804, 154.5428384070018); + double4x2 b0 = double4x2(-460.912120318465, -476.00904844515446, 468.13642070635058, -341.01254312182431, -62.658060341448561, -458.80166718866752, -457.73023316717251, -59.523265627922171); + bool4x2 r0 = bool4x2(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + double4x2 a1 = double4x2(332.426219856565, 397.11323160543725, -431.3749584776233, 489.01079319837072, 398.43358320669904, -489.81794594685454, 171.4049242340983, -67.829682620162941); + double4x2 b1 = double4x2(3.024243117787023, 155.81276352508587, -19.839918384253963, -6.0169332055453992, -406.20792145571107, -102.42070083619126, -40.362921018322425, 452.67542645552919); + bool4x2 r1 = bool4x2(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + double4x2 a2 = double4x2(-192.27871498478515, 227.84082494854965, 62.138187675801191, 262.18648755838467, -404.05309052209049, 34.449567572423007, -204.79578719138902, -285.41180314003111); + double4x2 b2 = double4x2(93.257571979080126, -258.37806689849964, -184.04980405794913, -379.23531192319251, -370.68729537105526, -255.94724023339677, 29.055771602809273, 322.40763226263584); + bool4x2 r2 = bool4x2(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + double4x2 a3 = double4x2(-72.206820760018559, 444.74925228801987, 238.81779991780309, 365.18011563139976, -437.92291351683571, -362.4426316518535, 445.95436665320506, -0.41746735592255391); + double4x2 b3 = double4x2(415.07170005099465, -467.72613189542949, -433.78467508488552, -212.16593585357344, 474.67491481950265, 452.48318621724991, -92.112742705323171, -385.92209190219739); + bool4x2 r3 = bool4x2(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void double4x2_operator_not_equal_wide_scalar() + { + double4x2 a0 = double4x2(-155.44111282911206, -19.426602134214079, 174.63305409934048, 507.9207296352464, 59.177048472304364, 171.15146430356026, -58.923273352404692, -398.17684835855704); + double b0 = (-393.41354173860213); + bool4x2 r0 = bool4x2(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + double4x2 a1 = double4x2(492.20105361016522, 270.34102333259818, -380.24326222960059, 501.8990516615562, -134.34545642433011, 458.40042302496749, 46.771004937016869, 161.45995123752391); + double b1 = (-165.24150879925185); + bool4x2 r1 = bool4x2(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + double4x2 a2 = double4x2(261.51423442620512, -0.44992661497087738, 350.46143047439932, 202.22103724359579, 242.66402232025939, 382.67707675633812, -468.96794221781562, -497.45947789468778); + double b2 = (-145.61239559278471); + bool4x2 r2 = bool4x2(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + double4x2 a3 = double4x2(-80.932258882062627, -506.49033260088896, 449.34814640942409, 210.77098784724762, 249.18179690520367, -338.46854058768065, 229.67068420614612, -76.543291365980792); + double b3 = (-328.58774844211888); + bool4x2 r3 = bool4x2(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void double4x2_operator_not_equal_scalar_wide() + { + double a0 = (478.35313938481409); + double4x2 b0 = double4x2(459.55319592894671, 436.45324369727314, -488.71416806090349, 392.76794475725296, -266.73665369056937, 338.55788270503183, -338.10012475498957, -152.3145445102428); + bool4x2 r0 = bool4x2(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + double a1 = (-452.82067868338); + double4x2 b1 = double4x2(209.43931422449612, 50.107968592135194, 372.4343656843688, -488.0213141329686, 489.74075697816011, 270.40006149485714, -472.8467831429312, -286.85046090132113); + bool4x2 r1 = bool4x2(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + double a2 = (-384.69186681541237); + double4x2 b2 = double4x2(443.42352959300558, 358.74720900074919, -15.414077527548216, -342.17916194637269, 468.96750400446706, -130.56808501601597, 401.7858013593526, -268.35225761511936); + bool4x2 r2 = bool4x2(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + double a3 = (-239.231014124691); + double4x2 b3 = double4x2(411.38655800902586, 139.76932460617707, 334.52206031164246, -223.62923036498449, -12.488468414400018, 113.46889238872984, -189.65225204716074, -212.84655127900027); + bool4x2 r3 = bool4x2(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void double4x2_operator_less_wide_wide() + { + double4x2 a0 = double4x2(51.710243010758518, -313.85556450200062, 283.04767359562572, 235.02188621974642, 44.0783565249659, -207.25566659088042, 3.3829410091894943, -144.30134326978651); + double4x2 b0 = double4x2(-261.83523881707117, -19.810742149041403, -149.25882084167506, 205.99822316225539, -306.02438535635565, 102.12168006884008, 231.90633760760829, 179.49885305180158); + bool4x2 r0 = bool4x2(false, true, false, false, false, true, true, true); + TestUtils.AreEqual(a0 < b0, r0); + + double4x2 a1 = double4x2(-69.369597705718888, -135.66796762108243, -194.78736576567746, -33.473868147225062, -19.675088653189619, 423.23796697297973, -71.698315415390937, -501.88598870760109); + double4x2 b1 = double4x2(473.22488496882136, 15.891647107848712, 270.04990614114786, 490.91400240869916, -185.73412164753961, 76.433086669274189, 97.75231246731812, 419.30080600236579); + bool4x2 r1 = bool4x2(true, true, true, true, false, false, true, true); + TestUtils.AreEqual(a1 < b1, r1); + + double4x2 a2 = double4x2(7.6438391244242894, 302.26289214857991, -140.55051786291904, -436.586703265359, -351.441728040316, 364.97084896870467, 301.894133946809, 407.55097336673691); + double4x2 b2 = double4x2(73.953208242521214, 481.03232382285978, 7.00747371046225, -7.3240954910051528, -413.07575793428146, -154.1188920261892, 449.20288989003882, 502.01430797111914); + bool4x2 r2 = bool4x2(true, true, true, true, false, false, true, true); + TestUtils.AreEqual(a2 < b2, r2); + + double4x2 a3 = double4x2(269.10777128353141, 462.98824737173891, 223.8841808884797, -287.18923319838439, 283.63862933015389, 511.86434650414822, -60.496787814654795, -234.30346142235373); + double4x2 b3 = double4x2(-382.31586259525079, 251.53517758638372, 143.17396957388803, 293.66033686961066, -292.76956691069972, -43.218204756834666, -353.41120044952777, 458.32604405764766); + bool4x2 r3 = bool4x2(false, false, false, true, false, false, false, true); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void double4x2_operator_less_wide_scalar() + { + double4x2 a0 = double4x2(-221.86977325280651, -121.54646807608498, -97.52392511140738, 479.88107775146193, 67.118990214131259, 137.32880574899207, 282.96659601990439, 258.27909362422258); + double b0 = (199.06751808853244); + bool4x2 r0 = bool4x2(true, true, true, false, true, true, false, false); + TestUtils.AreEqual(a0 < b0, r0); + + double4x2 a1 = double4x2(-111.41316061439608, 82.665427008022334, -361.64292042406413, -68.088202269788951, 12.788020378345664, -66.703050406045747, -78.762971199472872, 25.727694284975428); + double b1 = (-288.08113278452356); + bool4x2 r1 = bool4x2(false, false, true, false, false, false, false, false); + TestUtils.AreEqual(a1 < b1, r1); + + double4x2 a2 = double4x2(101.37087182950734, -48.920521520506838, 359.60440914686978, -8.15008759878117, 241.27682101040932, -183.43778165776178, 423.02713580756779, -334.62272349680904); + double b2 = (-330.442660724019); + bool4x2 r2 = bool4x2(false, false, false, false, false, false, false, true); + TestUtils.AreEqual(a2 < b2, r2); + + double4x2 a3 = double4x2(-98.315578744893685, 297.92523850962766, -492.108162870681, -395.80724806143309, 95.788790032169231, -220.62145791790516, -455.37556740985048, 360.29156344025); + double b3 = (300.41017617863145); + bool4x2 r3 = bool4x2(true, true, true, true, true, true, true, false); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void double4x2_operator_less_scalar_wide() + { + double a0 = (-250.4849370692321); + double4x2 b0 = double4x2(-377.19654887597846, -505.14754104295167, 375.92672198634909, 110.17393474940855, -118.09757452742082, -40.45089079833167, -299.74430932651478, 31.437125935888389); + bool4x2 r0 = bool4x2(false, false, true, true, true, true, false, true); + TestUtils.AreEqual(a0 < b0, r0); + + double a1 = (-458.904539560389); + double4x2 b1 = double4x2(13.684679276163024, -458.50690839183841, 248.27646624682302, 389.23142999654237, 488.74553679337055, -221.63786731550368, -424.26720329013989, 249.05904948388184); + bool4x2 r1 = bool4x2(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 < b1, r1); + + double a2 = (-22.136127720650336); + double4x2 b2 = double4x2(-442.24773928255206, -340.85755721705851, -95.1117256130612, 15.409410245441563, 87.292497437117845, 495.06764220402931, 316.01850309782594, -125.56811505442863); + bool4x2 r2 = bool4x2(false, false, false, true, true, true, true, false); + TestUtils.AreEqual(a2 < b2, r2); + + double a3 = (122.16476803746298); + double4x2 b3 = double4x2(96.75540046429046, -228.90633808304852, -143.95269662884652, -230.238279688283, -327.61262885090548, 103.39802770661095, 434.488835775521, -157.45019228637693); + bool4x2 r3 = bool4x2(false, false, false, false, false, false, true, false); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void double4x2_operator_greater_wide_wide() + { + double4x2 a0 = double4x2(-229.29066501804192, 505.536608216137, -73.80706862071861, 100.29203777215071, -419.21478124112582, -159.55974753180504, -396.7703608929973, 127.03739482119556); + double4x2 b0 = double4x2(-445.84502407808088, -420.03529210576568, 299.02440108872224, -13.880978829171966, 151.56173593903043, -163.5094302461992, -391.09603733154762, 479.2837710228207); + bool4x2 r0 = bool4x2(true, true, false, true, false, true, false, false); + TestUtils.AreEqual(a0 > b0, r0); + + double4x2 a1 = double4x2(489.13989733585151, 51.91890885863404, 155.38475544535777, -135.63165027258526, -425.97813554572787, -228.430505143679, 383.03834909155887, 136.53358298937496); + double4x2 b1 = double4x2(-77.674873149802409, -46.5841996886694, -415.37701888353422, 71.466978344818131, -206.06102643071722, 360.83628218287424, 236.96878658838978, 14.550342328171382); + bool4x2 r1 = bool4x2(true, true, true, false, false, false, true, true); + TestUtils.AreEqual(a1 > b1, r1); + + double4x2 a2 = double4x2(8.602427725029429, -251.3243674018068, -345.954920691417, -170.565928777012, -293.25441588706076, 139.1249764613458, 214.3030732675935, 238.76991211565678); + double4x2 b2 = double4x2(364.735178402036, -159.0612996365229, 226.63117490831348, 182.79602512288659, 341.83937398616195, -79.130463875425278, -247.29681956362765, 164.58913882290437); + bool4x2 r2 = bool4x2(false, false, false, false, false, true, true, true); + TestUtils.AreEqual(a2 > b2, r2); + + double4x2 a3 = double4x2(105.53519086983761, -170.92529280992471, 26.98023964230913, -188.92831405854241, 201.78662619450438, -506.05715656003781, 15.454906232401186, 115.08067207926911); + double4x2 b3 = double4x2(-352.15977327533056, 9.8226540134394327, 186.72162613026876, -325.91364613450764, -77.930370128681147, -379.74604219000139, 251.45575558927646, -144.1835678295156); + bool4x2 r3 = bool4x2(true, false, false, true, true, false, false, true); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void double4x2_operator_greater_wide_scalar() + { + double4x2 a0 = double4x2(11.156317000815761, -411.02322382993214, 385.88556188432756, -485.10304831206008, -491.18003033622171, 405.17534632476759, 173.57509740329124, 69.269281181166548); + double b0 = (-302.81693877969724); + bool4x2 r0 = bool4x2(true, false, true, false, false, true, true, true); + TestUtils.AreEqual(a0 > b0, r0); + + double4x2 a1 = double4x2(501.30683183172107, -86.124509613087639, -489.09058998948456, -172.51816066192379, -18.149639853346002, -236.41493498367021, -238.8945134798505, -27.239137900638923); + double b1 = (-367.027771405423); + bool4x2 r1 = bool4x2(true, true, false, true, true, true, true, true); + TestUtils.AreEqual(a1 > b1, r1); + + double4x2 a2 = double4x2(471.77934072528933, -481.47807930478734, 185.59438547193747, 33.294723764664809, -510.22814702905163, -183.28619607877278, -386.12766260007754, -13.638212448748845); + double b2 = (240.16453253485474); + bool4x2 r2 = bool4x2(true, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 > b2, r2); + + double4x2 a3 = double4x2(-7.3478887115362568, 52.24950768996473, 16.323217637987455, -410.51010985416832, -262.26747978025463, -458.25599000335484, -218.86613069235631, -34.692342535915031); + double b3 = (-261.86596477304863); + bool4x2 r3 = bool4x2(true, true, true, false, false, false, true, true); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void double4x2_operator_greater_scalar_wide() + { + double a0 = (453.54610201974685); + double4x2 b0 = double4x2(-226.20441423459187, -423.46500487973213, 409.40550227156166, 453.87706277048073, 87.475727837288673, 113.79560308987072, 176.40926154721956, -140.44002944810319); + bool4x2 r0 = bool4x2(true, true, true, false, true, true, true, true); + TestUtils.AreEqual(a0 > b0, r0); + + double a1 = (-182.48286804113673); + double4x2 b1 = double4x2(-158.29329188088576, -162.68531830733889, -193.328676075362, 230.18129955519987, -102.58784227379965, 392.5205878655056, -177.47865947404813, -10.295010809924008); + bool4x2 r1 = bool4x2(false, false, true, false, false, false, false, false); + TestUtils.AreEqual(a1 > b1, r1); + + double a2 = (-24.048938524000789); + double4x2 b2 = double4x2(172.44867499752377, 374.04800503982608, -368.99763958947619, -210.19528804076617, 149.47022325800276, -281.34327019441093, -100.46916608720511, 304.86444320569956); + bool4x2 r2 = bool4x2(false, false, true, true, false, true, true, false); + TestUtils.AreEqual(a2 > b2, r2); + + double a3 = (-361.52483360912879); + double4x2 b3 = double4x2(-372.45236056505348, -33.909547583157917, -69.595290454847429, -460.43241498453187, -309.34166278938841, 486.13155602204222, 471.92098138850224, 479.36154411703421); + bool4x2 r3 = bool4x2(true, false, false, true, false, false, false, false); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void double4x2_operator_less_equal_wide_wide() + { + double4x2 a0 = double4x2(240.09053169940159, 462.2131528622532, 293.08251561461134, -427.87067361728782, -405.5227226715175, 204.59190211286386, 294.670105832941, -327.56444445604666); + double4x2 b0 = double4x2(-81.203838624620744, 493.63743876555816, -411.47211451617636, 99.164449499530974, -295.66769875943089, -480.46254824123463, 74.414040361723892, 260.916124226952); + bool4x2 r0 = bool4x2(false, true, false, true, true, false, false, true); + TestUtils.AreEqual(a0 <= b0, r0); + + double4x2 a1 = double4x2(-456.12326667091031, 282.3012408140587, 421.8811549720732, -311.71284809322697, 84.5674827492644, 447.24461647832982, -154.49435217422172, -424.36474986763892); + double4x2 b1 = double4x2(306.17329730939741, 139.56480438055689, -505.75247955031341, -489.62680958659706, -280.03260267899958, 303.15991058161478, 511.19015788994272, -104.65973358259527); + bool4x2 r1 = bool4x2(true, false, false, false, false, false, true, true); + TestUtils.AreEqual(a1 <= b1, r1); + + double4x2 a2 = double4x2(36.684489505684269, 267.07029283562224, 307.89391937288167, -351.76015369582927, -157.36036570247279, 152.70902712303632, 372.26716750313858, 202.36828837281485); + double4x2 b2 = double4x2(95.1465771641333, -125.6363432992419, 376.239777024947, -415.7747320680761, -47.481050275024529, 117.72210293529656, 469.37837264937275, -263.04235780567041); + bool4x2 r2 = bool4x2(true, false, true, false, true, false, true, false); + TestUtils.AreEqual(a2 <= b2, r2); + + double4x2 a3 = double4x2(-77.043453014010311, 438.18483253856414, 260.28234088620275, 386.03408759927106, -281.49099053139378, -102.9300439837063, -346.71673099450618, -258.34119832624737); + double4x2 b3 = double4x2(-216.00231109187115, 66.734246046624207, 99.218598173567329, 233.843011249715, 439.8399624488502, 61.115118293610976, -219.03058419890266, -404.71288056146022); + bool4x2 r3 = bool4x2(false, false, false, false, true, true, true, false); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void double4x2_operator_less_equal_wide_scalar() + { + double4x2 a0 = double4x2(309.1924356469849, 69.673792633076118, -101.72418622939114, -315.97240629604664, -346.01106731314724, 424.15386577330241, -410.87006945669191, -483.90265320423185); + double b0 = (292.92427148154206); + bool4x2 r0 = bool4x2(false, true, true, true, true, false, true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + double4x2 a1 = double4x2(183.82114538169515, -257.87003791419329, -386.801748694294, -182.9388249772316, 349.25012962392077, 485.31159304329731, 373.56911652794531, 259.15151822713744); + double b1 = (320.44249287268258); + bool4x2 r1 = bool4x2(true, true, true, true, false, false, false, true); + TestUtils.AreEqual(a1 <= b1, r1); + + double4x2 a2 = double4x2(450.13007828692446, -43.874866744445114, 457.38574549992836, -77.638293064030961, 479.45184038553941, -499.51644372358754, -398.13294643821797, 402.48485893871862); + double b2 = (-128.5255282523695); + bool4x2 r2 = bool4x2(false, false, false, false, false, true, true, false); + TestUtils.AreEqual(a2 <= b2, r2); + + double4x2 a3 = double4x2(87.9161055497434, 125.95081263685177, -54.493607308014134, 250.66739737739204, 97.942930982421558, 228.02151809820043, -213.37865243357544, 42.260789175639275); + double b3 = (-502.17362308044619); + bool4x2 r3 = bool4x2(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void double4x2_operator_less_equal_scalar_wide() + { + double a0 = (-511.15238141974078); + double4x2 b0 = double4x2(51.159012579898786, 340.44369022010062, 312.81429519914752, 354.19252626699983, 136.39671165142056, -94.767871185563422, 288.544332877055, 304.04282369466625); + bool4x2 r0 = bool4x2(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + double a1 = (-148.61806089646092); + double4x2 b1 = double4x2(-506.30010127755816, 27.581254256694251, 48.471146844546865, 104.88351326104419, -488.6858386884843, -480.43516968210935, 421.9366516647566, 239.72105299668431); + bool4x2 r1 = bool4x2(false, true, true, true, false, false, true, true); + TestUtils.AreEqual(a1 <= b1, r1); + + double a2 = (-101.01844673092404); + double4x2 b2 = double4x2(-283.95147551407638, -55.2435333986038, -455.80483147865385, 131.10721618081777, -461.69878099006542, -388.48285001725094, -258.93605125087129, -225.2235287284588); + bool4x2 r2 = bool4x2(false, true, false, true, false, false, false, false); + TestUtils.AreEqual(a2 <= b2, r2); + + double a3 = (-116.01998215355911); + double4x2 b3 = double4x2(-442.59525629626364, 297.33334579008317, 36.687250392831515, 485.09780930220052, 344.44564859217292, 237.59216724969087, 230.39086471795611, -413.98479266370873); + bool4x2 r3 = bool4x2(false, true, true, true, true, true, true, false); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void double4x2_operator_greater_equal_wide_wide() + { + double4x2 a0 = double4x2(-386.59181302906563, -157.12078221008215, 391.01526445477054, -511.88687133783793, -5.4220387960886569, 287.64527501149348, -122.53520184500849, 7.4814426933794493); + double4x2 b0 = double4x2(153.44301350109424, 49.892483019219981, 78.025787628267835, 138.81373292711271, -225.51057802211056, -339.35611335344436, -373.302078182484, 364.9358934671319); + bool4x2 r0 = bool4x2(false, false, true, false, true, true, true, false); + TestUtils.AreEqual(a0 >= b0, r0); + + double4x2 a1 = double4x2(152.94642765491574, 48.986223482054811, 57.338148859021317, 300.46493138953338, 349.25705139211243, 85.749700824613569, -230.95330654408468, 418.7112159294594); + double4x2 b1 = double4x2(-322.71539870030961, 125.47818165900105, -25.776589167200314, 297.51890792395864, 73.222349439385539, 462.78374288174496, 393.19134515951919, -95.001432224643168); + bool4x2 r1 = bool4x2(true, false, true, true, true, false, false, true); + TestUtils.AreEqual(a1 >= b1, r1); + + double4x2 a2 = double4x2(-131.03991824530061, -126.51221257378916, -156.81847841889527, 422.37748761772059, -413.08933348818186, 219.44273553576443, 35.591133372667741, 447.18153521380464); + double4x2 b2 = double4x2(381.35702556248611, 93.031928344178937, 254.25326287665087, 90.672789377473691, 348.93816892660141, 161.33763106229605, 79.435611046587837, 420.24346824187944); + bool4x2 r2 = bool4x2(false, false, false, true, false, true, false, true); + TestUtils.AreEqual(a2 >= b2, r2); + + double4x2 a3 = double4x2(-223.49299560463663, 302.12299194099523, 459.85272834256887, -347.12802879285442, 364.97808211156075, 212.63543162710755, 504.27608680365427, -142.23296052880255); + double4x2 b3 = double4x2(453.68485209610537, -154.0116427661905, -97.290078923706915, 151.18477613813468, 57.360309865959152, -194.207084984615, -462.67061421958294, 113.38661604439221); + bool4x2 r3 = bool4x2(false, true, true, false, true, true, true, false); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void double4x2_operator_greater_equal_wide_scalar() + { + double4x2 a0 = double4x2(495.457423679278, -14.345115906719627, -463.47478053694346, 217.51749215718246, -246.86571776441565, -377.65869706573835, 53.815095211293169, -123.33294373533357); + double b0 = (189.20512804258851); + bool4x2 r0 = bool4x2(true, false, false, true, false, false, false, false); + TestUtils.AreEqual(a0 >= b0, r0); + + double4x2 a1 = double4x2(-221.50546441856096, -116.44038277326172, -395.36331028275345, 164.77259667439978, -287.00733889593153, 355.83704559683667, 184.19556316369938, 273.01225555735277); + double b1 = (252.99433410027734); + bool4x2 r1 = bool4x2(false, false, false, false, false, true, false, true); + TestUtils.AreEqual(a1 >= b1, r1); + + double4x2 a2 = double4x2(-418.14240308205706, 396.39213938098032, 332.66542044871744, 243.76141392614761, -335.121477998384, -302.08690442800844, 254.44223344253476, 179.00504287472234); + double b2 = (249.38409697701411); + bool4x2 r2 = bool4x2(false, true, true, false, false, false, true, false); + TestUtils.AreEqual(a2 >= b2, r2); + + double4x2 a3 = double4x2(71.176674637560154, 307.89058008226129, -388.57851737950858, 150.60576422075076, -219.89257989632551, -491.68100213058341, 30.997067704329766, 199.23222861030706); + double b3 = (-331.27167788672807); + bool4x2 r3 = bool4x2(true, true, false, true, true, false, true, true); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void double4x2_operator_greater_equal_scalar_wide() + { + double a0 = (215.43534169692327); + double4x2 b0 = double4x2(204.80295310020585, -101.10404853760451, -122.05503827056617, -70.456147941973143, -239.62025677395064, -185.99272426683115, -455.61258027312, 276.66581476697036); + bool4x2 r0 = bool4x2(true, true, true, true, true, true, true, false); + TestUtils.AreEqual(a0 >= b0, r0); + + double a1 = (79.39918831707871); + double4x2 b1 = double4x2(416.42054791768112, 379.27350801009379, -439.51472612820322, 67.141009600433108, -74.560638224035813, -367.25635474140586, 494.950765601802, -61.235545425319856); + bool4x2 r1 = bool4x2(false, false, true, true, true, true, false, true); + TestUtils.AreEqual(a1 >= b1, r1); + + double a2 = (-429.17024846988278); + double4x2 b2 = double4x2(-213.82468924942646, -264.31016242891093, 243.11378275748052, -22.383876095704693, 304.86197175870745, -323.68615332417477, 67.938025267765852, 125.30356818312009); + bool4x2 r2 = bool4x2(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 >= b2, r2); + + double a3 = (-400.47050280145857); + double4x2 b3 = double4x2(-283.15963162256389, -42.319595595039232, -429.51037355396448, 499.3958854616601, -289.96307887228352, -136.00878554955534, -351.12526123184955, -381.81828921931719); + bool4x2 r3 = bool4x2(false, false, true, false, false, false, false, false); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void double4x2_operator_add_wide_wide() + { + double4x2 a0 = double4x2(465.14837644302679, 278.91072548502621, -277.52992237616792, -65.197214395365336, -473.32437561141529, -4.6955420992782138, -470.53676698661258, -109.95011453980118); + double4x2 b0 = double4x2(483.99436186440028, -204.07667193379098, -365.67356007437854, -509.92086076639634, -270.69751108377125, 486.76397846954126, 267.49177587567442, 251.6425212601398); + double4x2 r0 = double4x2(949.14273830742707, 74.834053551235229, -643.20348245054652, -575.11807516176168, -744.02188669518659, 482.06843637026304, -203.04499111093816, 141.69240672033862); + TestUtils.AreEqual(a0 + b0, r0); + + double4x2 a1 = double4x2(-178.70145782209067, -420.03378339299644, 290.71109236903078, -446.5296368294068, 491.066454400805, -261.11730039358014, -298.40688409395835, 502.42861890347149); + double4x2 b1 = double4x2(244.4951094335388, -78.675763882079991, 352.20551340291536, 82.779185095233515, 462.54732606492348, -405.492017696375, -428.4983238785054, -41.872599859662614); + double4x2 r1 = double4x2(65.793651611448126, -498.70954727507643, 642.91660577194614, -363.75045173417328, 953.6137804657285, -666.6093180899552, -726.90520797246381, 460.55601904380887); + TestUtils.AreEqual(a1 + b1, r1); + + double4x2 a2 = double4x2(284.59432925125316, 401.12844366632794, -36.263498084742366, -102.94915657069026, 503.19817161150195, -384.42911857386542, -45.22821452339565, -198.67394337368847); + double4x2 b2 = double4x2(-269.9274958436971, 75.204465662690041, -141.91339380196922, -222.1867559990784, 41.305726308983594, 148.33947117083676, -177.23311217931712, -176.51887830370987); + double4x2 r2 = double4x2(14.666833407556055, 476.332909329018, -178.17689188671159, -325.13591256976866, 544.50389792048554, -236.08964740302866, -222.46132670271277, -375.19282167739834); + TestUtils.AreEqual(a2 + b2, r2); + + double4x2 a3 = double4x2(-62.8800013358146, -79.55225447544467, 413.0982751385767, -100.87757997441923, 418.523998693807, -183.143126334596, 407.44374031920165, 300.48602332756207); + double4x2 b3 = double4x2(492.69246768052335, 439.04383942067807, -511.74275922763292, -399.05713695988857, -315.8684596102072, -228.0772484410914, -171.70519669899028, 467.17394826709005); + double4x2 r3 = double4x2(429.81246634470875, 359.4915849452334, -98.64448408905622, -499.9347169343078, 102.65553908359982, -411.22037477568739, 235.73854362021137, 767.65997159465212); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void double4x2_operator_add_wide_scalar() + { + double4x2 a0 = double4x2(459.89829728561369, -447.66336104258119, -94.438627525436971, 126.42986279652916, -36.254356162741033, -349.64130060264904, -2.7912590516690443, -478.41478489265535); + double b0 = (500.99725913489112); + double4x2 r0 = double4x2(960.89555642050482, 53.333898092309937, 406.55863160945415, 627.42712193142029, 464.74290297215009, 151.35595853224208, 498.20600008322208, 22.582474242235776); + TestUtils.AreEqual(a0 + b0, r0); + + double4x2 a1 = double4x2(443.11525246273504, 41.32102133767728, -471.25607584009697, -2.6649749291431704, 78.985822952811532, 202.14799151297098, 311.7254551908585, 10.345855002452595); + double b1 = (268.092225914864); + double4x2 r1 = double4x2(711.207478377599, 309.41324725254128, -203.16384992523297, 265.42725098572083, 347.07804886767553, 470.240217427835, 579.8176811057225, 278.4380809173166); + TestUtils.AreEqual(a1 + b1, r1); + + double4x2 a2 = double4x2(-151.24445898423181, -197.80076584490052, 255.95526587961024, 244.14709793969394, -181.6265695940827, -2.4549267303454485, 300.90065469448484, -236.49194895312746); + double b2 = (355.23276703210206); + double4x2 r2 = double4x2(203.98830804787025, 157.43200118720154, 611.1880329117123, 599.379864971796, 173.60619743801936, 352.77784030175661, 656.1334217265869, 118.7408180789746); + TestUtils.AreEqual(a2 + b2, r2); + + double4x2 a3 = double4x2(-160.5840962680914, -242.9410861669765, 466.34409902353957, 237.98745810146795, 264.294014815378, 372.86684029775995, -198.83777699192882, -381.930974899759); + double b3 = (-172.54221566605486); + double4x2 r3 = double4x2(-333.12631193414626, -415.48330183303136, 293.80188335748471, 65.445242435413093, 91.751799149323119, 200.32462463170509, -371.37999265798368, -554.47319056581387); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void double4x2_operator_add_scalar_wide() + { + double a0 = (-325.51276484388518); + double4x2 b0 = double4x2(-264.08813178915909, -106.00925998855814, -355.44729320865463, -447.33029362528134, -158.70021040677102, -199.48369154682553, 180.31809123806568, 337.57936898692481); + double4x2 r0 = double4x2(-589.60089663304427, -431.52202483244332, -680.96005805253981, -772.84305846916652, -484.2129752506562, -524.9964563907107, -145.1946736058195, 12.066604143039626); + TestUtils.AreEqual(a0 + b0, r0); + + double a1 = (-37.05501486596421); + double4x2 b1 = double4x2(230.80498014707348, -140.17433339924287, 18.02419591789328, -138.61435825126915, 26.904163611542458, -374.53758233345, 154.4676006559597, 268.3838204203098); + double4x2 r1 = double4x2(193.74996528110927, -177.22934826520708, -19.03081894807093, -175.66937311723336, -10.150851254421752, -411.59259719941423, 117.41258578999549, 231.32880555434559); + TestUtils.AreEqual(a1 + b1, r1); + + double a2 = (-190.96302255939833); + double4x2 b2 = double4x2(188.61725362977813, -504.91612386373623, 20.454013595568995, 197.94534525552081, 251.41194474483461, -421.09037538109828, 111.44540052835146, -73.268883024001923); + double4x2 r2 = double4x2(-2.345768929620192, -695.87914642313456, -170.50900896382933, 6.9823226961224805, 60.448922185436288, -612.05339794049655, -79.517622031046869, -264.23190558340025); + TestUtils.AreEqual(a2 + b2, r2); + + double a3 = (480.88455770950975); + double4x2 b3 = double4x2(438.05301233662897, 66.844289095534123, -270.79599941465818, -44.02192189359198, 197.69471916821544, 19.113929995854392, 349.23776857426287, 366.23449271090067); + double4x2 r3 = double4x2(918.93757004613872, 547.72884680504387, 210.08855829485157, 436.86263581591777, 678.57927687772519, 499.99848770536414, 830.12232628377262, 847.11905042041042); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void double4x2_operator_sub_wide_wide() + { + double4x2 a0 = double4x2(133.37101680290471, -131.8321183341705, -197.29314407952739, -485.286571013409, -337.55033103448818, 471.66710470228782, 146.5066197600712, -130.58504372955537); + double4x2 b0 = double4x2(123.46028739002543, 359.56010048443454, -48.24847819667707, 478.97904680621764, 207.15832886805686, 142.36730462981723, -125.60551005490379, -65.299004823574307); + double4x2 r0 = double4x2(9.9107294128792773, -491.39221881860504, -149.04466588285032, -964.26561781962664, -544.708659902545, 329.29980007247059, 272.112129814975, -65.286038905981059); + TestUtils.AreEqual(a0 - b0, r0); + + double4x2 a1 = double4x2(110.77707367333448, -235.54160486699158, 78.879356659427, -347.68616811730254, -470.82054565419469, -11.459293609233271, -167.94791730118351, 330.67676917215658); + double4x2 b1 = double4x2(-477.876434787119, 164.50000031501986, 428.00958915614035, 72.6278169493321, -446.880505531505, 432.09146114443035, -225.55465637219822, -112.45196705332586); + double4x2 r1 = double4x2(588.65350846045351, -400.04160518201144, -349.13023249671335, -420.31398506663464, -23.940040122689709, -443.55075475366363, 57.606739071014715, 443.12873622548244); + TestUtils.AreEqual(a1 - b1, r1); + + double4x2 a2 = double4x2(-508.35086822339838, -252.03190457636111, -427.93418737311578, 192.6576150360786, 168.42931016182024, 457.3087858899072, 470.05851457550125, -299.71188058504458); + double4x2 b2 = double4x2(-210.61278853687122, -172.92506011432272, -80.60749415336528, 270.04610861001822, -154.25558550388348, 148.47577745675846, 13.661130673094249, 70.671096596248049); + double4x2 r2 = double4x2(-297.73807968652716, -79.1068444620384, -347.3266932197505, -77.388493573939627, 322.68489566570372, 308.83300843314873, 456.397383902407, -370.38297718129263); + TestUtils.AreEqual(a2 - b2, r2); + + double4x2 a3 = double4x2(-308.93956937870922, 454.53341052240387, 26.106923830745245, -482.71181105203544, -40.853544492671972, 318.38064613862923, 475.21081541255614, 134.9269641074012); + double4x2 b3 = double4x2(-221.32544551665217, -9.2588145775994235, 288.1738385111903, 217.36142764676424, 307.54006471649745, -262.41263854802241, -405.3780321578393, 400.00432533771004); + double4x2 r3 = double4x2(-87.614123862057056, 463.79222510000329, -262.06691468044505, -700.07323869879974, -348.39360920916943, 580.79328468665165, 880.5888475703955, -265.07736123030884); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void double4x2_operator_sub_wide_scalar() + { + double4x2 a0 = double4x2(48.936717294592768, 410.45158953706346, -364.44171612544062, 163.98060353285666, -460.06732318367222, 110.91942339340198, 204.35834441164434, 180.26971420099483); + double b0 = (-291.59041442144212); + double4x2 r0 = double4x2(340.52713171603489, 702.04200395850557, -72.8513017039985, 455.57101795429878, -168.4769087622301, 402.5098378148441, 495.94875883308646, 471.86012862243695); + TestUtils.AreEqual(a0 - b0, r0); + + double4x2 a1 = double4x2(-377.92569344952972, 400.53491968686455, 461.50756499800252, -246.28726660753006, 21.605312595891405, 246.35072171238755, -121.42736178330489, -122.71842413894757); + double b1 = (-470.26204297983185); + double4x2 r1 = double4x2(92.33634953030213, 870.79696266669634, 931.76960797783431, 223.97477637230179, 491.86735557572325, 716.61276469221934, 348.83468119652696, 347.54361884088428); + TestUtils.AreEqual(a1 - b1, r1); + + double4x2 a2 = double4x2(-122.93872099879138, 342.87457887403411, 18.929827460520869, 164.60235245740148, 97.0436885808798, 485.9149813530571, -205.75765690848124, 253.44322717070725); + double b2 = (360.15095417581074); + double4x2 r2 = double4x2(-483.08967517460212, -17.276375301776625, -341.22112671528987, -195.54860171840926, -263.10726559493094, 125.76402717724636, -565.908611084292, -106.70772700510349); + TestUtils.AreEqual(a2 - b2, r2); + + double4x2 a3 = double4x2(-121.16305619159857, -450.820273370864, -248.07337128746946, -26.996065390760123, 441.55261942444031, 449.91060969322484, 354.88602678612153, 98.821485803845121); + double b3 = (187.99838813953022); + double4x2 r3 = double4x2(-309.16144433112879, -638.81866151039424, -436.07175942699968, -214.99445353029034, 253.55423128491009, 261.91222155369462, 166.88763864659131, -89.1769023356851); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void double4x2_operator_sub_scalar_wide() + { + double a0 = (294.58645905861); + double4x2 b0 = double4x2(452.35251757705237, 256.98980891750648, -275.159888634067, -89.027518075437968, 488.22838829840919, -333.21728030462623, -64.232989102710519, -66.041730196234653); + double4x2 r0 = double4x2(-157.76605851844238, 37.59665014110351, 569.746347692677, 383.61397713404796, -193.6419292397992, 627.80373936323622, 358.81944816132051, 360.62818925484464); + TestUtils.AreEqual(a0 - b0, r0); + + double a1 = (341.20492831859963); + double4x2 b1 = double4x2(-385.775056303374, 75.394746577085357, 354.94371645289641, 169.13141520746581, 88.216608326982964, 1.7350065716240124, 122.53803997977548, -264.94502771317264); + double4x2 r1 = double4x2(726.9799846219737, 265.81018174151427, -13.738788134296783, 172.07351311113382, 252.98831999161666, 339.46992174697561, 218.66688833882415, 606.14995603177226); + TestUtils.AreEqual(a1 - b1, r1); + + double a2 = (-50.837180399725753); + double4x2 b2 = double4x2(-347.65032283759228, 4.0655586738445209, -79.095424450512724, 354.35833923628479, -292.4925116470514, -53.208983207684469, -246.34760033634848, 299.20334138497867); + double4x2 r2 = double4x2(296.81314243786653, -54.902739073570274, 28.258244050786971, -405.19551963601054, 241.65533124732565, 2.3718028079587157, 195.51041993662272, -350.04052178470442); + TestUtils.AreEqual(a2 - b2, r2); + + double a3 = (432.18467422583353); + double4x2 b3 = double4x2(-163.88000090600923, 176.74255546216978, -104.9858415615679, -445.7976302792307, -28.873155368898608, -169.58822901993443, -270.35924614144454, 68.0476272423042); + double4x2 r3 = double4x2(596.06467513184271, 255.44211876366376, 537.17051578740143, 877.98230450506423, 461.05782959473214, 601.772903245768, 702.54392036727813, 364.13704698352933); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void double4x2_operator_mul_wide_wide() + { + double4x2 a0 = double4x2(-394.78053898121254, -412.37219519744264, -25.874570143350638, -241.04595886964626, -93.675987525692221, 244.15999257013198, 494.68846606402121, 53.537962700025105); + double4x2 b0 = double4x2(-149.76397831261346, -345.04538671348496, -284.33404721148963, 267.97923648915219, -326.64849558782225, -150.68967754705329, 207.73243794577775, 366.19289248352538); + double4x2 r0 = double4x2(59123.904078224172, 142287.1235617903, 7357.0212487164608, -64595.312016683383, 30599.120397970968, -36792.390550284115, 102762.84107913627, 19605.221418797286); + TestUtils.AreEqual(a0 * b0, r0); + + double4x2 a1 = double4x2(-239.49641167349017, 236.67584644848284, -211.85620818466703, -216.65482030466887, 467.95832870339893, -178.02191146557311, -386.3942503344241, -422.43540521265726); + double4x2 b1 = double4x2(358.88076202891807, 214.85359368792433, 253.42280900358355, -307.71382751488773, 184.4711149597872, 426.43644185850235, -144.28142625851621, 459.47961518703016); + double4x2 r1 = double4x2(-85950.654724573629, 50850.6561485879, -53689.195383006307, 66667.684005499876, 86324.794650634591, -75915.030498228327, 55749.513536340863, -194100.45742848891); + TestUtils.AreEqual(a1 * b1, r1); + + double4x2 a2 = double4x2(464.58952758488692, -251.3156646468284, -104.97877912641445, -66.934159071619717, -39.829896707008572, 401.56559080703448, 434.14618250082538, -336.45419589451245); + double4x2 b2 = double4x2(-358.31334917541284, -201.36521563370025, 254.90996539541982, 168.52096303204121, 8.7945530455533572, -194.84647974504458, -405.36266178887462, -180.7321890242082); + double4x2 r2 = double4x2(-166468.62962076368, 50606.233003735295, -26760.136954367728, -11279.808946489193, -350.28613938869785, -78243.6417554897, -175986.65214401312, 60808.103330394995); + TestUtils.AreEqual(a2 * b2, r2); + + double4x2 a3 = double4x2(-83.11415318544681, 329.96027842627848, -316.97214594342381, 474.9379296130212, -445.10915800794453, -301.00371541688389, 405.68786425408337, 142.37348682357629); + double4x2 b3 = double4x2(-189.74690946831691, -35.518455760329232, 120.31664210200154, -136.2033479847961, 407.34163231744503, 301.65431489686216, -155.4824007281486, -461.39456126717596); + double4x2 r3 = double4x2(15770.6537000148, -11719.679551949688, -38137.024239778322, -64688.136098260919, -181311.49098239967, -90799.069555490176, -63077.323080500144, -65690.352489042038); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void double4x2_operator_mul_wide_scalar() + { + double4x2 a0 = double4x2(328.20302191758674, -290.10672272839895, 236.99572454998065, 120.48136692889102, 357.90315811610924, 134.86723214707672, -477.31047104173825, -438.272912467957); + double b0 = (192.21119055161773); + double4x2 r0 = double4x2(63084.293585418032, -55761.758562653624, 45553.230371395039, 23157.866976688449, 68792.992123681237, 25922.99125739103, -91744.41390168597, -84240.958291990959); + TestUtils.AreEqual(a0 * b0, r0); + + double4x2 a1 = double4x2(-46.729179165665585, 422.08249374017237, -48.83483722099794, 355.30832998608628, 119.35660391643489, -196.995807977857, 98.2360046367329, -325.55215683837991); + double b1 = (-238.40500103608008); + double4x2 r1 = double4x2(11140.470007405675, -100626.57735743705, 11642.469418268816, -84707.28277846078, -28455.211280360661, 46964.785805064428, -23419.954787200673, 77613.262288352067); + TestUtils.AreEqual(a1 * b1, r1); + + double4x2 a2 = double4x2(53.937323833786536, -130.47412949915702, -222.59457145565869, 126.01503211167415, 293.36108769726059, 174.38195737375963, -327.12007704708731, 56.629123475695565); + double b2 = (-87.4509838034636); + double4x2 r2 = double4x2(-4716.8720329906373, 11410.090985601793, 19466.114263107731, -11020.138532190962, -25654.7157287796, -15249.873729908933, 28606.9725596326, -4952.2725598773932); + TestUtils.AreEqual(a2 * b2, r2); + + double4x2 a3 = double4x2(257.54154241156834, -452.69189450363251, -49.220605157884108, 141.60094959177115, 431.58568330834885, 180.35518583113105, -40.92345454214302, 279.54350842141707); + double b3 = (-475.60871551726422); + double4x2 r3 = double4x2(-122489.00217870105, 215304.21046994952, 23409.748796123691, -67346.645751367163, -205265.91247392457, -85778.498270021737, 19463.551649317793, -132953.32897149969); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void double4x2_operator_mul_scalar_wide() + { + double a0 = (-464.534700371574); + double4x2 b0 = double4x2(329.36093846399376, -198.68342671109525, 184.07942518223047, 256.01618754864489, 266.22629297255833, -97.894749448585685, 159.74810583877752, -351.82222263506719); + double4x2 r0 = double4x2(-152999.58486347177, 92295.346096036214, -85511.280621599, -118928.40297318244, -123671.35123704225, 45475.508103049062, -74208.538480743009, 163433.63077584215); + TestUtils.AreEqual(a0 * b0, r0); + + double a1 = (491.80157660497423); + double4x2 b1 = double4x2(49.902031206480274, 424.46256871915546, 160.11807616060514, -395.99208492599058, 125.20168858636248, -265.01581991138676, 314.65609779705107, -292.71202029507236); + double4x2 r1 = double4x2(24541.897623137622, 208751.36050587788, 78746.322298740954, -194749.53168969302, 61574.387840378076, -130335.19805767993, 154748.36498495867, -143956.23307234381); + TestUtils.AreEqual(a1 * b1, r1); + + double a2 = (-37.729878681586058); + double4x2 b2 = double4x2(165.3622206027444, 356.51773302467438, -188.81332906932261, 504.91572475103465, 40.572113771257932, -206.77510581108515, -61.602680473403382, 118.97158938225903); + double4x2 r2 = double4x2(-6239.0965218592164, -13451.370814855052, 7123.9039992519283, -19050.409039281636, -1530.7809304450689, 7801.599656624363, 2324.2616607220198, -4488.7836339481055); + TestUtils.AreEqual(a2 * b2, r2); + + double a3 = (53.7483275186961); + double4x2 b3 = double4x2(-198.66941771221786, 96.23611287783649, -20.241880664714529, -31.123976006696012, 38.890465516080326, -13.133307701504464, 507.87128209875493, 95.017933651347562); + double4x2 r3 = double4x2(-10678.14893114493, 5172.530114084163, -1087.9672315614384, -1672.8616560919363, 2090.2974779128417, -705.89332374427579, 27297.232007583982, 5107.0550180423643); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void double4x2_operator_div_wide_wide() + { + double4x2 a0 = double4x2(246.26574933075619, -269.85612953354428, -451.61952588130697, -7.38850236283082, -308.20558681534862, -373.394808704683, 360.41863482092447, 25.80972458133931); + double4x2 b0 = double4x2(172.11981423763552, -77.141104972521362, -325.8353723612779, -450.60868117334724, -261.26215398556656, -122.44949847201326, -93.210781379235357, -442.00522705633438); + double4x2 r0 = double4x2(1.4307809383918566, 3.4982144685336105, 1.3860359070548143, 0.016396715535066435, 1.1796794220427942, 3.0493780159501847, -3.8667054335113131, -0.05839235149599218); + TestUtils.AreEqual(a0 / b0, r0); + + double4x2 a1 = double4x2(-274.050461181463, 127.53858977534742, -447.6717600522897, -137.4586017771897, -136.13317424437645, 12.43763423545181, 228.51298319013461, 356.9723681681661); + double4x2 b1 = double4x2(484.36271380091216, -390.78178686219348, 402.02531714086672, 316.65072193585831, 397.15440744774151, -303.26218643005109, -118.59124451437555, -81.650312223308845); + double4x2 r1 = double4x2(-0.56579594872388561, -0.32636779415802974, -1.1135412148569459, -0.43410165287743668, -0.3427714050039572, -0.041012809351094658, -1.9268959030313104, -4.37196574572633); + TestUtils.AreEqual(a1 / b1, r1); + + double4x2 a2 = double4x2(-24.762040865031111, 411.66839356518744, -204.07890067066944, 11.365393882321882, 82.152295389283609, 37.389483230835481, 394.26582903147948, -429.91279645912016); + double4x2 b2 = double4x2(-84.346871176896116, -488.41943549011808, 404.16049999937434, -136.72883731533256, -19.832707652744261, -102.6072290421497, 166.11604960547572, -112.84016590604568); + double4x2 r2 = double4x2(0.29357391115432163, -0.84285833783843456, -0.50494519051462317, -0.083123605125890912, -4.1422632162843458, -0.36439423985883462, 2.3734361006528726, 3.8099270149698223); + TestUtils.AreEqual(a2 / b2, r2); + + double4x2 a3 = double4x2(315.37384071730719, -122.66599255551864, 447.52615067340719, -210.48151574399395, -202.42158398517483, -453.00793072814491, 173.7269934032704, -167.1216643634819); + double4x2 b3 = double4x2(-218.2096851888158, 458.51754042995981, 119.5872405132219, 356.24043218988948, -74.506851469402591, -336.77393332904853, -216.12631593277973, 322.385657699027); + double4x2 r3 = double4x2(-1.4452788401413792, -0.26752737188743669, 3.7422566885296384, -0.59084117557941718, 2.7168183864044027, 1.3451395309907455, -0.80382156450260089, -0.51839050643966134); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void double4x2_operator_div_wide_scalar() + { + double4x2 a0 = double4x2(-244.51745116175965, 69.112274917360537, -333.02311888943575, 257.39682519500923, 403.24561257066466, 154.34436066185322, 131.52659160062979, -261.88639200007844); + double b0 = (-60.024377612408443); + double4x2 r0 = double4x2(4.0736357608014941, -1.1514034408425655, 5.5481311449798705, -4.2882048166676752, -6.7180307170282818, -2.5713612835520117, -2.1912195816494422, 4.3630005410658415); + TestUtils.AreEqual(a0 / b0, r0); + + double4x2 a1 = double4x2(-348.92380516087815, 210.55792174607416, 287.64239968342815, 504.37224626185946, 491.78708600056689, -26.63160015392657, -253.23667275776933, 272.89512098622276); + double b1 = (-275.53868187383688); + double4x2 r1 = double4x2(1.26633328862567, -0.76416828415577609, -1.0439274722782237, -1.8304952423805252, -1.7848204929199212, 0.096652854593100634, 0.91906033314669355, -0.990405844763297); + TestUtils.AreEqual(a1 / b1, r1); + + double4x2 a2 = double4x2(178.09617313095191, -502.64601611655485, -84.324793139623864, -174.69034036187935, 83.796309271732525, 197.04206690427009, 317.16826525198678, 403.38711781212464); + double b2 = (-460.87559030059521); + double4x2 r2 = double4x2(-0.3864300407291974, 1.0906327579395469, 0.18296649879987137, 0.37904012284083372, -0.18181980351156884, -0.42753851809715948, -0.68818629566630174, -0.87526249231169939); + TestUtils.AreEqual(a2 / b2, r2); + + double4x2 a3 = double4x2(81.646461763254592, -413.56048102563273, 207.34099803089214, 358.5621036768714, 20.749072799807891, -68.577131064877449, 310.70246257945075, 417.40490193730443); + double b3 = (60.606869964211683); + double4x2 r3 = double4x2(1.3471486287192653, -6.8236568110156472, 3.4210807809960628, 5.9161957033683157, 0.34235512924624228, -1.1315075519552849, 5.1265221708845941, 6.88708890896002); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void double4x2_operator_div_scalar_wide() + { + double a0 = (41.737658758525527); + double4x2 b0 = double4x2(-422.676129776368, 248.12963235011773, 449.39137741988122, 245.85813796047967, -326.62061253498337, 163.71510489457989, 333.664472020075, 38.291076916405473); + double4x2 r0 = double4x2(-0.098746193168297289, 0.1682090863683405, 0.092875967042706856, 0.16976317767945767, -0.12778635871933872, 0.25494079355354177, 0.12508871114097631, 1.0900100524632514); + TestUtils.AreEqual(a0 / b0, r0); + + double a1 = (-472.97976062864984); + double4x2 b1 = double4x2(192.23013958345643, -200.29686960964318, -490.18150376257557, -211.10257468517057, -322.85234108700058, -137.98529035317961, 84.32973555677097, 355.06345550858578); + double4x2 r1 = double4x2(-2.4604870061143891, 2.3613936730535827, 0.96490740062224467, 2.2405210421238673, 1.4650033480822544, 3.4277549398058063, -5.6086949343062837, -1.332099243925746); + TestUtils.AreEqual(a1 / b1, r1); + + double a2 = (276.42724455354141); + double4x2 b2 = double4x2(-382.9880213136729, -488.647160996053, 344.84603826368505, 168.85499938244698, -44.19558837087618, 420.550703959796, -175.6152060849663, -9.2205684227964753); + double4x2 r2 = double4x2(-0.72176472675406045, -0.56569907004079412, 0.80159611502386607, 1.637068760560944, -6.2546343366637984, 0.65729825666863562, -1.574050736926506, -29.979414703991178); + TestUtils.AreEqual(a2 / b2, r2); + + double a3 = (-344.19428865248074); + double4x2 b3 = double4x2(-449.07149216582604, 117.70491724726969, -337.02741710144437, 239.39341389359595, -389.35516304027067, 242.71606718875285, 496.27646445495839, 91.745798392102984); + double4x2 r3 = double4x2(0.766457668003967, -2.9242133353648381, 1.0212649511208138, -1.4377767669308814, 0.8840111068897808, -1.4180943710859133, -0.69355351967072676, -3.751608190071702); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void double4x2_operator_mod_wide_wide() + { + double4x2 a0 = double4x2(-442.30985924336585, 368.50046246522129, -1.0938966279355213, -364.67383473211612, -197.34394487987458, -34.034902350062, -101.34858350704826, 208.31857142612273); + double4x2 b0 = double4x2(-43.245045443645211, -144.19587690392319, -62.640481739603217, -336.82826510855381, -154.6102545981343, -154.02935583611452, 487.0462093237071, -469.82909105244516); + double4x2 r0 = double4x2(-9.8594048069137443, 80.1087086573749, -1.0938966279355213, -27.845569623562312, -42.73369028174028, -34.034902350062, -101.34858350704826, 208.31857142612273); + TestUtils.AreEqual(a0 % b0, r0); + + double4x2 a1 = double4x2(-140.77031404374645, 183.446989383291, -463.36838100076113, 83.839106360375467, -64.714058190916717, 295.06681050689281, 212.257051805154, 349.62829916068745); + double4x2 b1 = double4x2(-145.20377237405802, -203.38401780062543, -22.520082245823062, 224.6900237652892, -435.62674614210925, 12.095571285158144, 40.378765363422531, 345.78484813579587); + double4x2 r1 = double4x2(-140.77031404374645, 183.446989383291, -12.966736084299896, 83.839106360375467, -64.714058190916717, 4.773099663097355, 10.363224988041338, 3.8434510248915785); + TestUtils.AreEqual(a1 % b1, r1); + + double4x2 a2 = double4x2(119.87592106679267, -37.805828350505692, 142.41158515886013, 332.24425593588694, -464.19427249589671, -296.14783801517814, 225.17535863871467, -212.06027732233531); + double4x2 b2 = double4x2(-433.47126146474443, -355.64996712079733, 4.0154273528677322, 66.659781725453058, -221.85363088448236, -355.05676405274158, 357.93597118832918, 71.375334057666009); + double4x2 r2 = double4x2(119.87592106679267, -37.805828350505692, 1.8716278084895066, 65.605129034074707, -20.487010726932, -296.14783801517814, 225.17535863871467, -69.309609207003291); + TestUtils.AreEqual(a2 % b2, r2); + + double4x2 a3 = double4x2(156.98570425668061, 507.61831092630439, 270.83043897842538, 337.734341063413, 384.91584819597927, 432.51818128699347, 154.29270775350403, -37.0853169137078); + double4x2 b3 = double4x2(-131.41830188195144, -473.98760078567432, 76.2178585884244, 92.210223002457155, -368.18956130006796, -77.467150485826267, 135.23059398272574, 274.27728975670288); + double4x2 r3 = double4x2(25.56740237472917, 33.630710140630072, 42.17686321315216, 61.103672056041546, 16.7262868959113, 45.182428857862135, 19.062113770778296, -37.0853169137078); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void double4x2_operator_mod_wide_scalar() + { + double4x2 a0 = double4x2(-433.41699548876704, -5.5141427542614565, 393.39439958771425, 299.41153277988155, -120.80601626299602, -502.939041133476, -450.80766245853511, 186.09479698263794); + double b0 = (-90.499235433758827); + double4x2 r0 = double4x2(-71.420053753731736, -5.5141427542614565, 31.39745785267894, 27.913826478605074, -30.306780829237198, -50.442863964681862, -88.8107207234998, 5.0963261151202914); + TestUtils.AreEqual(a0 % b0, r0); + + double4x2 a1 = double4x2(-84.473635951277629, 433.45469041981482, -54.6001856581309, -172.33886607565864, -429.71466728193434, 222.36186109406958, 5.796394112425105, 254.51082885196); + double b1 = (-318.78148356023314); + double4x2 r1 = double4x2(-84.473635951277629, 114.67320685958168, -54.6001856581309, -172.33886607565864, -110.9331837217012, 222.36186109406958, 5.796394112425105, 254.51082885196); + TestUtils.AreEqual(a1 % b1, r1); + + double4x2 a2 = double4x2(-433.09369703433185, -75.356399809641971, 252.28909385031511, -69.403906139267576, 5.3372299696026175, -279.06042803407666, 483.55059097872606, -331.99334660730949); + double b2 = (-203.08261284748215); + double4x2 r2 = double4x2(-26.928471339367547, -75.356399809641971, 49.206481002832959, -69.403906139267576, 5.3372299696026175, -75.977815186594512, 77.385365283761757, -128.91073375982734); + TestUtils.AreEqual(a2 % b2, r2); + + double4x2 a3 = double4x2(335.99997655302286, -124.72076731767544, 38.175906437531125, 271.28698671575955, 405.77360100567978, -194.76144489774549, 235.72397314557986, 465.98487804177444); + double b3 = (67.839589388966374); + double4x2 r3 = double4x2(64.641618997157366, -56.881177928709064, 38.175906437531125, 67.768218548860432, 66.57565406084791, -59.082266119812743, 32.20520497868074, 58.947341707976193); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void double4x2_operator_mod_scalar_wide() + { + double a0 = (-396.4224028049141); + double4x2 b0 = double4x2(-159.14024384279747, 230.17333399046834, 14.779358632294134, -303.15649738123477, 399.63502020371845, 206.69470534412881, 397.04482263934096, -393.89064735634747); + double4x2 r0 = double4x2(-78.141915119319151, -166.24906881444576, -12.159078365266623, -93.265905423679328, -396.4224028049141, -189.72769746078529, -396.4224028049141, -2.5317554485666278); + TestUtils.AreEqual(a0 % b0, r0); + + double a1 = (-372.06709426085797); + double4x2 b1 = double4x2(201.01229796233224, -95.5668547598491, -258.95146882671463, 106.98357563232241, 469.3235559264773, -34.808985011097491, 184.83653434777466, 374.79425376224992); + double4x2 r1 = double4x2(-171.05479629852573, -85.366529981310691, -113.11562543414334, -51.116367363890731, -372.06709426085797, -23.977244149883063, -2.3940255653086524, -372.06709426085797); + TestUtils.AreEqual(a1 % b1, r1); + + double a2 = (-131.87271911086174); + double4x2 b2 = double4x2(-120.09286003936683, 4.506670715523228, -111.40195732535886, 391.54249710195813, -218.66887078931035, 196.37741980160467, -511.03262233689082, 499.95350598727987); + double4x2 r2 = double4x2(-11.779859071494911, -1.1792683606881269, -20.470761785502873, -131.87271911086174, -131.87271911086174, -131.87271911086174, -131.87271911086174, -131.87271911086174); + TestUtils.AreEqual(a2 % b2, r2); + + double a3 = (-433.52306505363578); + double4x2 b3 = double4x2(-163.8668559360629, 177.00401099818009, 110.65016441729392, 17.68454910148148, -95.85296754532169, -432.44096561541824, 192.69208654793545, -268.13177621929526); + double4x2 r3 = double4x2(-105.78935318150997, -79.515043057275591, -101.57257180175401, -9.093886618080262, -50.111194872349017, -1.08209943821754, -48.138891957764884, -165.39128883434051); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void double4x2_operator_plus() + { + double4x2 a0 = double4x2(271.6708086802023, -79.080240524876956, -330.98506203805334, 31.824682965793045, 315.44952860262686, 319.22218742930431, 190.32466015141677, -350.30858270745193); + double4x2 r0 = double4x2(271.6708086802023, -79.080240524876956, -330.98506203805334, 31.824682965793045, 315.44952860262686, 319.22218742930431, 190.32466015141677, -350.30858270745193); + TestUtils.AreEqual(+a0, r0); + + double4x2 a1 = double4x2(-320.51845875406565, -107.00351267075331, -428.77622075973835, 377.23016208095021, 234.77393042052813, 34.283600107898792, 258.33039414991174, 465.35593555185756); + double4x2 r1 = double4x2(-320.51845875406565, -107.00351267075331, -428.77622075973835, 377.23016208095021, 234.77393042052813, 34.283600107898792, 258.33039414991174, 465.35593555185756); + TestUtils.AreEqual(+a1, r1); + + double4x2 a2 = double4x2(309.59316530339106, -230.05266557915724, 301.78512229667285, 2.585727931273027, 350.24640981771347, 60.819777278611355, -472.44209526127304, -364.80255644619581); + double4x2 r2 = double4x2(309.59316530339106, -230.05266557915724, 301.78512229667285, 2.585727931273027, 350.24640981771347, 60.819777278611355, -472.44209526127304, -364.80255644619581); + TestUtils.AreEqual(+a2, r2); + + double4x2 a3 = double4x2(239.15236937215195, 285.80893935161123, -273.26378191321334, -206.68638310520276, -113.36231785331029, -351.7548708169511, -116.53621798219916, -496.05329274388652); + double4x2 r3 = double4x2(239.15236937215195, 285.80893935161123, -273.26378191321334, -206.68638310520276, -113.36231785331029, -351.7548708169511, -116.53621798219916, -496.05329274388652); + TestUtils.AreEqual(+a3, r3); + } + + [TestCompiler] + public static void double4x2_operator_neg() + { + double4x2 a0 = double4x2(420.22718854445372, -196.25749811728366, -335.42683068636188, 509.04366969924592, -33.014395013923945, -498.57532071442125, -495.8379526063045, -270.85946787095605); + double4x2 r0 = double4x2(-420.22718854445372, 196.25749811728366, 335.42683068636188, -509.04366969924592, 33.014395013923945, 498.57532071442125, 495.8379526063045, 270.85946787095605); + TestUtils.AreEqual(-a0, r0); + + double4x2 a1 = double4x2(19.686896571743773, -180.60051473444349, 223.38126312167446, -410.39206070936848, -395.68154186554324, -349.14948885010062, -110.9393032113739, -238.21960913307015); + double4x2 r1 = double4x2(-19.686896571743773, 180.60051473444349, -223.38126312167446, 410.39206070936848, 395.68154186554324, 349.14948885010062, 110.9393032113739, 238.21960913307015); + TestUtils.AreEqual(-a1, r1); + + double4x2 a2 = double4x2(292.54351224216794, 48.290685914592245, 88.7237785275671, 66.148520738886873, 55.707977559281517, 464.54141090090457, 499.24280213715645, 175.01502259774838); + double4x2 r2 = double4x2(-292.54351224216794, -48.290685914592245, -88.7237785275671, -66.148520738886873, -55.707977559281517, -464.54141090090457, -499.24280213715645, -175.01502259774838); + TestUtils.AreEqual(-a2, r2); + + double4x2 a3 = double4x2(196.38759169186824, 149.66006023700356, 320.3917383255399, -359.83381168909079, 22.03845144344416, -159.55426199713457, 419.82245011805674, 303.32339992342679); + double4x2 r3 = double4x2(-196.38759169186824, -149.66006023700356, -320.3917383255399, 359.83381168909079, -22.03845144344416, 159.55426199713457, -419.82245011805674, -303.32339992342679); + TestUtils.AreEqual(-a3, r3); + } + + [TestCompiler] + public static void double4x2_operator_prefix_inc() + { + double4x2 a0 = double4x2(-99.79557113526181, 458.74185082816609, 96.179026886904126, -48.552469514567633, -315.728967098393, -299.23014583216525, -323.61485853959567, -456.89028832730384); + double4x2 r0 = double4x2(-98.79557113526181, 459.74185082816609, 97.179026886904126, -47.552469514567633, -314.728967098393, -298.23014583216525, -322.61485853959567, -455.89028832730384); + TestUtils.AreEqual(++a0, r0); + + double4x2 a1 = double4x2(-76.507656371457358, 64.0964734852763, 148.67930967578627, 363.2849182390072, -115.5592263283018, -326.87781992874937, -179.89464839729231, 339.8765849265626); + double4x2 r1 = double4x2(-75.507656371457358, 65.0964734852763, 149.67930967578627, 364.2849182390072, -114.5592263283018, -325.87781992874937, -178.89464839729231, 340.8765849265626); + TestUtils.AreEqual(++a1, r1); + + double4x2 a2 = double4x2(-38.410431164507941, 261.62557304167444, 155.03081877298223, -396.65022892348946, 301.30576791488829, -221.35540328796736, -429.69815011960367, -271.28932893988178); + double4x2 r2 = double4x2(-37.410431164507941, 262.62557304167444, 156.03081877298223, -395.65022892348946, 302.30576791488829, -220.35540328796736, -428.69815011960367, -270.28932893988178); + TestUtils.AreEqual(++a2, r2); + + double4x2 a3 = double4x2(-264.38006246480165, 223.23241792583485, -71.076339993195745, -388.22791713673058, 131.28316909227669, 22.304934273615913, -480.76047228312143, 200.95175967037289); + double4x2 r3 = double4x2(-263.38006246480165, 224.23241792583485, -70.076339993195745, -387.22791713673058, 132.28316909227669, 23.304934273615913, -479.76047228312143, 201.95175967037289); + TestUtils.AreEqual(++a3, r3); + } + + [TestCompiler] + public static void double4x2_operator_postfix_inc() + { + double4x2 a0 = double4x2(322.94356623429042, 472.05246542024076, 203.48761925636211, -49.854570650427888, -31.420532002775246, 455.33662459595905, 271.45466840986842, 55.736877228942149); + double4x2 r0 = double4x2(322.94356623429042, 472.05246542024076, 203.48761925636211, -49.854570650427888, -31.420532002775246, 455.33662459595905, 271.45466840986842, 55.736877228942149); + TestUtils.AreEqual(a0++, r0); + + double4x2 a1 = double4x2(153.75031645305, -427.40105100506969, 215.11022744658874, 159.86103184514729, -333.05045262586816, 241.46487509527469, 287.22045649551808, -170.10464366250886); + double4x2 r1 = double4x2(153.75031645305, -427.40105100506969, 215.11022744658874, 159.86103184514729, -333.05045262586816, 241.46487509527469, 287.22045649551808, -170.10464366250886); + TestUtils.AreEqual(a1++, r1); + + double4x2 a2 = double4x2(-270.65246380057766, 454.48881003562769, -449.92732045144186, 209.52264294844247, -311.43587103087259, 69.731466087387616, -232.29964433996923, -341.49855271982892); + double4x2 r2 = double4x2(-270.65246380057766, 454.48881003562769, -449.92732045144186, 209.52264294844247, -311.43587103087259, 69.731466087387616, -232.29964433996923, -341.49855271982892); + TestUtils.AreEqual(a2++, r2); + + double4x2 a3 = double4x2(188.00656685047159, 25.565661203845252, -463.72565982478005, 504.44898509627626, -310.1449584020977, -117.39846258861871, 403.50871271803453, -111.27954178269931); + double4x2 r3 = double4x2(188.00656685047159, 25.565661203845252, -463.72565982478005, 504.44898509627626, -310.1449584020977, -117.39846258861871, 403.50871271803453, -111.27954178269931); + TestUtils.AreEqual(a3++, r3); + } + + [TestCompiler] + public static void double4x2_operator_prefix_dec() + { + double4x2 a0 = double4x2(-416.20121712992022, -96.637880131899351, -50.145671629414721, -207.31644759295341, 439.47906156977592, -304.40081920493435, 337.96895734312432, 246.08898293510492); + double4x2 r0 = double4x2(-417.20121712992022, -97.637880131899351, -51.145671629414721, -208.31644759295341, 438.47906156977592, -305.40081920493435, 336.96895734312432, 245.08898293510492); + TestUtils.AreEqual(--a0, r0); + + double4x2 a1 = double4x2(171.96452935597142, 298.28480710568135, 326.50782338087811, 400.720900006928, -478.03137253133178, -326.45297852459038, -24.584499132160317, 112.79684668071422); + double4x2 r1 = double4x2(170.96452935597142, 297.28480710568135, 325.50782338087811, 399.720900006928, -479.03137253133178, -327.45297852459038, -25.584499132160317, 111.79684668071422); + TestUtils.AreEqual(--a1, r1); + + double4x2 a2 = double4x2(-341.97629300783217, -79.635249413380052, -131.0041454448384, 147.89369566174867, -15.70865417258284, 188.75845274178243, 307.79193582562357, -406.667706917351); + double4x2 r2 = double4x2(-342.97629300783217, -80.635249413380052, -132.0041454448384, 146.89369566174867, -16.70865417258284, 187.75845274178243, 306.79193582562357, -407.667706917351); + TestUtils.AreEqual(--a2, r2); + + double4x2 a3 = double4x2(181.47510703908051, -505.2156915633081, -372.24192898918034, -4.0317671317754957, 83.767736235525376, -30.631410374600193, -436.90656181653333, -51.668396258572329); + double4x2 r3 = double4x2(180.47510703908051, -506.2156915633081, -373.24192898918034, -5.0317671317754957, 82.767736235525376, -31.631410374600193, -437.90656181653333, -52.668396258572329); + TestUtils.AreEqual(--a3, r3); + } + + [TestCompiler] + public static void double4x2_operator_postfix_dec() + { + double4x2 a0 = double4x2(-376.59242719066907, 16.969734438215255, -0.25066399585949739, -202.32328734282555, 409.55752940175944, 47.856652520530247, -281.11170376516492, -262.062590959511); + double4x2 r0 = double4x2(-376.59242719066907, 16.969734438215255, -0.25066399585949739, -202.32328734282555, 409.55752940175944, 47.856652520530247, -281.11170376516492, -262.062590959511); + TestUtils.AreEqual(a0--, r0); + + double4x2 a1 = double4x2(-182.40572866350681, -129.23265582380475, -332.15495768755443, -261.00890052551819, 205.46112570793423, -230.22777878038016, -483.06653784358247, 378.64123433578811); + double4x2 r1 = double4x2(-182.40572866350681, -129.23265582380475, -332.15495768755443, -261.00890052551819, 205.46112570793423, -230.22777878038016, -483.06653784358247, 378.64123433578811); + TestUtils.AreEqual(a1--, r1); + + double4x2 a2 = double4x2(487.34482287212495, -357.05418960985457, -396.30206627226528, 279.42425287860647, 115.86774092347719, -20.823201427619551, 323.40538063803933, 379.15614026559342); + double4x2 r2 = double4x2(487.34482287212495, -357.05418960985457, -396.30206627226528, 279.42425287860647, 115.86774092347719, -20.823201427619551, 323.40538063803933, 379.15614026559342); + TestUtils.AreEqual(a2--, r2); + + double4x2 a3 = double4x2(311.29903068733358, -428.25672479544613, -425.2883748604396, -194.64129671577427, -258.84836089743692, -208.98576388553982, -313.42591657928466, 178.31252797800698); + double4x2 r3 = double4x2(311.29903068733358, -428.25672479544613, -425.2883748604396, -194.64129671577427, -258.84836089743692, -208.98576388553982, -313.42591657928466, 178.31252797800698); + TestUtils.AreEqual(a3--, r3); + } + + + } +} diff --git a/package/Tests/Tests/Shared/TestDouble4x2.gen.cs.meta b/package/Tests/Tests/Shared/TestDouble4x2.gen.cs.meta new file mode 100755 index 000000000..9e9f48094 --- /dev/null +++ b/package/Tests/Tests/Shared/TestDouble4x2.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a5dfd972b64a9fd4193994214128a39b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/package/Tests/Tests/Shared/TestDouble4x3.gen.cs b/package/Tests/Tests/Shared/TestDouble4x3.gen.cs new file mode 100755 index 000000000..577d53632 --- /dev/null +++ b/package/Tests/Tests/Shared/TestDouble4x3.gen.cs @@ -0,0 +1,949 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using NUnit.Framework; +using static Unity.Mathematics.math; +using Burst.Compiler.IL.Tests; + +namespace Unity.Mathematics.Tests +{ + [TestFixture] + public class TestDouble4x3 + { + [TestCompiler] + public static void double4x3_zero() + { + TestUtils.AreEqual(double4x3.zero.c0.x, 0.0); + TestUtils.AreEqual(double4x3.zero.c0.y, 0.0); + TestUtils.AreEqual(double4x3.zero.c0.z, 0.0); + TestUtils.AreEqual(double4x3.zero.c0.w, 0.0); + TestUtils.AreEqual(double4x3.zero.c1.x, 0.0); + TestUtils.AreEqual(double4x3.zero.c1.y, 0.0); + TestUtils.AreEqual(double4x3.zero.c1.z, 0.0); + TestUtils.AreEqual(double4x3.zero.c1.w, 0.0); + TestUtils.AreEqual(double4x3.zero.c2.x, 0.0); + TestUtils.AreEqual(double4x3.zero.c2.y, 0.0); + TestUtils.AreEqual(double4x3.zero.c2.z, 0.0); + TestUtils.AreEqual(double4x3.zero.c2.w, 0.0); + } + + [TestCompiler] + public static void double4x3_operator_equal_wide_wide() + { + double4x3 a0 = double4x3(-135.18925172425304, -49.094127439471947, 169.12980778940482, 240.80529772527757, 314.73919382446411, 442.39301916695808, 177.92444881141398, 335.53340283759564, 168.1544516869609, 350.72955982327903, 367.17843668869625, 46.941470406456574); + double4x3 b0 = double4x3(-220.01464591734793, 66.980020792679852, 499.20158576369363, -371.113114291389, 208.44865212610398, 390.80369133074009, -72.443806920407269, 362.97643273089841, 194.6783255053117, 471.6448635867074, -404.04466719368691, -144.69675476136467); + bool4x3 r0 = bool4x3(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + double4x3 a1 = double4x3(188.76415094582558, -97.211392209497944, -293.3210057193977, -234.82292353120766, 417.03371329653714, 26.386443388828297, 269.24572265764959, 29.474191440955792, 479.48521469509467, -237.23094355186026, -221.98371349181224, -506.67253255596034); + double4x3 b1 = double4x3(-494.44664334433463, -252.97038209297244, 234.41711746641306, 398.72397465199413, 260.42872083393331, 370.14420502732708, 89.579862397899774, -434.81684347373289, -109.84533815730612, 336.9730161805511, -409.15498156526826, 500.38755273278218); + bool4x3 r1 = bool4x3(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + double4x3 a2 = double4x3(-22.98943401453522, 487.26083802024868, -419.73195596213077, 337.20329324212082, 245.04388367619549, 390.21586984685428, 84.412977973191573, 434.20789142800868, -68.728424342688356, 485.76997803420295, 413.16974969076443, -418.26928992675118); + double4x3 b2 = double4x3(-174.08180888652885, 395.10115379612012, 350.33930723291792, -243.14458453056614, -416.39737267810727, 151.5764511337394, -18.224320181749931, -431.67792364194895, -468.3309554850361, 429.49572797748056, 477.38919781026857, -433.42541071093893); + bool4x3 r2 = bool4x3(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + double4x3 a3 = double4x3(-346.79586593564409, 504.15964889161273, 345.18627635817336, -434.71304126955243, -499.77411078837429, 282.01905192156278, 259.15627944616426, 306.4559306141249, 435.22542759181249, -386.89967864886842, 211.3639925510455, -7.2298214469244044); + double4x3 b3 = double4x3(273.54640329701192, -34.976225153997632, 221.96845422590548, 85.919132511093835, -85.598944942280184, 392.76080316713114, -117.92407732732784, -445.30559393638077, -242.46897208060557, 173.64309533575693, 389.8977403072164, -14.290465123155343); + bool4x3 r3 = bool4x3(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void double4x3_operator_equal_wide_scalar() + { + double4x3 a0 = double4x3(65.671194345537174, 404.41550440546848, -269.7301577393572, 83.630607882342588, 152.99450476141385, -155.86829836474186, 314.67125597348024, 386.36515325417986, 290.04894007837811, -132.63519460178691, -65.667489797653388, -69.683271678948415); + double b0 = (-155.8157547245807); + bool4x3 r0 = bool4x3(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + double4x3 a1 = double4x3(-191.19075521789063, -232.89569221851218, -319.14406481345372, -49.701092981594172, -300.88189925853248, 333.39685193328046, 386.377503336583, -296.70189084517858, -309.11719741910565, 141.54237968360189, -227.32334314441465, 83.872881689981); + double b1 = (186.84520086406042); + bool4x3 r1 = bool4x3(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + double4x3 a2 = double4x3(-410.91687483848858, -390.10359329269437, 36.574313896044259, -427.54144235492754, -268.17085111707956, 175.81170590958175, -193.47994694182648, 291.05195368968509, 423.97165723516218, -429.87391849508225, -275.15694750247383, -56.332365300661138); + double b2 = (110.50128345866744); + bool4x3 r2 = bool4x3(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + double4x3 a3 = double4x3(-95.835959717554942, 253.00615632394613, -300.50952949212376, 314.86654320120181, 195.61619886924336, -26.128909838445907, -284.7746838465215, -242.67206560944771, 140.36059886792702, 505.64434194268858, 506.5379443143205, -502.369801993654); + double b3 = (-124.86533385369245); + bool4x3 r3 = bool4x3(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void double4x3_operator_equal_scalar_wide() + { + double a0 = (36.383921878591195); + double4x3 b0 = double4x3(-400.48919958644046, -71.286823544319191, 156.97811491646712, -225.23872791288363, 499.14180993435059, -211.97992358542047, 428.31192394174263, -489.50133322621758, -5.6915457275190988, -30.865948453017495, -362.98307221149241, 184.50319322594589); + bool4x3 r0 = bool4x3(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + double a1 = (-160.47062142215231); + double4x3 b1 = double4x3(316.66882315122928, 390.36923879681581, 505.10510301268891, -294.64870967280524, 443.19909283295226, 96.559236333034619, -257.01294601010761, -245.05497538533757, 326.46485176983515, -23.959890138339176, -168.6948808025079, 386.24859279498855); + bool4x3 r1 = bool4x3(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + double a2 = (-227.09065185631192); + double4x3 b2 = double4x3(-336.61242524562982, 365.10812752559229, -405.39083952707745, -473.99549959320365, 298.43535174915348, -149.86322386090796, 450.06639191604518, 153.47643358701669, 56.287803437694834, 39.342111844263059, -350.40371744260369, -482.71723221368961); + bool4x3 r2 = bool4x3(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + double a3 = (239.96540772168214); + double4x3 b3 = double4x3(-3.4060323254233253, -1.4948394305514512, 105.96042184995508, 151.53752787017152, 63.283196240329744, -289.69317378182575, 137.55377942768564, -247.66646945088473, -339.42056409428858, 23.238285313937013, 21.177870045033274, 477.036560995987); + bool4x3 r3 = bool4x3(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void double4x3_operator_not_equal_wide_wide() + { + double4x3 a0 = double4x3(279.99414576217259, -43.342018386042696, -465.72473523846116, 317.46655645848557, 85.714987079480238, 360.89050572034466, 366.08152668833804, 154.5428384070018, 332.426219856565, 397.11323160543725, -431.3749584776233, 489.01079319837072); + double4x3 b0 = double4x3(-460.912120318465, -476.00904844515446, 468.13642070635058, -341.01254312182431, -62.658060341448561, -458.80166718866752, -457.73023316717251, -59.523265627922171, 3.024243117787023, 155.81276352508587, -19.839918384253963, -6.0169332055453992); + bool4x3 r0 = bool4x3(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + double4x3 a1 = double4x3(398.43358320669904, -489.81794594685454, 171.4049242340983, -67.829682620162941, -192.27871498478515, 227.84082494854965, 62.138187675801191, 262.18648755838467, -404.05309052209049, 34.449567572423007, -204.79578719138902, -285.41180314003111); + double4x3 b1 = double4x3(-406.20792145571107, -102.42070083619126, -40.362921018322425, 452.67542645552919, 93.257571979080126, -258.37806689849964, -184.04980405794913, -379.23531192319251, -370.68729537105526, -255.94724023339677, 29.055771602809273, 322.40763226263584); + bool4x3 r1 = bool4x3(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + double4x3 a2 = double4x3(-72.206820760018559, 444.74925228801987, 238.81779991780309, 365.18011563139976, -437.92291351683571, -362.4426316518535, 445.95436665320506, -0.41746735592255391, -506.82837772128562, 245.47704779611763, -173.57105811572217, 390.33854669627669); + double4x3 b2 = double4x3(415.07170005099465, -467.72613189542949, -433.78467508488552, -212.16593585357344, 474.67491481950265, 452.48318621724991, -92.112742705323171, -385.92209190219739, 420.21507926481547, -239.17604529074208, -99.079094694498508, 4.4760239145141441); + bool4x3 r2 = bool4x3(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + double4x3 a3 = double4x3(252.83775555940235, 47.865854047176413, 457.710514043323, -313.22114601415637, 391.20388168432, 481.7861199238273, 26.887826693657757, -298.14237346227389, 240.07745634768037, -332.45515338166388, -333.60717240609563, -313.18967857639757); + double4x3 b3 = double4x3(264.34854352862976, 451.31233689343196, 232.95803343176749, -142.62218839611029, -300.22557820949032, 268.33322418310365, -112.1035507247334, -270.49403989989963, -71.9932391978769, 99.463272856298545, 321.70330134113476, 200.05965218323263); + bool4x3 r3 = bool4x3(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void double4x3_operator_not_equal_wide_scalar() + { + double4x3 a0 = double4x3(-155.44111282911206, -19.426602134214079, 174.63305409934048, 507.9207296352464, 59.177048472304364, 171.15146430356026, -58.923273352404692, -398.17684835855704, 492.20105361016522, -165.24150879925185, 270.34102333259818, -380.24326222960059); + double b0 = (-393.41354173860213); + bool4x3 r0 = bool4x3(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + double4x3 a1 = double4x3(501.8990516615562, 458.40042302496749, 46.771004937016869, 161.45995123752391, 261.51423442620512, -145.61239559278471, -0.44992661497087738, 350.46143047439932, 202.22103724359579, 242.66402232025939, 382.67707675633812, -468.96794221781562); + double b1 = (-134.34545642433011); + bool4x3 r1 = bool4x3(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + double4x3 a2 = double4x3(-497.45947789468778, -328.58774844211888, -506.49033260088896, 449.34814640942409, 210.77098784724762, 249.18179690520367, -338.46854058768065, 229.67068420614612, -76.543291365980792, 317.28609314434516, 401.93959612489664, 210.98484502126689); + double b2 = (-80.932258882062627); + bool4x3 r2 = bool4x3(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + double4x3 a3 = double4x3(-147.09631616766393, 207.73136410849702, 284.39206208120663, -509.0852923379677, 414.30764718274941, -52.294460082563774, -140.43793660981487, -316.78779402225643, -358.69683592333308, 312.31897249460178, 270.62946260656668, -140.01671153866533); + double b3 = (-193.39904531901658); + bool4x3 r3 = bool4x3(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void double4x3_operator_not_equal_scalar_wide() + { + double a0 = (478.35313938481409); + double4x3 b0 = double4x3(459.55319592894671, 436.45324369727314, -488.71416806090349, 392.76794475725296, -266.73665369056937, 338.55788270503183, -338.10012475498957, -152.3145445102428, -452.82067868338, 209.43931422449612, 50.107968592135194, 372.4343656843688); + bool4x3 r0 = bool4x3(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + double a1 = (-488.0213141329686); + double4x3 b1 = double4x3(489.74075697816011, 270.40006149485714, -472.8467831429312, -286.85046090132113, -384.69186681541237, 443.42352959300558, 358.74720900074919, -15.414077527548216, -342.17916194637269, 468.96750400446706, -130.56808501601597, 401.7858013593526); + bool4x3 r1 = bool4x3(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + double a2 = (-268.35225761511936); + double4x3 b2 = double4x3(-239.231014124691, 411.38655800902586, 139.76932460617707, 334.52206031164246, -223.62923036498449, -12.488468414400018, 113.46889238872984, -189.65225204716074, -212.84655127900027, 306.1256321902041, -178.33037885386977, 382.14199203166277); + bool4x3 r2 = bool4x3(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + double a3 = (-340.86559478420094); + double4x3 b3 = double4x3(-17.580244787773211, -409.87484498036787, -349.70166914057995, 275.85432756871649, -229.37194906425287, -127.50573283410898, 90.753436369240944, -422.08713574990963, -2.4475424301100475, -280.55170954417054, -484.37435959483236, -33.76342226647); + bool4x3 r3 = bool4x3(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void double4x3_operator_less_wide_wide() + { + double4x3 a0 = double4x3(51.710243010758518, -313.85556450200062, 283.04767359562572, 235.02188621974642, 44.0783565249659, -207.25566659088042, 3.3829410091894943, -144.30134326978651, -69.369597705718888, -135.66796762108243, -194.78736576567746, -33.473868147225062); + double4x3 b0 = double4x3(-261.83523881707117, -19.810742149041403, -149.25882084167506, 205.99822316225539, -306.02438535635565, 102.12168006884008, 231.90633760760829, 179.49885305180158, 473.22488496882136, 15.891647107848712, 270.04990614114786, 490.91400240869916); + bool4x3 r0 = bool4x3(false, true, false, false, false, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 < b0, r0); + + double4x3 a1 = double4x3(-19.675088653189619, 423.23796697297973, -71.698315415390937, -501.88598870760109, 7.6438391244242894, 302.26289214857991, -140.55051786291904, -436.586703265359, -351.441728040316, 364.97084896870467, 301.894133946809, 407.55097336673691); + double4x3 b1 = double4x3(-185.73412164753961, 76.433086669274189, 97.75231246731812, 419.30080600236579, 73.953208242521214, 481.03232382285978, 7.00747371046225, -7.3240954910051528, -413.07575793428146, -154.1188920261892, 449.20288989003882, 502.01430797111914); + bool4x3 r1 = bool4x3(false, false, true, true, true, true, true, true, false, false, true, true); + TestUtils.AreEqual(a1 < b1, r1); + + double4x3 a2 = double4x3(269.10777128353141, 462.98824737173891, 223.8841808884797, -287.18923319838439, 283.63862933015389, 511.86434650414822, -60.496787814654795, -234.30346142235373, -316.13839664875456, -417.52215905558421, 441.6434454590285, -191.95062908527939); + double4x3 b2 = double4x3(-382.31586259525079, 251.53517758638372, 143.17396957388803, 293.66033686961066, -292.76956691069972, -43.218204756834666, -353.41120044952777, 458.32604405764766, -114.55647259324627, 441.42973276666817, -113.33366709264629, 435.622928583819); + bool4x3 r2 = bool4x3(false, false, false, true, false, false, false, true, true, true, false, true); + TestUtils.AreEqual(a2 < b2, r2); + + double4x3 a3 = double4x3(397.81158823418036, -144.66662485183525, 417.0790571724433, -322.9801315381099, -81.285095014276521, 319.32531538574267, 146.76406509557933, -316.58337488611386, -150.85755855909434, -314.60630550729405, 7.14312720631392, -458.82730767635036); + double4x3 b3 = double4x3(383.65612786992267, -293.711607831396, -391.35497612103586, 43.122021456771563, 433.2236590018606, -201.38245282014014, -241.42116629398481, 376.46986955053637, -503.39744472103075, -359.78095095221931, 118.63150149147566, -510.03052759078821); + bool4x3 r3 = bool4x3(false, false, false, true, true, false, false, true, false, false, true, false); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void double4x3_operator_less_wide_scalar() + { + double4x3 a0 = double4x3(-221.86977325280651, -121.54646807608498, -97.52392511140738, 479.88107775146193, 67.118990214131259, 137.32880574899207, 282.96659601990439, 258.27909362422258, -111.41316061439608, -288.08113278452356, 82.665427008022334, -361.64292042406413); + double b0 = (199.06751808853244); + bool4x3 r0 = bool4x3(true, true, true, false, true, true, false, false, true, true, true, true); + TestUtils.AreEqual(a0 < b0, r0); + + double4x3 a1 = double4x3(-68.088202269788951, -66.703050406045747, -78.762971199472872, 25.727694284975428, 101.37087182950734, -330.442660724019, -48.920521520506838, 359.60440914686978, -8.15008759878117, 241.27682101040932, -183.43778165776178, 423.02713580756779); + double b1 = (12.788020378345664); + bool4x3 r1 = bool4x3(true, true, true, false, false, true, true, false, true, false, true, false); + TestUtils.AreEqual(a1 < b1, r1); + + double4x3 a2 = double4x3(-334.62272349680904, 300.41017617863145, 297.92523850962766, -492.108162870681, -395.80724806143309, 95.788790032169231, -220.62145791790516, -455.37556740985048, 360.29156344025, -296.37211884948056, 272.4883617239484, 360.20793097103387); + double b2 = (-98.315578744893685); + bool4x3 r2 = bool4x3(true, false, false, true, true, false, true, true, false, true, false, false); + TestUtils.AreEqual(a2 < b2, r2); + + double4x3 a3 = double4x3(389.7274403002707, -400.61523384629527, -85.469117442830054, -467.70215604626674, -51.387892031757133, 201.76466927387037, -47.8412668927765, -180.74006255936814, -409.01566929789988, 229.6990183469369, 176.19784816363722, -410.45517439882047); + double b3 = (68.736721786082171); + bool4x3 r3 = bool4x3(false, true, true, true, true, false, true, true, true, false, false, true); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void double4x3_operator_less_scalar_wide() + { + double a0 = (-250.4849370692321); + double4x3 b0 = double4x3(-377.19654887597846, -505.14754104295167, 375.92672198634909, 110.17393474940855, -118.09757452742082, -40.45089079833167, -299.74430932651478, 31.437125935888389, -458.904539560389, 13.684679276163024, -458.50690839183841, 248.27646624682302); + bool4x3 r0 = bool4x3(false, false, true, true, true, true, false, true, false, true, false, true); + TestUtils.AreEqual(a0 < b0, r0); + + double a1 = (389.23142999654237); + double4x3 b1 = double4x3(488.74553679337055, -221.63786731550368, -424.26720329013989, 249.05904948388184, -22.136127720650336, -442.24773928255206, -340.85755721705851, -95.1117256130612, 15.409410245441563, 87.292497437117845, 495.06764220402931, 316.01850309782594); + bool4x3 r1 = bool4x3(true, false, false, false, false, false, false, false, false, false, true, false); + TestUtils.AreEqual(a1 < b1, r1); + + double a2 = (-125.56811505442863); + double4x3 b2 = double4x3(122.16476803746298, 96.75540046429046, -228.90633808304852, -143.95269662884652, -230.238279688283, -327.61262885090548, 103.39802770661095, 434.488835775521, -157.45019228637693, 190.57215914063727, 108.25831871305513, 132.55076056930739); + bool4x3 r2 = bool4x3(true, true, false, false, false, false, true, true, false, true, true, true); + TestUtils.AreEqual(a2 < b2, r2); + + double a3 = (-431.51522155828553); + double4x3 b3 = double4x3(-192.20350727448402, -431.83499284825984, -85.581249515331024, 328.67053977058765, 273.5778516612844, -178.66905816768718, 352.63627235621038, -82.605815687498932, 238.90886675515628, 291.3353070185218, 183.35733875229835, -185.03260597262187); + bool4x3 r3 = bool4x3(true, false, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void double4x3_operator_greater_wide_wide() + { + double4x3 a0 = double4x3(-229.29066501804192, 505.536608216137, -73.80706862071861, 100.29203777215071, -419.21478124112582, -159.55974753180504, -396.7703608929973, 127.03739482119556, 489.13989733585151, 51.91890885863404, 155.38475544535777, -135.63165027258526); + double4x3 b0 = double4x3(-445.84502407808088, -420.03529210576568, 299.02440108872224, -13.880978829171966, 151.56173593903043, -163.5094302461992, -391.09603733154762, 479.2837710228207, -77.674873149802409, -46.5841996886694, -415.37701888353422, 71.466978344818131); + bool4x3 r0 = bool4x3(true, true, false, true, false, true, false, false, true, true, true, false); + TestUtils.AreEqual(a0 > b0, r0); + + double4x3 a1 = double4x3(-425.97813554572787, -228.430505143679, 383.03834909155887, 136.53358298937496, 8.602427725029429, -251.3243674018068, -345.954920691417, -170.565928777012, -293.25441588706076, 139.1249764613458, 214.3030732675935, 238.76991211565678); + double4x3 b1 = double4x3(-206.06102643071722, 360.83628218287424, 236.96878658838978, 14.550342328171382, 364.735178402036, -159.0612996365229, 226.63117490831348, 182.79602512288659, 341.83937398616195, -79.130463875425278, -247.29681956362765, 164.58913882290437); + bool4x3 r1 = bool4x3(false, false, true, true, false, false, false, false, false, true, true, true); + TestUtils.AreEqual(a1 > b1, r1); + + double4x3 a2 = double4x3(105.53519086983761, -170.92529280992471, 26.98023964230913, -188.92831405854241, 201.78662619450438, -506.05715656003781, 15.454906232401186, 115.08067207926911, -496.97184705034448, 339.88814202877143, 372.22833007025918, 313.2386917142378); + double4x3 b2 = double4x3(-352.15977327533056, 9.8226540134394327, 186.72162613026876, -325.91364613450764, -77.930370128681147, -379.74604219000139, 251.45575558927646, -144.1835678295156, 337.88991014002352, -249.50553929503332, -225.90130554228148, -249.49127757246202); + bool4x3 r2 = bool4x3(true, false, false, true, true, false, false, true, false, true, true, true); + TestUtils.AreEqual(a2 > b2, r2); + + double4x3 a3 = double4x3(-419.10894437279035, -265.32978380160864, -42.501995344880015, 369.16390507722451, 67.169061453626, -256.69890868696336, -104.10592060168551, 499.57010268586225, 41.663492460578482, 151.15207416897272, 220.68833146835129, -344.65888110951471); + double4x3 b3 = double4x3(381.12288373574745, 325.54538145919582, 455.49881360283996, 333.31868401789973, 118.98035603341668, 223.19812236688949, -385.28907102406447, 333.88080159476067, -437.41072126729915, 243.97544943726405, -302.81988658701061, -32.710171476337223); + bool4x3 r3 = bool4x3(false, false, false, true, false, false, true, true, true, false, true, false); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void double4x3_operator_greater_wide_scalar() + { + double4x3 a0 = double4x3(11.156317000815761, -411.02322382993214, 385.88556188432756, -485.10304831206008, -491.18003033622171, 405.17534632476759, 173.57509740329124, 69.269281181166548, 501.30683183172107, -367.027771405423, -86.124509613087639, -489.09058998948456); + double b0 = (-302.81693877969724); + bool4x3 r0 = bool4x3(true, false, true, false, false, true, true, true, true, false, true, false); + TestUtils.AreEqual(a0 > b0, r0); + + double4x3 a1 = double4x3(-172.51816066192379, -236.41493498367021, -238.8945134798505, -27.239137900638923, 471.77934072528933, 240.16453253485474, -481.47807930478734, 185.59438547193747, 33.294723764664809, -510.22814702905163, -183.28619607877278, -386.12766260007754); + double b1 = (-18.149639853346002); + bool4x3 r1 = bool4x3(false, false, false, false, true, true, false, true, true, false, false, false); + TestUtils.AreEqual(a1 > b1, r1); + + double4x3 a2 = double4x3(-13.638212448748845, -261.86596477304863, 52.24950768996473, 16.323217637987455, -410.51010985416832, -262.26747978025463, -458.25599000335484, -218.86613069235631, -34.692342535915031, 290.57303752124915, 180.263321722049, -482.86394690110529); + double b2 = (-7.3478887115362568); + bool4x3 r2 = bool4x3(false, false, true, true, false, false, false, false, false, true, true, false); + TestUtils.AreEqual(a2 > b2, r2); + + double4x3 a3 = double4x3(100.70627574841785, 501.31978749731547, -289.28097046971368, -25.849692595121326, 455.1624288294289, -63.3173549470107, -17.446765669363913, 53.017790103805169, 88.819595139855323, 182.3580006018085, -428.92720933860505, 408.336862515815); + double b3 = (180.6725166685286); + bool4x3 r3 = bool4x3(false, true, false, false, true, false, false, false, false, true, false, true); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void double4x3_operator_greater_scalar_wide() + { + double a0 = (453.54610201974685); + double4x3 b0 = double4x3(-226.20441423459187, -423.46500487973213, 409.40550227156166, 453.87706277048073, 87.475727837288673, 113.79560308987072, 176.40926154721956, -140.44002944810319, -182.48286804113673, -158.29329188088576, -162.68531830733889, -193.328676075362); + bool4x3 r0 = bool4x3(true, true, true, false, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 > b0, r0); + + double a1 = (230.18129955519987); + double4x3 b1 = double4x3(-102.58784227379965, 392.5205878655056, -177.47865947404813, -10.295010809924008, -24.048938524000789, 172.44867499752377, 374.04800503982608, -368.99763958947619, -210.19528804076617, 149.47022325800276, -281.34327019441093, -100.46916608720511); + bool4x3 r1 = bool4x3(true, false, true, true, true, true, false, true, true, true, true, true); + TestUtils.AreEqual(a1 > b1, r1); + + double a2 = (304.86444320569956); + double4x3 b2 = double4x3(-361.52483360912879, -372.45236056505348, -33.909547583157917, -69.595290454847429, -460.43241498453187, -309.34166278938841, 486.13155602204222, 471.92098138850224, 479.36154411703421, -107.00416784500896, 331.63653746789157, -340.84013120310385); + bool4x3 r2 = bool4x3(true, true, true, true, true, true, false, false, false, true, false, true); + TestUtils.AreEqual(a2 > b2, r2); + + double a3 = (-384.21461147079924); + double4x3 b3 = double4x3(-451.7265658097931, 467.97876355982328, -236.5691269545672, 44.654746314815611, -285.79786671595548, 42.7309816082618, 338.18510762703841, 274.01702202205411, -108.60437088301609, -211.37325606652223, -19.004157313613291, 194.114679188521); + bool4x3 r3 = bool4x3(true, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void double4x3_operator_less_equal_wide_wide() + { + double4x3 a0 = double4x3(240.09053169940159, 462.2131528622532, 293.08251561461134, -427.87067361728782, -405.5227226715175, 204.59190211286386, 294.670105832941, -327.56444445604666, -456.12326667091031, 282.3012408140587, 421.8811549720732, -311.71284809322697); + double4x3 b0 = double4x3(-81.203838624620744, 493.63743876555816, -411.47211451617636, 99.164449499530974, -295.66769875943089, -480.46254824123463, 74.414040361723892, 260.916124226952, 306.17329730939741, 139.56480438055689, -505.75247955031341, -489.62680958659706); + bool4x3 r0 = bool4x3(false, true, false, true, true, false, false, true, true, false, false, false); + TestUtils.AreEqual(a0 <= b0, r0); + + double4x3 a1 = double4x3(84.5674827492644, 447.24461647832982, -154.49435217422172, -424.36474986763892, 36.684489505684269, 267.07029283562224, 307.89391937288167, -351.76015369582927, -157.36036570247279, 152.70902712303632, 372.26716750313858, 202.36828837281485); + double4x3 b1 = double4x3(-280.03260267899958, 303.15991058161478, 511.19015788994272, -104.65973358259527, 95.1465771641333, -125.6363432992419, 376.239777024947, -415.7747320680761, -47.481050275024529, 117.72210293529656, 469.37837264937275, -263.04235780567041); + bool4x3 r1 = bool4x3(false, false, true, true, true, false, true, false, true, false, true, false); + TestUtils.AreEqual(a1 <= b1, r1); + + double4x3 a2 = double4x3(-77.043453014010311, 438.18483253856414, 260.28234088620275, 386.03408759927106, -281.49099053139378, -102.9300439837063, -346.71673099450618, -258.34119832624737, -383.30294889179197, -5.1470377469188975, 319.34374752610165, 465.02220485407031); + double4x3 b2 = double4x3(-216.00231109187115, 66.734246046624207, 99.218598173567329, 233.843011249715, 439.8399624488502, 61.115118293610976, -219.03058419890266, -404.71288056146022, -202.74836430454087, -312.47647133119244, 310.07189884319519, -320.3630436958573); + bool4x3 r2 = bool4x3(false, false, false, false, true, true, true, false, true, false, false, false); + TestUtils.AreEqual(a2 <= b2, r2); + + double4x3 a3 = double4x3(145.93345100522663, -215.07482991697026, -146.46150667334979, -349.8939770897357, 29.599108948185631, -131.79663640437491, -438.99467464862141, 147.05792553120193, 221.11248956486236, -356.14535276784807, -32.830178991346713, 442.94199892642996); + double4x3 b3 = double4x3(186.07597288213481, -42.637794752902266, 82.565048971476472, 127.18911009989176, 198.28697428400017, -450.49204108235057, 20.901004085736872, 449.46589133211683, -478.77271841409276, 380.05395692403147, 99.1247280105598, -450.32978150357019); + bool4x3 r3 = bool4x3(true, true, true, true, true, false, true, true, false, true, true, false); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void double4x3_operator_less_equal_wide_scalar() + { + double4x3 a0 = double4x3(309.1924356469849, 69.673792633076118, -101.72418622939114, -315.97240629604664, -346.01106731314724, 424.15386577330241, -410.87006945669191, -483.90265320423185, 183.82114538169515, 320.44249287268258, -257.87003791419329, -386.801748694294); + double b0 = (292.92427148154206); + bool4x3 r0 = bool4x3(false, true, true, true, true, false, true, true, true, false, true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + double4x3 a1 = double4x3(-182.9388249772316, 485.31159304329731, 373.56911652794531, 259.15151822713744, 450.13007828692446, -128.5255282523695, -43.874866744445114, 457.38574549992836, -77.638293064030961, 479.45184038553941, -499.51644372358754, -398.13294643821797); + double b1 = (349.25012962392077); + bool4x3 r1 = bool4x3(true, false, false, true, false, true, true, false, true, false, true, true); + TestUtils.AreEqual(a1 <= b1, r1); + + double4x3 a2 = double4x3(402.48485893871862, -502.17362308044619, 125.95081263685177, -54.493607308014134, 250.66739737739204, 97.942930982421558, 228.02151809820043, -213.37865243357544, 42.260789175639275, -24.82758070194518, -451.04158684752957, 429.57755132651778); + double b2 = (87.9161055497434); + bool4x3 r2 = bool4x3(false, true, false, true, false, false, false, true, true, true, true, false); + TestUtils.AreEqual(a2 <= b2, r2); + + double4x3 a3 = double4x3(-308.43429031429548, -279.40712011950421, 181.6722582232544, -290.14875401656548, -184.84408411050407, 447.6939139066701, 168.88657696958933, 26.378954661255193, 392.55852789085293, 255.60484015923214, 162.16346867483276, 195.49629482789726); + double b3 = (355.16031114904229); + bool4x3 r3 = bool4x3(true, true, true, true, true, false, true, true, false, true, true, true); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void double4x3_operator_less_equal_scalar_wide() + { + double a0 = (-511.15238141974078); + double4x3 b0 = double4x3(51.159012579898786, 340.44369022010062, 312.81429519914752, 354.19252626699983, 136.39671165142056, -94.767871185563422, 288.544332877055, 304.04282369466625, -148.61806089646092, -506.30010127755816, 27.581254256694251, 48.471146844546865); + bool4x3 r0 = bool4x3(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + double a1 = (104.88351326104419); + double4x3 b1 = double4x3(-488.6858386884843, -480.43516968210935, 421.9366516647566, 239.72105299668431, -101.01844673092404, -283.95147551407638, -55.2435333986038, -455.80483147865385, 131.10721618081777, -461.69878099006542, -388.48285001725094, -258.93605125087129); + bool4x3 r1 = bool4x3(false, false, true, true, false, false, false, false, true, false, false, false); + TestUtils.AreEqual(a1 <= b1, r1); + + double a2 = (-225.2235287284588); + double4x3 b2 = double4x3(-116.01998215355911, -442.59525629626364, 297.33334579008317, 36.687250392831515, 485.09780930220052, 344.44564859217292, 237.59216724969087, 230.39086471795611, -413.98479266370873, -215.90167794744565, 39.5603883450666, 22.947996388630941); + bool4x3 r2 = bool4x3(true, false, true, true, true, true, true, true, false, true, true, true); + TestUtils.AreEqual(a2 <= b2, r2); + + double a3 = (-162.0605676928817); + double4x3 b3 = double4x3(236.73373352584133, -253.95195853614803, -204.71909985538531, -161.61653550044474, -64.3859322370896, -229.815656530585, -484.82564591096047, -135.04042989343424, 351.69478599712943, 111.82539778194644, -249.98255431371859, 435.80731769828469); + bool4x3 r3 = bool4x3(true, false, false, true, true, false, false, true, true, true, false, true); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void double4x3_operator_greater_equal_wide_wide() + { + double4x3 a0 = double4x3(-386.59181302906563, -157.12078221008215, 391.01526445477054, -511.88687133783793, -5.4220387960886569, 287.64527501149348, -122.53520184500849, 7.4814426933794493, 152.94642765491574, 48.986223482054811, 57.338148859021317, 300.46493138953338); + double4x3 b0 = double4x3(153.44301350109424, 49.892483019219981, 78.025787628267835, 138.81373292711271, -225.51057802211056, -339.35611335344436, -373.302078182484, 364.9358934671319, -322.71539870030961, 125.47818165900105, -25.776589167200314, 297.51890792395864); + bool4x3 r0 = bool4x3(false, false, true, false, true, true, true, false, true, false, true, true); + TestUtils.AreEqual(a0 >= b0, r0); + + double4x3 a1 = double4x3(349.25705139211243, 85.749700824613569, -230.95330654408468, 418.7112159294594, -131.03991824530061, -126.51221257378916, -156.81847841889527, 422.37748761772059, -413.08933348818186, 219.44273553576443, 35.591133372667741, 447.18153521380464); + double4x3 b1 = double4x3(73.222349439385539, 462.78374288174496, 393.19134515951919, -95.001432224643168, 381.35702556248611, 93.031928344178937, 254.25326287665087, 90.672789377473691, 348.93816892660141, 161.33763106229605, 79.435611046587837, 420.24346824187944); + bool4x3 r1 = bool4x3(true, false, false, true, false, false, false, true, false, true, false, true); + TestUtils.AreEqual(a1 >= b1, r1); + + double4x3 a2 = double4x3(-223.49299560463663, 302.12299194099523, 459.85272834256887, -347.12802879285442, 364.97808211156075, 212.63543162710755, 504.27608680365427, -142.23296052880255, -132.22179395156996, 303.68380489185631, 265.21013439130513, 9.75437188602723); + double4x3 b2 = double4x3(453.68485209610537, -154.0116427661905, -97.290078923706915, 151.18477613813468, 57.360309865959152, -194.207084984615, -462.67061421958294, 113.38661604439221, -129.35329276386335, 8.1077725925052846, 426.44951434920051, 410.69316477826476); + bool4x3 r2 = bool4x3(false, true, true, false, true, true, true, false, false, true, false, false); + TestUtils.AreEqual(a2 >= b2, r2); + + double4x3 a3 = double4x3(-233.09288631803025, 26.567515147182917, 266.78067529703526, -250.0722254487091, 138.0408142255809, 174.27673848638165, -420.93164678147605, -42.854160567211977, 216.48505435534059, 240.05384623261818, -470.38216875045663, 98.396702573819425); + double4x3 b3 = double4x3(470.31343410458112, 220.39997993241991, -372.87269967276262, -242.17855965447546, 177.50623258273413, -172.63815864019011, 60.722858695649961, 478.25016067840636, 234.30301128807616, 297.82121171514564, 104.58457260233558, -462.41871926859892); + bool4x3 r3 = bool4x3(false, false, true, false, false, true, false, false, false, false, false, true); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void double4x3_operator_greater_equal_wide_scalar() + { + double4x3 a0 = double4x3(495.457423679278, -14.345115906719627, -463.47478053694346, 217.51749215718246, -246.86571776441565, -377.65869706573835, 53.815095211293169, -123.33294373533357, -221.50546441856096, 252.99433410027734, -116.44038277326172, -395.36331028275345); + double b0 = (189.20512804258851); + bool4x3 r0 = bool4x3(true, false, false, true, false, false, false, false, false, true, false, false); + TestUtils.AreEqual(a0 >= b0, r0); + + double4x3 a1 = double4x3(164.77259667439978, 355.83704559683667, 184.19556316369938, 273.01225555735277, -418.14240308205706, 249.38409697701411, 396.39213938098032, 332.66542044871744, 243.76141392614761, -335.121477998384, -302.08690442800844, 254.44223344253476); + double b1 = (-287.00733889593153); + bool4x3 r1 = bool4x3(true, true, true, true, false, true, true, true, true, false, false, true); + TestUtils.AreEqual(a1 >= b1, r1); + + double4x3 a2 = double4x3(179.00504287472234, -331.27167788672807, 307.89058008226129, -388.57851737950858, 150.60576422075076, -219.89257989632551, -491.68100213058341, 30.997067704329766, 199.23222861030706, -74.50001743924804, -343.38647357718389, 216.0315855555383); + double b2 = (71.176674637560154); + bool4x3 r2 = bool4x3(true, false, true, false, true, false, false, false, true, false, false, true); + TestUtils.AreEqual(a2 >= b2, r2); + + double4x3 a3 = double4x3(-420.40314813163275, -336.6411160606151, 317.0945958183587, -262.42494666875569, -228.41125522759336, 123.46545964268296, 264.10247362037308, 223.62332569045168, 440.53538366804617, -420.72700830024064, 74.844301497025526, -177.07789405485516); + double b3 = (-78.384021080277876); + bool4x3 r3 = bool4x3(false, false, true, false, false, true, true, true, true, false, true, false); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void double4x3_operator_greater_equal_scalar_wide() + { + double a0 = (215.43534169692327); + double4x3 b0 = double4x3(204.80295310020585, -101.10404853760451, -122.05503827056617, -70.456147941973143, -239.62025677395064, -185.99272426683115, -455.61258027312, 276.66581476697036, 79.39918831707871, 416.42054791768112, 379.27350801009379, -439.51472612820322); + bool4x3 r0 = bool4x3(true, true, true, true, true, true, true, false, true, false, false, true); + TestUtils.AreEqual(a0 >= b0, r0); + + double a1 = (67.141009600433108); + double4x3 b1 = double4x3(-74.560638224035813, -367.25635474140586, 494.950765601802, -61.235545425319856, -429.17024846988278, -213.82468924942646, -264.31016242891093, 243.11378275748052, -22.383876095704693, 304.86197175870745, -323.68615332417477, 67.938025267765852); + bool4x3 r1 = bool4x3(true, true, false, true, true, true, true, false, true, false, true, false); + TestUtils.AreEqual(a1 >= b1, r1); + + double a2 = (125.30356818312009); + double4x3 b2 = double4x3(-400.47050280145857, -283.15963162256389, -42.319595595039232, -429.51037355396448, 499.3958854616601, -289.96307887228352, -136.00878554955534, -351.12526123184955, -381.81828921931719, 393.30091089443351, 18.023639925766588, -169.92393048569744); + bool4x3 r2 = bool4x3(true, true, true, true, false, true, true, true, true, false, true, true); + TestUtils.AreEqual(a2 >= b2, r2); + + double a3 = (-285.88492669066648); + double4x3 b3 = double4x3(163.75110037799516, 191.85533317916804, 114.01553230826539, -395.98584169707533, 189.3665684151307, 176.19814618686132, 61.713796405919766, 507.54848241598745, 224.04381595554003, -422.99370570806491, -127.05500394061909, 95.528642460484321); + bool4x3 r3 = bool4x3(false, false, false, true, false, false, false, false, false, true, false, false); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void double4x3_operator_add_wide_wide() + { + double4x3 a0 = double4x3(465.14837644302679, 278.91072548502621, -277.52992237616792, -65.197214395365336, -473.32437561141529, -4.6955420992782138, -470.53676698661258, -109.95011453980118, -178.70145782209067, -420.03378339299644, 290.71109236903078, -446.5296368294068); + double4x3 b0 = double4x3(483.99436186440028, -204.07667193379098, -365.67356007437854, -509.92086076639634, -270.69751108377125, 486.76397846954126, 267.49177587567442, 251.6425212601398, 244.4951094335388, -78.675763882079991, 352.20551340291536, 82.779185095233515); + double4x3 r0 = double4x3(949.14273830742707, 74.834053551235229, -643.20348245054652, -575.11807516176168, -744.02188669518659, 482.06843637026304, -203.04499111093816, 141.69240672033862, 65.793651611448126, -498.70954727507643, 642.91660577194614, -363.75045173417328); + TestUtils.AreEqual(a0 + b0, r0); + + double4x3 a1 = double4x3(491.066454400805, -261.11730039358014, -298.40688409395835, 502.42861890347149, 284.59432925125316, 401.12844366632794, -36.263498084742366, -102.94915657069026, 503.19817161150195, -384.42911857386542, -45.22821452339565, -198.67394337368847); + double4x3 b1 = double4x3(462.54732606492348, -405.492017696375, -428.4983238785054, -41.872599859662614, -269.9274958436971, 75.204465662690041, -141.91339380196922, -222.1867559990784, 41.305726308983594, 148.33947117083676, -177.23311217931712, -176.51887830370987); + double4x3 r1 = double4x3(953.6137804657285, -666.6093180899552, -726.90520797246381, 460.55601904380887, 14.666833407556055, 476.332909329018, -178.17689188671159, -325.13591256976866, 544.50389792048554, -236.08964740302866, -222.46132670271277, -375.19282167739834); + TestUtils.AreEqual(a1 + b1, r1); + + double4x3 a2 = double4x3(-62.8800013358146, -79.55225447544467, 413.0982751385767, -100.87757997441923, 418.523998693807, -183.143126334596, 407.44374031920165, 300.48602332756207, -261.12612998724273, -309.8303507817119, 378.36333220934648, -224.09398065511789); + double4x3 b2 = double4x3(492.69246768052335, 439.04383942067807, -511.74275922763292, -399.05713695988857, -315.8684596102072, -228.0772484410914, -171.70519669899028, 467.17394826709005, -474.8229422396156, 311.39072885708447, 326.84541979750873, 475.21193597987849); + double4x3 r2 = double4x3(429.81246634470875, 359.4915849452334, -98.64448408905622, -499.9347169343078, 102.65553908359982, -411.22037477568739, 235.73854362021137, 767.65997159465212, -735.94907222685833, 1.5603780753725687, 705.20875200685521, 251.1179553247606); + TestUtils.AreEqual(a2 + b2, r2); + + double4x3 a3 = double4x3(-164.55573399577094, -69.873935493581882, 224.63463197678072, -383.99260038137095, 149.2212694386119, 169.38798363943954, 163.05393059693927, 57.02912500176069, 342.95008413072219, 168.68046696888302, -470.77026746737317, -117.63049631828); + double4x3 b3 = double4x3(314.152972606082, -262.59463393995287, -82.869108000243614, 156.29956658012213, 427.40157791012973, -279.09935177448176, -448.61522051720658, 284.33708847888613, 288.18558062621651, -232.39503847453511, -386.87190812959892, 162.90336831049217); + double4x3 r3 = double4x3(149.59723861031108, -332.46856943353475, 141.76552397653711, -227.69303380124882, 576.62284734874163, -109.71136813504222, -285.56128992026731, 341.36621348064682, 631.1356647569387, -63.714571505652088, -857.642175596972, 45.272871992212174); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void double4x3_operator_add_wide_scalar() + { + double4x3 a0 = double4x3(459.89829728561369, -447.66336104258119, -94.438627525436971, 126.42986279652916, -36.254356162741033, -349.64130060264904, -2.7912590516690443, -478.41478489265535, 443.11525246273504, 268.092225914864, 41.32102133767728, -471.25607584009697); + double b0 = (500.99725913489112); + double4x3 r0 = double4x3(960.89555642050482, 53.333898092309937, 406.55863160945415, 627.42712193142029, 464.74290297215009, 151.35595853224208, 498.20600008322208, 22.582474242235776, 944.11251159762617, 769.08948504975513, 542.3182804725684, 29.741183294794155); + TestUtils.AreEqual(a0 + b0, r0); + + double4x3 a1 = double4x3(-2.6649749291431704, 202.14799151297098, 311.7254551908585, 10.345855002452595, -151.24445898423181, 355.23276703210206, -197.80076584490052, 255.95526587961024, 244.14709793969394, -181.6265695940827, -2.4549267303454485, 300.90065469448484); + double b1 = (78.985822952811532); + double4x3 r1 = double4x3(76.320848023668361, 281.13381446578251, 390.71127814367003, 89.331677955264126, -72.258636031420281, 434.21858998491359, -118.814942892089, 334.94108883242177, 323.13292089250547, -102.64074664127116, 76.530896222466083, 379.88647764729637); + TestUtils.AreEqual(a1 + b1, r1); + + double4x3 a2 = double4x3(-236.49194895312746, -172.54221566605486, -242.9410861669765, 466.34409902353957, 237.98745810146795, 264.294014815378, 372.86684029775995, -198.83777699192882, -381.930974899759, 402.16034693371523, -117.02482729639149, 497.37375592504338); + double b2 = (-160.5840962680914); + double4x3 r2 = double4x3(-397.07604522121886, -333.12631193414626, -403.5251824350679, 305.76000275544817, 77.40336183337655, 103.70991854728658, 212.28274402966855, -359.42187326002022, -542.51507116785046, 241.57625066562383, -277.60892356448289, 336.789659656952); + TestUtils.AreEqual(a2 + b2, r2); + + double4x3 a3 = double4x3(485.90928124166521, 77.81479338454767, -271.54797304400614, -133.25178605562627, 211.86678777070097, 253.15022504196975, -342.78316823708974, -185.24833997769667, -403.38548845955427, -358.84824125787628, 65.247578889712486, 127.2016943093397); + double b3 = (-47.757128976172339); + double4x3 r3 = double4x3(438.15215226549287, 30.057664408375331, -319.30510202017848, -181.00891503179861, 164.10965879452863, 205.39309606579741, -390.54029721326208, -233.005468953869, -451.14261743572661, -406.60537023404862, 17.490449913540147, 79.444565333167361); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void double4x3_operator_add_scalar_wide() + { + double a0 = (-325.51276484388518); + double4x3 b0 = double4x3(-264.08813178915909, -106.00925998855814, -355.44729320865463, -447.33029362528134, -158.70021040677102, -199.48369154682553, 180.31809123806568, 337.57936898692481, -37.05501486596421, 230.80498014707348, -140.17433339924287, 18.02419591789328); + double4x3 r0 = double4x3(-589.60089663304427, -431.52202483244332, -680.96005805253981, -772.84305846916652, -484.2129752506562, -524.9964563907107, -145.1946736058195, 12.066604143039626, -362.56777970984939, -94.7077846968117, -465.68709824312805, -307.4885689259919); + TestUtils.AreEqual(a0 + b0, r0); + + double a1 = (-138.61435825126915); + double4x3 b1 = double4x3(26.904163611542458, -374.53758233345, 154.4676006559597, 268.3838204203098, -190.96302255939833, 188.61725362977813, -504.91612386373623, 20.454013595568995, 197.94534525552081, 251.41194474483461, -421.09037538109828, 111.44540052835146); + double4x3 r1 = double4x3(-111.71019463972669, -513.15194058471911, 15.853242404690548, 129.76946216904065, -329.57738081066748, 50.002895378508981, -643.53048211500538, -118.16034465570016, 59.330987004251654, 112.79758649356546, -559.70473363236738, -27.168957722917696); + TestUtils.AreEqual(a1 + b1, r1); + + double a2 = (-73.268883024001923); + double4x3 b2 = double4x3(480.88455770950975, 438.05301233662897, 66.844289095534123, -270.79599941465818, -44.02192189359198, 197.69471916821544, 19.113929995854392, 349.23776857426287, 366.23449271090067, -413.48026890935387, -260.720191361718, 77.542334831106587); + double4x3 r2 = double4x3(407.61567468550783, 364.78412931262704, -6.4245939284678, -344.06488243866011, -117.2908049175939, 124.42583614421352, -54.154953028147531, 275.96888555026095, 292.96560968689874, -486.74915193335579, -333.9890743857199, 4.2734518071046637); + TestUtils.AreEqual(a2 + b2, r2); + + double a3 = (183.95489009840173); + double4x3 b3 = double4x3(-51.498981738229759, -472.4974751288525, 107.12689285498436, 349.07720033688338, 431.59597774576207, -314.11096468293618, 396.99665302643393, -167.30862935227742, -157.11451895400626, 287.76251591730977, -367.33903544365387, 96.2368000001818); + double4x3 r3 = double4x3(132.45590836017197, -288.54258503045077, 291.0817829533861, 533.03209043528511, 615.5508678441638, -130.15607458453445, 580.95154312483567, 16.646260746124312, 26.840371144395476, 471.7174060157115, -183.38414534525214, 280.19169009858354); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void double4x3_operator_sub_wide_wide() + { + double4x3 a0 = double4x3(133.37101680290471, -131.8321183341705, -197.29314407952739, -485.286571013409, -337.55033103448818, 471.66710470228782, 146.5066197600712, -130.58504372955537, 110.77707367333448, -235.54160486699158, 78.879356659427, -347.68616811730254); + double4x3 b0 = double4x3(123.46028739002543, 359.56010048443454, -48.24847819667707, 478.97904680621764, 207.15832886805686, 142.36730462981723, -125.60551005490379, -65.299004823574307, -477.876434787119, 164.50000031501986, 428.00958915614035, 72.6278169493321); + double4x3 r0 = double4x3(9.9107294128792773, -491.39221881860504, -149.04466588285032, -964.26561781962664, -544.708659902545, 329.29980007247059, 272.112129814975, -65.286038905981059, 588.65350846045351, -400.04160518201144, -349.13023249671335, -420.31398506663464); + TestUtils.AreEqual(a0 - b0, r0); + + double4x3 a1 = double4x3(-470.82054565419469, -11.459293609233271, -167.94791730118351, 330.67676917215658, -508.35086822339838, -252.03190457636111, -427.93418737311578, 192.6576150360786, 168.42931016182024, 457.3087858899072, 470.05851457550125, -299.71188058504458); + double4x3 b1 = double4x3(-446.880505531505, 432.09146114443035, -225.55465637219822, -112.45196705332586, -210.61278853687122, -172.92506011432272, -80.60749415336528, 270.04610861001822, -154.25558550388348, 148.47577745675846, 13.661130673094249, 70.671096596248049); + double4x3 r1 = double4x3(-23.940040122689709, -443.55075475366363, 57.606739071014715, 443.12873622548244, -297.73807968652716, -79.1068444620384, -347.3266932197505, -77.388493573939627, 322.68489566570372, 308.83300843314873, 456.397383902407, -370.38297718129263); + TestUtils.AreEqual(a1 - b1, r1); + + double4x3 a2 = double4x3(-308.93956937870922, 454.53341052240387, 26.106923830745245, -482.71181105203544, -40.853544492671972, 318.38064613862923, 475.21081541255614, 134.9269641074012, 388.48155969590016, 138.71817285321572, -385.57360547854267, -149.36481745045859); + double4x3 b2 = double4x3(-221.32544551665217, -9.2588145775994235, 288.1738385111903, 217.36142764676424, 307.54006471649745, -262.41263854802241, -405.3780321578393, 400.00432533771004, 72.119071755613732, -154.88059170305758, -469.65998361523265, -320.61543217330029); + double4x3 r2 = double4x3(-87.614123862057056, 463.79222510000329, -262.06691468044505, -700.07323869879974, -348.39360920916943, 580.79328468665165, 880.5888475703955, -265.07736123030884, 316.36248794028643, 293.5987645562733, 84.086378136689973, 171.2506147228417); + TestUtils.AreEqual(a2 - b2, r2); + + double4x3 a3 = double4x3(-158.53404982319756, 508.07069015319962, 482.70080326623315, 114.56930237383085, 364.83137505353955, 229.03103052313952, -168.08806689460204, 373.44110911592895, -239.90097748483578, 379.92848437834925, 113.01185970800555, 306.83529319746197); + double4x3 b3 = double4x3(6.4122865229902573, -278.86505783668952, 15.838054425939049, 27.518323672711062, 429.86960979451874, -458.62247178453134, -172.064416250244, -284.52470673458868, 42.606667776874588, -223.47425208961323, -56.92974641589899, 61.8073423196596); + double4x3 r3 = double4x3(-164.94633634618782, 786.93574798988914, 466.8627488402941, 87.050978701119789, -65.038234740979192, 687.65350230767081, 3.9763493556419576, 657.96581585051763, -282.50764526171037, 603.40273646796254, 169.94160612390453, 245.02795087780237); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void double4x3_operator_sub_wide_scalar() + { + double4x3 a0 = double4x3(48.936717294592768, 410.45158953706346, -364.44171612544062, 163.98060353285666, -460.06732318367222, 110.91942339340198, 204.35834441164434, 180.26971420099483, -377.92569344952972, -470.26204297983185, 400.53491968686455, 461.50756499800252); + double b0 = (-291.59041442144212); + double4x3 r0 = double4x3(340.52713171603489, 702.04200395850557, -72.8513017039985, 455.57101795429878, -168.4769087622301, 402.5098378148441, 495.94875883308646, 471.86012862243695, -86.3352790280876, -178.67162855838973, 692.12533410830667, 753.09797941944464); + TestUtils.AreEqual(a0 - b0, r0); + + double4x3 a1 = double4x3(-246.28726660753006, 246.35072171238755, -121.42736178330489, -122.71842413894757, -122.93872099879138, 360.15095417581074, 342.87457887403411, 18.929827460520869, 164.60235245740148, 97.0436885808798, 485.9149813530571, -205.75765690848124); + double b1 = (21.605312595891405); + double4x3 r1 = double4x3(-267.89257920342146, 224.74540911649615, -143.03267437919629, -144.32373673483897, -144.54403359468279, 338.54564157991933, 321.26926627814271, -2.6754851353705362, 142.99703986151007, 75.4383759849884, 464.3096687571657, -227.36296950437264); + TestUtils.AreEqual(a1 - b1, r1); + + double4x3 a2 = double4x3(253.44322717070725, 187.99838813953022, -450.820273370864, -248.07337128746946, -26.996065390760123, 441.55261942444031, 449.91060969322484, 354.88602678612153, 98.821485803845121, -189.19323381650878, 269.07481659067548, -59.118566302172155); + double b2 = (-121.16305619159857); + double4x3 r2 = double4x3(374.60628336230582, 309.16144433112879, -329.65721717926544, -126.91031509587089, 94.166990800838448, 562.71567561603888, 571.07366588482341, 476.0490829777201, 219.98454199544369, -68.030177624910209, 390.23787278227405, 62.044489889426416); + TestUtils.AreEqual(a2 - b2, r2); + + double4x3 a3 = double4x3(363.45839207407948, -46.155220768486743, 109.9132454907118, 182.64693483274755, 229.01577411825576, -144.92867405010793, 469.25061414635309, -150.49230797146089, -192.31251177206286, -224.35684810595438, 285.87681855162452, -63.010835438506149); + double b3 = (-73.779217515969265); + double4x3 r3 = double4x3(437.23760959004875, 27.623996747482522, 183.69246300668107, 256.42615234871681, 302.794991634225, -71.149456534138665, 543.02983166232229, -76.713090455491624, -118.5332942560936, -150.57763058998512, 359.65603606759379, 10.768382077463116); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void double4x3_operator_sub_scalar_wide() + { + double a0 = (294.58645905861); + double4x3 b0 = double4x3(452.35251757705237, 256.98980891750648, -275.159888634067, -89.027518075437968, 488.22838829840919, -333.21728030462623, -64.232989102710519, -66.041730196234653, 341.20492831859963, -385.775056303374, 75.394746577085357, 354.94371645289641); + double4x3 r0 = double4x3(-157.76605851844238, 37.59665014110351, 569.746347692677, 383.61397713404796, -193.6419292397992, 627.80373936323622, 358.81944816132051, 360.62818925484464, -46.618469259989638, 680.361515361984, 219.19171248152463, -60.357257394286421); + TestUtils.AreEqual(a0 - b0, r0); + + double a1 = (169.13141520746581); + double4x3 b1 = double4x3(88.216608326982964, 1.7350065716240124, 122.53803997977548, -264.94502771317264, -50.837180399725753, -347.65032283759228, 4.0655586738445209, -79.095424450512724, 354.35833923628479, -292.4925116470514, -53.208983207684469, -246.34760033634848); + double4x3 r1 = double4x3(80.914806880482843, 167.39640863584179, 46.593375227690331, 434.07644292063844, 219.96859560719156, 516.78173804505809, 165.06585653362129, 248.22683965797853, -185.22692402881898, 461.62392685451721, 222.34039841515028, 415.47901554381428); + TestUtils.AreEqual(a1 - b1, r1); + + double a2 = (299.20334138497867); + double4x3 b2 = double4x3(432.18467422583353, -163.88000090600923, 176.74255546216978, -104.9858415615679, -445.7976302792307, -28.873155368898608, -169.58822901993443, -270.35924614144454, 68.0476272423042, -65.531290323255234, 440.38039776328037, 427.36063142649857); + double4x3 r2 = double4x3(-132.98133284085486, 463.0833422909879, 122.4607859228089, 404.18918294654657, 745.00097166420937, 328.07649675387728, 468.7915704049131, 569.56258752642316, 231.15571414267447, 364.73463170823391, -141.1770563783017, -128.1572900415199); + TestUtils.AreEqual(a2 - b2, r2); + + double a3 = (-81.472953595906915); + double4x3 b3 = double4x3(41.713177461974851, 175.82078059754372, -214.94915900703018, -163.44686253529363, -218.82914672551169, 389.1168579483018, -74.109779154001615, -448.13723751908969, -410.37498278653948, 363.21098177657041, -263.53538120143833, 473.54599283335074); + double4x3 r3 = double4x3(-123.18613105788177, -257.29373419345063, 133.47620541112326, 81.973908939386718, 137.35619312960478, -470.58981154420871, -7.3631744419053007, 366.66428392318278, 328.90202919063256, -444.68393537247732, 182.06242760553141, -555.01894642925765); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void double4x3_operator_mul_wide_wide() + { + double4x3 a0 = double4x3(-394.78053898121254, -412.37219519744264, -25.874570143350638, -241.04595886964626, -93.675987525692221, 244.15999257013198, 494.68846606402121, 53.537962700025105, -239.49641167349017, 236.67584644848284, -211.85620818466703, -216.65482030466887); + double4x3 b0 = double4x3(-149.76397831261346, -345.04538671348496, -284.33404721148963, 267.97923648915219, -326.64849558782225, -150.68967754705329, 207.73243794577775, 366.19289248352538, 358.88076202891807, 214.85359368792433, 253.42280900358355, -307.71382751488773); + double4x3 r0 = double4x3(59123.904078224172, 142287.1235617903, 7357.0212487164608, -64595.312016683383, 30599.120397970968, -36792.390550284115, 102762.84107913627, 19605.221418797286, -85950.654724573629, 50850.6561485879, -53689.195383006307, 66667.684005499876); + TestUtils.AreEqual(a0 * b0, r0); + + double4x3 a1 = double4x3(467.95832870339893, -178.02191146557311, -386.3942503344241, -422.43540521265726, 464.58952758488692, -251.3156646468284, -104.97877912641445, -66.934159071619717, -39.829896707008572, 401.56559080703448, 434.14618250082538, -336.45419589451245); + double4x3 b1 = double4x3(184.4711149597872, 426.43644185850235, -144.28142625851621, 459.47961518703016, -358.31334917541284, -201.36521563370025, 254.90996539541982, 168.52096303204121, 8.7945530455533572, -194.84647974504458, -405.36266178887462, -180.7321890242082); + double4x3 r1 = double4x3(86324.794650634591, -75915.030498228327, 55749.513536340863, -194100.45742848891, -166468.62962076368, 50606.233003735295, -26760.136954367728, -11279.808946489193, -350.28613938869785, -78243.6417554897, -175986.65214401312, 60808.103330394995); + TestUtils.AreEqual(a1 * b1, r1); + + double4x3 a2 = double4x3(-83.11415318544681, 329.96027842627848, -316.97214594342381, 474.9379296130212, -445.10915800794453, -301.00371541688389, 405.68786425408337, 142.37348682357629, -416.21309037516505, -103.27920513194016, -52.951897407393858, -40.828328390060165); + double4x3 b2 = double4x3(-189.74690946831691, -35.518455760329232, 120.31664210200154, -136.2033479847961, 407.34163231744503, 301.65431489686216, -155.4824007281486, -461.39456126717596, 296.68037738310193, 341.001815239434, -257.09682166627459, 17.593622931089953); + double4x3 r2 = double4x3(15770.6537000148, -11719.679551949688, -38137.024239778322, -64688.136098260919, -181311.49098239967, -90799.069555490176, -63077.323080500144, -65690.352489042038, -123482.25672429107, -35218.396426477462, 13613.764524639606, -718.31821460143351); + TestUtils.AreEqual(a2 * b2, r2); + + double4x3 a3 = double4x3(-86.185078899462269, -257.3165096050671, 363.85721819654907, -229.86001001571304, 8.925310854299596, -2.4494049560508984, 37.75829531520526, 264.45176113045386, -321.251278788434, -268.25605762575572, 43.91368081230371, 274.83309877795773); + double4x3 b3 = double4x3(-443.84511658355831, 291.3492387697795, 490.1916594403757, 361.32099049227361, -509.28972244136486, 315.35265913389276, 125.08305054767197, -167.72711451711467, 396.8876833379677, -0.32041144385954112, 143.41152603151818, -396.34749597885997); + double4x3 r3 = double4x3(38252.826391895, -74968.969196332953, 178359.77358712527, -83053.246493441373, -4545.5690876891422, -772.42636618638653, 4722.9227615057453, -44355.730823380291, -127500.67580770116, 85.95231074793665, 6297.7279789534741, -108929.41051275423); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void double4x3_operator_mul_wide_scalar() + { + double4x3 a0 = double4x3(328.20302191758674, -290.10672272839895, 236.99572454998065, 120.48136692889102, 357.90315811610924, 134.86723214707672, -477.31047104173825, -438.272912467957, -46.729179165665585, -238.40500103608008, 422.08249374017237, -48.83483722099794); + double b0 = (192.21119055161773); + double4x3 r0 = double4x3(63084.293585418032, -55761.758562653624, 45553.230371395039, 23157.866976688449, 68792.992123681237, 25922.99125739103, -91744.41390168597, -84240.958291990959, -8981.8711609324328, -45824.109082604613, 81128.978632794271, -9386.6022026424689); + TestUtils.AreEqual(a0 * b0, r0); + + double4x3 a1 = double4x3(355.30832998608628, -196.995807977857, 98.2360046367329, -325.55215683837991, 53.937323833786536, -87.4509838034636, -130.47412949915702, -222.59457145565869, 126.01503211167415, 293.36108769726059, 174.38195737375963, -327.12007704708731); + double b1 = (119.35660391643489); + double4x3 r1 = double4x3(42408.39561035925, -23512.750626011144, 11725.115895759591, -38856.799837899605, 6437.7757971417432, -10437.852435932567, -15572.948995972518, -26568.132099181617, 15040.726275269915, 35014.583148776452, 20813.63821643246, -39043.941469222867); + TestUtils.AreEqual(a1 * b1, r1); + + double4x3 a2 = double4x3(56.629123475695565, -475.60871551726422, -452.69189450363251, -49.220605157884108, 141.60094959177115, 431.58568330834885, 180.35518583113105, -40.92345454214302, 279.54350842141707, 120.01444226131514, -59.508660105759589, 319.48987236595246); + double b2 = (257.54154241156834); + double4x3 r2 = double4x3(14584.35180534579, -122489.00217870105, -116586.9687476805, -12676.35057079227, 36468.126964807481, 111151.24256198283, 46448.952740874527, -10539.489603593216, 71994.066329993, 30908.704571643215, -15325.952110483087, 82281.9145140025); + TestUtils.AreEqual(a2 * b2, r2); + + double4x3 a3 = double4x3(-403.52316040709763, -335.39319554688092, -364.24254601273805, 150.68615085942952, 391.87204212316874, 179.3124121070432, 354.52978460608506, 497.76140164665946, 418.43656964713546, -413.33335967237753, -329.5207184895504, -322.70306339985837); + double b3 = (-408.19309849673562); + double4x3 r3 = double4x3(164715.36916176844, 136905.18770500287, 148681.29346127933, -61509.046819857074, -159959.46308849956, -73194.089096897529, -144716.61128773814, -203182.76885022805, -170802.91988860932, 168719.82479673345, 134508.08309912015, 131725.16334357671); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void double4x3_operator_mul_scalar_wide() + { + double a0 = (-464.534700371574); + double4x3 b0 = double4x3(329.36093846399376, -198.68342671109525, 184.07942518223047, 256.01618754864489, 266.22629297255833, -97.894749448585685, 159.74810583877752, -351.82222263506719, 491.80157660497423, 49.902031206480274, 424.46256871915546, 160.11807616060514); + double4x3 r0 = double4x3(-152999.58486347177, 92295.346096036214, -85511.280621599, -118928.40297318244, -123671.35123704225, 45475.508103049062, -74208.538480743009, 163433.63077584215, -228458.89803045939, -23181.225114435249, -197177.59217890151, -74380.402533339569); + TestUtils.AreEqual(a0 * b0, r0); + + double a1 = (-395.99208492599058); + double4x3 b1 = double4x3(125.20168858636248, -265.01581991138676, 314.65609779705107, -292.71202029507236, -37.729878681586058, 165.3622206027444, 356.51773302467438, -188.81332906932261, 504.91572475103465, 40.572113771257932, -206.77510581108515, -61.602680473403382); + double4x3 r1 = double4x3(-49578.877699568278, 104944.1670650809, -124601.32420133064, 115911.64319954457, 14940.733323125947, -65482.130504472349, -141178.20041352851, 74768.583839978208, -199942.63055607979, -16066.235922134923, 81881.305260923924, 24394.173877692614); + TestUtils.AreEqual(a1 * b1, r1); + + double a2 = (118.97158938225903); + double4x3 b2 = double4x3(53.7483275186961, -198.66941771221786, 96.23611287783649, -20.241880664714529, -31.123976006696012, 38.890465516080326, -13.133307701504464, 507.87128209875493, 95.017933651347562, 340.74862186086762, 438.98690172610191, -227.16596637813655); + double4x3 r2 = double4x3(6394.523951537486, -23636.01638687048, 11449.363305046692, -2408.2087147671054, -3702.86889341192, 4626.8604942640131, -1562.4904910942491, 60422.253632894513, 11304.434586318854, 40539.405122601791, 52226.969416347893, -27026.296073563721); + TestUtils.AreEqual(a2 * b2, r2); + + double a3 = (452.57297894571582); + double4x3 b3 = double4x3(144.01496774703958, -31.586035981581574, 42.297746916440246, -466.02715013270597, 287.454008951529, 328.99688378395365, -164.24312146205602, -511.26830100979112, -9.5943138644072974, 431.19011875204285, -132.14180642559279, -87.502642910695954); + double4x3 r3 = double4x3(65177.282966048886, -14294.986397270941, 19142.817324665328, -210911.29560514109, 130093.91714108193, 148895.09975796138, -74331.998751425723, -231386.2180285161, -4342.1272065549929, 195144.996535569, -59803.810977298665, -39601.331767716889); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void double4x3_operator_div_wide_wide() + { + double4x3 a0 = double4x3(246.26574933075619, -269.85612953354428, -451.61952588130697, -7.38850236283082, -308.20558681534862, -373.394808704683, 360.41863482092447, 25.80972458133931, -274.050461181463, 127.53858977534742, -447.6717600522897, -137.4586017771897); + double4x3 b0 = double4x3(172.11981423763552, -77.141104972521362, -325.8353723612779, -450.60868117334724, -261.26215398556656, -122.44949847201326, -93.210781379235357, -442.00522705633438, 484.36271380091216, -390.78178686219348, 402.02531714086672, 316.65072193585831); + double4x3 r0 = double4x3(1.4307809383918566, 3.4982144685336105, 1.3860359070548143, 0.016396715535066435, 1.1796794220427942, 3.0493780159501847, -3.8667054335113131, -0.05839235149599218, -0.56579594872388561, -0.32636779415802974, -1.1135412148569459, -0.43410165287743668); + TestUtils.AreEqual(a0 / b0, r0); + + double4x3 a1 = double4x3(-136.13317424437645, 12.43763423545181, 228.51298319013461, 356.9723681681661, -24.762040865031111, 411.66839356518744, -204.07890067066944, 11.365393882321882, 82.152295389283609, 37.389483230835481, 394.26582903147948, -429.91279645912016); + double4x3 b1 = double4x3(397.15440744774151, -303.26218643005109, -118.59124451437555, -81.650312223308845, -84.346871176896116, -488.41943549011808, 404.16049999937434, -136.72883731533256, -19.832707652744261, -102.6072290421497, 166.11604960547572, -112.84016590604568); + double4x3 r1 = double4x3(-0.3427714050039572, -0.041012809351094658, -1.9268959030313104, -4.37196574572633, 0.29357391115432163, -0.84285833783843456, -0.50494519051462317, -0.083123605125890912, -4.1422632162843458, -0.36439423985883462, 2.3734361006528726, 3.8099270149698223); + TestUtils.AreEqual(a1 / b1, r1); + + double4x3 a2 = double4x3(315.37384071730719, -122.66599255551864, 447.52615067340719, -210.48151574399395, -202.42158398517483, -453.00793072814491, 173.7269934032704, -167.1216643634819, -106.2345221537326, 414.31254239301779, 7.1208250555772565, 274.07367361433512); + double4x3 b2 = double4x3(-218.2096851888158, 458.51754042995981, 119.5872405132219, 356.24043218988948, -74.506851469402591, -336.77393332904853, -216.12631593277973, 322.385657699027, 220.25550351862591, -67.234494002179474, 2.229160071457386, -166.21096118083733); + double4x3 r2 = double4x3(-1.4452788401413792, -0.26752737188743669, 3.7422566885296384, -0.59084117557941718, 2.7168183864044027, 1.3451395309907455, -0.80382156450260089, -0.51839050643966134, -0.48232403030396409, -6.1622021336189041, 3.1943982609206638, -1.6489506568471335); + TestUtils.AreEqual(a2 / b2, r2); + + double4x3 a3 = double4x3(-39.002680081409721, 39.065917748522907, -147.36416608996882, 434.38489290437894, 315.06720390686166, -106.63602714735828, -507.92525195885696, -17.176462896716089, -385.86535543290216, 226.00214849505676, 345.16843072751931, 201.5441692813971); + double4x3 b3 = double4x3(-247.73257290932003, 84.1609476004545, 477.14862726496006, 209.75077615014777, -386.72219985850256, -65.2773316210496, 410.45482773820629, 367.65071862174693, -456.57203862470203, 382.42795079873315, -163.86067278862964, -213.72138867793672); + double4x3 r3 = double4x3(0.15743864290178045, 0.464181058582947, -0.3088433198156047, 2.0709572611708924, -0.81471196642484278, 1.6335843469583855, -1.2374693087611059, -0.046719514002603893, 0.84513575687905829, 0.59096660697271775, -2.1064751221470064, -0.94302292591365366); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void double4x3_operator_div_wide_scalar() + { + double4x3 a0 = double4x3(-244.51745116175965, 69.112274917360537, -333.02311888943575, 257.39682519500923, 403.24561257066466, 154.34436066185322, 131.52659160062979, -261.88639200007844, -348.92380516087815, -275.53868187383688, 210.55792174607416, 287.64239968342815); + double b0 = (-60.024377612408443); + double4x3 r0 = double4x3(4.0736357608014941, -1.1514034408425655, 5.5481311449798705, -4.2882048166676752, -6.7180307170282818, -2.5713612835520117, -2.1912195816494422, 4.3630005410658415, 5.8130349541308268, 4.590446295887566, -3.507873469437639, -4.7920929982948417); + TestUtils.AreEqual(a0 / b0, r0); + + double4x3 a1 = double4x3(504.37224626185946, -26.63160015392657, -253.23667275776933, 272.89512098622276, 178.09617313095191, -460.87559030059521, -502.64601611655485, -84.324793139623864, -174.69034036187935, 83.796309271732525, 197.04206690427009, 317.16826525198678); + double b1 = (491.78708600056689); + double4x3 r1 = double4x3(1.0255906684407692, -0.05415270329789805, -0.51493152212922777, 0.55490501632632983, 0.36214080890026995, -0.9371445558862519, -1.0220805515742548, -0.17146605825986788, -0.35521538758274346, 0.17039143901317477, 0.40066539466642881, 0.64493004041920121); + TestUtils.AreEqual(a1 / b1, r1); + + double4x3 a2 = double4x3(403.38711781212464, 60.606869964211683, -413.56048102563273, 207.34099803089214, 358.5621036768714, 20.749072799807891, -68.577131064877449, 310.70246257945075, 417.40490193730443, 147.86623079509764, 506.6588964437409, -435.77857300070048); + double b2 = (81.646461763254592); + double4x3 r2 = double4x3(4.94065644855257, 0.742308590664343, -5.0652590705621705, 2.5394976530900575, 4.3916428946617758, 0.25413315349748711, -0.83992777621798842, 3.8054614476788506, 5.1123452617901393, 1.8110549753381424, 6.2055217764717066, -5.337384665416387); + TestUtils.AreEqual(a2 / b2, r2); + + double4x3 a3 = double4x3(210.67294011389504, -19.190853366251474, 416.5117301496266, 427.01360555506017, 417.1994099175555, -150.91182310456031, 488.98551463009119, -294.73874129668752, -357.29805271574207, 288.77164591884787, 453.4291381563196, 70.724425587209112); + double b3 = (-218.78147636110964); + double4x3 r3 = double4x3(-0.96293773868757038, 0.087716993620502046, -1.9037796849956046, -1.9517813512248774, -1.9069229116497379, 0.6897833656423128, -2.2350407482532773, 1.3471832542632936, 1.6331275328172847, -1.3199090285057589, -2.0725206982693196, -0.32326514457958477); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void double4x3_operator_div_scalar_wide() + { + double a0 = (41.737658758525527); + double4x3 b0 = double4x3(-422.676129776368, 248.12963235011773, 449.39137741988122, 245.85813796047967, -326.62061253498337, 163.71510489457989, 333.664472020075, 38.291076916405473, -472.97976062864984, 192.23013958345643, -200.29686960964318, -490.18150376257557); + double4x3 r0 = double4x3(-0.098746193168297289, 0.1682090863683405, 0.092875967042706856, 0.16976317767945767, -0.12778635871933872, 0.25494079355354177, 0.12508871114097631, 1.0900100524632514, -0.088244069266411956, 0.21712338579666474, -0.20837898685020731, -0.08514735549618288); + TestUtils.AreEqual(a0 / b0, r0); + + double a1 = (-211.10257468517057); + double4x3 b1 = double4x3(-322.85234108700058, -137.98529035317961, 84.32973555677097, 355.06345550858578, 276.42724455354141, -382.9880213136729, -488.647160996053, 344.84603826368505, 168.85499938244698, -44.19558837087618, 420.550703959796, -175.6152060849663); + double4x3 r1 = double4x3(0.65386725700800707, 1.5298918757560602, -2.5032993794111431, -0.59454886559021247, -0.76368223047667771, 0.55119889640693076, 0.43201432758733604, -0.61216470906286558, -1.2502003225088718, 4.7765531010394247, -0.50196699874113548, 1.2020745776594923); + TestUtils.AreEqual(a1 / b1, r1); + + double a2 = (-9.2205684227964753); + double4x3 b2 = double4x3(-344.19428865248074, -449.07149216582604, 117.70491724726969, -337.02741710144437, 239.39341389359595, -389.35516304027067, 242.71606718875285, 496.27646445495839, 91.745798392102984, -490.49213360738577, 485.75540922850155, -317.57225504404505); + double4x3 r2 = double4x3(0.026788847830377906, 0.02053251783658458, -0.078336306064650474, 0.027358511370073814, -0.038516383023364104, 0.023681639022834274, -0.03798911431613599, -0.018579499700682109, -0.1005012609230303, 0.018798606116234018, -0.018981916099382184, 0.029034552850083353); + TestUtils.AreEqual(a2 / b2, r2); + + double a3 = (-451.62477871944418); + double4x3 b3 = double4x3(394.01837677230048, -262.27140939527726, -314.24678697914203, 359.91591446470284, -101.61536865197837, 359.5172828917938, -424.97987981558771, -192.71958431635034, -169.7497170761925, -244.79002224877013, -187.14385255945092, -207.71366343633906); + double4x3 r3 = double4x3(-1.1462023228942793, 1.7219748799945886, 1.4371659391044802, -1.2548063605110056, 4.4444534789438208, -1.2561976856488777, 1.0626968479435275, 2.3434296017269292, 2.6605333222248113, 1.8449476599192278, 2.4132493402420168, 2.1742661086802313); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void double4x3_operator_mod_wide_wide() + { + double4x3 a0 = double4x3(-442.30985924336585, 368.50046246522129, -1.0938966279355213, -364.67383473211612, -197.34394487987458, -34.034902350062, -101.34858350704826, 208.31857142612273, -140.77031404374645, 183.446989383291, -463.36838100076113, 83.839106360375467); + double4x3 b0 = double4x3(-43.245045443645211, -144.19587690392319, -62.640481739603217, -336.82826510855381, -154.6102545981343, -154.02935583611452, 487.0462093237071, -469.82909105244516, -145.20377237405802, -203.38401780062543, -22.520082245823062, 224.6900237652892); + double4x3 r0 = double4x3(-9.8594048069137443, 80.1087086573749, -1.0938966279355213, -27.845569623562312, -42.73369028174028, -34.034902350062, -101.34858350704826, 208.31857142612273, -140.77031404374645, 183.446989383291, -12.966736084299896, 83.839106360375467); + TestUtils.AreEqual(a0 % b0, r0); + + double4x3 a1 = double4x3(-64.714058190916717, 295.06681050689281, 212.257051805154, 349.62829916068745, 119.87592106679267, -37.805828350505692, 142.41158515886013, 332.24425593588694, -464.19427249589671, -296.14783801517814, 225.17535863871467, -212.06027732233531); + double4x3 b1 = double4x3(-435.62674614210925, 12.095571285158144, 40.378765363422531, 345.78484813579587, -433.47126146474443, -355.64996712079733, 4.0154273528677322, 66.659781725453058, -221.85363088448236, -355.05676405274158, 357.93597118832918, 71.375334057666009); + double4x3 r1 = double4x3(-64.714058190916717, 4.773099663097355, 10.363224988041338, 3.8434510248915785, 119.87592106679267, -37.805828350505692, 1.8716278084895066, 65.605129034074707, -20.487010726932, -296.14783801517814, 225.17535863871467, -69.309609207003291); + TestUtils.AreEqual(a1 % b1, r1); + + double4x3 a2 = double4x3(156.98570425668061, 507.61831092630439, 270.83043897842538, 337.734341063413, 384.91584819597927, 432.51818128699347, 154.29270775350403, -37.0853169137078, 7.7614462411783052, 238.09472309709281, 12.852037674212852, -100.2406762113053); + double4x3 b2 = double4x3(-131.41830188195144, -473.98760078567432, 76.2178585884244, 92.210223002457155, -368.18956130006796, -77.467150485826267, 135.23059398272574, 274.27728975670288, 132.18024951414213, -179.87732204230377, 51.968538546920058, 367.21425860338582); + double4x3 r2 = double4x3(25.56740237472917, 33.630710140630072, 42.17686321315216, 61.103672056041546, 16.7262868959113, 45.182428857862135, 19.062113770778296, -37.0853169137078, 7.7614462411783052, 58.217401054789036, 12.852037674212852, -100.2406762113053); + TestUtils.AreEqual(a2 % b2, r2); + + double4x3 a3 = double4x3(34.551971690054984, -251.18974530472872, -238.37224423064487, 511.51466512657453, 288.43353118022605, 367.10986702847754, 44.760454437118256, -437.04559084262962, -259.20560252815744, -228.56581531677665, 83.497246065874265, 424.36707397194914); + double4x3 b3 = double4x3(-395.21279234216212, 270.48524988372128, -73.104129586882948, 89.3499706207541, -288.30852355077332, -168.32464631289463, 311.61589994636176, -468.34193752163179, 381.9839486470371, -1.398853541071901, -102.28859357828674, -87.424866478622391); + double4x3 r3 = double4x3(34.551971690054984, -251.18974530472872, -19.059855469996023, 64.764812022804, 0.12500762945273891, 30.46057440268828, 44.760454437118256, -437.04559084262962, -259.20560252815744, -0.552688122056793, 83.497246065874265, 74.667608057459574); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void double4x3_operator_mod_wide_scalar() + { + double4x3 a0 = double4x3(-433.41699548876704, -5.5141427542614565, 393.39439958771425, 299.41153277988155, -120.80601626299602, -502.939041133476, -450.80766245853511, 186.09479698263794, -84.473635951277629, -318.78148356023314, 433.45469041981482, -54.6001856581309); + double b0 = (-90.499235433758827); + double4x3 r0 = double4x3(-71.420053753731736, -5.5141427542614565, 31.39745785267894, 27.913826478605074, -30.306780829237198, -50.442863964681862, -88.8107207234998, 5.0963261151202914, -84.473635951277629, -47.283777258956661, 71.457748684779517, -54.6001856581309); + TestUtils.AreEqual(a0 % b0, r0); + + double4x3 a1 = double4x3(-172.33886607565864, 222.36186109406958, 5.796394112425105, 254.51082885196, -433.09369703433185, -203.08261284748215, -75.356399809641971, 252.28909385031511, -69.403906139267576, 5.3372299696026175, -279.06042803407666, 483.55059097872606); + double b1 = (-429.71466728193434); + double4x3 r1 = double4x3(-172.33886607565864, 222.36186109406958, 5.796394112425105, 254.51082885196, -3.3790297523975141, -203.08261284748215, -75.356399809641971, 252.28909385031511, -69.403906139267576, 5.3372299696026175, -279.06042803407666, 53.835923696791724); + TestUtils.AreEqual(a1 % b1, r1); + + double4x3 a2 = double4x3(-331.99334660730949, 67.839589388966374, -124.72076731767544, 38.175906437531125, 271.28698671575955, 405.77360100567978, -194.76144489774549, 235.72397314557986, 465.98487804177444, -304.153164289963, -295.52024735860539, 313.72239532774427); + double b2 = (335.99997655302286); + double4x3 r2 = double4x3(-331.99334660730949, 67.839589388966374, -124.72076731767544, 38.175906437531125, 271.28698671575955, 69.773624452656918, -194.76144489774549, 235.72397314557986, 129.98490148875158, -304.153164289963, -295.52024735860539, 313.72239532774427); + TestUtils.AreEqual(a2 % b2, r2); + + double4x3 a3 = double4x3(-232.20264135683078, 244.09660899084838, 162.52424080787421, 390.01615423244243, 90.004538339564874, 155.93352062810845, 217.33769641506376, -306.81927671414769, 149.09372074394196, 503.82839917756075, -194.13014063338289, 214.86302171222076); + double b3 = (191.61973127705028); + double4x3 r3 = double4x3(-40.582910079780504, 52.4768777137981, 162.52424080787421, 6.7766916783418765, 90.004538339564874, 155.93352062810845, 25.717965138013483, -115.19954543709741, 149.09372074394196, 120.5889366234602, -2.510409356332616, 23.243290435170479); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void double4x3_operator_mod_scalar_wide() + { + double a0 = (-396.4224028049141); + double4x3 b0 = double4x3(-159.14024384279747, 230.17333399046834, 14.779358632294134, -303.15649738123477, 399.63502020371845, 206.69470534412881, 397.04482263934096, -393.89064735634747, -372.06709426085797, 201.01229796233224, -95.5668547598491, -258.95146882671463); + double4x3 r0 = double4x3(-78.141915119319151, -166.24906881444576, -12.159078365266623, -93.265905423679328, -396.4224028049141, -189.72769746078529, -396.4224028049141, -2.5317554485666278, -24.355308544056129, -195.41010484258186, -14.154983765517727, -137.47093397819947); + TestUtils.AreEqual(a0 % b0, r0); + + double a1 = (106.98357563232241); + double4x3 b1 = double4x3(469.3235559264773, -34.808985011097491, 184.83653434777466, 374.79425376224992, -131.87271911086174, -120.09286003936683, 4.506670715523228, -111.40195732535886, 391.54249710195813, -218.66887078931035, 196.37741980160467, -511.03262233689082); + double4x3 r1 = double4x3(106.98357563232241, 2.5566205990299409, 106.98357563232241, 106.98357563232241, 106.98357563232241, 106.98357563232241, 3.3301491752881702, 106.98357563232241, 106.98357563232241, 106.98357563232241, 106.98357563232241, 106.98357563232241); + TestUtils.AreEqual(a1 % b1, r1); + + double a2 = (499.95350598727987); + double4x3 b2 = double4x3(-433.52306505363578, -163.8668559360629, 177.00401099818009, 110.65016441729392, 17.68454910148148, -95.85296754532169, -432.44096561541824, 192.69208654793545, -268.13177621929526, 271.07511461483091, 423.70268912972074, -413.23324675729185); + double4x3 r2 = double4x3(66.430440933644093, 8.3529381790911543, 145.94548399091968, 57.352848318104179, 4.7861311457984357, 20.68866826067142, 67.512540371861633, 114.56933289140898, 231.82172976798461, 228.87839137244896, 76.25081685755913, 86.720259229988017); + TestUtils.AreEqual(a2 % b2, r2); + + double a3 = (127.95621091125361); + double4x3 b3 = double4x3(-298.20467843590518, -352.41809122283854, -175.60771592688172, -152.89928944078241, 34.619420306114193, -380.80295556634803, 0.35205721871557216, 485.90088986135129, 266.1508249091687, 483.82075928329527, 11.777843242407698, 274.1358426893762); + double4x3 r3 = double4x3(127.95621091125361, 127.95621091125361, 127.95621091125361, 127.95621091125361, 24.097949992911026, 127.95621091125361, 0.15944051750091148, 127.95621091125361, 127.95621091125361, 127.95621091125361, 10.177778487176624, 127.95621091125361); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void double4x3_operator_plus() + { + double4x3 a0 = double4x3(271.6708086802023, -79.080240524876956, -330.98506203805334, 31.824682965793045, 315.44952860262686, 319.22218742930431, 190.32466015141677, -350.30858270745193, -320.51845875406565, 102.0544069288552, -107.00351267075331, -428.77622075973835); + double4x3 r0 = double4x3(271.6708086802023, -79.080240524876956, -330.98506203805334, 31.824682965793045, 315.44952860262686, 319.22218742930431, 190.32466015141677, -350.30858270745193, -320.51845875406565, 102.0544069288552, -107.00351267075331, -428.77622075973835); + TestUtils.AreEqual(+a0, r0); + + double4x3 a1 = double4x3(377.23016208095021, 34.283600107898792, 258.33039414991174, 465.35593555185756, 309.59316530339106, -316.93713655925222, -230.05266557915724, 301.78512229667285, 2.585727931273027, 350.24640981771347, 60.819777278611355, -472.44209526127304); + double4x3 r1 = double4x3(377.23016208095021, 34.283600107898792, 258.33039414991174, 465.35593555185756, 309.59316530339106, -316.93713655925222, -230.05266557915724, 301.78512229667285, 2.585727931273027, 350.24640981771347, 60.819777278611355, -472.44209526127304); + TestUtils.AreEqual(+a1, r1); + + double4x3 a2 = double4x3(-364.80255644619581, 473.8031363309376, 285.80893935161123, -273.26378191321334, -206.68638310520276, -113.36231785331029, -351.7548708169511, -116.53621798219916, -496.05329274388652, -330.00534716714424, -379.67424100436006, -339.673203864914); + double4x3 r2 = double4x3(-364.80255644619581, 473.8031363309376, 285.80893935161123, -273.26378191321334, -206.68638310520276, -113.36231785331029, -351.7548708169511, -116.53621798219916, -496.05329274388652, -330.00534716714424, -379.67424100436006, -339.673203864914); + TestUtils.AreEqual(+a2, r2); + + double4x3 a3 = double4x3(-29.083537353707243, 485.92661713339692, 183.72484144183102, -258.39246022812671, 486.44689463379177, 245.99093138705518, 231.85467468567879, -216.48996482439804, -163.00918181380683, 175.32546266136944, 404.37801499123589, 87.649255078122565); + double4x3 r3 = double4x3(-29.083537353707243, 485.92661713339692, 183.72484144183102, -258.39246022812671, 486.44689463379177, 245.99093138705518, 231.85467468567879, -216.48996482439804, -163.00918181380683, 175.32546266136944, 404.37801499123589, 87.649255078122565); + TestUtils.AreEqual(+a3, r3); + } + + [TestCompiler] + public static void double4x3_operator_neg() + { + double4x3 a0 = double4x3(420.22718854445372, -196.25749811728366, -335.42683068636188, 509.04366969924592, -33.014395013923945, -498.57532071442125, -495.8379526063045, -270.85946787095605, 19.686896571743773, 268.23670662019254, -180.60051473444349, 223.38126312167446); + double4x3 r0 = double4x3(-420.22718854445372, 196.25749811728366, 335.42683068636188, -509.04366969924592, 33.014395013923945, 498.57532071442125, 495.8379526063045, 270.85946787095605, -19.686896571743773, -268.23670662019254, 180.60051473444349, -223.38126312167446); + TestUtils.AreEqual(-a0, r0); + + double4x3 a1 = double4x3(-410.39206070936848, -349.14948885010062, -110.9393032113739, -238.21960913307015, 292.54351224216794, 469.29257867731735, 48.290685914592245, 88.7237785275671, 66.148520738886873, 55.707977559281517, 464.54141090090457, 499.24280213715645); + double4x3 r1 = double4x3(410.39206070936848, 349.14948885010062, 110.9393032113739, 238.21960913307015, -292.54351224216794, -469.29257867731735, -48.290685914592245, -88.7237785275671, -66.148520738886873, -55.707977559281517, -464.54141090090457, -499.24280213715645); + TestUtils.AreEqual(-a1, r1); + + double4x3 a2 = double4x3(175.01502259774838, -306.1655677790593, 149.66006023700356, 320.3917383255399, -359.83381168909079, 22.03845144344416, -159.55426199713457, 419.82245011805674, 303.32339992342679, 363.71671049842462, 280.88790405955535, -270.65131939139746); + double4x3 r2 = double4x3(-175.01502259774838, 306.1655677790593, -149.66006023700356, -320.3917383255399, 359.83381168909079, -22.03845144344416, 159.55426199713457, -419.82245011805674, -303.32339992342679, -363.71671049842462, -280.88790405955535, 270.65131939139746); + TestUtils.AreEqual(-a2, r2); + + double4x3 a3 = double4x3(-201.61574015469091, 95.489228054643263, 191.07025322274785, 371.97357361948752, 296.51257981756362, -164.16993697181806, -347.45810691800813, -237.40496050445591, -228.70196615378467, 61.082260875535326, 128.33153134599866, 331.25579587149241); + double4x3 r3 = double4x3(201.61574015469091, -95.489228054643263, -191.07025322274785, -371.97357361948752, -296.51257981756362, 164.16993697181806, 347.45810691800813, 237.40496050445591, 228.70196615378467, -61.082260875535326, -128.33153134599866, -331.25579587149241); + TestUtils.AreEqual(-a3, r3); + } + + [TestCompiler] + public static void double4x3_operator_prefix_inc() + { + double4x3 a0 = double4x3(-99.79557113526181, 458.74185082816609, 96.179026886904126, -48.552469514567633, -315.728967098393, -299.23014583216525, -323.61485853959567, -456.89028832730384, -76.507656371457358, -305.58477344437722, 64.0964734852763, 148.67930967578627); + double4x3 r0 = double4x3(-98.79557113526181, 459.74185082816609, 97.179026886904126, -47.552469514567633, -314.728967098393, -298.23014583216525, -322.61485853959567, -455.89028832730384, -75.507656371457358, -304.58477344437722, 65.0964734852763, 149.67930967578627); + TestUtils.AreEqual(++a0, r0); + + double4x3 a1 = double4x3(363.2849182390072, -326.87781992874937, -179.89464839729231, 339.8765849265626, -38.410431164507941, -153.3736775635619, 261.62557304167444, 155.03081877298223, -396.65022892348946, 301.30576791488829, -221.35540328796736, -429.69815011960367); + double4x3 r1 = double4x3(364.2849182390072, -325.87781992874937, -178.89464839729231, 340.8765849265626, -37.410431164507941, -152.3736775635619, 262.62557304167444, 156.03081877298223, -395.65022892348946, 302.30576791488829, -220.35540328796736, -428.69815011960367); + TestUtils.AreEqual(++a1, r1); + + double4x3 a2 = double4x3(-271.28932893988178, -377.55920785365589, 223.23241792583485, -71.076339993195745, -388.22791713673058, 131.28316909227669, 22.304934273615913, -480.76047228312143, 200.95175967037289, 117.95409851798513, 139.52581245243823, 335.68968192473505); + double4x3 r2 = double4x3(-270.28932893988178, -376.55920785365589, 224.23241792583485, -70.076339993195745, -387.22791713673058, 132.28316909227669, 23.304934273615913, -479.76047228312143, 201.95175967037289, 118.95409851798513, 140.52581245243823, 336.68968192473505); + TestUtils.AreEqual(++a2, r2); + + double4x3 a3 = double4x3(162.6615141195532, -254.73151385725083, -89.256037038404486, 314.36555233335378, 244.72812830876933, 34.010626570326622, -90.445278448260069, -472.63621614530507, -34.566777483824069, -71.271847996521672, -396.49010748252743, -314.987458614161); + double4x3 r3 = double4x3(163.6615141195532, -253.73151385725083, -88.256037038404486, 315.36555233335378, 245.72812830876933, 35.010626570326622, -89.445278448260069, -471.63621614530507, -33.566777483824069, -70.271847996521672, -395.49010748252743, -313.987458614161); + TestUtils.AreEqual(++a3, r3); + } + + [TestCompiler] + public static void double4x3_operator_postfix_inc() + { + double4x3 a0 = double4x3(322.94356623429042, 472.05246542024076, 203.48761925636211, -49.854570650427888, -31.420532002775246, 455.33662459595905, 271.45466840986842, 55.736877228942149, 153.75031645305, -174.17301925186672, -427.40105100506969, 215.11022744658874); + double4x3 r0 = double4x3(322.94356623429042, 472.05246542024076, 203.48761925636211, -49.854570650427888, -31.420532002775246, 455.33662459595905, 271.45466840986842, 55.736877228942149, 153.75031645305, -174.17301925186672, -427.40105100506969, 215.11022744658874); + TestUtils.AreEqual(a0++, r0); + + double4x3 a1 = double4x3(159.86103184514729, 241.46487509527469, 287.22045649551808, -170.10464366250886, -270.65246380057766, -162.86024792625579, 454.48881003562769, -449.92732045144186, 209.52264294844247, -311.43587103087259, 69.731466087387616, -232.29964433996923); + double4x3 r1 = double4x3(159.86103184514729, 241.46487509527469, 287.22045649551808, -170.10464366250886, -270.65246380057766, -162.86024792625579, 454.48881003562769, -449.92732045144186, 209.52264294844247, -311.43587103087259, 69.731466087387616, -232.29964433996923); + TestUtils.AreEqual(a1++, r1); + + double4x3 a2 = double4x3(-341.49855271982892, 417.72977919957123, 25.565661203845252, -463.72565982478005, 504.44898509627626, -310.1449584020977, -117.39846258861871, 403.50871271803453, -111.27954178269931, 446.60767313773169, -12.352577930480493, -232.15012251220185); + double4x3 r2 = double4x3(-341.49855271982892, 417.72977919957123, 25.565661203845252, -463.72565982478005, 504.44898509627626, -310.1449584020977, -117.39846258861871, 403.50871271803453, -111.27954178269931, 446.60767313773169, -12.352577930480493, -232.15012251220185); + TestUtils.AreEqual(a2++, r2); + + double4x3 a3 = double4x3(64.577020436793987, 193.58436617328994, 382.05033582358169, -462.06412789880488, -122.30657368633268, 428.77629562317225, 338.97875825454423, 227.54409729109341, -169.32121356265674, -95.765601917992171, -169.85535796445578, 439.299990143301); + double4x3 r3 = double4x3(64.577020436793987, 193.58436617328994, 382.05033582358169, -462.06412789880488, -122.30657368633268, 428.77629562317225, 338.97875825454423, 227.54409729109341, -169.32121356265674, -95.765601917992171, -169.85535796445578, 439.299990143301); + TestUtils.AreEqual(a3++, r3); + } + + [TestCompiler] + public static void double4x3_operator_prefix_dec() + { + double4x3 a0 = double4x3(-416.20121712992022, -96.637880131899351, -50.145671629414721, -207.31644759295341, 439.47906156977592, -304.40081920493435, 337.96895734312432, 246.08898293510492, 171.96452935597142, -227.44280134301761, 298.28480710568135, 326.50782338087811); + double4x3 r0 = double4x3(-417.20121712992022, -97.637880131899351, -51.145671629414721, -208.31644759295341, 438.47906156977592, -305.40081920493435, 336.96895734312432, 245.08898293510492, 170.96452935597142, -228.44280134301761, 297.28480710568135, 325.50782338087811); + TestUtils.AreEqual(--a0, r0); + + double4x3 a1 = double4x3(400.720900006928, -326.45297852459038, -24.584499132160317, 112.79684668071422, -341.97629300783217, -503.27416181158003, -79.635249413380052, -131.0041454448384, 147.89369566174867, -15.70865417258284, 188.75845274178243, 307.79193582562357); + double4x3 r1 = double4x3(399.720900006928, -327.45297852459038, -25.584499132160317, 111.79684668071422, -342.97629300783217, -504.27416181158003, -80.635249413380052, -132.0041454448384, 146.89369566174867, -16.70865417258284, 187.75845274178243, 306.79193582562357); + TestUtils.AreEqual(--a1, r1); + + double4x3 a2 = double4x3(-406.667706917351, -188.69222578252305, -505.2156915633081, -372.24192898918034, -4.0317671317754957, 83.767736235525376, -30.631410374600193, -436.90656181653333, -51.668396258572329, 345.02153913351776, 4.7353689692613443, -68.653318198701982); + double4x3 r2 = double4x3(-407.667706917351, -189.69222578252305, -506.2156915633081, -373.24192898918034, -5.0317671317754957, 82.767736235525376, -31.631410374600193, -437.90656181653333, -52.668396258572329, 344.02153913351776, 3.7353689692613443, -69.653318198701982); + TestUtils.AreEqual(--a2, r2); + + double4x3 a3 = double4x3(481.496122346025, -357.67329399551886, 153.32965023505017, -233.62431751639781, -35.238318221288864, 340.61965743667429, 259.92884195033878, 335.35490886091952, 85.364882747347, -1.3939745432668929, -407.41038651364408, -145.79341251486608); + double4x3 r3 = double4x3(480.496122346025, -358.67329399551886, 152.32965023505017, -234.62431751639781, -36.238318221288864, 339.61965743667429, 258.92884195033878, 334.35490886091952, 84.364882747347, -2.3939745432668929, -408.41038651364408, -146.79341251486608); + TestUtils.AreEqual(--a3, r3); + } + + [TestCompiler] + public static void double4x3_operator_postfix_dec() + { + double4x3 a0 = double4x3(-376.59242719066907, 16.969734438215255, -0.25066399585949739, -202.32328734282555, 409.55752940175944, 47.856652520530247, -281.11170376516492, -262.062590959511, -182.40572866350681, 450.12809559801974, -129.23265582380475, -332.15495768755443); + double4x3 r0 = double4x3(-376.59242719066907, 16.969734438215255, -0.25066399585949739, -202.32328734282555, 409.55752940175944, 47.856652520530247, -281.11170376516492, -262.062590959511, -182.40572866350681, 450.12809559801974, -129.23265582380475, -332.15495768755443); + TestUtils.AreEqual(a0--, r0); + + double4x3 a1 = double4x3(-261.00890052551819, -230.22777878038016, -483.06653784358247, 378.64123433578811, 487.34482287212495, -192.17785772689518, -357.05418960985457, -396.30206627226528, 279.42425287860647, 115.86774092347719, -20.823201427619551, 323.40538063803933); + double4x3 r1 = double4x3(-261.00890052551819, -230.22777878038016, -483.06653784358247, 378.64123433578811, 487.34482287212495, -192.17785772689518, -357.05418960985457, -396.30206627226528, 279.42425287860647, 115.86774092347719, -20.823201427619551, 323.40538063803933); + TestUtils.AreEqual(a1--, r1); + + double4x3 a2 = double4x3(379.15614026559342, 409.22248644811214, -428.25672479544613, -425.2883748604396, -194.64129671577427, -258.84836089743692, -208.98576388553982, -313.42591657928466, 178.31252797800698, 176.78949864990523, -370.78628438095853, 64.903882295314133); + double4x3 r2 = double4x3(379.15614026559342, 409.22248644811214, -428.25672479544613, -425.2883748604396, -194.64129671577427, -258.84836089743692, -208.98576388553982, -313.42591657928466, 178.31252797800698, 176.78949864990523, -370.78628438095853, 64.903882295314133); + TestUtils.AreEqual(a2--, r2); + + double4x3 a3 = double4x3(449.63778540568319, -203.43741021092859, 417.13731093757656, -197.3473556960688, 446.02335020807732, 239.97454058377753, 350.61805431480434, -264.7472652237617, 186.44167980292889, 353.75952093385138, 68.234193118398139, -240.61070048092432); + double4x3 r3 = double4x3(449.63778540568319, -203.43741021092859, 417.13731093757656, -197.3473556960688, 446.02335020807732, 239.97454058377753, 350.61805431480434, -264.7472652237617, 186.44167980292889, 353.75952093385138, 68.234193118398139, -240.61070048092432); + TestUtils.AreEqual(a3--, r3); + } + + + } +} diff --git a/package/Tests/Tests/Shared/TestDouble4x3.gen.cs.meta b/package/Tests/Tests/Shared/TestDouble4x3.gen.cs.meta new file mode 100755 index 000000000..57d1b815d --- /dev/null +++ b/package/Tests/Tests/Shared/TestDouble4x3.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a9a5b693ba34291418f7e9f627709a57 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/package/Tests/Tests/Shared/TestDouble4x4.gen.cs b/package/Tests/Tests/Shared/TestDouble4x4.gen.cs new file mode 100755 index 000000000..7db8b3ef7 --- /dev/null +++ b/package/Tests/Tests/Shared/TestDouble4x4.gen.cs @@ -0,0 +1,974 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using NUnit.Framework; +using static Unity.Mathematics.math; +using Burst.Compiler.IL.Tests; + +namespace Unity.Mathematics.Tests +{ + [TestFixture] + public class TestDouble4x4 + { + [TestCompiler] + public static void double4x4_zero() + { + TestUtils.AreEqual(double4x4.zero.c0.x, 0.0); + TestUtils.AreEqual(double4x4.zero.c0.y, 0.0); + TestUtils.AreEqual(double4x4.zero.c0.z, 0.0); + TestUtils.AreEqual(double4x4.zero.c0.w, 0.0); + TestUtils.AreEqual(double4x4.zero.c1.x, 0.0); + TestUtils.AreEqual(double4x4.zero.c1.y, 0.0); + TestUtils.AreEqual(double4x4.zero.c1.z, 0.0); + TestUtils.AreEqual(double4x4.zero.c1.w, 0.0); + TestUtils.AreEqual(double4x4.zero.c2.x, 0.0); + TestUtils.AreEqual(double4x4.zero.c2.y, 0.0); + TestUtils.AreEqual(double4x4.zero.c2.z, 0.0); + TestUtils.AreEqual(double4x4.zero.c2.w, 0.0); + TestUtils.AreEqual(double4x4.zero.c3.x, 0.0); + TestUtils.AreEqual(double4x4.zero.c3.y, 0.0); + TestUtils.AreEqual(double4x4.zero.c3.z, 0.0); + TestUtils.AreEqual(double4x4.zero.c3.w, 0.0); + } + + [TestCompiler] + public static void double4x4_identity() + { + TestUtils.AreEqual(double4x4.identity.c0.x, 1.0); + TestUtils.AreEqual(double4x4.identity.c0.y, 0.0); + TestUtils.AreEqual(double4x4.identity.c0.z, 0.0); + TestUtils.AreEqual(double4x4.identity.c0.w, 0.0); + TestUtils.AreEqual(double4x4.identity.c1.x, 0.0); + TestUtils.AreEqual(double4x4.identity.c1.y, 1.0); + TestUtils.AreEqual(double4x4.identity.c1.z, 0.0); + TestUtils.AreEqual(double4x4.identity.c1.w, 0.0); + TestUtils.AreEqual(double4x4.identity.c2.x, 0.0); + TestUtils.AreEqual(double4x4.identity.c2.y, 0.0); + TestUtils.AreEqual(double4x4.identity.c2.z, 1.0); + TestUtils.AreEqual(double4x4.identity.c2.w, 0.0); + TestUtils.AreEqual(double4x4.identity.c3.x, 0.0); + TestUtils.AreEqual(double4x4.identity.c3.y, 0.0); + TestUtils.AreEqual(double4x4.identity.c3.z, 0.0); + TestUtils.AreEqual(double4x4.identity.c3.w, 1.0); + } + + [TestCompiler] + public static void double4x4_operator_equal_wide_wide() + { + double4x4 a0 = double4x4(-135.18925172425304, -49.094127439471947, 169.12980778940482, 240.80529772527757, 314.73919382446411, 442.39301916695808, 177.92444881141398, 335.53340283759564, 168.1544516869609, 350.72955982327903, 367.17843668869625, 46.941470406456574, 188.76415094582558, -97.211392209497944, -293.3210057193977, -234.82292353120766); + double4x4 b0 = double4x4(-220.01464591734793, 66.980020792679852, 499.20158576369363, -371.113114291389, 208.44865212610398, 390.80369133074009, -72.443806920407269, 362.97643273089841, 194.6783255053117, 471.6448635867074, -404.04466719368691, -144.69675476136467, -494.44664334433463, -252.97038209297244, 234.41711746641306, 398.72397465199413); + bool4x4 r0 = bool4x4(false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + double4x4 a1 = double4x4(417.03371329653714, 26.386443388828297, 269.24572265764959, 29.474191440955792, 479.48521469509467, -237.23094355186026, -221.98371349181224, -506.67253255596034, -22.98943401453522, 487.26083802024868, -419.73195596213077, 337.20329324212082, 245.04388367619549, 390.21586984685428, 84.412977973191573, 434.20789142800868); + double4x4 b1 = double4x4(260.42872083393331, 370.14420502732708, 89.579862397899774, -434.81684347373289, -109.84533815730612, 336.9730161805511, -409.15498156526826, 500.38755273278218, -174.08180888652885, 395.10115379612012, 350.33930723291792, -243.14458453056614, -416.39737267810727, 151.5764511337394, -18.224320181749931, -431.67792364194895); + bool4x4 r1 = bool4x4(false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + double4x4 a2 = double4x4(-68.728424342688356, 485.76997803420295, 413.16974969076443, -418.26928992675118, -346.79586593564409, 504.15964889161273, 345.18627635817336, -434.71304126955243, -499.77411078837429, 282.01905192156278, 259.15627944616426, 306.4559306141249, 435.22542759181249, -386.89967864886842, 211.3639925510455, -7.2298214469244044); + double4x4 b2 = double4x4(-468.3309554850361, 429.49572797748056, 477.38919781026857, -433.42541071093893, 273.54640329701192, -34.976225153997632, 221.96845422590548, 85.919132511093835, -85.598944942280184, 392.76080316713114, -117.92407732732784, -445.30559393638077, -242.46897208060557, 173.64309533575693, 389.8977403072164, -14.290465123155343); + bool4x4 r2 = bool4x4(false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + double4x4 a3 = double4x4(-32.053229585314739, -106.29855947676049, -382.92495959947121, -424.78219695798225, -267.81251895977766, 229.8970197317642, 358.17965834130518, -76.3308608887395, -493.68433140855484, 139.35056192211368, 211.75662789668729, -178.83420308811321, -262.78688609916105, 506.27030038566807, 352.288876459137, -132.78940326198443); + double4x4 b3 = double4x4(-317.55301990991131, -265.65275800677614, -424.16826053344096, 11.621368175196153, 408.68624873118767, -181.27835925914269, -139.82048160388155, -488.92457054971, -207.7032626642395, -341.9880770845283, -470.55291173912258, -462.80434701536052, 419.07557197058372, 143.63872177137, -79.91238526250811, -224.69360624286048); + bool4x4 r3 = bool4x4(false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void double4x4_operator_equal_wide_scalar() + { + double4x4 a0 = double4x4(65.671194345537174, 404.41550440546848, -269.7301577393572, 83.630607882342588, 152.99450476141385, -155.86829836474186, 314.67125597348024, 386.36515325417986, 290.04894007837811, -132.63519460178691, -65.667489797653388, -69.683271678948415, -191.19075521789063, 186.84520086406042, -232.89569221851218, -319.14406481345372); + double b0 = (-155.8157547245807); + bool4x4 r0 = bool4x4(false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + double4x4 a1 = double4x4(-49.701092981594172, 333.39685193328046, 386.377503336583, -296.70189084517858, -309.11719741910565, 141.54237968360189, -227.32334314441465, 83.872881689981, -410.91687483848858, 110.50128345866744, -390.10359329269437, 36.574313896044259, -427.54144235492754, -268.17085111707956, 175.81170590958175, -193.47994694182648); + double b1 = (-300.88189925853248); + bool4x4 r1 = bool4x4(false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + double4x4 a2 = double4x4(291.05195368968509, -429.87391849508225, -275.15694750247383, -56.332365300661138, -95.835959717554942, -124.86533385369245, 253.00615632394613, -300.50952949212376, 314.86654320120181, 195.61619886924336, -26.128909838445907, -284.7746838465215, -242.67206560944771, 140.36059886792702, 505.64434194268858, 506.5379443143205); + double b2 = (423.97165723516218); + bool4x4 r2 = bool4x4(false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + double4x4 a3 = double4x4(-502.369801993654, 87.367303650531539, -433.136377297871, -149.62691480928424, -358.698557305475, -249.12687527813335, 469.59318540505751, 511.75772619236159, 51.911379599902489, 245.63041817659064, 192.77484926617467, -162.20916064186446, 205.59038243330565, -376.46434348470734, 270.52080429276486, -388.203324737122); + double b3 = (-249.51763236220813); + bool4x4 r3 = bool4x4(false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void double4x4_operator_equal_scalar_wide() + { + double a0 = (36.383921878591195); + double4x4 b0 = double4x4(-400.48919958644046, -71.286823544319191, 156.97811491646712, -225.23872791288363, 499.14180993435059, -211.97992358542047, 428.31192394174263, -489.50133322621758, -5.6915457275190988, -30.865948453017495, -362.98307221149241, 184.50319322594589, -160.47062142215231, 316.66882315122928, 390.36923879681581, 505.10510301268891); + bool4x4 r0 = bool4x4(false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + double a1 = (-294.64870967280524); + double4x4 b1 = double4x4(443.19909283295226, 96.559236333034619, -257.01294601010761, -245.05497538533757, 326.46485176983515, -23.959890138339176, -168.6948808025079, 386.24859279498855, -227.09065185631192, -336.61242524562982, 365.10812752559229, -405.39083952707745, -473.99549959320365, 298.43535174915348, -149.86322386090796, 450.06639191604518); + bool4x4 r1 = bool4x4(false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + double a2 = (153.47643358701669); + double4x4 b2 = double4x4(56.287803437694834, 39.342111844263059, -350.40371744260369, -482.71723221368961, 239.96540772168214, -3.4060323254233253, -1.4948394305514512, 105.96042184995508, 151.53752787017152, 63.283196240329744, -289.69317378182575, 137.55377942768564, -247.66646945088473, -339.42056409428858, 23.238285313937013, 21.177870045033274); + bool4x4 r2 = bool4x4(false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + double a3 = (477.036560995987); + double4x4 b3 = double4x4(-411.31815524181263, 122.39710408188273, -401.49883503536637, -230.56110273607129, -214.95405135627561, 464.67306659402004, -186.32700428102493, -99.487320707872186, 214.23246179066246, -387.36749833979059, -448.79620358384966, 427.88950630085981, -43.696046134315452, 182.69869979782902, 298.88015164941555, 246.43680130990072); + bool4x4 r3 = bool4x4(false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void double4x4_operator_not_equal_wide_wide() + { + double4x4 a0 = double4x4(279.99414576217259, -43.342018386042696, -465.72473523846116, 317.46655645848557, 85.714987079480238, 360.89050572034466, 366.08152668833804, 154.5428384070018, 332.426219856565, 397.11323160543725, -431.3749584776233, 489.01079319837072, 398.43358320669904, -489.81794594685454, 171.4049242340983, -67.829682620162941); + double4x4 b0 = double4x4(-460.912120318465, -476.00904844515446, 468.13642070635058, -341.01254312182431, -62.658060341448561, -458.80166718866752, -457.73023316717251, -59.523265627922171, 3.024243117787023, 155.81276352508587, -19.839918384253963, -6.0169332055453992, -406.20792145571107, -102.42070083619126, -40.362921018322425, 452.67542645552919); + bool4x4 r0 = bool4x4(true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + double4x4 a1 = double4x4(-192.27871498478515, 227.84082494854965, 62.138187675801191, 262.18648755838467, -404.05309052209049, 34.449567572423007, -204.79578719138902, -285.41180314003111, -72.206820760018559, 444.74925228801987, 238.81779991780309, 365.18011563139976, -437.92291351683571, -362.4426316518535, 445.95436665320506, -0.41746735592255391); + double4x4 b1 = double4x4(93.257571979080126, -258.37806689849964, -184.04980405794913, -379.23531192319251, -370.68729537105526, -255.94724023339677, 29.055771602809273, 322.40763226263584, 415.07170005099465, -467.72613189542949, -433.78467508488552, -212.16593585357344, 474.67491481950265, 452.48318621724991, -92.112742705323171, -385.92209190219739); + bool4x4 r1 = bool4x4(true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + double4x4 a2 = double4x4(-506.82837772128562, 245.47704779611763, -173.57105811572217, 390.33854669627669, 252.83775555940235, 47.865854047176413, 457.710514043323, -313.22114601415637, 391.20388168432, 481.7861199238273, 26.887826693657757, -298.14237346227389, 240.07745634768037, -332.45515338166388, -333.60717240609563, -313.18967857639757); + double4x4 b2 = double4x4(420.21507926481547, -239.17604529074208, -99.079094694498508, 4.4760239145141441, 264.34854352862976, 451.31233689343196, 232.95803343176749, -142.62218839611029, -300.22557820949032, 268.33322418310365, -112.1035507247334, -270.49403989989963, -71.9932391978769, 99.463272856298545, 321.70330134113476, 200.05965218323263); + bool4x4 r2 = bool4x4(true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + double4x4 a3 = double4x4(141.7301719848673, -261.11886251211115, 295.57872380669164, -16.021309621642047, -487.26684664528204, -208.5638874548319, 30.349470867938066, -157.87644989689647, 275.896060833659, -450.72069546707007, -61.898862629150415, 99.190081404144962, 206.35745272708937, 32.746498361577551, -278.62394131283463, -173.91680367939023); + double4x4 b3 = double4x4(-91.628340525379542, -113.0108664562045, 465.76424215071097, -485.12772606552005, -71.726771626494269, 486.46925638917332, 425.86777873796768, -158.88094694860325, 292.17955674425673, 234.17994486269538, 243.24930846097379, 117.27517300344778, 3.9710876960173209, 410.42218108215468, -221.12472616002185, 443.13445421826771); + bool4x4 r3 = bool4x4(true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void double4x4_operator_not_equal_wide_scalar() + { + double4x4 a0 = double4x4(-155.44111282911206, -19.426602134214079, 174.63305409934048, 507.9207296352464, 59.177048472304364, 171.15146430356026, -58.923273352404692, -398.17684835855704, 492.20105361016522, -165.24150879925185, 270.34102333259818, -380.24326222960059, 501.8990516615562, -134.34545642433011, 458.40042302496749, 46.771004937016869); + double b0 = (-393.41354173860213); + bool4x4 r0 = bool4x4(true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + double4x4 a1 = double4x4(161.45995123752391, -145.61239559278471, -0.44992661497087738, 350.46143047439932, 202.22103724359579, 242.66402232025939, 382.67707675633812, -468.96794221781562, -497.45947789468778, -80.932258882062627, -328.58774844211888, -506.49033260088896, 449.34814640942409, 210.77098784724762, 249.18179690520367, -338.46854058768065); + double b1 = (261.51423442620512); + bool4x4 r1 = bool4x4(true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + double4x4 a2 = double4x4(229.67068420614612, 317.28609314434516, 401.93959612489664, 210.98484502126689, -147.09631616766393, -193.39904531901658, 207.73136410849702, 284.39206208120663, -509.0852923379677, 414.30764718274941, -52.294460082563774, -140.43793660981487, -316.78779402225643, -358.69683592333308, 312.31897249460178, 270.62946260656668); + double b2 = (-76.543291365980792); + bool4x4 r2 = bool4x4(true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + double4x4 a3 = double4x4(-140.01671153866533, 113.13720446132925, 479.699595436314, 6.0974566964886208, -83.634578982197922, 249.90937554552659, 303.95597734300236, 464.88867185306208, 44.636526366992143, -259.91627681437706, -242.33552491028587, -403.68651575766808, -469.14709279925893, 135.98750335350053, -490.84077357260549, 470.22527835808012); + double b3 = (108.9106157333174); + bool4x4 r3 = bool4x4(true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void double4x4_operator_not_equal_scalar_wide() + { + double a0 = (478.35313938481409); + double4x4 b0 = double4x4(459.55319592894671, 436.45324369727314, -488.71416806090349, 392.76794475725296, -266.73665369056937, 338.55788270503183, -338.10012475498957, -152.3145445102428, -452.82067868338, 209.43931422449612, 50.107968592135194, 372.4343656843688, -488.0213141329686, 489.74075697816011, 270.40006149485714, -472.8467831429312); + bool4x4 r0 = bool4x4(true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + double a1 = (-286.85046090132113); + double4x4 b1 = double4x4(-384.69186681541237, 443.42352959300558, 358.74720900074919, -15.414077527548216, -342.17916194637269, 468.96750400446706, -130.56808501601597, 401.7858013593526, -268.35225761511936, -239.231014124691, 411.38655800902586, 139.76932460617707, 334.52206031164246, -223.62923036498449, -12.488468414400018, 113.46889238872984); + bool4x4 r1 = bool4x4(true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + double a2 = (-189.65225204716074); + double4x4 b2 = double4x4(-212.84655127900027, 306.1256321902041, -178.33037885386977, 382.14199203166277, -340.86559478420094, -17.580244787773211, -409.87484498036787, -349.70166914057995, 275.85432756871649, -229.37194906425287, -127.50573283410898, 90.753436369240944, -422.08713574990963, -2.4475424301100475, -280.55170954417054, -484.37435959483236); + bool4x4 r2 = bool4x4(true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + double a3 = (-33.76342226647); + double4x4 b3 = double4x4(374.59386962214194, 437.0923590311279, 286.22582949615355, -18.232783087637642, 289.73235787531939, 479.48573969280619, 153.85391695511248, 502.98214339790036, -510.38439607545007, 65.78889682972283, -237.48668276401548, 219.91613088358008, -275.3427389950225, -78.931455410519334, -449.40356299346479, -253.03452670436099); + bool4x4 r3 = bool4x4(true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void double4x4_operator_less_wide_wide() + { + double4x4 a0 = double4x4(51.710243010758518, -313.85556450200062, 283.04767359562572, 235.02188621974642, 44.0783565249659, -207.25566659088042, 3.3829410091894943, -144.30134326978651, -69.369597705718888, -135.66796762108243, -194.78736576567746, -33.473868147225062, -19.675088653189619, 423.23796697297973, -71.698315415390937, -501.88598870760109); + double4x4 b0 = double4x4(-261.83523881707117, -19.810742149041403, -149.25882084167506, 205.99822316225539, -306.02438535635565, 102.12168006884008, 231.90633760760829, 179.49885305180158, 473.22488496882136, 15.891647107848712, 270.04990614114786, 490.91400240869916, -185.73412164753961, 76.433086669274189, 97.75231246731812, 419.30080600236579); + bool4x4 r0 = bool4x4(false, true, false, false, false, true, true, true, true, true, true, true, false, false, true, true); + TestUtils.AreEqual(a0 < b0, r0); + + double4x4 a1 = double4x4(7.6438391244242894, 302.26289214857991, -140.55051786291904, -436.586703265359, -351.441728040316, 364.97084896870467, 301.894133946809, 407.55097336673691, 269.10777128353141, 462.98824737173891, 223.8841808884797, -287.18923319838439, 283.63862933015389, 511.86434650414822, -60.496787814654795, -234.30346142235373); + double4x4 b1 = double4x4(73.953208242521214, 481.03232382285978, 7.00747371046225, -7.3240954910051528, -413.07575793428146, -154.1188920261892, 449.20288989003882, 502.01430797111914, -382.31586259525079, 251.53517758638372, 143.17396957388803, 293.66033686961066, -292.76956691069972, -43.218204756834666, -353.41120044952777, 458.32604405764766); + bool4x4 r1 = bool4x4(true, true, true, true, false, false, true, true, false, false, false, true, false, false, false, true); + TestUtils.AreEqual(a1 < b1, r1); + + double4x4 a2 = double4x4(-316.13839664875456, -417.52215905558421, 441.6434454590285, -191.95062908527939, 397.81158823418036, -144.66662485183525, 417.0790571724433, -322.9801315381099, -81.285095014276521, 319.32531538574267, 146.76406509557933, -316.58337488611386, -150.85755855909434, -314.60630550729405, 7.14312720631392, -458.82730767635036); + double4x4 b2 = double4x4(-114.55647259324627, 441.42973276666817, -113.33366709264629, 435.622928583819, 383.65612786992267, -293.711607831396, -391.35497612103586, 43.122021456771563, 433.2236590018606, -201.38245282014014, -241.42116629398481, 376.46986955053637, -503.39744472103075, -359.78095095221931, 118.63150149147566, -510.03052759078821); + bool4x4 r2 = bool4x4(true, true, false, true, false, false, false, true, true, false, false, true, false, false, true, false); + TestUtils.AreEqual(a2 < b2, r2); + + double4x4 a3 = double4x4(333.22770348807228, -349.98049537743464, 354.72504894562303, -451.62913748790936, 321.6347664900286, 365.72358935220336, -224.15940557427678, 388.58127969716736, -481.78943537258982, -473.93310974255814, -160.73651583527055, -200.43802103793155, -309.97309770713241, 80.287291325762567, -310.72736158535224, -83.520198622495); + double4x4 b3 = double4x4(418.64480491105689, -95.549393459944724, 478.12124060006875, -129.55856162382224, -484.63468121208, 352.22805301855692, -505.47762536698843, 162.99360545118975, -43.25767495262329, 18.279553183484609, 479.07899139778647, 437.28276964523025, -281.99202860612047, 433.04089018005914, -344.16967813306007, -232.81991325729524); + bool4x4 r3 = bool4x4(true, true, true, true, false, false, false, false, true, true, true, true, true, true, false, false); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void double4x4_operator_less_wide_scalar() + { + double4x4 a0 = double4x4(-221.86977325280651, -121.54646807608498, -97.52392511140738, 479.88107775146193, 67.118990214131259, 137.32880574899207, 282.96659601990439, 258.27909362422258, -111.41316061439608, -288.08113278452356, 82.665427008022334, -361.64292042406413, -68.088202269788951, 12.788020378345664, -66.703050406045747, -78.762971199472872); + double b0 = (199.06751808853244); + bool4x4 r0 = bool4x4(true, true, true, false, true, true, false, false, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 < b0, r0); + + double4x4 a1 = double4x4(25.727694284975428, -330.442660724019, -48.920521520506838, 359.60440914686978, -8.15008759878117, 241.27682101040932, -183.43778165776178, 423.02713580756779, -334.62272349680904, -98.315578744893685, 300.41017617863145, 297.92523850962766, -492.108162870681, -395.80724806143309, 95.788790032169231, -220.62145791790516); + double b1 = (101.37087182950734); + bool4x4 r1 = bool4x4(true, true, true, false, true, false, true, false, true, true, false, false, true, true, true, true); + TestUtils.AreEqual(a1 < b1, r1); + + double4x4 a2 = double4x4(-455.37556740985048, -296.37211884948056, 272.4883617239484, 360.20793097103387, 389.7274403002707, 68.736721786082171, -400.61523384629527, -85.469117442830054, -467.70215604626674, -51.387892031757133, 201.76466927387037, -47.8412668927765, -180.74006255936814, -409.01566929789988, 229.6990183469369, 176.19784816363722); + double b2 = (360.29156344025); + bool4x4 r2 = bool4x4(true, true, true, true, false, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 < b2, r2); + + double4x4 a3 = double4x4(-410.45517439882047, -20.246482620130507, 150.79782230723549, -69.4741823996763, -304.78239431268651, 149.17671091350576, -426.0861434536456, -455.14605805610586, -110.2582862890597, -276.35561550611425, 494.55641984127294, 472.35385511459492, -131.30499774371509, -404.27388472309053, 498.8766369758531, 370.97853749384103); + double b3 = (-264.43480766212326); + bool4x4 r3 = bool4x4(true, false, false, false, true, false, true, true, false, true, false, false, false, true, false, false); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void double4x4_operator_less_scalar_wide() + { + double a0 = (-250.4849370692321); + double4x4 b0 = double4x4(-377.19654887597846, -505.14754104295167, 375.92672198634909, 110.17393474940855, -118.09757452742082, -40.45089079833167, -299.74430932651478, 31.437125935888389, -458.904539560389, 13.684679276163024, -458.50690839183841, 248.27646624682302, 389.23142999654237, 488.74553679337055, -221.63786731550368, -424.26720329013989); + bool4x4 r0 = bool4x4(false, false, true, true, true, true, false, true, false, true, false, true, true, true, true, false); + TestUtils.AreEqual(a0 < b0, r0); + + double a1 = (249.05904948388184); + double4x4 b1 = double4x4(-22.136127720650336, -442.24773928255206, -340.85755721705851, -95.1117256130612, 15.409410245441563, 87.292497437117845, 495.06764220402931, 316.01850309782594, -125.56811505442863, 122.16476803746298, 96.75540046429046, -228.90633808304852, -143.95269662884652, -230.238279688283, -327.61262885090548, 103.39802770661095); + bool4x4 r1 = bool4x4(false, false, false, false, false, false, true, true, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 < b1, r1); + + double a2 = (434.488835775521); + double4x4 b2 = double4x4(-157.45019228637693, 190.57215914063727, 108.25831871305513, 132.55076056930739, -431.51522155828553, -192.20350727448402, -431.83499284825984, -85.581249515331024, 328.67053977058765, 273.5778516612844, -178.66905816768718, 352.63627235621038, -82.605815687498932, 238.90886675515628, 291.3353070185218, 183.35733875229835); + bool4x4 r2 = bool4x4(false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 < b2, r2); + + double a3 = (-185.03260597262187); + double4x4 b3 = double4x4(-179.35502895124023, -331.53868189991391, 59.284426478335831, 356.62678854382909, 119.39404087857997, -80.440038480069518, 392.85907978231978, 306.15543165158272, -504.52945947299219, 349.38434116420535, 115.50029020919476, -251.65653598106303, 197.0481570684575, -268.07704103555392, 381.10572045906713, -367.12156145978793); + bool4x4 r3 = bool4x4(true, false, true, true, true, true, true, true, false, true, true, false, true, false, true, false); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void double4x4_operator_greater_wide_wide() + { + double4x4 a0 = double4x4(-229.29066501804192, 505.536608216137, -73.80706862071861, 100.29203777215071, -419.21478124112582, -159.55974753180504, -396.7703608929973, 127.03739482119556, 489.13989733585151, 51.91890885863404, 155.38475544535777, -135.63165027258526, -425.97813554572787, -228.430505143679, 383.03834909155887, 136.53358298937496); + double4x4 b0 = double4x4(-445.84502407808088, -420.03529210576568, 299.02440108872224, -13.880978829171966, 151.56173593903043, -163.5094302461992, -391.09603733154762, 479.2837710228207, -77.674873149802409, -46.5841996886694, -415.37701888353422, 71.466978344818131, -206.06102643071722, 360.83628218287424, 236.96878658838978, 14.550342328171382); + bool4x4 r0 = bool4x4(true, true, false, true, false, true, false, false, true, true, true, false, false, false, true, true); + TestUtils.AreEqual(a0 > b0, r0); + + double4x4 a1 = double4x4(8.602427725029429, -251.3243674018068, -345.954920691417, -170.565928777012, -293.25441588706076, 139.1249764613458, 214.3030732675935, 238.76991211565678, 105.53519086983761, -170.92529280992471, 26.98023964230913, -188.92831405854241, 201.78662619450438, -506.05715656003781, 15.454906232401186, 115.08067207926911); + double4x4 b1 = double4x4(364.735178402036, -159.0612996365229, 226.63117490831348, 182.79602512288659, 341.83937398616195, -79.130463875425278, -247.29681956362765, 164.58913882290437, -352.15977327533056, 9.8226540134394327, 186.72162613026876, -325.91364613450764, -77.930370128681147, -379.74604219000139, 251.45575558927646, -144.1835678295156); + bool4x4 r1 = bool4x4(false, false, false, false, false, true, true, true, true, false, false, true, true, false, false, true); + TestUtils.AreEqual(a1 > b1, r1); + + double4x4 a2 = double4x4(-496.97184705034448, 339.88814202877143, 372.22833007025918, 313.2386917142378, -419.10894437279035, -265.32978380160864, -42.501995344880015, 369.16390507722451, 67.169061453626, -256.69890868696336, -104.10592060168551, 499.57010268586225, 41.663492460578482, 151.15207416897272, 220.68833146835129, -344.65888110951471); + double4x4 b2 = double4x4(337.88991014002352, -249.50553929503332, -225.90130554228148, -249.49127757246202, 381.12288373574745, 325.54538145919582, 455.49881360283996, 333.31868401789973, 118.98035603341668, 223.19812236688949, -385.28907102406447, 333.88080159476067, -437.41072126729915, 243.97544943726405, -302.81988658701061, -32.710171476337223); + bool4x4 r2 = bool4x4(false, true, true, true, false, false, false, true, false, false, true, true, true, false, true, false); + TestUtils.AreEqual(a2 > b2, r2); + + double4x4 a3 = double4x4(-285.24129809310716, -94.158616825080742, -75.18496159239902, 304.3608087526452, -153.39846498956831, -83.06840161377022, -59.948590068122655, 228.58834921037237, 64.90572479409434, 65.08489635637261, -3.845335723760229, 471.92235277216992, 350.31980745416126, 220.83096824438826, 134.94662028874575, 41.820390959186625); + double4x4 b3 = double4x4(-228.69145570913861, 388.41316312757, -23.724548589309961, -180.56350358788086, -433.43401523746275, 157.85735590656168, -2.4736955177382356, 258.28781259166442, -327.37584057793759, 408.47455019898462, 403.88254971237973, 400.31722397371993, -505.99265956598924, 297.63905133755839, -442.73675772302636, 395.71094221422027); + bool4x4 r3 = bool4x4(false, false, false, true, true, false, false, false, true, false, false, true, true, false, true, false); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void double4x4_operator_greater_wide_scalar() + { + double4x4 a0 = double4x4(11.156317000815761, -411.02322382993214, 385.88556188432756, -485.10304831206008, -491.18003033622171, 405.17534632476759, 173.57509740329124, 69.269281181166548, 501.30683183172107, -367.027771405423, -86.124509613087639, -489.09058998948456, -172.51816066192379, -18.149639853346002, -236.41493498367021, -238.8945134798505); + double b0 = (-302.81693877969724); + bool4x4 r0 = bool4x4(true, false, true, false, false, true, true, true, true, false, true, false, true, true, true, true); + TestUtils.AreEqual(a0 > b0, r0); + + double4x4 a1 = double4x4(-27.239137900638923, 240.16453253485474, -481.47807930478734, 185.59438547193747, 33.294723764664809, -510.22814702905163, -183.28619607877278, -386.12766260007754, -13.638212448748845, -7.3478887115362568, -261.86596477304863, 52.24950768996473, 16.323217637987455, -410.51010985416832, -262.26747978025463, -458.25599000335484); + double b1 = (471.77934072528933); + bool4x4 r1 = bool4x4(false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 > b1, r1); + + double4x4 a2 = double4x4(-218.86613069235631, 290.57303752124915, 180.263321722049, -482.86394690110529, 100.70627574841785, 180.6725166685286, 501.31978749731547, -289.28097046971368, -25.849692595121326, 455.1624288294289, -63.3173549470107, -17.446765669363913, 53.017790103805169, 88.819595139855323, 182.3580006018085, -428.92720933860505); + double b2 = (-34.692342535915031); + bool4x4 r2 = bool4x4(false, true, true, false, true, true, true, false, true, true, false, true, true, true, true, false); + TestUtils.AreEqual(a2 > b2, r2); + + double4x4 a3 = double4x4(408.336862515815, 495.17269753626204, 345.03004352423829, 337.5619315288784, 175.88833745563795, -412.79507680088051, 57.17175796310039, 413.02461428801746, 34.4581821125272, -99.476764963696155, -76.558937823660187, -494.98022650879818, -27.016385806266385, -468.51766155125466, -335.857029832833, 481.16540001387023); + double b3 = (-460.19863698454509); + bool4x4 r3 = bool4x4(true, true, true, true, true, true, true, true, true, true, true, false, true, false, true, true); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void double4x4_operator_greater_scalar_wide() + { + double a0 = (453.54610201974685); + double4x4 b0 = double4x4(-226.20441423459187, -423.46500487973213, 409.40550227156166, 453.87706277048073, 87.475727837288673, 113.79560308987072, 176.40926154721956, -140.44002944810319, -182.48286804113673, -158.29329188088576, -162.68531830733889, -193.328676075362, 230.18129955519987, -102.58784227379965, 392.5205878655056, -177.47865947404813); + bool4x4 r0 = bool4x4(true, true, true, false, true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 > b0, r0); + + double a1 = (-10.295010809924008); + double4x4 b1 = double4x4(-24.048938524000789, 172.44867499752377, 374.04800503982608, -368.99763958947619, -210.19528804076617, 149.47022325800276, -281.34327019441093, -100.46916608720511, 304.86444320569956, -361.52483360912879, -372.45236056505348, -33.909547583157917, -69.595290454847429, -460.43241498453187, -309.34166278938841, 486.13155602204222); + bool4x4 r1 = bool4x4(true, false, false, true, true, false, true, true, false, true, true, true, true, true, true, false); + TestUtils.AreEqual(a1 > b1, r1); + + double a2 = (471.92098138850224); + double4x4 b2 = double4x4(479.36154411703421, -107.00416784500896, 331.63653746789157, -340.84013120310385, -384.21461147079924, -451.7265658097931, 467.97876355982328, -236.5691269545672, 44.654746314815611, -285.79786671595548, 42.7309816082618, 338.18510762703841, 274.01702202205411, -108.60437088301609, -211.37325606652223, -19.004157313613291); + bool4x4 r2 = bool4x4(false, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 > b2, r2); + + double a3 = (194.114679188521); + double4x4 b3 = double4x4(395.75988668750961, -320.20625725398133, -384.86614316742225, 310.54374160922305, 495.99087380617436, -60.935228137734896, 178.74877246597259, 42.3462288576859, 294.61128463158911, -36.679563301000542, 36.861622112273039, 405.46951813505473, 399.11242241371065, -209.86087689635383, -365.34365551795048, -167.46023209740417); + bool4x4 r3 = bool4x4(false, true, true, false, false, true, true, true, false, true, true, false, false, true, true, true); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void double4x4_operator_less_equal_wide_wide() + { + double4x4 a0 = double4x4(240.09053169940159, 462.2131528622532, 293.08251561461134, -427.87067361728782, -405.5227226715175, 204.59190211286386, 294.670105832941, -327.56444445604666, -456.12326667091031, 282.3012408140587, 421.8811549720732, -311.71284809322697, 84.5674827492644, 447.24461647832982, -154.49435217422172, -424.36474986763892); + double4x4 b0 = double4x4(-81.203838624620744, 493.63743876555816, -411.47211451617636, 99.164449499530974, -295.66769875943089, -480.46254824123463, 74.414040361723892, 260.916124226952, 306.17329730939741, 139.56480438055689, -505.75247955031341, -489.62680958659706, -280.03260267899958, 303.15991058161478, 511.19015788994272, -104.65973358259527); + bool4x4 r0 = bool4x4(false, true, false, true, true, false, false, true, true, false, false, false, false, false, true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + double4x4 a1 = double4x4(36.684489505684269, 267.07029283562224, 307.89391937288167, -351.76015369582927, -157.36036570247279, 152.70902712303632, 372.26716750313858, 202.36828837281485, -77.043453014010311, 438.18483253856414, 260.28234088620275, 386.03408759927106, -281.49099053139378, -102.9300439837063, -346.71673099450618, -258.34119832624737); + double4x4 b1 = double4x4(95.1465771641333, -125.6363432992419, 376.239777024947, -415.7747320680761, -47.481050275024529, 117.72210293529656, 469.37837264937275, -263.04235780567041, -216.00231109187115, 66.734246046624207, 99.218598173567329, 233.843011249715, 439.8399624488502, 61.115118293610976, -219.03058419890266, -404.71288056146022); + bool4x4 r1 = bool4x4(true, false, true, false, true, false, true, false, false, false, false, false, true, true, true, false); + TestUtils.AreEqual(a1 <= b1, r1); + + double4x4 a2 = double4x4(-383.30294889179197, -5.1470377469188975, 319.34374752610165, 465.02220485407031, 145.93345100522663, -215.07482991697026, -146.46150667334979, -349.8939770897357, 29.599108948185631, -131.79663640437491, -438.99467464862141, 147.05792553120193, 221.11248956486236, -356.14535276784807, -32.830178991346713, 442.94199892642996); + double4x4 b2 = double4x4(-202.74836430454087, -312.47647133119244, 310.07189884319519, -320.3630436958573, 186.07597288213481, -42.637794752902266, 82.565048971476472, 127.18911009989176, 198.28697428400017, -450.49204108235057, 20.901004085736872, 449.46589133211683, -478.77271841409276, 380.05395692403147, 99.1247280105598, -450.32978150357019); + bool4x4 r2 = bool4x4(true, false, false, false, true, true, true, true, true, false, true, true, false, true, true, false); + TestUtils.AreEqual(a2 <= b2, r2); + + double4x4 a3 = double4x4(-301.13985194877716, -10.974948172911525, -37.474589603708409, -70.386105331772058, -169.02451594594146, 432.80079504139758, -197.70657190946235, -131.69548207693521, 277.7339395385859, -480.48399065457471, 424.76605220547231, -477.71820591283881, 162.19371016425714, -21.588960896054743, 154.21725161104337, 224.46713529548936); + double4x4 b3 = double4x4(45.421907684496546, 63.015531807679508, 2.8447597040071742, 124.8846481427945, 246.54787623442144, -437.79363199593206, -83.32811764782673, 147.94396049712964, 281.880845916402, -33.003705278506345, -319.8491572438968, 107.79604702247127, 57.38707092096422, 286.11646594019442, -427.03175206996116, -465.19127700533312); + bool4x4 r3 = bool4x4(true, true, true, true, true, false, true, true, true, true, false, true, false, true, false, false); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void double4x4_operator_less_equal_wide_scalar() + { + double4x4 a0 = double4x4(309.1924356469849, 69.673792633076118, -101.72418622939114, -315.97240629604664, -346.01106731314724, 424.15386577330241, -410.87006945669191, -483.90265320423185, 183.82114538169515, 320.44249287268258, -257.87003791419329, -386.801748694294, -182.9388249772316, 349.25012962392077, 485.31159304329731, 373.56911652794531); + double b0 = (292.92427148154206); + bool4x4 r0 = bool4x4(false, true, true, true, true, false, true, true, true, false, true, true, true, false, false, false); + TestUtils.AreEqual(a0 <= b0, r0); + + double4x4 a1 = double4x4(259.15151822713744, -128.5255282523695, -43.874866744445114, 457.38574549992836, -77.638293064030961, 479.45184038553941, -499.51644372358754, -398.13294643821797, 402.48485893871862, 87.9161055497434, -502.17362308044619, 125.95081263685177, -54.493607308014134, 250.66739737739204, 97.942930982421558, 228.02151809820043); + double b1 = (450.13007828692446); + bool4x4 r1 = bool4x4(true, true, true, false, true, false, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 <= b1, r1); + + double4x4 a2 = double4x4(-213.37865243357544, -24.82758070194518, -451.04158684752957, 429.57755132651778, -308.43429031429548, 355.16031114904229, -279.40712011950421, 181.6722582232544, -290.14875401656548, -184.84408411050407, 447.6939139066701, 168.88657696958933, 26.378954661255193, 392.55852789085293, 255.60484015923214, 162.16346867483276); + double b2 = (42.260789175639275); + bool4x4 r2 = bool4x4(true, true, true, false, true, false, true, false, true, true, false, false, true, false, false, false); + TestUtils.AreEqual(a2 <= b2, r2); + + double4x4 a3 = double4x4(195.49629482789726, 357.55978720149017, 145.56185037715443, 363.80669014705654, -141.43743545442697, 102.22195224753671, -114.20774250580359, -429.83945985782867, -236.49592625186591, -175.762239776441, -420.69644637624566, -97.853465841083562, -273.68524731029072, -442.22490450470934, 156.18703110338515, -102.82326679249445); + double b3 = (463.24875209445543); + bool4x4 r3 = bool4x4(true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void double4x4_operator_less_equal_scalar_wide() + { + double a0 = (-511.15238141974078); + double4x4 b0 = double4x4(51.159012579898786, 340.44369022010062, 312.81429519914752, 354.19252626699983, 136.39671165142056, -94.767871185563422, 288.544332877055, 304.04282369466625, -148.61806089646092, -506.30010127755816, 27.581254256694251, 48.471146844546865, 104.88351326104419, -488.6858386884843, -480.43516968210935, 421.9366516647566); + bool4x4 r0 = bool4x4(true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + double a1 = (239.72105299668431); + double4x4 b1 = double4x4(-101.01844673092404, -283.95147551407638, -55.2435333986038, -455.80483147865385, 131.10721618081777, -461.69878099006542, -388.48285001725094, -258.93605125087129, -225.2235287284588, -116.01998215355911, -442.59525629626364, 297.33334579008317, 36.687250392831515, 485.09780930220052, 344.44564859217292, 237.59216724969087); + bool4x4 r1 = bool4x4(false, false, false, false, false, false, false, false, false, false, false, true, false, true, true, false); + TestUtils.AreEqual(a1 <= b1, r1); + + double a2 = (230.39086471795611); + double4x4 b2 = double4x4(-413.98479266370873, -215.90167794744565, 39.5603883450666, 22.947996388630941, -162.0605676928817, 236.73373352584133, -253.95195853614803, -204.71909985538531, -161.61653550044474, -64.3859322370896, -229.815656530585, -484.82564591096047, -135.04042989343424, 351.69478599712943, 111.82539778194644, -249.98255431371859); + bool4x4 r2 = bool4x4(false, false, false, false, false, true, false, false, false, false, false, false, false, true, false, false); + TestUtils.AreEqual(a2 <= b2, r2); + + double a3 = (435.80731769828469); + double4x4 b3 = double4x4(2.8926103128551404, -338.66996089493387, 381.34663146610683, 456.652450058913, 432.051796399081, 290.14247121016615, 189.29714521639846, 101.12857751787112, -150.37975962012064, -490.74788903200437, 219.13958917331865, -505.29052209541692, 326.69468871070751, -479.39791057975867, 195.13560566452122, 322.878979594856); + bool4x4 r3 = bool4x4(false, false, false, true, false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void double4x4_operator_greater_equal_wide_wide() + { + double4x4 a0 = double4x4(-386.59181302906563, -157.12078221008215, 391.01526445477054, -511.88687133783793, -5.4220387960886569, 287.64527501149348, -122.53520184500849, 7.4814426933794493, 152.94642765491574, 48.986223482054811, 57.338148859021317, 300.46493138953338, 349.25705139211243, 85.749700824613569, -230.95330654408468, 418.7112159294594); + double4x4 b0 = double4x4(153.44301350109424, 49.892483019219981, 78.025787628267835, 138.81373292711271, -225.51057802211056, -339.35611335344436, -373.302078182484, 364.9358934671319, -322.71539870030961, 125.47818165900105, -25.776589167200314, 297.51890792395864, 73.222349439385539, 462.78374288174496, 393.19134515951919, -95.001432224643168); + bool4x4 r0 = bool4x4(false, false, true, false, true, true, true, false, true, false, true, true, true, false, false, true); + TestUtils.AreEqual(a0 >= b0, r0); + + double4x4 a1 = double4x4(-131.03991824530061, -126.51221257378916, -156.81847841889527, 422.37748761772059, -413.08933348818186, 219.44273553576443, 35.591133372667741, 447.18153521380464, -223.49299560463663, 302.12299194099523, 459.85272834256887, -347.12802879285442, 364.97808211156075, 212.63543162710755, 504.27608680365427, -142.23296052880255); + double4x4 b1 = double4x4(381.35702556248611, 93.031928344178937, 254.25326287665087, 90.672789377473691, 348.93816892660141, 161.33763106229605, 79.435611046587837, 420.24346824187944, 453.68485209610537, -154.0116427661905, -97.290078923706915, 151.18477613813468, 57.360309865959152, -194.207084984615, -462.67061421958294, 113.38661604439221); + bool4x4 r1 = bool4x4(false, false, false, true, false, true, false, true, false, true, true, false, true, true, true, false); + TestUtils.AreEqual(a1 >= b1, r1); + + double4x4 a2 = double4x4(-132.22179395156996, 303.68380489185631, 265.21013439130513, 9.75437188602723, -233.09288631803025, 26.567515147182917, 266.78067529703526, -250.0722254487091, 138.0408142255809, 174.27673848638165, -420.93164678147605, -42.854160567211977, 216.48505435534059, 240.05384623261818, -470.38216875045663, 98.396702573819425); + double4x4 b2 = double4x4(-129.35329276386335, 8.1077725925052846, 426.44951434920051, 410.69316477826476, 470.31343410458112, 220.39997993241991, -372.87269967276262, -242.17855965447546, 177.50623258273413, -172.63815864019011, 60.722858695649961, 478.25016067840636, 234.30301128807616, 297.82121171514564, 104.58457260233558, -462.41871926859892); + bool4x4 r2 = bool4x4(false, true, false, false, false, false, true, false, false, true, false, false, false, false, false, true); + TestUtils.AreEqual(a2 >= b2, r2); + + double4x4 a3 = double4x4(-20.828870544596043, -218.44057498613398, 287.75180615473153, -356.96666614942563, -68.069519789921856, -432.91875644816025, 388.14240592911017, 396.40410084109942, -204.5674646853318, 179.7521007898041, -124.94735270596453, 22.31826282586826, 425.50086780334868, 303.6227182371648, -325.60433188341756, 369.07533352872144); + double4x4 b3 = double4x4(-405.94388050862767, -347.05557386346891, -72.926237378700762, -137.94250995383715, 403.42982716273048, 501.53929423798775, -55.528008725274333, 225.85078178432343, -57.186008718417042, -185.23014577907981, -481.59480188861249, 319.05534735278013, 337.43364421344995, -481.09287689677109, 223.93316017088159, 174.32254107963411); + bool4x4 r3 = bool4x4(true, true, true, false, false, false, true, true, false, true, true, false, true, true, false, true); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void double4x4_operator_greater_equal_wide_scalar() + { + double4x4 a0 = double4x4(495.457423679278, -14.345115906719627, -463.47478053694346, 217.51749215718246, -246.86571776441565, -377.65869706573835, 53.815095211293169, -123.33294373533357, -221.50546441856096, 252.99433410027734, -116.44038277326172, -395.36331028275345, 164.77259667439978, -287.00733889593153, 355.83704559683667, 184.19556316369938); + double b0 = (189.20512804258851); + bool4x4 r0 = bool4x4(true, false, false, true, false, false, false, false, false, true, false, false, false, false, true, false); + TestUtils.AreEqual(a0 >= b0, r0); + + double4x4 a1 = double4x4(273.01225555735277, 249.38409697701411, 396.39213938098032, 332.66542044871744, 243.76141392614761, -335.121477998384, -302.08690442800844, 254.44223344253476, 179.00504287472234, 71.176674637560154, -331.27167788672807, 307.89058008226129, -388.57851737950858, 150.60576422075076, -219.89257989632551, -491.68100213058341); + double b1 = (-418.14240308205706); + bool4x4 r1 = bool4x4(true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, false); + TestUtils.AreEqual(a1 >= b1, r1); + + double4x4 a2 = double4x4(30.997067704329766, -74.50001743924804, -343.38647357718389, 216.0315855555383, -420.40314813163275, -78.384021080277876, -336.6411160606151, 317.0945958183587, -262.42494666875569, -228.41125522759336, 123.46545964268296, 264.10247362037308, 223.62332569045168, 440.53538366804617, -420.72700830024064, 74.844301497025526); + double b2 = (199.23222861030706); + bool4x4 r2 = bool4x4(false, false, false, true, false, false, false, true, false, false, false, true, true, true, false, false); + TestUtils.AreEqual(a2 >= b2, r2); + + double4x4 a3 = double4x4(-177.07789405485516, -28.596381439173797, 165.28756173201259, -349.20799676943943, 457.4437141164409, -191.2236379083356, 350.61212389106493, 475.07525871464759, 86.129239360862016, 63.164628296701494, -126.91322690197882, 80.776476182405077, -344.92694703905238, -409.61143012047347, -408.5478028769362, -415.68230815217009); + double b3 = (482.71023033685526); + bool4x4 r3 = bool4x4(false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void double4x4_operator_greater_equal_scalar_wide() + { + double a0 = (215.43534169692327); + double4x4 b0 = double4x4(204.80295310020585, -101.10404853760451, -122.05503827056617, -70.456147941973143, -239.62025677395064, -185.99272426683115, -455.61258027312, 276.66581476697036, 79.39918831707871, 416.42054791768112, 379.27350801009379, -439.51472612820322, 67.141009600433108, -74.560638224035813, -367.25635474140586, 494.950765601802); + bool4x4 r0 = bool4x4(true, true, true, true, true, true, true, false, true, false, false, true, true, true, true, false); + TestUtils.AreEqual(a0 >= b0, r0); + + double a1 = (-61.235545425319856); + double4x4 b1 = double4x4(-429.17024846988278, -213.82468924942646, -264.31016242891093, 243.11378275748052, -22.383876095704693, 304.86197175870745, -323.68615332417477, 67.938025267765852, 125.30356818312009, -400.47050280145857, -283.15963162256389, -42.319595595039232, -429.51037355396448, 499.3958854616601, -289.96307887228352, -136.00878554955534); + bool4x4 r1 = bool4x4(true, true, true, false, false, false, true, false, false, true, true, false, true, false, true, true); + TestUtils.AreEqual(a1 >= b1, r1); + + double a2 = (-351.12526123184955); + double4x4 b2 = double4x4(-381.81828921931719, 393.30091089443351, 18.023639925766588, -169.92393048569744, -285.88492669066648, 163.75110037799516, 191.85533317916804, 114.01553230826539, -395.98584169707533, 189.3665684151307, 176.19814618686132, 61.713796405919766, 507.54848241598745, 224.04381595554003, -422.99370570806491, -127.05500394061909); + bool4x4 r2 = bool4x4(true, false, false, false, false, false, false, false, true, false, false, false, false, false, true, false); + TestUtils.AreEqual(a2 >= b2, r2); + + double a3 = (95.528642460484321); + double4x4 b3 = double4x4(362.56816761687776, -501.04042148079742, 314.66822471966418, 484.32155893944275, -284.81317080408951, 106.03397970368803, -310.3688849463914, 373.60582679026095, 147.07617504292921, -297.52222146537258, 339.5470513494439, -193.01458963799041, -3.090438128956805, 429.024662456021, 157.23658688237731, 208.49405942135218); + bool4x4 r3 = bool4x4(false, true, false, false, true, false, true, false, false, true, false, true, true, false, false, false); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void double4x4_operator_add_wide_wide() + { + double4x4 a0 = double4x4(465.14837644302679, 278.91072548502621, -277.52992237616792, -65.197214395365336, -473.32437561141529, -4.6955420992782138, -470.53676698661258, -109.95011453980118, -178.70145782209067, -420.03378339299644, 290.71109236903078, -446.5296368294068, 491.066454400805, -261.11730039358014, -298.40688409395835, 502.42861890347149); + double4x4 b0 = double4x4(483.99436186440028, -204.07667193379098, -365.67356007437854, -509.92086076639634, -270.69751108377125, 486.76397846954126, 267.49177587567442, 251.6425212601398, 244.4951094335388, -78.675763882079991, 352.20551340291536, 82.779185095233515, 462.54732606492348, -405.492017696375, -428.4983238785054, -41.872599859662614); + double4x4 r0 = double4x4(949.14273830742707, 74.834053551235229, -643.20348245054652, -575.11807516176168, -744.02188669518659, 482.06843637026304, -203.04499111093816, 141.69240672033862, 65.793651611448126, -498.70954727507643, 642.91660577194614, -363.75045173417328, 953.6137804657285, -666.6093180899552, -726.90520797246381, 460.55601904380887); + TestUtils.AreEqual(a0 + b0, r0); + + double4x4 a1 = double4x4(284.59432925125316, 401.12844366632794, -36.263498084742366, -102.94915657069026, 503.19817161150195, -384.42911857386542, -45.22821452339565, -198.67394337368847, -62.8800013358146, -79.55225447544467, 413.0982751385767, -100.87757997441923, 418.523998693807, -183.143126334596, 407.44374031920165, 300.48602332756207); + double4x4 b1 = double4x4(-269.9274958436971, 75.204465662690041, -141.91339380196922, -222.1867559990784, 41.305726308983594, 148.33947117083676, -177.23311217931712, -176.51887830370987, 492.69246768052335, 439.04383942067807, -511.74275922763292, -399.05713695988857, -315.8684596102072, -228.0772484410914, -171.70519669899028, 467.17394826709005); + double4x4 r1 = double4x4(14.666833407556055, 476.332909329018, -178.17689188671159, -325.13591256976866, 544.50389792048554, -236.08964740302866, -222.46132670271277, -375.19282167739834, 429.81246634470875, 359.4915849452334, -98.64448408905622, -499.9347169343078, 102.65553908359982, -411.22037477568739, 235.73854362021137, 767.65997159465212); + TestUtils.AreEqual(a1 + b1, r1); + + double4x4 a2 = double4x4(-261.12612998724273, -309.8303507817119, 378.36333220934648, -224.09398065511789, -164.55573399577094, -69.873935493581882, 224.63463197678072, -383.99260038137095, 149.2212694386119, 169.38798363943954, 163.05393059693927, 57.02912500176069, 342.95008413072219, 168.68046696888302, -470.77026746737317, -117.63049631828); + double4x4 b2 = double4x4(-474.8229422396156, 311.39072885708447, 326.84541979750873, 475.21193597987849, 314.152972606082, -262.59463393995287, -82.869108000243614, 156.29956658012213, 427.40157791012973, -279.09935177448176, -448.61522051720658, 284.33708847888613, 288.18558062621651, -232.39503847453511, -386.87190812959892, 162.90336831049217); + double4x4 r2 = double4x4(-735.94907222685833, 1.5603780753725687, 705.20875200685521, 251.1179553247606, 149.59723861031108, -332.46856943353475, 141.76552397653711, -227.69303380124882, 576.62284734874163, -109.71136813504222, -285.56128992026731, 341.36621348064682, 631.1356647569387, -63.714571505652088, -857.642175596972, 45.272871992212174); + TestUtils.AreEqual(a2 + b2, r2); + + double4x4 a3 = double4x4(252.81970298142164, -102.53439884192051, -379.40276139760522, -42.88221051305635, 204.78644833564124, 91.599573416448948, 70.131176265948966, -111.69176893666935, -443.8758592288363, 134.70148212029665, 170.90681966157013, -207.87998232984916, -19.85206724137629, 480.44064472636239, -353.8350471713743, 433.98220344725166); + double4x4 b3 = double4x4(-339.60306684095553, -82.40527228378005, 1.9353277692270012, 122.27457886667673, -42.76419045532316, -413.05469746750532, -350.28294603446636, -10.60689330594937, 172.55730708528188, 492.04216240907192, 67.585375102043827, -324.51090947003615, -82.16743926059803, -421.82224841687, -503.69894218058278, -289.683825866172); + double4x4 r3 = double4x4(-86.783363859533893, -184.93967112570056, -377.46743362837822, 79.392368353620384, 162.02225788031808, -321.45512405105637, -280.1517697685174, -122.29866224261872, -271.31855214355443, 626.74364452936857, 238.49219476361395, -532.39089179988537, -102.01950650197432, 58.618396309492368, -857.53398935195708, 144.29837758107965); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void double4x4_operator_add_wide_scalar() + { + double4x4 a0 = double4x4(459.89829728561369, -447.66336104258119, -94.438627525436971, 126.42986279652916, -36.254356162741033, -349.64130060264904, -2.7912590516690443, -478.41478489265535, 443.11525246273504, 268.092225914864, 41.32102133767728, -471.25607584009697, -2.6649749291431704, 78.985822952811532, 202.14799151297098, 311.7254551908585); + double b0 = (500.99725913489112); + double4x4 r0 = double4x4(960.89555642050482, 53.333898092309937, 406.55863160945415, 627.42712193142029, 464.74290297215009, 151.35595853224208, 498.20600008322208, 22.582474242235776, 944.11251159762617, 769.08948504975513, 542.3182804725684, 29.741183294794155, 498.33228420574795, 579.98308208770266, 703.1452506478621, 812.72271432574962); + TestUtils.AreEqual(a0 + b0, r0); + + double4x4 a1 = double4x4(10.345855002452595, 355.23276703210206, -197.80076584490052, 255.95526587961024, 244.14709793969394, -181.6265695940827, -2.4549267303454485, 300.90065469448484, -236.49194895312746, -160.5840962680914, -172.54221566605486, -242.9410861669765, 466.34409902353957, 237.98745810146795, 264.294014815378, 372.86684029775995); + double b1 = (-151.24445898423181); + double4x4 r1 = double4x4(-140.89860398177922, 203.98830804787025, -349.04522482913234, 104.71080689537843, 92.902638955462123, -332.87102857831451, -153.69938571457726, 149.65619571025303, -387.73640793735927, -311.82855525232321, -323.78667465028667, -394.18554515120832, 315.09964003930776, 86.742999117236138, 113.04955583114617, 221.62238131352814); + TestUtils.AreEqual(a1 + b1, r1); + + double4x4 a2 = double4x4(-198.83777699192882, 402.16034693371523, -117.02482729639149, 497.37375592504338, 485.90928124166521, -47.757128976172339, 77.81479338454767, -271.54797304400614, -133.25178605562627, 211.86678777070097, 253.15022504196975, -342.78316823708974, -185.24833997769667, -403.38548845955427, -358.84824125787628, 65.247578889712486); + double b2 = (-381.930974899759); + double4x4 r2 = double4x4(-580.76875189168777, 20.229372033956224, -498.9558021961505, 115.44278102528438, 103.9783063419062, -429.68810387593135, -304.11618151521134, -653.47894794376521, -515.18276095538522, -170.06418712905804, -128.78074985778926, -724.71414313684875, -567.17931487745568, -785.31646335931327, -740.77921615763535, -316.68339601004652); + TestUtils.AreEqual(a2 + b2, r2); + + double4x4 a3 = double4x4(127.2016943093397, 432.12115903949416, 436.08892055791284, -308.05696859399643, -255.14983880480276, 245.96320855150145, 420.01629920490848, 337.52920810204432, -311.76240720961357, 322.94279566544242, -342.24904338561419, 276.52630127432121, 488.77115343919547, -481.89523218660395, 289.0270065222993, -332.12291613785686); + double b3 = (-112.13987141109067); + double4x4 r3 = double4x4(15.061822898249034, 319.98128762840349, 323.94904914682218, -420.1968400050871, -367.28971021589342, 133.82333714041079, 307.87642779381781, 225.38933669095366, -423.90227862070424, 210.80292425435175, -454.38891479670485, 164.38642986323055, 376.63128202810481, -594.03510359769462, 176.88713511120864, -444.26278754894753); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void double4x4_operator_add_scalar_wide() + { + double a0 = (-325.51276484388518); + double4x4 b0 = double4x4(-264.08813178915909, -106.00925998855814, -355.44729320865463, -447.33029362528134, -158.70021040677102, -199.48369154682553, 180.31809123806568, 337.57936898692481, -37.05501486596421, 230.80498014707348, -140.17433339924287, 18.02419591789328, -138.61435825126915, 26.904163611542458, -374.53758233345, 154.4676006559597); + double4x4 r0 = double4x4(-589.60089663304427, -431.52202483244332, -680.96005805253981, -772.84305846916652, -484.2129752506562, -524.9964563907107, -145.1946736058195, 12.066604143039626, -362.56777970984939, -94.7077846968117, -465.68709824312805, -307.4885689259919, -464.12712309515433, -298.60860123234272, -700.0503471773352, -171.04516418792548); + TestUtils.AreEqual(a0 + b0, r0); + + double a1 = (268.3838204203098); + double4x4 b1 = double4x4(-190.96302255939833, 188.61725362977813, -504.91612386373623, 20.454013595568995, 197.94534525552081, 251.41194474483461, -421.09037538109828, 111.44540052835146, -73.268883024001923, 480.88455770950975, 438.05301233662897, 66.844289095534123, -270.79599941465818, -44.02192189359198, 197.69471916821544, 19.113929995854392); + double4x4 r1 = double4x4(77.420797860911478, 457.00107405008794, -236.53230344342643, 288.8378340158788, 466.32916567583061, 519.79576516514442, -152.70655496078848, 379.82922094866126, 195.11493739630788, 749.26837812981955, 706.43683275693877, 335.22810951584393, -2.4121789943483805, 224.36189852671782, 466.07853958852525, 287.49775041616419); + TestUtils.AreEqual(a1 + b1, r1); + + double a2 = (349.23776857426287); + double4x4 b2 = double4x4(366.23449271090067, -413.48026890935387, -260.720191361718, 77.542334831106587, 183.95489009840173, -51.498981738229759, -472.4974751288525, 107.12689285498436, 349.07720033688338, 431.59597774576207, -314.11096468293618, 396.99665302643393, -167.30862935227742, -157.11451895400626, 287.76251591730977, -367.33903544365387); + double4x4 r2 = double4x4(715.47226128516354, -64.242500335091, 88.5175772125449, 426.78010340536946, 533.19265867266461, 297.73878683603311, -123.25970655458963, 456.36466142924723, 698.31496891114625, 780.83374632002494, 35.126803891326688, 746.23442160069681, 181.92913922198545, 192.12324962025662, 637.00028449157264, -18.101266869390997); + TestUtils.AreEqual(a2 + b2, r2); + + double a3 = (96.2368000001818); + double4x4 b3 = double4x4(212.02315984108634, -400.69347614827262, 26.342837584364588, 166.03322156054583, 49.9665229553201, 154.57879526660724, -446.35691782755634, -46.7756941536328, 426.56867261723085, -168.36824925633533, 254.26507890143671, -241.26492010860932, -278.259015451306, -237.17309795933454, 174.13094743254169, 510.91026592203889); + double4x4 r3 = double4x4(308.25995984126814, -304.45667614809082, 122.57963758454639, 262.27002156072763, 146.2033229555019, 250.81559526678905, -350.12011782737454, 49.461105846549, 522.80547261741265, -72.13144925615353, 350.50187890161851, -145.02812010842752, -182.02221545112423, -140.93629795915274, 270.36774743272349, 607.14706592222069); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void double4x4_operator_sub_wide_wide() + { + double4x4 a0 = double4x4(133.37101680290471, -131.8321183341705, -197.29314407952739, -485.286571013409, -337.55033103448818, 471.66710470228782, 146.5066197600712, -130.58504372955537, 110.77707367333448, -235.54160486699158, 78.879356659427, -347.68616811730254, -470.82054565419469, -11.459293609233271, -167.94791730118351, 330.67676917215658); + double4x4 b0 = double4x4(123.46028739002543, 359.56010048443454, -48.24847819667707, 478.97904680621764, 207.15832886805686, 142.36730462981723, -125.60551005490379, -65.299004823574307, -477.876434787119, 164.50000031501986, 428.00958915614035, 72.6278169493321, -446.880505531505, 432.09146114443035, -225.55465637219822, -112.45196705332586); + double4x4 r0 = double4x4(9.9107294128792773, -491.39221881860504, -149.04466588285032, -964.26561781962664, -544.708659902545, 329.29980007247059, 272.112129814975, -65.286038905981059, 588.65350846045351, -400.04160518201144, -349.13023249671335, -420.31398506663464, -23.940040122689709, -443.55075475366363, 57.606739071014715, 443.12873622548244); + TestUtils.AreEqual(a0 - b0, r0); + + double4x4 a1 = double4x4(-508.35086822339838, -252.03190457636111, -427.93418737311578, 192.6576150360786, 168.42931016182024, 457.3087858899072, 470.05851457550125, -299.71188058504458, -308.93956937870922, 454.53341052240387, 26.106923830745245, -482.71181105203544, -40.853544492671972, 318.38064613862923, 475.21081541255614, 134.9269641074012); + double4x4 b1 = double4x4(-210.61278853687122, -172.92506011432272, -80.60749415336528, 270.04610861001822, -154.25558550388348, 148.47577745675846, 13.661130673094249, 70.671096596248049, -221.32544551665217, -9.2588145775994235, 288.1738385111903, 217.36142764676424, 307.54006471649745, -262.41263854802241, -405.3780321578393, 400.00432533771004); + double4x4 r1 = double4x4(-297.73807968652716, -79.1068444620384, -347.3266932197505, -77.388493573939627, 322.68489566570372, 308.83300843314873, 456.397383902407, -370.38297718129263, -87.614123862057056, 463.79222510000329, -262.06691468044505, -700.07323869879974, -348.39360920916943, 580.79328468665165, 880.5888475703955, -265.07736123030884); + TestUtils.AreEqual(a1 - b1, r1); + + double4x4 a2 = double4x4(388.48155969590016, 138.71817285321572, -385.57360547854267, -149.36481745045859, -158.53404982319756, 508.07069015319962, 482.70080326623315, 114.56930237383085, 364.83137505353955, 229.03103052313952, -168.08806689460204, 373.44110911592895, -239.90097748483578, 379.92848437834925, 113.01185970800555, 306.83529319746197); + double4x4 b2 = double4x4(72.119071755613732, -154.88059170305758, -469.65998361523265, -320.61543217330029, 6.4122865229902573, -278.86505783668952, 15.838054425939049, 27.518323672711062, 429.86960979451874, -458.62247178453134, -172.064416250244, -284.52470673458868, 42.606667776874588, -223.47425208961323, -56.92974641589899, 61.8073423196596); + double4x4 r2 = double4x4(316.36248794028643, 293.5987645562733, 84.086378136689973, 171.2506147228417, -164.94633634618782, 786.93574798988914, 466.8627488402941, 87.050978701119789, -65.038234740979192, 687.65350230767081, 3.9763493556419576, 657.96581585051763, -282.50764526171037, 603.40273646796254, 169.94160612390453, 245.02795087780237); + TestUtils.AreEqual(a2 - b2, r2); + + double4x4 a3 = double4x4(222.81745038871532, 271.99421776085819, 386.94295781987853, -55.755297925209277, 440.03937193380636, -362.72476475440192, 292.10314835799068, 246.66062438053109, -319.0292376573334, -115.24401360156202, -122.40906268097882, 56.092392232312022, 210.67796263968478, -426.9796142182218, -337.58846799358184, 78.372708118694277); + double4x4 b3 = double4x4(-454.69553944780284, -114.06055718011248, 367.168711118013, -351.27958576347658, 263.14884269570416, -492.305362692245, 308.15324678465413, 455.308401081389, -221.13767753408183, -466.65879438196254, 81.54943589193249, 48.545975946144154, -88.7571204121956, 83.8197267445828, -437.89056536084536, 410.39569659270148); + double4x4 r3 = double4x4(677.51298983651816, 386.05477494097067, 19.774246701865536, 295.5242878382673, 176.8905292381022, 129.58059793784309, -16.050098426663453, -208.64777670085789, -97.891560123251566, 351.41478078040052, -203.95849857291131, 7.5464162861678687, 299.43508305188038, -510.79934096280459, 100.30209736726351, -332.02298847400721); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void double4x4_operator_sub_wide_scalar() + { + double4x4 a0 = double4x4(48.936717294592768, 410.45158953706346, -364.44171612544062, 163.98060353285666, -460.06732318367222, 110.91942339340198, 204.35834441164434, 180.26971420099483, -377.92569344952972, -470.26204297983185, 400.53491968686455, 461.50756499800252, -246.28726660753006, 21.605312595891405, 246.35072171238755, -121.42736178330489); + double b0 = (-291.59041442144212); + double4x4 r0 = double4x4(340.52713171603489, 702.04200395850557, -72.8513017039985, 455.57101795429878, -168.4769087622301, 402.5098378148441, 495.94875883308646, 471.86012862243695, -86.3352790280876, -178.67162855838973, 692.12533410830667, 753.09797941944464, 45.303147813912062, 313.19572701733352, 537.94113613382967, 170.16305263813723); + TestUtils.AreEqual(a0 - b0, r0); + + double4x4 a1 = double4x4(-122.71842413894757, 360.15095417581074, 342.87457887403411, 18.929827460520869, 164.60235245740148, 97.0436885808798, 485.9149813530571, -205.75765690848124, 253.44322717070725, -121.16305619159857, 187.99838813953022, -450.820273370864, -248.07337128746946, -26.996065390760123, 441.55261942444031, 449.91060969322484); + double b1 = (-122.93872099879138); + double4x4 r1 = double4x4(0.22029685984381331, 483.08967517460212, 465.8132998728255, 141.86854845931225, 287.54107345619286, 219.98240957967118, 608.85370235184848, -82.818935909689856, 376.38194816949863, 1.7756648071928112, 310.9371091383216, -327.88155237207263, -125.13465028867807, 95.942655608031259, 564.49134042323169, 572.84933069201622); + TestUtils.AreEqual(a1 - b1, r1); + + double4x4 a2 = double4x4(354.88602678612153, -189.19323381650878, 269.07481659067548, -59.118566302172155, 363.45839207407948, -73.779217515969265, -46.155220768486743, 109.9132454907118, 182.64693483274755, 229.01577411825576, -144.92867405010793, 469.25061414635309, -150.49230797146089, -192.31251177206286, -224.35684810595438, 285.87681855162452); + double b2 = (98.821485803845121); + double4x4 r2 = double4x4(256.06454098227641, -288.0147196203539, 170.25333078683036, -157.94005210601728, 264.63690627023436, -172.60070331981439, -144.97670657233186, 11.091759686866681, 83.825449028902426, 130.19428831441064, -243.75015985395305, 370.42912834250797, -249.313793775306, -291.133997575908, -323.17833390979951, 187.0553327477794); + TestUtils.AreEqual(a2 - b2, r2); + + double4x4 a3 = double4x4(-63.010835438506149, 152.83310110533284, 92.32092456348289, -481.9931101659281, 55.807233121156287, -198.59209904381635, -338.35669747849772, -142.26173955866216, -201.51055035437946, -279.91752041499944, -495.64004372788594, 119.08998757185884, 382.1476778379398, 68.734022410928333, 470.98230026242436, -500.40304469522232); + double b3 = (499.91121673021053); + double4x4 r3 = double4x4(-562.92205216871662, -347.07811562487768, -407.59029216672764, -981.90432689613863, -444.10398360905424, -698.50331577402687, -838.26791420870825, -642.17295628887268, -701.42176708459, -779.82873714521, -995.55126045809652, -380.82122915835168, -117.76353889227073, -431.17719431928219, -28.928916467786166, -1000.3142614254328); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void double4x4_operator_sub_scalar_wide() + { + double a0 = (294.58645905861); + double4x4 b0 = double4x4(452.35251757705237, 256.98980891750648, -275.159888634067, -89.027518075437968, 488.22838829840919, -333.21728030462623, -64.232989102710519, -66.041730196234653, 341.20492831859963, -385.775056303374, 75.394746577085357, 354.94371645289641, 169.13141520746581, 88.216608326982964, 1.7350065716240124, 122.53803997977548); + double4x4 r0 = double4x4(-157.76605851844238, 37.59665014110351, 569.746347692677, 383.61397713404796, -193.6419292397992, 627.80373936323622, 358.81944816132051, 360.62818925484464, -46.618469259989638, 680.361515361984, 219.19171248152463, -60.357257394286421, 125.45504385114418, 206.36985073162703, 292.851452486986, 172.04841907883451); + TestUtils.AreEqual(a0 - b0, r0); + + double a1 = (-264.94502771317264); + double4x4 b1 = double4x4(-50.837180399725753, -347.65032283759228, 4.0655586738445209, -79.095424450512724, 354.35833923628479, -292.4925116470514, -53.208983207684469, -246.34760033634848, 299.20334138497867, 432.18467422583353, -163.88000090600923, 176.74255546216978, -104.9858415615679, -445.7976302792307, -28.873155368898608, -169.58822901993443); + double4x4 r1 = double4x4(-214.10784731344688, 82.705295124419649, -269.01058638701716, -185.84960326265991, -619.30336694945743, 27.547483933878766, -211.73604450548817, -18.597427376824157, -564.14836909815131, -697.12970193900617, -101.06502680716341, -441.68758317534241, -159.95918615160474, 180.85260256605807, -236.07187234427403, -95.3567986932382); + TestUtils.AreEqual(a1 - b1, r1); + + double a2 = (-270.35924614144454); + double4x4 b2 = double4x4(68.0476272423042, -65.531290323255234, 440.38039776328037, 427.36063142649857, -81.472953595906915, 41.713177461974851, 175.82078059754372, -214.94915900703018, -163.44686253529363, -218.82914672551169, 389.1168579483018, -74.109779154001615, -448.13723751908969, -410.37498278653948, 363.21098177657041, -263.53538120143833); + double4x4 r2 = double4x4(-338.40687338374875, -204.82795581818931, -710.739643904725, -697.71987756794306, -188.88629254553763, -312.0724236034194, -446.18002673898826, -55.410087134414368, -106.91238360615091, -51.530099415932852, -659.47610408974629, -196.24946698744293, 177.77799137764515, 140.01573664509493, -633.570227918015, -6.8238649400062172); + TestUtils.AreEqual(a2 - b2, r2); + + double a3 = (473.54599283335074); + double4x4 b3 = double4x4(433.433287583959, 241.46943842688086, -446.75619074644345, -138.31811649087729, -414.00582165923242, 37.482320564557995, 290.04909457361748, -354.67991773908955, -322.97495308656943, -253.40195453045982, -412.35298819670129, 269.21571434159569, -65.809230119832421, -451.97742602414331, -407.73209805401603, 12.531945472830898); + double4x4 r3 = double4x4(40.112705249391752, 232.07655440646988, 920.30218357979425, 611.864109324228, 887.55181449258316, 436.06367226879274, 183.49689825973326, 828.22591057244028, 796.52094591992022, 726.9479473638105, 885.898981030052, 204.33027849175505, 539.3552229531831, 925.52341885749411, 881.27809088736672, 461.01404736051984); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void double4x4_operator_mul_wide_wide() + { + double4x4 a0 = double4x4(-394.78053898121254, -412.37219519744264, -25.874570143350638, -241.04595886964626, -93.675987525692221, 244.15999257013198, 494.68846606402121, 53.537962700025105, -239.49641167349017, 236.67584644848284, -211.85620818466703, -216.65482030466887, 467.95832870339893, -178.02191146557311, -386.3942503344241, -422.43540521265726); + double4x4 b0 = double4x4(-149.76397831261346, -345.04538671348496, -284.33404721148963, 267.97923648915219, -326.64849558782225, -150.68967754705329, 207.73243794577775, 366.19289248352538, 358.88076202891807, 214.85359368792433, 253.42280900358355, -307.71382751488773, 184.4711149597872, 426.43644185850235, -144.28142625851621, 459.47961518703016); + double4x4 r0 = double4x4(59123.904078224172, 142287.1235617903, 7357.0212487164608, -64595.312016683383, 30599.120397970968, -36792.390550284115, 102762.84107913627, 19605.221418797286, -85950.654724573629, 50850.6561485879, -53689.195383006307, 66667.684005499876, 86324.794650634591, -75915.030498228327, 55749.513536340863, -194100.45742848891); + TestUtils.AreEqual(a0 * b0, r0); + + double4x4 a1 = double4x4(464.58952758488692, -251.3156646468284, -104.97877912641445, -66.934159071619717, -39.829896707008572, 401.56559080703448, 434.14618250082538, -336.45419589451245, -83.11415318544681, 329.96027842627848, -316.97214594342381, 474.9379296130212, -445.10915800794453, -301.00371541688389, 405.68786425408337, 142.37348682357629); + double4x4 b1 = double4x4(-358.31334917541284, -201.36521563370025, 254.90996539541982, 168.52096303204121, 8.7945530455533572, -194.84647974504458, -405.36266178887462, -180.7321890242082, -189.74690946831691, -35.518455760329232, 120.31664210200154, -136.2033479847961, 407.34163231744503, 301.65431489686216, -155.4824007281486, -461.39456126717596); + double4x4 r1 = double4x4(-166468.62962076368, 50606.233003735295, -26760.136954367728, -11279.808946489193, -350.28613938869785, -78243.6417554897, -175986.65214401312, 60808.103330394995, 15770.6537000148, -11719.679551949688, -38137.024239778322, -64688.136098260919, -181311.49098239967, -90799.069555490176, -63077.323080500144, -65690.352489042038); + TestUtils.AreEqual(a1 * b1, r1); + + double4x4 a2 = double4x4(-416.21309037516505, -103.27920513194016, -52.951897407393858, -40.828328390060165, -86.185078899462269, -257.3165096050671, 363.85721819654907, -229.86001001571304, 8.925310854299596, -2.4494049560508984, 37.75829531520526, 264.45176113045386, -321.251278788434, -268.25605762575572, 43.91368081230371, 274.83309877795773); + double4x4 b2 = double4x4(296.68037738310193, 341.001815239434, -257.09682166627459, 17.593622931089953, -443.84511658355831, 291.3492387697795, 490.1916594403757, 361.32099049227361, -509.28972244136486, 315.35265913389276, 125.08305054767197, -167.72711451711467, 396.8876833379677, -0.32041144385954112, 143.41152603151818, -396.34749597885997); + double4x4 r2 = double4x4(-123482.25672429107, -35218.396426477462, 13613.764524639606, -718.31821460143351, 38252.826391895, -74968.969196332953, 178359.77358712527, -83053.246493441373, -4545.5690876891422, -772.42636618638653, 4722.9227615057453, -44355.730823380291, -127500.67580770116, 85.95231074793665, 6297.7279789534741, -108929.41051275423); + TestUtils.AreEqual(a2 * b2, r2); + + double4x4 a3 = double4x4(378.42106622197718, -290.63338936987952, 209.91654334306554, 384.21970838318566, 363.08141892174319, -461.33337686086696, -134.36684829293137, 11.939433818654834, 125.20164233315813, -219.27099595743744, 358.96700422790229, 12.847143417618781, -479.771383747352, 150.25309402786809, -500.84076404051893, 485.67994211878624); + double4x4 b3 = double4x4(350.96015207421044, -374.53419488227655, -165.4560111339465, -338.01733151917222, -199.63334450481148, -385.12702935986545, -328.41130915675842, -423.30081744832023, -150.3247059091575, 402.97758669544828, 339.02082768968341, -29.296140922837026, -447.55209061482554, 62.160419254638441, 471.49208305379943, 282.40339506901955); + double4x4 r3 = double4x4(132810.71494934996, 108852.14249355502, -34731.953932569813, -129872.92054475893, -72483.157986900129, 177671.952974981, 44127.592555149138, -5053.9720953067108, -18820.900063075522, -88361.296783235535, 121697.29088662952, -376.37172401845788, 214722.68581329513, 9339.7953190788921, -236142.45511572072, 137157.66457127014); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void double4x4_operator_mul_wide_scalar() + { + double4x4 a0 = double4x4(328.20302191758674, -290.10672272839895, 236.99572454998065, 120.48136692889102, 357.90315811610924, 134.86723214707672, -477.31047104173825, -438.272912467957, -46.729179165665585, -238.40500103608008, 422.08249374017237, -48.83483722099794, 355.30832998608628, 119.35660391643489, -196.995807977857, 98.2360046367329); + double b0 = (192.21119055161773); + double4x4 r0 = double4x4(63084.293585418032, -55761.758562653624, 45553.230371395039, 23157.866976688449, 68792.992123681237, 25922.99125739103, -91744.41390168597, -84240.958291990959, -8981.8711609324328, -45824.109082604613, 81128.978632794271, -9386.6022026424689, 68294.2371195327, 22941.67493897583, -37864.798785101768, 18882.059406260672); + TestUtils.AreEqual(a0 * b0, r0); + + double4x4 a1 = double4x4(-325.55215683837991, -87.4509838034636, -130.47412949915702, -222.59457145565869, 126.01503211167415, 293.36108769726059, 174.38195737375963, -327.12007704708731, 56.629123475695565, 257.54154241156834, -475.60871551726422, -452.69189450363251, -49.220605157884108, 141.60094959177115, 431.58568330834885, 180.35518583113105); + double b1 = (53.937323833786536); + double4x4 r1 = double4x4(-17559.41210817936, -4716.8720329906373, -7037.4253747274324, -12006.1554842468, 6796.9135949323772, 15823.111987358996, 9405.6961056380333, -17643.98152822195, 3054.423371332075, 13891.101573705631, -25653.061307025935, -24416.989310772758, -2654.8277196957392, 7637.5762733030442, 23278.576762628451, 9727.8760632764643); + TestUtils.AreEqual(a1 * b1, r1); + + double4x4 a2 = double4x4(-40.92345454214302, 120.01444226131514, -59.508660105759589, 319.48987236595246, -403.52316040709763, -408.19309849673562, -335.39319554688092, -364.24254601273805, 150.68615085942952, 391.87204212316874, 179.3124121070432, 354.52978460608506, 497.76140164665946, 418.43656964713546, -413.33335967237753, -329.5207184895504); + double b2 = (279.54350842141707); + double4x4 r2 = double4x4(-11439.886059435035, 33549.258250967621, -16635.259627421652, 89311.3198262891, -112802.27998949833, -114107.73086718655, -93756.990583845487, -101821.63922875024, 42123.335281763859, 109545.28550737593, 50125.620783909842, 99106.499828674321, 139145.96857306932, 116971.22673098287, -115544.65751042787, -92115.377744115045); + TestUtils.AreEqual(a2 * b2, r2); + + double4x4 a3 = double4x4(-322.70306339985837, -344.13115159800793, 209.61276135668754, 38.797593373245377, -445.80384156005636, -71.467810425659536, -449.386232823779, -64.39855602402173, -210.72596535958627, 389.32568973550838, 510.29824447552596, -497.58101796432447, -509.50857400778148, 131.99404937214877, 502.49681043182352, 282.80997694787106); + double b3 = (-285.63120783755147); + double4x4 r3 = double4x4(92174.0657717795, 98294.596485466536, -59871.9462044751, -11081.80345639026, 127335.48972341932, 20413.437013386287, 128358.7324670231, 18394.237340135554, 60189.912008392661, -111203.56700134107, -145757.10392692662, 142124.66715818839, 145531.54939743111, -37701.619749536258, -143528.77089815889, -80779.3553041305); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void double4x4_operator_mul_scalar_wide() + { + double a0 = (-464.534700371574); + double4x4 b0 = double4x4(329.36093846399376, -198.68342671109525, 184.07942518223047, 256.01618754864489, 266.22629297255833, -97.894749448585685, 159.74810583877752, -351.82222263506719, 491.80157660497423, 49.902031206480274, 424.46256871915546, 160.11807616060514, -395.99208492599058, 125.20168858636248, -265.01581991138676, 314.65609779705107); + double4x4 r0 = double4x4(-152999.58486347177, 92295.346096036214, -85511.280621599, -118928.40297318244, -123671.35123704225, 45475.508103049062, -74208.538480743009, 163433.63077584215, -228458.89803045939, -23181.225114435249, -197177.59217890151, -74380.402533339569, 183952.06452060991, -58160.528893481009, 123109.04449626306, -146168.67611024179); + TestUtils.AreEqual(a0 * b0, r0); + + double a1 = (-292.71202029507236); + double4x4 b1 = double4x4(-37.729878681586058, 165.3622206027444, 356.51773302467438, -188.81332906932261, 504.91572475103465, 40.572113771257932, -206.77510581108515, -61.602680473403382, 118.97158938225903, 53.7483275186961, -198.66941771221786, 96.23611287783649, -20.241880664714529, -31.123976006696012, 38.890465516080326, -13.133307701504464); + double4x4 r1 = double4x4(11043.989014375036, -48403.509673108754, -104357.02590467168, 55267.931010519736, -147794.90187062602, -11875.945389626437, 60525.558968690093, 18031.845056961709, -34824.414285796818, -15732.781535478769, 58152.926629388923, -28169.46702581615, 5925.0417839403517, 9110.3618965353489, -11383.706731427716, 3844.2770304642049); + TestUtils.AreEqual(a1 * b1, r1); + + double a2 = (507.87128209875493); + double4x4 b2 = double4x4(95.017933651347562, 340.74862186086762, 438.98690172610191, -227.16596637813655, 452.57297894571582, 144.01496774703958, -31.586035981581574, 42.297746916440246, -466.02715013270597, 287.454008951529, 328.99688378395365, -164.24312146205602, -511.26830100979112, -9.5943138644072974, 431.19011875204285, -132.14180642559279); + double4x4 r2 = double4x4(48256.879785884317, 173056.43945786267, 222948.84060419552, -115371.07059366687, 229848.81906041352, 73141.066311099828, -16041.64059038324, 21481.810956341167, -236681.80623072633, 145989.63607064, 167088.0691738516, -83414.364672835931, -259658.48753029478, -4872.676483174394, 218989.07843891438, -67111.0286482113); + TestUtils.AreEqual(a2 * b2, r2); + + double a3 = (-87.502642910695954); + double4x4 b3 = double4x4(384.61864513187606, 385.83906167831231, -384.6230682733576, 236.27862869774856, 336.44521371295923, 272.74445951764676, -121.14546900668438, -194.38113197795167, -364.7452964097007, 360.35692303271821, -153.58247644900462, 63.941664487096318, 0.043457269688815359, -430.97399278682377, -126.42789679692493, -338.74861613789039); + double4x4 r3 = double4x4(-33655.147961770235, -33761.937635035356, 33655.534998339841, -20675.004474368008, -29439.845394537857, -23865.861047043414, 10600.548714740688, 17008.862780043568, 31916.177425093992, -31532.183156529089, 13438.872594057622, -5595.064634729918, -3.8026259514542216, 37711.363394622291, 11062.775107371643, 29641.39919440624); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void double4x4_operator_div_wide_wide() + { + double4x4 a0 = double4x4(246.26574933075619, -269.85612953354428, -451.61952588130697, -7.38850236283082, -308.20558681534862, -373.394808704683, 360.41863482092447, 25.80972458133931, -274.050461181463, 127.53858977534742, -447.6717600522897, -137.4586017771897, -136.13317424437645, 12.43763423545181, 228.51298319013461, 356.9723681681661); + double4x4 b0 = double4x4(172.11981423763552, -77.141104972521362, -325.8353723612779, -450.60868117334724, -261.26215398556656, -122.44949847201326, -93.210781379235357, -442.00522705633438, 484.36271380091216, -390.78178686219348, 402.02531714086672, 316.65072193585831, 397.15440744774151, -303.26218643005109, -118.59124451437555, -81.650312223308845); + double4x4 r0 = double4x4(1.4307809383918566, 3.4982144685336105, 1.3860359070548143, 0.016396715535066435, 1.1796794220427942, 3.0493780159501847, -3.8667054335113131, -0.05839235149599218, -0.56579594872388561, -0.32636779415802974, -1.1135412148569459, -0.43410165287743668, -0.3427714050039572, -0.041012809351094658, -1.9268959030313104, -4.37196574572633); + TestUtils.AreEqual(a0 / b0, r0); + + double4x4 a1 = double4x4(-24.762040865031111, 411.66839356518744, -204.07890067066944, 11.365393882321882, 82.152295389283609, 37.389483230835481, 394.26582903147948, -429.91279645912016, 315.37384071730719, -122.66599255551864, 447.52615067340719, -210.48151574399395, -202.42158398517483, -453.00793072814491, 173.7269934032704, -167.1216643634819); + double4x4 b1 = double4x4(-84.346871176896116, -488.41943549011808, 404.16049999937434, -136.72883731533256, -19.832707652744261, -102.6072290421497, 166.11604960547572, -112.84016590604568, -218.2096851888158, 458.51754042995981, 119.5872405132219, 356.24043218988948, -74.506851469402591, -336.77393332904853, -216.12631593277973, 322.385657699027); + double4x4 r1 = double4x4(0.29357391115432163, -0.84285833783843456, -0.50494519051462317, -0.083123605125890912, -4.1422632162843458, -0.36439423985883462, 2.3734361006528726, 3.8099270149698223, -1.4452788401413792, -0.26752737188743669, 3.7422566885296384, -0.59084117557941718, 2.7168183864044027, 1.3451395309907455, -0.80382156450260089, -0.51839050643966134); + TestUtils.AreEqual(a1 / b1, r1); + + double4x4 a2 = double4x4(-106.2345221537326, 414.31254239301779, 7.1208250555772565, 274.07367361433512, -39.002680081409721, 39.065917748522907, -147.36416608996882, 434.38489290437894, 315.06720390686166, -106.63602714735828, -507.92525195885696, -17.176462896716089, -385.86535543290216, 226.00214849505676, 345.16843072751931, 201.5441692813971); + double4x4 b2 = double4x4(220.25550351862591, -67.234494002179474, 2.229160071457386, -166.21096118083733, -247.73257290932003, 84.1609476004545, 477.14862726496006, 209.75077615014777, -386.72219985850256, -65.2773316210496, 410.45482773820629, 367.65071862174693, -456.57203862470203, 382.42795079873315, -163.86067278862964, -213.72138867793672); + double4x4 r2 = double4x4(-0.48232403030396409, -6.1622021336189041, 3.1943982609206638, -1.6489506568471335, 0.15743864290178045, 0.464181058582947, -0.3088433198156047, 2.0709572611708924, -0.81471196642484278, 1.6335843469583855, -1.2374693087611059, -0.046719514002603893, 0.84513575687905829, 0.59096660697271775, -2.1064751221470064, -0.94302292591365366); + TestUtils.AreEqual(a2 / b2, r2); + + double4x4 a3 = double4x4(-364.71104328926236, -508.3727068884171, 263.80350721245793, 392.03900903837712, 19.716641196849082, -14.47977948863047, -431.47867723530095, -8.3954017201417059, 3.1082556262184653, -139.84113723591025, 402.5097112145786, 318.31090965788383, -274.56803358465811, -193.36913856927731, 288.22701157640063, 0.62060809164336206); + double4x4 b3 = double4x4(227.00382553180862, -337.98967448714643, 149.32169754305937, -198.85531935415014, -468.45503137468131, 183.25872358272727, 217.35753665555148, -167.57021125013483, -150.75870687829268, 48.449193261772962, 410.15566725756776, -4.689349891938889, -465.33817622872914, -48.307136319720712, 403.64572281560197, -387.14200729278008); + double4x4 r3 = double4x4(-1.6066295025418313, 1.5041072117359913, 1.7666789994560961, -1.9714786122476196, -0.042088652861707126, -0.079012770609492758, -1.9851102652081911, 0.0501008004794465, -0.02061742031740665, -2.8863460425510681, 0.98135840449526768, -67.87953916705348, 0.59003977668425556, 4.0029104041577614, 0.7140593725752713, -0.0016030502501735); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void double4x4_operator_div_wide_scalar() + { + double4x4 a0 = double4x4(-244.51745116175965, 69.112274917360537, -333.02311888943575, 257.39682519500923, 403.24561257066466, 154.34436066185322, 131.52659160062979, -261.88639200007844, -348.92380516087815, -275.53868187383688, 210.55792174607416, 287.64239968342815, 504.37224626185946, 491.78708600056689, -26.63160015392657, -253.23667275776933); + double b0 = (-60.024377612408443); + double4x4 r0 = double4x4(4.0736357608014941, -1.1514034408425655, 5.5481311449798705, -4.2882048166676752, -6.7180307170282818, -2.5713612835520117, -2.1912195816494422, 4.3630005410658415, 5.8130349541308268, 4.590446295887566, -3.507873469437639, -4.7920929982948417, -8.4027901050254936, -8.193122620548472, 0.44367973835385832, 4.2188971019904313); + TestUtils.AreEqual(a0 / b0, r0); + + double4x4 a1 = double4x4(272.89512098622276, -460.87559030059521, -502.64601611655485, -84.324793139623864, -174.69034036187935, 83.796309271732525, 197.04206690427009, 317.16826525198678, 403.38711781212464, 81.646461763254592, 60.606869964211683, -413.56048102563273, 207.34099803089214, 358.5621036768714, 20.749072799807891, -68.577131064877449); + double b1 = (178.09617313095191); + double4x4 r1 = double4x4(1.5322907628428735, -2.5877905302418771, -2.8223291229675409, -0.47347897294581892, -0.98087644046922728, 0.47051156573767666, 1.1063801284454748, 1.7808819789674923, 2.2649959890801195, 0.45844029283673021, 0.34030416767938187, -2.3221188516024251, 1.164208047740795, 2.01330605466309, 0.1165048773089097, -0.38505673569107818); + TestUtils.AreEqual(a1 / b1, r1); + + double4x4 a2 = double4x4(310.70246257945075, 147.86623079509764, 506.6588964437409, -435.77857300070048, 210.67294011389504, -218.78147636110964, -19.190853366251474, 416.5117301496266, 427.01360555506017, 417.1994099175555, -150.91182310456031, 488.98551463009119, -294.73874129668752, -357.29805271574207, 288.77164591884787, 453.4291381563196); + double b2 = (417.40490193730443); + double4x4 r2 = double4x4(0.74436706693521115, 0.35425130397080873, 1.213830729088665, -1.0440188195637334, 0.50472080978468914, -0.52414687835642937, -0.045976588384996978, 0.9978601789688325, 1.0230201024788133, 0.99950769140756335, -0.3615477978436098, 1.1714896311963734, -0.70612189729616126, -0.8559986982841169, 0.69182619700576087, 1.0863052543269511); + TestUtils.AreEqual(a2 / b2, r2); + + double4x4 a3 = double4x4(70.724425587209112, 425.52822633531332, 109.51968412730832, 351.80734197786421, -397.33403725052904, 497.315965645628, -18.065185793705837, 452.22855994302245, 511.85849475854, -439.30210110140132, -441.0802783635819, -360.32591097444572, -44.264803191770227, -122.10078555070834, -322.19115105373373, -155.7804692516944); + double b3 = (-235.77751051437923); + double4x4 r3 = double4x4(-0.29996255975777586, -1.8047871716304422, -0.46450437061777827, -1.492115771391219, 1.6852075347801123, -2.1092595496519948, 0.076619630745503625, -1.9180309392377042, -2.1709385837599791, 1.8632061223439282, 1.8707478817691647, 1.528245464074788, 0.1877397173937447, 0.51786442771547481, 1.366505017169924, 0.66070961947065732); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void double4x4_operator_div_scalar_wide() + { + double a0 = (41.737658758525527); + double4x4 b0 = double4x4(-422.676129776368, 248.12963235011773, 449.39137741988122, 245.85813796047967, -326.62061253498337, 163.71510489457989, 333.664472020075, 38.291076916405473, -472.97976062864984, 192.23013958345643, -200.29686960964318, -490.18150376257557, -211.10257468517057, -322.85234108700058, -137.98529035317961, 84.32973555677097); + double4x4 r0 = double4x4(-0.098746193168297289, 0.1682090863683405, 0.092875967042706856, 0.16976317767945767, -0.12778635871933872, 0.25494079355354177, 0.12508871114097631, 1.0900100524632514, -0.088244069266411956, 0.21712338579666474, -0.20837898685020731, -0.08514735549618288, -0.19771269403403205, -0.12927785692369589, -0.3024790443365093, 0.49493406427709763); + TestUtils.AreEqual(a0 / b0, r0); + + double a1 = (355.06345550858578); + double4x4 b1 = double4x4(276.42724455354141, -382.9880213136729, -488.647160996053, 344.84603826368505, 168.85499938244698, -44.19558837087618, 420.550703959796, -175.6152060849663, -9.2205684227964753, -344.19428865248074, -449.07149216582604, 117.70491724726969, -337.02741710144437, 239.39341389359595, -389.35516304027067, 242.71606718875285); + double4x4 r1 = double4x4(1.2844734464652714, -0.92708762611085294, -0.72662543415749792, 1.0296289245378776, 2.1027713529783458, -8.033911722794576, 0.84428215709877708, -2.0218263749711896, -38.507762127847187, -1.0315785799312875, -0.79066131273697848, 3.0165558399117933, -1.0535150480108051, 1.4831797154887565, -0.91192692228884575, 1.4628757775333587); + TestUtils.AreEqual(a1 / b1, r1); + + double a2 = (496.27646445495839); + double4x4 b2 = double4x4(91.745798392102984, -490.49213360738577, 485.75540922850155, -317.57225504404505, -451.62477871944418, 394.01837677230048, -262.27140939527726, -314.24678697914203, 359.91591446470284, -101.61536865197837, 359.5172828917938, -424.97987981558771, -192.71958431635034, -169.7497170761925, -244.79002224877013, -187.14385255945092); + double4x4 r2 = double4x4(5.4092554989163988, -1.011792912569323, 1.0216591622585671, -1.5627198427209212, -1.0988689900100732, 1.2595261889060365, -1.8922247972023705, -1.5792570839806184, 1.3788677980329445, -4.8838721055537526, 1.3803966820819735, -1.1677646119865923, -2.5751221196093783, -2.9235775646813225, -2.02735577167689, -2.6518448651542204); + TestUtils.AreEqual(a2 / b2, r2); + + double a3 = (-207.71366343633906); + double4x4 b3 = double4x4(-370.15405886720589, 58.676935461665039, -123.14700728428875, 208.89162049484048, -79.531129158814963, -219.67477927900609, -483.15932653991473, -90.52665595455403, 194.59995588781305, -4.0906064529393689, 270.735964185901, 432.58615966913578, 376.04765647279453, 464.83672568986037, -322.94170656937251, -220.89757095132842); + double4x4 r3 = double4x4(0.5611546286214224, -3.5399541881672238, 1.6867130433533437, -0.99436091761023748, 2.6117278307662097, 0.94555080067942, 0.42990717973686765, 2.2945027765149635, -1.0673880293995857, 50.778207541105104, -0.76721858531403808, -0.48016715004291677, -0.55235994656801235, -0.44685295278266346, 0.64319243755442035, 0.94031664785533453); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void double4x4_operator_mod_wide_wide() + { + double4x4 a0 = double4x4(-442.30985924336585, 368.50046246522129, -1.0938966279355213, -364.67383473211612, -197.34394487987458, -34.034902350062, -101.34858350704826, 208.31857142612273, -140.77031404374645, 183.446989383291, -463.36838100076113, 83.839106360375467, -64.714058190916717, 295.06681050689281, 212.257051805154, 349.62829916068745); + double4x4 b0 = double4x4(-43.245045443645211, -144.19587690392319, -62.640481739603217, -336.82826510855381, -154.6102545981343, -154.02935583611452, 487.0462093237071, -469.82909105244516, -145.20377237405802, -203.38401780062543, -22.520082245823062, 224.6900237652892, -435.62674614210925, 12.095571285158144, 40.378765363422531, 345.78484813579587); + double4x4 r0 = double4x4(-9.8594048069137443, 80.1087086573749, -1.0938966279355213, -27.845569623562312, -42.73369028174028, -34.034902350062, -101.34858350704826, 208.31857142612273, -140.77031404374645, 183.446989383291, -12.966736084299896, 83.839106360375467, -64.714058190916717, 4.773099663097355, 10.363224988041338, 3.8434510248915785); + TestUtils.AreEqual(a0 % b0, r0); + + double4x4 a1 = double4x4(119.87592106679267, -37.805828350505692, 142.41158515886013, 332.24425593588694, -464.19427249589671, -296.14783801517814, 225.17535863871467, -212.06027732233531, 156.98570425668061, 507.61831092630439, 270.83043897842538, 337.734341063413, 384.91584819597927, 432.51818128699347, 154.29270775350403, -37.0853169137078); + double4x4 b1 = double4x4(-433.47126146474443, -355.64996712079733, 4.0154273528677322, 66.659781725453058, -221.85363088448236, -355.05676405274158, 357.93597118832918, 71.375334057666009, -131.41830188195144, -473.98760078567432, 76.2178585884244, 92.210223002457155, -368.18956130006796, -77.467150485826267, 135.23059398272574, 274.27728975670288); + double4x4 r1 = double4x4(119.87592106679267, -37.805828350505692, 1.8716278084895066, 65.605129034074707, -20.487010726932, -296.14783801517814, 225.17535863871467, -69.309609207003291, 25.56740237472917, 33.630710140630072, 42.17686321315216, 61.103672056041546, 16.7262868959113, 45.182428857862135, 19.062113770778296, -37.0853169137078); + TestUtils.AreEqual(a1 % b1, r1); + + double4x4 a2 = double4x4(7.7614462411783052, 238.09472309709281, 12.852037674212852, -100.2406762113053, 34.551971690054984, -251.18974530472872, -238.37224423064487, 511.51466512657453, 288.43353118022605, 367.10986702847754, 44.760454437118256, -437.04559084262962, -259.20560252815744, -228.56581531677665, 83.497246065874265, 424.36707397194914); + double4x4 b2 = double4x4(132.18024951414213, -179.87732204230377, 51.968538546920058, 367.21425860338582, -395.21279234216212, 270.48524988372128, -73.104129586882948, 89.3499706207541, -288.30852355077332, -168.32464631289463, 311.61589994636176, -468.34193752163179, 381.9839486470371, -1.398853541071901, -102.28859357828674, -87.424866478622391); + double4x4 r2 = double4x4(7.7614462411783052, 58.217401054789036, 12.852037674212852, -100.2406762113053, 34.551971690054984, -251.18974530472872, -19.059855469996023, 64.764812022804, 0.12500762945273891, 30.46057440268828, 44.760454437118256, -437.04559084262962, -259.20560252815744, -0.552688122056793, 83.497246065874265, 74.667608057459574); + TestUtils.AreEqual(a2 % b2, r2); + + double4x4 a3 = double4x4(327.23168602922544, 149.18178970608017, -392.15875190876363, -453.47670361654679, 480.82237432935381, 3.460427524270699, -184.59239610684682, -181.41753276689792, -367.70422642664249, 146.09931833394774, 280.12072695424808, -282.48316468041537, 57.225840356771755, -432.67171951414633, -231.46564613630329, -228.28298746248845); + double4x4 b3 = double4x4(-58.425127771881023, -419.00489087542746, 479.81704471996852, -406.98283429023945, -371.59594767708143, 154.04323132058755, -444.75090882030827, -53.98002221713773, -168.83178933376064, -69.398768695722708, -380.76067060081323, 208.14554629481654, 194.43666061872466, 142.86808902717576, 413.15817732976666, -375.15943473165828); + double4x4 r3 = double4x4(35.106047169820329, 149.18178970608017, -392.15875190876363, -46.493869326307333, 109.22642665227238, 3.460427524270699, -184.59239610684682, -19.477466115484731, -30.040647759121214, 7.3017809425023188, 280.12072695424808, -74.33761838559883, 57.225840356771755, -4.0674524326190635, -231.46564613630329, -228.28298746248845); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void double4x4_operator_mod_wide_scalar() + { + double4x4 a0 = double4x4(-433.41699548876704, -5.5141427542614565, 393.39439958771425, 299.41153277988155, -120.80601626299602, -502.939041133476, -450.80766245853511, 186.09479698263794, -84.473635951277629, -318.78148356023314, 433.45469041981482, -54.6001856581309, -172.33886607565864, -429.71466728193434, 222.36186109406958, 5.796394112425105); + double b0 = (-90.499235433758827); + double4x4 r0 = double4x4(-71.420053753731736, -5.5141427542614565, 31.39745785267894, 27.913826478605074, -30.306780829237198, -50.442863964681862, -88.8107207234998, 5.0963261151202914, -84.473635951277629, -47.283777258956661, 71.457748684779517, -54.6001856581309, -81.839630641899817, -67.717725546899032, 41.363390226551928, 5.796394112425105); + TestUtils.AreEqual(a0 % b0, r0); + + double4x4 a1 = double4x4(254.51082885196, -203.08261284748215, -75.356399809641971, 252.28909385031511, -69.403906139267576, 5.3372299696026175, -279.06042803407666, 483.55059097872606, -331.99334660730949, 335.99997655302286, 67.839589388966374, -124.72076731767544, 38.175906437531125, 271.28698671575955, 405.77360100567978, -194.76144489774549); + double b1 = (-433.09369703433185); + double4x4 r1 = double4x4(254.51082885196, -203.08261284748215, -75.356399809641971, 252.28909385031511, -69.403906139267576, 5.3372299696026175, -279.06042803407666, 50.45689394439421, -331.99334660730949, 335.99997655302286, 67.839589388966374, -124.72076731767544, 38.175906437531125, 271.28698671575955, 405.77360100567978, -194.76144489774549); + TestUtils.AreEqual(a1 % b1, r1); + + double4x4 a2 = double4x4(235.72397314557986, -304.153164289963, -295.52024735860539, 313.72239532774427, -232.20264135683078, 191.61973127705028, 244.09660899084838, 162.52424080787421, 390.01615423244243, 90.004538339564874, 155.93352062810845, 217.33769641506376, -306.81927671414769, 149.09372074394196, 503.82839917756075, -194.13014063338289); + double b2 = (465.98487804177444); + double4x4 r2 = double4x4(235.72397314557986, -304.153164289963, -295.52024735860539, 313.72239532774427, -232.20264135683078, 191.61973127705028, 244.09660899084838, 162.52424080787421, 390.01615423244243, 90.004538339564874, 155.93352062810845, 217.33769641506376, -306.81927671414769, 149.09372074394196, 37.843521135786318, -194.13014063338289); + TestUtils.AreEqual(a2 % b2, r2); + + double4x4 a3 = double4x4(214.86302171222076, 225.99642787966707, -102.91396265053839, -173.70608933908215, 490.90467070550881, 501.14862727613593, 160.45482762179097, 327.86094180115538, -300.81266965568659, -326.9390176864988, -6.6472518475014795, -201.18443569968662, 389.35045761119125, -78.068470275992752, -484.31891058586484, -371.83874076038541); + double b3 = (198.77008280473297); + double4x4 r3 = double4x4(16.092938907487792, 27.226345074934102, -102.91396265053839, -173.70608933908215, 93.364505096042876, 103.60846166667, 160.45482762179097, 129.09085899642241, -102.04258685095363, -128.16893488176584, -6.6472518475014795, -2.4143528949536517, 190.58037480645828, -78.068470275992752, -86.778744976398912, -173.06865795565244); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void double4x4_operator_mod_scalar_wide() + { + double a0 = (-396.4224028049141); + double4x4 b0 = double4x4(-159.14024384279747, 230.17333399046834, 14.779358632294134, -303.15649738123477, 399.63502020371845, 206.69470534412881, 397.04482263934096, -393.89064735634747, -372.06709426085797, 201.01229796233224, -95.5668547598491, -258.95146882671463, 106.98357563232241, 469.3235559264773, -34.808985011097491, 184.83653434777466); + double4x4 r0 = double4x4(-78.141915119319151, -166.24906881444576, -12.159078365266623, -93.265905423679328, -396.4224028049141, -189.72769746078529, -396.4224028049141, -2.5317554485666278, -24.355308544056129, -195.41010484258186, -14.154983765517727, -137.47093397819947, -75.47167590794686, -396.4224028049141, -13.523567682841701, -26.749334109364781); + TestUtils.AreEqual(a0 % b0, r0); + + double a1 = (374.79425376224992); + double4x4 b1 = double4x4(-131.87271911086174, -120.09286003936683, 4.506670715523228, -111.40195732535886, 391.54249710195813, -218.66887078931035, 196.37741980160467, -511.03262233689082, 499.95350598727987, -433.52306505363578, -163.8668559360629, 177.00401099818009, 110.65016441729392, 17.68454910148148, -95.85296754532169, -432.44096561541824); + double4x4 r1 = double4x4(111.04881554052645, 14.515673644149444, 0.74058437382200282, 40.588381786173329, 374.79425376224992, 156.12538297293958, 178.41683396064525, 374.79425376224992, 374.79425376224992, 374.79425376224992, 47.060541890124114, 20.786231765889738, 42.843760510368156, 3.4187226311388486, 87.235351126284854, 374.79425376224992); + TestUtils.AreEqual(a1 % b1, r1); + + double a2 = (192.69208654793545); + double4x4 b2 = double4x4(-268.13177621929526, 271.07511461483091, 423.70268912972074, -413.23324675729185, 127.95621091125361, -298.20467843590518, -352.41809122283854, -175.60771592688172, -152.89928944078241, 34.619420306114193, -380.80295556634803, 0.35205721871557216, 485.90088986135129, 266.1508249091687, 483.82075928329527, 11.777843242407698); + double4x4 r2 = double4x4(192.69208654793545, 192.69208654793545, 192.69208654793545, 192.69208654793545, 64.73587563668184, 192.69208654793545, 192.69208654793545, 17.084370621053722, 39.792797107153035, 19.594985017364479, 192.69208654793545, 0.11678791051747339, 192.69208654793545, 192.69208654793545, 192.69208654793545, 4.2465946694122749); + TestUtils.AreEqual(a2 % b2, r2); + + double a3 = (274.1358426893762); + double4x4 b3 = double4x4(313.07315769469051, -102.217432308112, -88.03518657015411, 226.97955452044471, -38.682740944755608, -63.157795220221317, 330.40193883068946, -304.12387504434395, 411.68151421643859, 128.21777039776453, 48.911678575403812, -58.894658354527621, 29.282741321848107, -328.67225113914918, -511.7138872145274, -338.5105032112964); + double4x4 r3 = double4x4(274.1358426893762, 69.700978073152214, 10.030282978913874, 47.156288168931496, 3.3566560760869493, 21.504661808490937, 274.1358426893762, 274.1358426893762, 274.1358426893762, 17.700301893847154, 29.577449812357145, 38.55720927126572, 10.591170792743242, 274.1358426893762, 274.1358426893762, 274.1358426893762); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void double4x4_operator_plus() + { + double4x4 a0 = double4x4(271.6708086802023, -79.080240524876956, -330.98506203805334, 31.824682965793045, 315.44952860262686, 319.22218742930431, 190.32466015141677, -350.30858270745193, -320.51845875406565, 102.0544069288552, -107.00351267075331, -428.77622075973835, 377.23016208095021, 234.77393042052813, 34.283600107898792, 258.33039414991174); + double4x4 r0 = double4x4(271.6708086802023, -79.080240524876956, -330.98506203805334, 31.824682965793045, 315.44952860262686, 319.22218742930431, 190.32466015141677, -350.30858270745193, -320.51845875406565, 102.0544069288552, -107.00351267075331, -428.77622075973835, 377.23016208095021, 234.77393042052813, 34.283600107898792, 258.33039414991174); + TestUtils.AreEqual(+a0, r0); + + double4x4 a1 = double4x4(465.35593555185756, -316.93713655925222, -230.05266557915724, 301.78512229667285, 2.585727931273027, 350.24640981771347, 60.819777278611355, -472.44209526127304, -364.80255644619581, 239.15236937215195, 473.8031363309376, 285.80893935161123, -273.26378191321334, -206.68638310520276, -113.36231785331029, -351.7548708169511); + double4x4 r1 = double4x4(465.35593555185756, -316.93713655925222, -230.05266557915724, 301.78512229667285, 2.585727931273027, 350.24640981771347, 60.819777278611355, -472.44209526127304, -364.80255644619581, 239.15236937215195, 473.8031363309376, 285.80893935161123, -273.26378191321334, -206.68638310520276, -113.36231785331029, -351.7548708169511); + TestUtils.AreEqual(+a1, r1); + + double4x4 a2 = double4x4(-116.53621798219916, -330.00534716714424, -379.67424100436006, -339.673203864914, -29.083537353707243, 62.20109441792647, 485.92661713339692, 183.72484144183102, -258.39246022812671, 486.44689463379177, 245.99093138705518, 231.85467468567879, -216.48996482439804, -163.00918181380683, 175.32546266136944, 404.37801499123589); + double4x4 r2 = double4x4(-116.53621798219916, -330.00534716714424, -379.67424100436006, -339.673203864914, -29.083537353707243, 62.20109441792647, 485.92661713339692, 183.72484144183102, -258.39246022812671, 486.44689463379177, 245.99093138705518, 231.85467468567879, -216.48996482439804, -163.00918181380683, 175.32546266136944, 404.37801499123589); + TestUtils.AreEqual(+a2, r2); + + double4x4 a3 = double4x4(87.649255078122565, -236.10903917816887, 6.5089323550970448, 481.88568638352945, -368.85402863512468, 82.673349657409517, 120.1951606833353, -7.7332217729339732, 168.25208504882278, -431.93018194284764, 228.52152382047916, -124.11752205906322, 464.74532315914769, -203.25920996594203, -505.641194817443, 434.9786500572128); + double4x4 r3 = double4x4(87.649255078122565, -236.10903917816887, 6.5089323550970448, 481.88568638352945, -368.85402863512468, 82.673349657409517, 120.1951606833353, -7.7332217729339732, 168.25208504882278, -431.93018194284764, 228.52152382047916, -124.11752205906322, 464.74532315914769, -203.25920996594203, -505.641194817443, 434.9786500572128); + TestUtils.AreEqual(+a3, r3); + } + + [TestCompiler] + public static void double4x4_operator_neg() + { + double4x4 a0 = double4x4(420.22718854445372, -196.25749811728366, -335.42683068636188, 509.04366969924592, -33.014395013923945, -498.57532071442125, -495.8379526063045, -270.85946787095605, 19.686896571743773, 268.23670662019254, -180.60051473444349, 223.38126312167446, -410.39206070936848, -395.68154186554324, -349.14948885010062, -110.9393032113739); + double4x4 r0 = double4x4(-420.22718854445372, 196.25749811728366, 335.42683068636188, -509.04366969924592, 33.014395013923945, 498.57532071442125, 495.8379526063045, 270.85946787095605, -19.686896571743773, -268.23670662019254, 180.60051473444349, -223.38126312167446, 410.39206070936848, 395.68154186554324, 349.14948885010062, 110.9393032113739); + TestUtils.AreEqual(-a0, r0); + + double4x4 a1 = double4x4(-238.21960913307015, 469.29257867731735, 48.290685914592245, 88.7237785275671, 66.148520738886873, 55.707977559281517, 464.54141090090457, 499.24280213715645, 175.01502259774838, 196.38759169186824, -306.1655677790593, 149.66006023700356, 320.3917383255399, -359.83381168909079, 22.03845144344416, -159.55426199713457); + double4x4 r1 = double4x4(238.21960913307015, -469.29257867731735, -48.290685914592245, -88.7237785275671, -66.148520738886873, -55.707977559281517, -464.54141090090457, -499.24280213715645, -175.01502259774838, -196.38759169186824, 306.1655677790593, -149.66006023700356, -320.3917383255399, 359.83381168909079, -22.03845144344416, 159.55426199713457); + TestUtils.AreEqual(-a1, r1); + + double4x4 a2 = double4x4(419.82245011805674, 363.71671049842462, 280.88790405955535, -270.65131939139746, -201.61574015469091, 325.03162899847689, 95.489228054643263, 191.07025322274785, 371.97357361948752, 296.51257981756362, -164.16993697181806, -347.45810691800813, -237.40496050445591, -228.70196615378467, 61.082260875535326, 128.33153134599866); + double4x4 r2 = double4x4(-419.82245011805674, -363.71671049842462, -280.88790405955535, 270.65131939139746, 201.61574015469091, -325.03162899847689, -95.489228054643263, -191.07025322274785, -371.97357361948752, -296.51257981756362, 164.16993697181806, 347.45810691800813, 237.40496050445591, 228.70196615378467, -61.082260875535326, -128.33153134599866); + TestUtils.AreEqual(-a2, r2); + + double4x4 a3 = double4x4(331.25579587149241, -501.02881764854715, 160.58019001808952, -180.49658998311338, 127.97833853959025, 260.03452432343477, -287.96824158726645, -502.19913243791046, 303.97058238832778, -182.96291240628943, 322.3276151727548, 91.480471892040441, 211.29515824620387, 116.07051830928333, 309.36103382211229, -129.06447488119102); + double4x4 r3 = double4x4(-331.25579587149241, 501.02881764854715, -160.58019001808952, 180.49658998311338, -127.97833853959025, -260.03452432343477, 287.96824158726645, 502.19913243791046, -303.97058238832778, 182.96291240628943, -322.3276151727548, -91.480471892040441, -211.29515824620387, -116.07051830928333, -309.36103382211229, 129.06447488119102); + TestUtils.AreEqual(-a3, r3); + } + + [TestCompiler] + public static void double4x4_operator_prefix_inc() + { + double4x4 a0 = double4x4(-99.79557113526181, 458.74185082816609, 96.179026886904126, -48.552469514567633, -315.728967098393, -299.23014583216525, -323.61485853959567, -456.89028832730384, -76.507656371457358, -305.58477344437722, 64.0964734852763, 148.67930967578627, 363.2849182390072, -115.5592263283018, -326.87781992874937, -179.89464839729231); + double4x4 r0 = double4x4(-98.79557113526181, 459.74185082816609, 97.179026886904126, -47.552469514567633, -314.728967098393, -298.23014583216525, -322.61485853959567, -455.89028832730384, -75.507656371457358, -304.58477344437722, 65.0964734852763, 149.67930967578627, 364.2849182390072, -114.5592263283018, -325.87781992874937, -178.89464839729231); + TestUtils.AreEqual(++a0, r0); + + double4x4 a1 = double4x4(339.8765849265626, -153.3736775635619, 261.62557304167444, 155.03081877298223, -396.65022892348946, 301.30576791488829, -221.35540328796736, -429.69815011960367, -271.28932893988178, -264.38006246480165, -377.55920785365589, 223.23241792583485, -71.076339993195745, -388.22791713673058, 131.28316909227669, 22.304934273615913); + double4x4 r1 = double4x4(340.8765849265626, -152.3736775635619, 262.62557304167444, 156.03081877298223, -395.65022892348946, 302.30576791488829, -220.35540328796736, -428.69815011960367, -270.28932893988178, -263.38006246480165, -376.55920785365589, 224.23241792583485, -70.076339993195745, -387.22791713673058, 132.28316909227669, 23.304934273615913); + TestUtils.AreEqual(++a1, r1); + + double4x4 a2 = double4x4(-480.76047228312143, 117.95409851798513, 139.52581245243823, 335.68968192473505, 162.6615141195532, -256.04508340360837, -254.73151385725083, -89.256037038404486, 314.36555233335378, 244.72812830876933, 34.010626570326622, -90.445278448260069, -472.63621614530507, -34.566777483824069, -71.271847996521672, -396.49010748252743); + double4x4 r2 = double4x4(-479.76047228312143, 118.95409851798513, 140.52581245243823, 336.68968192473505, 163.6615141195532, -255.04508340360837, -253.73151385725083, -88.256037038404486, 315.36555233335378, 245.72812830876933, 35.010626570326622, -89.445278448260069, -471.63621614530507, -33.566777483824069, -70.271847996521672, -395.49010748252743); + TestUtils.AreEqual(++a2, r2); + + double4x4 a3 = double4x4(-314.987458614161, 63.450377255422268, 474.66809890916022, 257.1736100917559, 128.10716706519349, -354.56391708672231, -194.46556982512845, -130.85431939496397, 467.56036184148877, 477.1499166326364, -458.05565068593978, -168.12270625313869, 506.56868362173839, -429.35685630764664, 444.81330439299961, -385.62562459782959); + double4x4 r3 = double4x4(-313.987458614161, 64.450377255422268, 475.66809890916022, 258.1736100917559, 129.10716706519349, -353.56391708672231, -193.46556982512845, -129.85431939496397, 468.56036184148877, 478.1499166326364, -457.05565068593978, -167.12270625313869, 507.56868362173839, -428.35685630764664, 445.81330439299961, -384.62562459782959); + TestUtils.AreEqual(++a3, r3); + } + + [TestCompiler] + public static void double4x4_operator_postfix_inc() + { + double4x4 a0 = double4x4(322.94356623429042, 472.05246542024076, 203.48761925636211, -49.854570650427888, -31.420532002775246, 455.33662459595905, 271.45466840986842, 55.736877228942149, 153.75031645305, -174.17301925186672, -427.40105100506969, 215.11022744658874, 159.86103184514729, -333.05045262586816, 241.46487509527469, 287.22045649551808); + double4x4 r0 = double4x4(322.94356623429042, 472.05246542024076, 203.48761925636211, -49.854570650427888, -31.420532002775246, 455.33662459595905, 271.45466840986842, 55.736877228942149, 153.75031645305, -174.17301925186672, -427.40105100506969, 215.11022744658874, 159.86103184514729, -333.05045262586816, 241.46487509527469, 287.22045649551808); + TestUtils.AreEqual(a0++, r0); + + double4x4 a1 = double4x4(-170.10464366250886, -162.86024792625579, 454.48881003562769, -449.92732045144186, 209.52264294844247, -311.43587103087259, 69.731466087387616, -232.29964433996923, -341.49855271982892, 188.00656685047159, 417.72977919957123, 25.565661203845252, -463.72565982478005, 504.44898509627626, -310.1449584020977, -117.39846258861871); + double4x4 r1 = double4x4(-170.10464366250886, -162.86024792625579, 454.48881003562769, -449.92732045144186, 209.52264294844247, -311.43587103087259, 69.731466087387616, -232.29964433996923, -341.49855271982892, 188.00656685047159, 417.72977919957123, 25.565661203845252, -463.72565982478005, 504.44898509627626, -310.1449584020977, -117.39846258861871); + TestUtils.AreEqual(a1++, r1); + + double4x4 a2 = double4x4(403.50871271803453, 446.60767313773169, -12.352577930480493, -232.15012251220185, 64.577020436793987, -10.59072947995304, 193.58436617328994, 382.05033582358169, -462.06412789880488, -122.30657368633268, 428.77629562317225, 338.97875825454423, 227.54409729109341, -169.32121356265674, -95.765601917992171, -169.85535796445578); + double4x4 r2 = double4x4(403.50871271803453, 446.60767313773169, -12.352577930480493, -232.15012251220185, 64.577020436793987, -10.59072947995304, 193.58436617328994, 382.05033582358169, -462.06412789880488, -122.30657368633268, 428.77629562317225, 338.97875825454423, 227.54409729109341, -169.32121356265674, -95.765601917992171, -169.85535796445578); + TestUtils.AreEqual(a2++, r2); + + double4x4 a3 = double4x4(439.299990143301, -424.34972520561411, 63.862382203276411, 260.87088668573222, 350.98539583337742, 271.48833645111335, -378.24384683102551, -329.55492631045865, -201.92197928294632, -244.66994225451253, 365.72488921029719, -481.82878397490305, 105.47597627783011, -166.62200434814298, 394.743907397028, -179.49130996479249); + double4x4 r3 = double4x4(439.299990143301, -424.34972520561411, 63.862382203276411, 260.87088668573222, 350.98539583337742, 271.48833645111335, -378.24384683102551, -329.55492631045865, -201.92197928294632, -244.66994225451253, 365.72488921029719, -481.82878397490305, 105.47597627783011, -166.62200434814298, 394.743907397028, -179.49130996479249); + TestUtils.AreEqual(a3++, r3); + } + + [TestCompiler] + public static void double4x4_operator_prefix_dec() + { + double4x4 a0 = double4x4(-416.20121712992022, -96.637880131899351, -50.145671629414721, -207.31644759295341, 439.47906156977592, -304.40081920493435, 337.96895734312432, 246.08898293510492, 171.96452935597142, -227.44280134301761, 298.28480710568135, 326.50782338087811, 400.720900006928, -478.03137253133178, -326.45297852459038, -24.584499132160317); + double4x4 r0 = double4x4(-417.20121712992022, -97.637880131899351, -51.145671629414721, -208.31644759295341, 438.47906156977592, -305.40081920493435, 336.96895734312432, 245.08898293510492, 170.96452935597142, -228.44280134301761, 297.28480710568135, 325.50782338087811, 399.720900006928, -479.03137253133178, -327.45297852459038, -25.584499132160317); + TestUtils.AreEqual(--a0, r0); + + double4x4 a1 = double4x4(112.79684668071422, -503.27416181158003, -79.635249413380052, -131.0041454448384, 147.89369566174867, -15.70865417258284, 188.75845274178243, 307.79193582562357, -406.667706917351, 181.47510703908051, -188.69222578252305, -505.2156915633081, -372.24192898918034, -4.0317671317754957, 83.767736235525376, -30.631410374600193); + double4x4 r1 = double4x4(111.79684668071422, -504.27416181158003, -80.635249413380052, -132.0041454448384, 146.89369566174867, -16.70865417258284, 187.75845274178243, 306.79193582562357, -407.667706917351, 180.47510703908051, -189.69222578252305, -506.2156915633081, -373.24192898918034, -5.0317671317754957, 82.767736235525376, -31.631410374600193); + TestUtils.AreEqual(--a1, r1); + + double4x4 a2 = double4x4(-436.90656181653333, 345.02153913351776, 4.7353689692613443, -68.653318198701982, 481.496122346025, 463.39140985132724, -357.67329399551886, 153.32965023505017, -233.62431751639781, -35.238318221288864, 340.61965743667429, 259.92884195033878, 335.35490886091952, 85.364882747347, -1.3939745432668929, -407.41038651364408); + double4x4 r2 = double4x4(-437.90656181653333, 344.02153913351776, 3.7353689692613443, -69.653318198701982, 480.496122346025, 462.39140985132724, -358.67329399551886, 152.32965023505017, -234.62431751639781, -36.238318221288864, 339.61965743667429, 258.92884195033878, 334.35490886091952, 84.364882747347, -2.3939745432668929, -408.41038651364408); + TestUtils.AreEqual(--a2, r2); + + double4x4 a3 = double4x4(-145.79341251486608, -337.44545022465542, -464.67419812859697, 226.80292831491818, 15.319232232551713, 431.07077404068355, 273.0958756288029, -3.1083834185769774, 334.14676848712691, 26.124073755985137, 14.661183125647312, 239.30467449841308, 32.206458345151759, 288.58896578875783, -297.482929129844, -154.8607662445217); + double4x4 r3 = double4x4(-146.79341251486608, -338.44545022465542, -465.67419812859697, 225.80292831491818, 14.319232232551713, 430.07077404068355, 272.0958756288029, -4.1083834185769774, 333.14676848712691, 25.124073755985137, 13.661183125647312, 238.30467449841308, 31.206458345151759, 287.58896578875783, -298.482929129844, -155.8607662445217); + TestUtils.AreEqual(--a3, r3); + } + + [TestCompiler] + public static void double4x4_operator_postfix_dec() + { + double4x4 a0 = double4x4(-376.59242719066907, 16.969734438215255, -0.25066399585949739, -202.32328734282555, 409.55752940175944, 47.856652520530247, -281.11170376516492, -262.062590959511, -182.40572866350681, 450.12809559801974, -129.23265582380475, -332.15495768755443, -261.00890052551819, 205.46112570793423, -230.22777878038016, -483.06653784358247); + double4x4 r0 = double4x4(-376.59242719066907, 16.969734438215255, -0.25066399585949739, -202.32328734282555, 409.55752940175944, 47.856652520530247, -281.11170376516492, -262.062590959511, -182.40572866350681, 450.12809559801974, -129.23265582380475, -332.15495768755443, -261.00890052551819, 205.46112570793423, -230.22777878038016, -483.06653784358247); + TestUtils.AreEqual(a0--, r0); + + double4x4 a1 = double4x4(378.64123433578811, -192.17785772689518, -357.05418960985457, -396.30206627226528, 279.42425287860647, 115.86774092347719, -20.823201427619551, 323.40538063803933, 379.15614026559342, 311.29903068733358, 409.22248644811214, -428.25672479544613, -425.2883748604396, -194.64129671577427, -258.84836089743692, -208.98576388553982); + double4x4 r1 = double4x4(378.64123433578811, -192.17785772689518, -357.05418960985457, -396.30206627226528, 279.42425287860647, 115.86774092347719, -20.823201427619551, 323.40538063803933, 379.15614026559342, 311.29903068733358, 409.22248644811214, -428.25672479544613, -425.2883748604396, -194.64129671577427, -258.84836089743692, -208.98576388553982); + TestUtils.AreEqual(a1--, r1); + + double4x4 a2 = double4x4(-313.42591657928466, 176.78949864990523, -370.78628438095853, 64.903882295314133, 449.63778540568319, -112.10504608606226, -203.43741021092859, 417.13731093757656, -197.3473556960688, 446.02335020807732, 239.97454058377753, 350.61805431480434, -264.7472652237617, 186.44167980292889, 353.75952093385138, 68.234193118398139); + double4x4 r2 = double4x4(-313.42591657928466, 176.78949864990523, -370.78628438095853, 64.903882295314133, 449.63778540568319, -112.10504608606226, -203.43741021092859, 417.13731093757656, -197.3473556960688, 446.02335020807732, 239.97454058377753, 350.61805431480434, -264.7472652237617, 186.44167980292889, 353.75952093385138, 68.234193118398139); + TestUtils.AreEqual(a2--, r2); + + double4x4 a3 = double4x4(-240.61070048092432, -269.28632772587537, -101.80513792010265, -492.29036091840379, -507.07826041946106, 413.10199351473807, -491.42746256824, -13.728667980864941, -481.598610863834, 248.55762183319666, -178.33419021327711, -345.80586616406492, -269.1173538030672, 132.7693923137939, -382.38429492636783, 388.83080619798545); + double4x4 r3 = double4x4(-240.61070048092432, -269.28632772587537, -101.80513792010265, -492.29036091840379, -507.07826041946106, 413.10199351473807, -491.42746256824, -13.728667980864941, -481.598610863834, 248.55762183319666, -178.33419021327711, -345.80586616406492, -269.1173538030672, 132.7693923137939, -382.38429492636783, 388.83080619798545); + TestUtils.AreEqual(a3--, r3); + } + + + } +} diff --git a/package/Tests/Tests/Shared/TestDouble4x4.gen.cs.meta b/package/Tests/Tests/Shared/TestDouble4x4.gen.cs.meta new file mode 100755 index 000000000..9231c46f8 --- /dev/null +++ b/package/Tests/Tests/Shared/TestDouble4x4.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 1021c7218a1b3894ba0a61ae37e36a8c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/package/Tests/Tests/Shared/TestFloat2.gen.cs b/package/Tests/Tests/Shared/TestFloat2.gen.cs new file mode 100755 index 000000000..ce81b9692 --- /dev/null +++ b/package/Tests/Tests/Shared/TestFloat2.gen.cs @@ -0,0 +1,1055 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using NUnit.Framework; +using static Unity.Mathematics.math; +using Burst.Compiler.IL.Tests; + +namespace Unity.Mathematics.Tests +{ + [TestFixture] + public class TestFloat2 + { + [TestCompiler] + public static void float2_zero() + { + TestUtils.AreEqual(float2.zero.x, 0.0f); + TestUtils.AreEqual(float2.zero.y, 0.0f); + } + + [TestCompiler] + public static void float2_constructor() + { + float2 a = new float2(1, 2); + TestUtils.AreEqual(a.x, 1); + TestUtils.AreEqual(a.y, 2); + } + + [TestCompiler] + public static void float2_scalar_constructor() + { + float2 a = new float2(17.0f); + TestUtils.AreEqual(a.x, 17.0f); + TestUtils.AreEqual(a.y, 17.0f); + } + + [TestCompiler] + public static void float2_static_constructor() + { + float2 a = float2(1, 2); + TestUtils.AreEqual(a.x, 1); + TestUtils.AreEqual(a.y, 2); + } + + [TestCompiler] + public static void float2_static_scalar_constructor() + { + float2 a = float2(17.0f); + TestUtils.AreEqual(a.x, 17.0f); + TestUtils.AreEqual(a.y, 17.0f); + } + + [TestCompiler] + public static void float2_operator_equal_wide_wide() + { + float2 a0 = float2(-135.18924f, -49.0941162f); + float2 b0 = float2(-220.014648f, 66.98004f); + bool2 r0 = bool2(false, false); + TestUtils.AreEqual(a0 == b0, r0); + + float2 a1 = float2(169.129822f, 240.8053f); + float2 b1 = float2(499.2016f, -371.1131f); + bool2 r1 = bool2(false, false); + TestUtils.AreEqual(a1 == b1, r1); + + float2 a2 = float2(314.7392f, 442.393f); + float2 b2 = float2(208.448669f, 390.8037f); + bool2 r2 = bool2(false, false); + TestUtils.AreEqual(a2 == b2, r2); + + float2 a3 = float2(177.924438f, 335.5334f); + float2 b3 = float2(-72.44382f, 362.97644f); + bool2 r3 = bool2(false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void float2_operator_equal_wide_scalar() + { + float2 a0 = float2(65.6712f, 404.415527f); + float b0 = (-155.815765f); + bool2 r0 = bool2(false, false); + TestUtils.AreEqual(a0 == b0, r0); + + float2 a1 = float2(-269.730164f, 152.9945f); + float b1 = (83.6306152f); + bool2 r1 = bool2(false, false); + TestUtils.AreEqual(a1 == b1, r1); + + float2 a2 = float2(-155.868286f, 386.365173f); + float b2 = (314.671265f); + bool2 r2 = bool2(false, false); + TestUtils.AreEqual(a2 == b2, r2); + + float2 a3 = float2(290.04895f, -65.66748f); + float b3 = (-132.6352f); + bool2 r3 = bool2(false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void float2_operator_equal_scalar_wide() + { + float a0 = (36.38391f); + float2 b0 = float2(-400.4892f, -71.2868347f); + bool2 r0 = bool2(false, false); + TestUtils.AreEqual(a0 == b0, r0); + + float a1 = (156.978088f); + float2 b1 = float2(-225.238739f, 499.141785f); + bool2 r1 = bool2(false, false); + TestUtils.AreEqual(a1 == b1, r1); + + float a2 = (-211.979919f); + float2 b2 = float2(428.311951f, -489.501343f); + bool2 r2 = bool2(false, false); + TestUtils.AreEqual(a2 == b2, r2); + + float a3 = (-5.691559f); + float2 b3 = float2(-30.8659363f, -362.9831f); + bool2 r3 = bool2(false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void float2_operator_not_equal_wide_wide() + { + float2 a0 = float2(279.994141f, -43.34201f); + float2 b0 = float2(-460.9121f, -476.009033f); + bool2 r0 = bool2(true, true); + TestUtils.AreEqual(a0 != b0, r0); + + float2 a1 = float2(-465.724731f, 317.466553f); + float2 b1 = float2(468.1364f, -341.012543f); + bool2 r1 = bool2(true, true); + TestUtils.AreEqual(a1 != b1, r1); + + float2 a2 = float2(85.7149658f, 360.8905f); + float2 b2 = float2(-62.65805f, -458.801666f); + bool2 r2 = bool2(true, true); + TestUtils.AreEqual(a2 != b2, r2); + + float2 a3 = float2(366.081543f, 154.542847f); + float2 b3 = float2(-457.730225f, -59.5232544f); + bool2 r3 = bool2(true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void float2_operator_not_equal_wide_scalar() + { + float2 a0 = float2(-155.4411f, -19.4266052f); + float b0 = (-393.413544f); + bool2 r0 = bool2(true, true); + TestUtils.AreEqual(a0 != b0, r0); + + float2 a1 = float2(174.633057f, 59.177063f); + float b1 = (507.920715f); + bool2 r1 = bool2(true, true); + TestUtils.AreEqual(a1 != b1, r1); + + float2 a2 = float2(171.151489f, -398.176849f); + float b2 = (-58.92328f); + bool2 r2 = bool2(true, true); + TestUtils.AreEqual(a2 != b2, r2); + + float2 a3 = float2(492.20105f, 270.341f); + float b3 = (-165.241516f); + bool2 r3 = bool2(true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void float2_operator_not_equal_scalar_wide() + { + float a0 = (478.353149f); + float2 b0 = float2(459.553223f, 436.453247f); + bool2 r0 = bool2(true, true); + TestUtils.AreEqual(a0 != b0, r0); + + float a1 = (-488.714172f); + float2 b1 = float2(392.767944f, -266.736633f); + bool2 r1 = bool2(true, true); + TestUtils.AreEqual(a1 != b1, r1); + + float a2 = (338.557861f); + float2 b2 = float2(-338.100128f, -152.314545f); + bool2 r2 = bool2(true, true); + TestUtils.AreEqual(a2 != b2, r2); + + float a3 = (-452.820679f); + float2 b3 = float2(209.439331f, 50.10797f); + bool2 r3 = bool2(true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void float2_operator_less_wide_wide() + { + float2 a0 = float2(51.7102661f, -313.85556f); + float2 b0 = float2(-261.835236f, -19.81073f); + bool2 r0 = bool2(false, true); + TestUtils.AreEqual(a0 < b0, r0); + + float2 a1 = float2(283.047668f, 235.021912f); + float2 b1 = float2(-149.25882f, 205.99823f); + bool2 r1 = bool2(false, false); + TestUtils.AreEqual(a1 < b1, r1); + + float2 a2 = float2(44.07837f, -207.255676f); + float2 b2 = float2(-306.024384f, 102.121704f); + bool2 r2 = bool2(false, true); + TestUtils.AreEqual(a2 < b2, r2); + + float2 a3 = float2(3.38293457f, -144.301331f); + float2 b3 = float2(231.906311f, 179.49884f); + bool2 r3 = bool2(true, true); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void float2_operator_less_wide_scalar() + { + float2 a0 = float2(-221.869781f, -121.546478f); + float b0 = (199.0675f); + bool2 r0 = bool2(true, true); + TestUtils.AreEqual(a0 < b0, r0); + + float2 a1 = float2(-97.5239258f, 67.11902f); + float b1 = (479.8811f); + bool2 r1 = bool2(true, true); + TestUtils.AreEqual(a1 < b1, r1); + + float2 a2 = float2(137.3288f, 258.2791f); + float b2 = (282.9666f); + bool2 r2 = bool2(true, true); + TestUtils.AreEqual(a2 < b2, r2); + + float2 a3 = float2(-111.413147f, 82.6654053f); + float b3 = (-288.081116f); + bool2 r3 = bool2(false, false); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void float2_operator_less_scalar_wide() + { + float a0 = (-250.484924f); + float2 b0 = float2(-377.196533f, -505.147552f); + bool2 r0 = bool2(false, false); + TestUtils.AreEqual(a0 < b0, r0); + + float a1 = (375.9267f); + float2 b1 = float2(110.17395f, -118.097565f); + bool2 r1 = bool2(false, false); + TestUtils.AreEqual(a1 < b1, r1); + + float a2 = (-40.4508972f); + float2 b2 = float2(-299.744324f, 31.4371338f); + bool2 r2 = bool2(false, true); + TestUtils.AreEqual(a2 < b2, r2); + + float a3 = (-458.904541f); + float2 b3 = float2(13.6846924f, -458.5069f); + bool2 r3 = bool2(true, true); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void float2_operator_greater_wide_wide() + { + float2 a0 = float2(-229.29068f, 505.536621f); + float2 b0 = float2(-445.845032f, -420.035278f); + bool2 r0 = bool2(true, true); + TestUtils.AreEqual(a0 > b0, r0); + + float2 a1 = float2(-73.80707f, 100.292053f); + float2 b1 = float2(299.0244f, -13.8809814f); + bool2 r1 = bool2(false, true); + TestUtils.AreEqual(a1 > b1, r1); + + float2 a2 = float2(-419.214783f, -159.559753f); + float2 b2 = float2(151.5617f, -163.50943f); + bool2 r2 = bool2(false, true); + TestUtils.AreEqual(a2 > b2, r2); + + float2 a3 = float2(-396.770355f, 127.037415f); + float2 b3 = float2(-391.096039f, 479.283752f); + bool2 r3 = bool2(false, false); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void float2_operator_greater_wide_scalar() + { + float2 a0 = float2(11.156311f, -411.023224f); + float b0 = (-302.816956f); + bool2 r0 = bool2(true, false); + TestUtils.AreEqual(a0 > b0, r0); + + float2 a1 = float2(385.885559f, -491.180023f); + float b1 = (-485.103058f); + bool2 r1 = bool2(true, false); + TestUtils.AreEqual(a1 > b1, r1); + + float2 a2 = float2(405.175354f, 69.26929f); + float b2 = (173.575073f); + bool2 r2 = bool2(true, false); + TestUtils.AreEqual(a2 > b2, r2); + + float2 a3 = float2(501.306824f, -86.12451f); + float b3 = (-367.027771f); + bool2 r3 = bool2(true, true); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void float2_operator_greater_scalar_wide() + { + float a0 = (453.546082f); + float2 b0 = float2(-226.2044f, -423.465f); + bool2 r0 = bool2(true, true); + TestUtils.AreEqual(a0 > b0, r0); + + float a1 = (409.405518f); + float2 b1 = float2(453.877075f, 87.47571f); + bool2 r1 = bool2(false, true); + TestUtils.AreEqual(a1 > b1, r1); + + float a2 = (113.795593f); + float2 b2 = float2(176.409241f, -140.440033f); + bool2 r2 = bool2(false, true); + TestUtils.AreEqual(a2 > b2, r2); + + float a3 = (-182.48288f); + float2 b3 = float2(-158.2933f, -162.685333f); + bool2 r3 = bool2(false, false); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void float2_operator_less_equal_wide_wide() + { + float2 a0 = float2(240.090515f, 462.213135f); + float2 b0 = float2(-81.20383f, 493.637451f); + bool2 r0 = bool2(false, true); + TestUtils.AreEqual(a0 <= b0, r0); + + float2 a1 = float2(293.08252f, -427.870667f); + float2 b1 = float2(-411.4721f, 99.16443f); + bool2 r1 = bool2(false, true); + TestUtils.AreEqual(a1 <= b1, r1); + + float2 a2 = float2(-405.5227f, 204.591919f); + float2 b2 = float2(-295.6677f, -480.462555f); + bool2 r2 = bool2(true, false); + TestUtils.AreEqual(a2 <= b2, r2); + + float2 a3 = float2(294.6701f, -327.564453f); + float2 b3 = float2(74.41406f, 260.916138f); + bool2 r3 = bool2(false, true); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void float2_operator_less_equal_wide_scalar() + { + float2 a0 = float2(309.192444f, 69.67377f); + float b0 = (292.924255f); + bool2 r0 = bool2(false, true); + TestUtils.AreEqual(a0 <= b0, r0); + + float2 a1 = float2(-101.724182f, -346.011047f); + float b1 = (-315.9724f); + bool2 r1 = bool2(false, true); + TestUtils.AreEqual(a1 <= b1, r1); + + float2 a2 = float2(424.15387f, -483.902649f); + float b2 = (-410.870056f); + bool2 r2 = bool2(false, true); + TestUtils.AreEqual(a2 <= b2, r2); + + float2 a3 = float2(183.821167f, -257.870056f); + float b3 = (320.4425f); + bool2 r3 = bool2(true, true); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void float2_operator_less_equal_scalar_wide() + { + float a0 = (-511.152374f); + float2 b0 = float2(51.1589966f, 340.443665f); + bool2 r0 = bool2(true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + float a1 = (312.81427f); + float2 b1 = float2(354.1925f, 136.396729f); + bool2 r1 = bool2(true, false); + TestUtils.AreEqual(a1 <= b1, r1); + + float a2 = (-94.76788f); + float2 b2 = float2(288.5443f, 304.042847f); + bool2 r2 = bool2(true, true); + TestUtils.AreEqual(a2 <= b2, r2); + + float a3 = (-148.618073f); + float2 b3 = float2(-506.3001f, 27.5812378f); + bool2 r3 = bool2(false, true); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void float2_operator_greater_equal_wide_wide() + { + float2 a0 = float2(-386.5918f, -157.120789f); + float2 b0 = float2(153.443f, 49.8924561f); + bool2 r0 = bool2(false, false); + TestUtils.AreEqual(a0 >= b0, r0); + + float2 a1 = float2(391.015259f, -511.886871f); + float2 b1 = float2(78.02582f, 138.813721f); + bool2 r1 = bool2(true, false); + TestUtils.AreEqual(a1 >= b1, r1); + + float2 a2 = float2(-5.42202759f, 287.645264f); + float2 b2 = float2(-225.51059f, -339.3561f); + bool2 r2 = bool2(true, true); + TestUtils.AreEqual(a2 >= b2, r2); + + float2 a3 = float2(-122.535187f, 7.48144531f); + float2 b3 = float2(-373.302063f, 364.9359f); + bool2 r3 = bool2(true, false); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void float2_operator_greater_equal_wide_scalar() + { + float2 a0 = float2(495.4574f, -14.3451233f); + float b0 = (189.205139f); + bool2 r0 = bool2(true, false); + TestUtils.AreEqual(a0 >= b0, r0); + + float2 a1 = float2(-463.4748f, -246.865723f); + float b1 = (217.517517f); + bool2 r1 = bool2(false, false); + TestUtils.AreEqual(a1 >= b1, r1); + + float2 a2 = float2(-377.6587f, -123.332947f); + float b2 = (53.8151245f); + bool2 r2 = bool2(false, false); + TestUtils.AreEqual(a2 >= b2, r2); + + float2 a3 = float2(-221.505463f, -116.440369f); + float b3 = (252.994324f); + bool2 r3 = bool2(false, false); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void float2_operator_greater_equal_scalar_wide() + { + float a0 = (215.435364f); + float2 b0 = float2(204.802979f, -101.104034f); + bool2 r0 = bool2(true, true); + TestUtils.AreEqual(a0 >= b0, r0); + + float a1 = (-122.055023f); + float2 b1 = float2(-70.45615f, -239.62027f); + bool2 r1 = bool2(false, true); + TestUtils.AreEqual(a1 >= b1, r1); + + float a2 = (-185.992737f); + float2 b2 = float2(-455.612579f, 276.665833f); + bool2 r2 = bool2(true, false); + TestUtils.AreEqual(a2 >= b2, r2); + + float a3 = (79.39917f); + float2 b3 = float2(416.420532f, 379.2735f); + bool2 r3 = bool2(false, false); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void float2_operator_add_wide_wide() + { + float2 a0 = float2(465.148376f, 278.9107f); + float2 b0 = float2(483.9944f, -204.07666f); + float2 r0 = float2(949.142761f, 74.8340454f); + TestUtils.AreEqual(a0 + b0, r0); + + float2 a1 = float2(-277.5299f, -65.1972046f); + float2 b1 = float2(-365.673553f, -509.920868f); + float2 r1 = float2(-643.2035f, -575.118042f); + TestUtils.AreEqual(a1 + b1, r1); + + float2 a2 = float2(-473.324371f, -4.69555664f); + float2 b2 = float2(-270.6975f, 486.763977f); + float2 r2 = float2(-744.021851f, 482.06842f); + TestUtils.AreEqual(a2 + b2, r2); + + float2 a3 = float2(-470.536774f, -109.9501f); + float2 b3 = float2(267.49176f, 251.642517f); + float2 r3 = float2(-203.045013f, 141.692413f); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void float2_operator_add_wide_scalar() + { + float2 a0 = float2(459.898315f, -447.663361f); + float b0 = (500.997253f); + float2 r0 = float2(960.895569f, 53.3338928f); + TestUtils.AreEqual(a0 + b0, r0); + + float2 a1 = float2(-94.43863f, -36.254364f); + float b1 = (126.429871f); + float2 r1 = float2(31.9912415f, 90.17551f); + TestUtils.AreEqual(a1 + b1, r1); + + float2 a2 = float2(-349.6413f, -478.4148f); + float b2 = (-2.79125977f); + float2 r2 = float2(-352.432556f, -481.206055f); + TestUtils.AreEqual(a2 + b2, r2); + + float2 a3 = float2(443.115234f, 41.3210449f); + float b3 = (268.092224f); + float2 r3 = float2(711.207458f, 309.413269f); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void float2_operator_add_scalar_wide() + { + float a0 = (-325.512756f); + float2 b0 = float2(-264.088135f, -106.009247f); + float2 r0 = float2(-589.6009f, -431.522f); + TestUtils.AreEqual(a0 + b0, r0); + + float a1 = (-355.4473f); + float2 b1 = float2(-447.3303f, -158.7002f); + float2 r1 = float2(-802.7776f, -514.147461f); + TestUtils.AreEqual(a1 + b1, r1); + + float a2 = (-199.4837f); + float2 b2 = float2(180.318115f, 337.579346f); + float2 r2 = float2(-19.1655884f, 138.095642f); + TestUtils.AreEqual(a2 + b2, r2); + + float a3 = (-37.0550232f); + float2 b3 = float2(230.805f, -140.174347f); + float2 r3 = float2(193.749969f, -177.22937f); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void float2_operator_sub_wide_wide() + { + float2 a0 = float2(133.371033f, -131.832123f); + float2 b0 = float2(123.460266f, 359.56012f); + float2 r0 = float2(9.910767f, -491.392242f); + TestUtils.AreEqual(a0 - b0, r0); + + float2 a1 = float2(-197.293152f, -485.28656f); + float2 b1 = float2(-48.2484741f, 478.979065f); + float2 r1 = float2(-149.044678f, -964.2656f); + TestUtils.AreEqual(a1 - b1, r1); + + float2 a2 = float2(-337.550323f, 471.6671f); + float2 b2 = float2(207.158325f, 142.36731f); + float2 r2 = float2(-544.7086f, 329.2998f); + TestUtils.AreEqual(a2 - b2, r2); + + float2 a3 = float2(146.506592f, -130.585052f); + float2 b3 = float2(-125.6055f, -65.29901f); + float2 r3 = float2(272.1121f, -65.28604f); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void float2_operator_sub_wide_scalar() + { + float2 a0 = float2(48.9367065f, 410.4516f); + float b0 = (-291.5904f); + float2 r0 = float2(340.5271f, 702.042f); + TestUtils.AreEqual(a0 - b0, r0); + + float2 a1 = float2(-364.4417f, -460.067322f); + float b1 = (163.980591f); + float2 r1 = float2(-528.4223f, -624.0479f); + TestUtils.AreEqual(a1 - b1, r1); + + float2 a2 = float2(110.919434f, 180.269714f); + float b2 = (204.358337f); + float2 r2 = float2(-93.4389f, -24.088623f); + TestUtils.AreEqual(a2 - b2, r2); + + float2 a3 = float2(-377.9257f, 400.5349f); + float b3 = (-470.262054f); + float2 r3 = float2(92.3363647f, 870.797f); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void float2_operator_sub_scalar_wide() + { + float a0 = (294.5865f); + float2 b0 = float2(452.352539f, 256.9898f); + float2 r0 = float2(-157.766052f, 37.59668f); + TestUtils.AreEqual(a0 - b0, r0); + + float a1 = (-275.159882f); + float2 b1 = float2(-89.02753f, 488.2284f); + float2 r1 = float2(-186.132355f, -763.3883f); + TestUtils.AreEqual(a1 - b1, r1); + + float a2 = (-333.2173f); + float2 b2 = float2(-64.233f, -66.04172f); + float2 r2 = float2(-268.984283f, -267.175568f); + TestUtils.AreEqual(a2 - b2, r2); + + float a3 = (341.204956f); + float2 b3 = float2(-385.775055f, 75.3947754f); + float2 r3 = float2(726.98f, 265.810181f); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void float2_operator_mul_wide_wide() + { + float2 a0 = float2(-394.780548f, -412.3722f); + float2 b0 = float2(-149.763977f, -345.04538f); + float2 r0 = float2(59123.9063f, 142287.125f); + TestUtils.AreEqual(a0 * b0, r0); + + float2 a1 = float2(-25.8745728f, -241.045959f); + float2 b1 = float2(-284.334045f, 267.979248f); + float2 r1 = float2(7357.022f, -64595.3164f); + TestUtils.AreEqual(a1 * b1, r1); + + float2 a2 = float2(-93.6759949f, 244.159973f); + float2 b2 = float2(-326.6485f, -150.689667f); + float2 r2 = float2(30599.123f, -36792.3867f); + TestUtils.AreEqual(a2 * b2, r2); + + float2 a3 = float2(494.688477f, 53.5379639f); + float2 b3 = float2(207.732422f, 366.192871f); + float2 r3 = float2(102762.836f, 19605.22f); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void float2_operator_mul_wide_scalar() + { + float2 a0 = float2(328.203f, -290.10672f); + float b0 = (192.211182f); + float2 r0 = float2(63084.2852f, -55761.7539f); + TestUtils.AreEqual(a0 * b0, r0); + + float2 a1 = float2(236.995728f, 357.903137f); + float b1 = (120.481384f); + float2 r1 = float2(28553.5742f, 43120.6641f); + TestUtils.AreEqual(a1 * b1, r1); + + float2 a2 = float2(134.867249f, -438.272919f); + float b2 = (-477.3105f); + float2 r2 = float2(-64373.55f, 209192.266f); + TestUtils.AreEqual(a2 * b2, r2); + + float2 a3 = float2(-46.729187f, 422.08252f); + float b3 = (-238.405f); + float2 r3 = float2(11140.4717f, -100626.586f); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void float2_operator_mul_scalar_wide() + { + float a0 = (-464.5347f); + float2 b0 = float2(329.360962f, -198.683441f); + float2 r0 = float2(-152999.6f, 92295.35f); + TestUtils.AreEqual(a0 * b0, r0); + + float a1 = (184.0794f); + float2 b1 = float2(256.016174f, 266.226318f); + float2 r1 = float2(47127.3047f, 49006.78f); + TestUtils.AreEqual(a1 * b1, r1); + + float a2 = (-97.8947449f); + float2 b2 = float2(159.748108f, -351.8222f); + float2 r2 = float2(-15638.5f, 34441.5469f); + TestUtils.AreEqual(a2 * b2, r2); + + float a3 = (491.801575f); + float2 b3 = float2(49.90204f, 424.4626f); + float2 r3 = float2(24541.9f, 208751.375f); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void float2_operator_div_wide_wide() + { + float2 a0 = float2(246.265747f, -269.85614f); + float2 b0 = float2(172.119812f, -77.14111f); + float2 r0 = float2(1.43078089f, 3.49821424f); + TestUtils.AreEqual(a0 / b0, r0); + + float2 a1 = float2(-451.619537f, -7.388489f); + float2 b1 = float2(-325.8354f, -450.608673f); + float2 r1 = float2(1.38603592f, 0.0163966864f); + TestUtils.AreEqual(a1 / b1, r1); + + float2 a2 = float2(-308.205566f, -373.3948f); + float2 b2 = float2(-261.262146f, -122.449493f); + float2 r2 = float2(1.17967939f, 3.04937816f); + TestUtils.AreEqual(a2 / b2, r2); + + float2 a3 = float2(360.41864f, 25.8097534f); + float2 b3 = float2(-93.2107849f, -442.005219f); + float2 r3 = float2(-3.86670542f, -0.0583924167f); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void float2_operator_div_wide_scalar() + { + float2 a0 = float2(-244.517456f, 69.1123047f); + float b0 = (-60.0243835f); + float2 r0 = float2(4.07363558f, -1.15140378f); + TestUtils.AreEqual(a0 / b0, r0); + + float2 a1 = float2(-333.023132f, 403.2456f); + float b1 = (257.396851f); + float2 r1 = float2(-1.293812f, 1.56662989f); + TestUtils.AreEqual(a1 / b1, r1); + + float2 a2 = float2(154.34436f, -261.8864f); + float b2 = (131.526611f); + float2 r2 = float2(1.17348385f, -1.99112868f); + TestUtils.AreEqual(a2 / b2, r2); + + float2 a3 = float2(-348.9238f, 210.557922f); + float b3 = (-275.5387f); + float2 r3 = float2(1.26633322f, -0.764168262f); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void float2_operator_div_scalar_wide() + { + float a0 = (41.73767f); + float2 b0 = float2(-422.676147f, 248.129639f); + float2 r0 = float2(-0.09874622f, 0.168209136f); + TestUtils.AreEqual(a0 / b0, r0); + + float a1 = (449.391357f); + float2 b1 = float2(245.858154f, -326.6206f); + float2 r1 = float2(1.82784808f, -1.37588179f); + TestUtils.AreEqual(a1 / b1, r1); + + float a2 = (163.715088f); + float2 b2 = float2(333.6645f, 38.2910767f); + float2 r2 = float2(0.4906578f, 4.27554131f); + TestUtils.AreEqual(a2 / b2, r2); + + float a3 = (-472.979767f); + float2 b3 = float2(192.230164f, -200.296875f); + float2 r3 = float2(-2.46048665f, 2.36139369f); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void float2_operator_mod_wide_wide() + { + float2 a0 = float2(-442.309875f, 368.5005f); + float2 b0 = float2(-43.2450562f, -144.195862f); + float2 r0 = float2(-9.859314f, 80.1087646f); + TestUtils.AreEqual(a0 % b0, r0); + + float2 a1 = float2(-1.09390259f, -364.673828f); + float2 b1 = float2(-62.6404724f, -336.828247f); + float2 r1 = float2(-1.09390259f, -27.8455811f); + TestUtils.AreEqual(a1 % b1, r1); + + float2 a2 = float2(-197.343933f, -34.0349121f); + float2 b2 = float2(-154.61026f, -154.029358f); + float2 r2 = float2(-42.7336731f, -34.0349121f); + TestUtils.AreEqual(a2 % b2, r2); + + float2 a3 = float2(-101.348572f, 208.318542f); + float2 b3 = float2(487.0462f, -469.8291f); + float2 r3 = float2(-101.348572f, 208.318542f); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void float2_operator_mod_wide_scalar() + { + float2 a0 = float2(-433.417f, -5.51412964f); + float b0 = (-90.49924f); + float2 r0 = float2(-71.4200439f, -5.51412964f); + TestUtils.AreEqual(a0 % b0, r0); + + float2 a1 = float2(393.3944f, -120.80603f); + float b1 = (299.41156f); + float2 r1 = float2(93.98285f, -120.80603f); + TestUtils.AreEqual(a1 % b1, r1); + + float2 a2 = float2(-502.939026f, 186.094788f); + float b2 = (-450.807678f); + float2 r2 = float2(-52.1313477f, 186.094788f); + TestUtils.AreEqual(a2 % b2, r2); + + float2 a3 = float2(-84.47363f, 433.4547f); + float b3 = (-318.7815f); + float2 r3 = float2(-84.47363f, 114.673218f); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void float2_operator_mod_scalar_wide() + { + float a0 = (-396.4224f); + float2 b0 = float2(-159.140259f, 230.17334f); + float2 r0 = float2(-78.14188f, -166.249054f); + TestUtils.AreEqual(a0 % b0, r0); + + float a1 = (14.7793579f); + float2 b1 = float2(-303.1565f, 399.635f); + float2 r1 = float2(14.7793579f, 14.7793579f); + TestUtils.AreEqual(a1 % b1, r1); + + float a2 = (206.6947f); + float2 b2 = float2(397.0448f, -393.890656f); + float2 r2 = float2(206.6947f, 206.6947f); + TestUtils.AreEqual(a2 % b2, r2); + + float a3 = (-372.067078f); + float2 b3 = float2(201.012268f, -95.566864f); + float2 r3 = float2(-171.05481f, -85.3664856f); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void float2_operator_plus() + { + float2 a0 = float2(271.670837f, -79.08023f); + float2 r0 = float2(271.670837f, -79.08023f); + TestUtils.AreEqual(+a0, r0); + + float2 a1 = float2(-330.985046f, 315.449524f); + float2 r1 = float2(-330.985046f, 315.449524f); + TestUtils.AreEqual(+a1, r1); + + float2 a2 = float2(319.222168f, -350.3086f); + float2 r2 = float2(319.222168f, -350.3086f); + TestUtils.AreEqual(+a2, r2); + + float2 a3 = float2(-320.518463f, -107.00351f); + float2 r3 = float2(-320.518463f, -107.00351f); + TestUtils.AreEqual(+a3, r3); + } + + [TestCompiler] + public static void float2_operator_neg() + { + float2 a0 = float2(420.227173f, -196.2575f); + float2 r0 = float2(-420.227173f, 196.2575f); + TestUtils.AreEqual(-a0, r0); + + float2 a1 = float2(-335.426819f, -33.0144043f); + float2 r1 = float2(335.426819f, 33.0144043f); + TestUtils.AreEqual(-a1, r1); + + float2 a2 = float2(-498.575317f, -270.859467f); + float2 r2 = float2(498.575317f, 270.859467f); + TestUtils.AreEqual(-a2, r2); + + float2 a3 = float2(19.68689f, -180.600525f); + float2 r3 = float2(-19.68689f, 180.600525f); + TestUtils.AreEqual(-a3, r3); + } + + [TestCompiler] + public static void float2_operator_prefix_inc() + { + float2 a0 = float2(-99.79556f, 458.741821f); + float2 r0 = float2(-98.79556f, 459.741821f); + TestUtils.AreEqual(++a0, r0); + + float2 a1 = float2(96.1790161f, -315.728973f); + float2 r1 = float2(97.1790161f, -314.728973f); + TestUtils.AreEqual(++a1, r1); + + float2 a2 = float2(-299.230164f, -456.8903f); + float2 r2 = float2(-298.230164f, -455.8903f); + TestUtils.AreEqual(++a2, r2); + + float2 a3 = float2(-76.50766f, 64.0965f); + float2 r3 = float2(-75.50766f, 65.0965f); + TestUtils.AreEqual(++a3, r3); + } + + [TestCompiler] + public static void float2_operator_postfix_inc() + { + float2 a0 = float2(322.943542f, 472.0525f); + float2 r0 = float2(322.943542f, 472.0525f); + TestUtils.AreEqual(a0++, r0); + + float2 a1 = float2(203.48761f, -31.4205322f); + float2 r1 = float2(203.48761f, -31.4205322f); + TestUtils.AreEqual(a1++, r1); + + float2 a2 = float2(455.3366f, 55.7368774f); + float2 r2 = float2(455.3366f, 55.7368774f); + TestUtils.AreEqual(a2++, r2); + + float2 a3 = float2(153.7503f, -427.401062f); + float2 r3 = float2(153.7503f, -427.401062f); + TestUtils.AreEqual(a3++, r3); + } + + [TestCompiler] + public static void float2_operator_prefix_dec() + { + float2 a0 = float2(-416.201233f, -96.63788f); + float2 r0 = float2(-417.201233f, -97.63788f); + TestUtils.AreEqual(--a0, r0); + + float2 a1 = float2(-50.14566f, 439.479065f); + float2 r1 = float2(-51.14566f, 438.479065f); + TestUtils.AreEqual(--a1, r1); + + float2 a2 = float2(-304.400818f, 246.088989f); + float2 r2 = float2(-305.400818f, 245.088989f); + TestUtils.AreEqual(--a2, r2); + + float2 a3 = float2(171.964539f, 298.2848f); + float2 r3 = float2(170.964539f, 297.2848f); + TestUtils.AreEqual(--a3, r3); + } + + [TestCompiler] + public static void float2_operator_postfix_dec() + { + float2 a0 = float2(-376.5924f, 16.9697266f); + float2 r0 = float2(-376.5924f, 16.9697266f); + TestUtils.AreEqual(a0--, r0); + + float2 a1 = float2(-0.2506714f, 409.557556f); + float2 r1 = float2(-0.2506714f, 409.557556f); + TestUtils.AreEqual(a1--, r1); + + float2 a2 = float2(47.85663f, -262.0626f); + float2 r2 = float2(47.85663f, -262.0626f); + TestUtils.AreEqual(a2--, r2); + + float2 a3 = float2(-182.405731f, -129.232666f); + float2 r3 = float2(-182.405731f, -129.232666f); + TestUtils.AreEqual(a3--, r3); + } + + [TestCompiler] + public static void float2_shuffle_result_1() + { + float2 a = float2(0, 1); + float2 b = float2(2, 3); + + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftX), (0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftY), (1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX), (2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY), (3)); + } + + [TestCompiler] + public static void float2_shuffle_result_2() + { + float2 a = float2(0, 1); + float2 b = float2(2, 3); + + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftX, ShuffleComponent.LeftX), float2(0, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftY, ShuffleComponent.LeftX), float2(1, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.LeftX), float2(2, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.LeftX), float2(3, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftX, ShuffleComponent.LeftY), float2(0, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftY, ShuffleComponent.LeftY), float2(1, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.LeftY), float2(2, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.LeftY), float2(3, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftX, ShuffleComponent.RightX), float2(0, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftY, ShuffleComponent.RightX), float2(1, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.RightX), float2(2, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.RightX), float2(3, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftX, ShuffleComponent.RightY), float2(0, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftY, ShuffleComponent.RightY), float2(1, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.RightY), float2(2, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.RightY), float2(3, 3)); + } + + [TestCompiler] + public static void float2_shuffle_result_3() + { + float2 a = float2(0, 1); + float2 b = float2(2, 3); + + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.RightY, ShuffleComponent.RightY), float3(2, 3, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.LeftX, ShuffleComponent.RightX), float3(2, 0, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.LeftY, ShuffleComponent.RightY), float3(3, 1, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftY, ShuffleComponent.LeftY, ShuffleComponent.LeftY), float3(1, 1, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.LeftY, ShuffleComponent.RightY), float3(2, 1, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftX, ShuffleComponent.RightY, ShuffleComponent.RightY), float3(0, 3, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.LeftY, ShuffleComponent.RightY), float3(2, 1, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.RightY, ShuffleComponent.LeftX), float3(3, 3, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.RightX, ShuffleComponent.RightY), float3(2, 2, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.RightX, ShuffleComponent.LeftX), float3(2, 2, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftX, ShuffleComponent.LeftY, ShuffleComponent.LeftY), float3(0, 1, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.RightX, ShuffleComponent.RightY), float3(3, 2, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftX, ShuffleComponent.LeftY, ShuffleComponent.LeftY), float3(0, 1, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.RightX, ShuffleComponent.RightX), float3(3, 2, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftX, ShuffleComponent.LeftY, ShuffleComponent.RightY), float3(0, 1, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.LeftY, ShuffleComponent.LeftY), float3(3, 1, 1)); + } + + [TestCompiler] + public static void float2_shuffle_result_4() + { + float2 a = float2(0, 1); + float2 b = float2(2, 3); + + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftX, ShuffleComponent.LeftX, ShuffleComponent.LeftY, ShuffleComponent.RightX), float4(0, 0, 1, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.LeftY, ShuffleComponent.LeftX, ShuffleComponent.RightY), float4(2, 1, 0, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.RightX, ShuffleComponent.RightY, ShuffleComponent.RightX), float4(3, 2, 3, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.LeftX, ShuffleComponent.RightY, ShuffleComponent.RightY), float4(2, 0, 3, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftX, ShuffleComponent.RightY, ShuffleComponent.LeftX, ShuffleComponent.RightX), float4(0, 3, 0, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.LeftX, ShuffleComponent.RightY, ShuffleComponent.LeftY), float4(3, 0, 3, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.RightX, ShuffleComponent.RightY, ShuffleComponent.LeftX), float4(2, 2, 3, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.RightX, ShuffleComponent.LeftX, ShuffleComponent.RightY), float4(2, 2, 0, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftX, ShuffleComponent.LeftY, ShuffleComponent.RightX, ShuffleComponent.LeftY), float4(0, 1, 2, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.LeftY, ShuffleComponent.RightY, ShuffleComponent.RightY), float4(2, 1, 3, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.RightY, ShuffleComponent.RightY, ShuffleComponent.LeftY), float4(3, 3, 3, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.RightX, ShuffleComponent.LeftY, ShuffleComponent.LeftY), float4(2, 2, 1, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.LeftX, ShuffleComponent.LeftX, ShuffleComponent.LeftX), float4(3, 0, 0, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.RightX, ShuffleComponent.RightX, ShuffleComponent.RightY), float4(2, 2, 2, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftX, ShuffleComponent.RightY, ShuffleComponent.LeftX, ShuffleComponent.RightY), float4(0, 3, 0, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.LeftX, ShuffleComponent.LeftX, ShuffleComponent.LeftX), float4(2, 0, 0, 0)); + } + + + } +} diff --git a/package/Tests/Tests/Shared/TestFloat2.gen.cs.meta b/package/Tests/Tests/Shared/TestFloat2.gen.cs.meta new file mode 100755 index 000000000..51ad5c468 --- /dev/null +++ b/package/Tests/Tests/Shared/TestFloat2.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 79dc86a9e627dcb4a9b6c6ae87b366b6 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/package/Tests/Tests/Shared/TestFloat2x2.gen.cs b/package/Tests/Tests/Shared/TestFloat2x2.gen.cs new file mode 100755 index 000000000..92d326b2e --- /dev/null +++ b/package/Tests/Tests/Shared/TestFloat2x2.gen.cs @@ -0,0 +1,950 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using NUnit.Framework; +using static Unity.Mathematics.math; +using Burst.Compiler.IL.Tests; + +namespace Unity.Mathematics.Tests +{ + [TestFixture] + public class TestFloat2x2 + { + [TestCompiler] + public static void float2x2_zero() + { + TestUtils.AreEqual(float2x2.zero.c0.x, 0.0f); + TestUtils.AreEqual(float2x2.zero.c0.y, 0.0f); + TestUtils.AreEqual(float2x2.zero.c1.x, 0.0f); + TestUtils.AreEqual(float2x2.zero.c1.y, 0.0f); + } + + [TestCompiler] + public static void float2x2_identity() + { + TestUtils.AreEqual(float2x2.identity.c0.x, 1.0f); + TestUtils.AreEqual(float2x2.identity.c0.y, 0.0f); + TestUtils.AreEqual(float2x2.identity.c1.x, 0.0f); + TestUtils.AreEqual(float2x2.identity.c1.y, 1.0f); + } + + [TestCompiler] + public static void float2x2_operator_equal_wide_wide() + { + float2x2 a0 = float2x2(-135.18924f, -49.0941162f, 169.129822f, 240.8053f); + float2x2 b0 = float2x2(-220.014648f, 66.98004f, 499.2016f, -371.1131f); + bool2x2 r0 = bool2x2(false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + float2x2 a1 = float2x2(314.7392f, 442.393f, 177.924438f, 335.5334f); + float2x2 b1 = float2x2(208.448669f, 390.8037f, -72.44382f, 362.97644f); + bool2x2 r1 = bool2x2(false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + float2x2 a2 = float2x2(168.15448f, 350.729553f, 367.178467f, 46.9414673f); + float2x2 b2 = float2x2(194.678345f, 471.644836f, -404.044678f, -144.696747f); + bool2x2 r2 = bool2x2(false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + float2x2 a3 = float2x2(188.76416f, -97.2113953f, -293.320984f, -234.822937f); + float2x2 b3 = float2x2(-494.446655f, -252.970367f, 234.417114f, 398.724f); + bool2x2 r3 = bool2x2(false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void float2x2_operator_equal_wide_scalar() + { + float2x2 a0 = float2x2(65.6712f, 404.415527f, -269.730164f, 83.6306152f); + float b0 = (-155.815765f); + bool2x2 r0 = bool2x2(false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + float2x2 a1 = float2x2(152.9945f, 314.671265f, 386.365173f, 290.04895f); + float b1 = (-155.868286f); + bool2x2 r1 = bool2x2(false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + float2x2 a2 = float2x2(-132.6352f, -69.68326f, -191.190765f, 186.845215f); + float b2 = (-65.66748f); + bool2x2 r2 = bool2x2(false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + float2x2 a3 = float2x2(-232.895691f, -49.70108f, -300.8819f, 333.396851f); + float b3 = (-319.144043f); + bool2x2 r3 = bool2x2(false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void float2x2_operator_equal_scalar_wide() + { + float a0 = (36.38391f); + float2x2 b0 = float2x2(-400.4892f, -71.2868347f, 156.978088f, -225.238739f); + bool2x2 r0 = bool2x2(false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + float a1 = (499.141785f); + float2x2 b1 = float2x2(-211.979919f, 428.311951f, -489.501343f, -5.691559f); + bool2x2 r1 = bool2x2(false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + float a2 = (-30.8659363f); + float2x2 b2 = float2x2(-362.9831f, 184.503174f, -160.470612f, 316.668823f); + bool2x2 r2 = bool2x2(false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + float a3 = (390.369263f); + float2x2 b3 = float2x2(505.1051f, -294.6487f, 443.1991f, 96.5592651f); + bool2x2 r3 = bool2x2(false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void float2x2_operator_not_equal_wide_wide() + { + float2x2 a0 = float2x2(279.994141f, -43.34201f, -465.724731f, 317.466553f); + float2x2 b0 = float2x2(-460.9121f, -476.009033f, 468.1364f, -341.012543f); + bool2x2 r0 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + float2x2 a1 = float2x2(85.7149658f, 360.8905f, 366.081543f, 154.542847f); + float2x2 b1 = float2x2(-62.65805f, -458.801666f, -457.730225f, -59.5232544f); + bool2x2 r1 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + float2x2 a2 = float2x2(332.4262f, 397.11322f, -431.374969f, 489.0108f); + float2x2 b2 = float2x2(3.024231f, 155.812744f, -19.8399048f, -6.01693726f); + bool2x2 r2 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + float2x2 a3 = float2x2(398.4336f, -489.817932f, 171.4049f, -67.82968f); + float2x2 b3 = float2x2(-406.207916f, -102.420715f, -40.362915f, 452.6754f); + bool2x2 r3 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void float2x2_operator_not_equal_wide_scalar() + { + float2x2 a0 = float2x2(-155.4411f, -19.4266052f, 174.633057f, 507.920715f); + float b0 = (-393.413544f); + bool2x2 r0 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + float2x2 a1 = float2x2(59.177063f, -58.92328f, -398.176849f, 492.20105f); + float b1 = (171.151489f); + bool2x2 r1 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + float2x2 a2 = float2x2(-165.241516f, -380.243256f, 501.899048f, -134.345459f); + float b2 = (270.341f); + bool2x2 r2 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + float2x2 a3 = float2x2(458.400452f, 161.459961f, 261.514221f, -145.6124f); + float b3 = (46.7709961f); + bool2x2 r3 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void float2x2_operator_not_equal_scalar_wide() + { + float a0 = (478.353149f); + float2x2 b0 = float2x2(459.553223f, 436.453247f, -488.714172f, 392.767944f); + bool2x2 r0 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + float a1 = (-266.736633f); + float2x2 b1 = float2x2(338.557861f, -338.100128f, -152.314545f, -452.820679f); + bool2x2 r1 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + float a2 = (209.439331f); + float2x2 b2 = float2x2(50.10797f, 372.4344f, -488.0213f, 489.740784f); + bool2x2 r2 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + float a3 = (270.4001f); + float2x2 b3 = float2x2(-472.846771f, -286.850464f, -384.691864f, 443.423523f); + bool2x2 r3 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void float2x2_operator_less_wide_wide() + { + float2x2 a0 = float2x2(51.7102661f, -313.85556f, 283.047668f, 235.021912f); + float2x2 b0 = float2x2(-261.835236f, -19.81073f, -149.25882f, 205.99823f); + bool2x2 r0 = bool2x2(false, true, false, false); + TestUtils.AreEqual(a0 < b0, r0); + + float2x2 a1 = float2x2(44.07837f, -207.255676f, 3.38293457f, -144.301331f); + float2x2 b1 = float2x2(-306.024384f, 102.121704f, 231.906311f, 179.49884f); + bool2x2 r1 = bool2x2(false, true, true, true); + TestUtils.AreEqual(a1 < b1, r1); + + float2x2 a2 = float2x2(-69.3696f, -135.667969f, -194.787354f, -33.473877f); + float2x2 b2 = float2x2(473.2249f, 15.8916626f, 270.049927f, 490.914f); + bool2x2 r2 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a2 < b2, r2); + + float2x2 a3 = float2x2(-19.67508f, 423.237976f, -71.6983f, -501.886f); + float2x2 b3 = float2x2(-185.734131f, 76.4331055f, 97.75232f, 419.300781f); + bool2x2 r3 = bool2x2(false, false, true, true); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void float2x2_operator_less_wide_scalar() + { + float2x2 a0 = float2x2(-221.869781f, -121.546478f, -97.5239258f, 479.8811f); + float b0 = (199.0675f); + bool2x2 r0 = bool2x2(true, true, true, false); + TestUtils.AreEqual(a0 < b0, r0); + + float2x2 a1 = float2x2(67.11902f, 282.9666f, 258.2791f, -111.413147f); + float b1 = (137.3288f); + bool2x2 r1 = bool2x2(true, false, false, true); + TestUtils.AreEqual(a1 < b1, r1); + + float2x2 a2 = float2x2(-288.081116f, -361.6429f, -68.0881958f, 12.7880249f); + float b2 = (82.6654053f); + bool2x2 r2 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a2 < b2, r2); + + float2x2 a3 = float2x2(-66.703064f, 25.7277222f, 101.37085f, -330.442657f); + float b3 = (-78.76297f); + bool2x2 r3 = bool2x2(false, false, false, true); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void float2x2_operator_less_scalar_wide() + { + float a0 = (-250.484924f); + float2x2 b0 = float2x2(-377.196533f, -505.147552f, 375.9267f, 110.17395f); + bool2x2 r0 = bool2x2(false, false, true, true); + TestUtils.AreEqual(a0 < b0, r0); + + float a1 = (-118.097565f); + float2x2 b1 = float2x2(-40.4508972f, -299.744324f, 31.4371338f, -458.904541f); + bool2x2 r1 = bool2x2(true, false, true, false); + TestUtils.AreEqual(a1 < b1, r1); + + float a2 = (13.6846924f); + float2x2 b2 = float2x2(-458.5069f, 248.276489f, 389.231445f, 488.745544f); + bool2x2 r2 = bool2x2(false, true, true, true); + TestUtils.AreEqual(a2 < b2, r2); + + float a3 = (-221.637878f); + float2x2 b3 = float2x2(-424.2672f, 249.059021f, -22.1361389f, -442.247742f); + bool2x2 r3 = bool2x2(false, true, true, false); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void float2x2_operator_greater_wide_wide() + { + float2x2 a0 = float2x2(-229.29068f, 505.536621f, -73.80707f, 100.292053f); + float2x2 b0 = float2x2(-445.845032f, -420.035278f, 299.0244f, -13.8809814f); + bool2x2 r0 = bool2x2(true, true, false, true); + TestUtils.AreEqual(a0 > b0, r0); + + float2x2 a1 = float2x2(-419.214783f, -159.559753f, -396.770355f, 127.037415f); + float2x2 b1 = float2x2(151.5617f, -163.50943f, -391.096039f, 479.283752f); + bool2x2 r1 = bool2x2(false, true, false, false); + TestUtils.AreEqual(a1 > b1, r1); + + float2x2 a2 = float2x2(489.1399f, 51.9188843f, 155.384766f, -135.631653f); + float2x2 b2 = float2x2(-77.6748657f, -46.584198f, -415.377f, 71.46698f); + bool2x2 r2 = bool2x2(true, true, true, false); + TestUtils.AreEqual(a2 > b2, r2); + + float2x2 a3 = float2x2(-425.978149f, -228.430511f, 383.03833f, 136.533569f); + float2x2 b3 = float2x2(-206.061035f, 360.8363f, 236.968811f, 14.550354f); + bool2x2 r3 = bool2x2(false, false, true, true); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void float2x2_operator_greater_wide_scalar() + { + float2x2 a0 = float2x2(11.156311f, -411.023224f, 385.885559f, -485.103058f); + float b0 = (-302.816956f); + bool2x2 r0 = bool2x2(true, false, true, false); + TestUtils.AreEqual(a0 > b0, r0); + + float2x2 a1 = float2x2(-491.180023f, 173.575073f, 69.26929f, 501.306824f); + float b1 = (405.175354f); + bool2x2 r1 = bool2x2(false, false, false, true); + TestUtils.AreEqual(a1 > b1, r1); + + float2x2 a2 = float2x2(-367.027771f, -489.090576f, -172.518158f, -18.1496277f); + float b2 = (-86.12451f); + bool2x2 r2 = bool2x2(false, false, false, true); + TestUtils.AreEqual(a2 > b2, r2); + + float2x2 a3 = float2x2(-236.414948f, -27.2391357f, 471.779358f, 240.164551f); + float b3 = (-238.8945f); + bool2x2 r3 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void float2x2_operator_greater_scalar_wide() + { + float a0 = (453.546082f); + float2x2 b0 = float2x2(-226.2044f, -423.465f, 409.405518f, 453.877075f); + bool2x2 r0 = bool2x2(true, true, true, false); + TestUtils.AreEqual(a0 > b0, r0); + + float a1 = (87.47571f); + float2x2 b1 = float2x2(113.795593f, 176.409241f, -140.440033f, -182.48288f); + bool2x2 r1 = bool2x2(false, false, true, true); + TestUtils.AreEqual(a1 > b1, r1); + + float a2 = (-158.2933f); + float2x2 b2 = float2x2(-162.685333f, -193.328674f, 230.181274f, -102.58783f); + bool2x2 r2 = bool2x2(true, true, false, false); + TestUtils.AreEqual(a2 > b2, r2); + + float a3 = (392.520569f); + float2x2 b3 = float2x2(-177.478668f, -10.2950134f, -24.04895f, 172.448669f); + bool2x2 r3 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void float2x2_operator_less_equal_wide_wide() + { + float2x2 a0 = float2x2(240.090515f, 462.213135f, 293.08252f, -427.870667f); + float2x2 b0 = float2x2(-81.20383f, 493.637451f, -411.4721f, 99.16443f); + bool2x2 r0 = bool2x2(false, true, false, true); + TestUtils.AreEqual(a0 <= b0, r0); + + float2x2 a1 = float2x2(-405.5227f, 204.591919f, 294.6701f, -327.564453f); + float2x2 b1 = float2x2(-295.6677f, -480.462555f, 74.41406f, 260.916138f); + bool2x2 r1 = bool2x2(true, false, false, true); + TestUtils.AreEqual(a1 <= b1, r1); + + float2x2 a2 = float2x2(-456.12326f, 282.30127f, 421.881165f, -311.71283f); + float2x2 b2 = float2x2(306.173279f, 139.564819f, -505.752472f, -489.6268f); + bool2x2 r2 = bool2x2(true, false, false, false); + TestUtils.AreEqual(a2 <= b2, r2); + + float2x2 a3 = float2x2(84.5675049f, 447.244629f, -154.494354f, -424.364746f); + float2x2 b3 = float2x2(-280.0326f, 303.1599f, 511.1902f, -104.659729f); + bool2x2 r3 = bool2x2(false, false, true, true); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void float2x2_operator_less_equal_wide_scalar() + { + float2x2 a0 = float2x2(309.192444f, 69.67377f, -101.724182f, -315.9724f); + float b0 = (292.924255f); + bool2x2 r0 = bool2x2(false, true, true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + float2x2 a1 = float2x2(-346.011047f, -410.870056f, -483.902649f, 183.821167f); + float b1 = (424.15387f); + bool2x2 r1 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a1 <= b1, r1); + + float2x2 a2 = float2x2(320.4425f, -386.801758f, -182.938812f, 349.250122f); + float b2 = (-257.870056f); + bool2x2 r2 = bool2x2(false, true, false, false); + TestUtils.AreEqual(a2 <= b2, r2); + + float2x2 a3 = float2x2(485.311584f, 259.1515f, 450.130066f, -128.525543f); + float b3 = (373.5691f); + bool2x2 r3 = bool2x2(false, true, false, true); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void float2x2_operator_less_equal_scalar_wide() + { + float a0 = (-511.152374f); + float2x2 b0 = float2x2(51.1589966f, 340.443665f, 312.81427f, 354.1925f); + bool2x2 r0 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + float a1 = (136.396729f); + float2x2 b1 = float2x2(-94.76788f, 288.5443f, 304.042847f, -148.618073f); + bool2x2 r1 = bool2x2(false, true, true, false); + TestUtils.AreEqual(a1 <= b1, r1); + + float a2 = (-506.3001f); + float2x2 b2 = float2x2(27.5812378f, 48.47113f, 104.883484f, -488.685852f); + bool2x2 r2 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a2 <= b2, r2); + + float a3 = (-480.435181f); + float2x2 b3 = float2x2(421.936646f, 239.721069f, -101.018433f, -283.951477f); + bool2x2 r3 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void float2x2_operator_greater_equal_wide_wide() + { + float2x2 a0 = float2x2(-386.5918f, -157.120789f, 391.015259f, -511.886871f); + float2x2 b0 = float2x2(153.443f, 49.8924561f, 78.02582f, 138.813721f); + bool2x2 r0 = bool2x2(false, false, true, false); + TestUtils.AreEqual(a0 >= b0, r0); + + float2x2 a1 = float2x2(-5.42202759f, 287.645264f, -122.535187f, 7.48144531f); + float2x2 b1 = float2x2(-225.51059f, -339.3561f, -373.302063f, 364.9359f); + bool2x2 r1 = bool2x2(true, true, true, false); + TestUtils.AreEqual(a1 >= b1, r1); + + float2x2 a2 = float2x2(152.946411f, 48.9862061f, 57.3381348f, 300.4649f); + float2x2 b2 = float2x2(-322.7154f, 125.47821f, -25.77658f, 297.518921f); + bool2x2 r2 = bool2x2(true, false, true, true); + TestUtils.AreEqual(a2 >= b2, r2); + + float2x2 a3 = float2x2(349.25708f, 85.7496948f, -230.953308f, 418.711243f); + float2x2 b3 = float2x2(73.22235f, 462.783752f, 393.191345f, -95.0014343f); + bool2x2 r3 = bool2x2(true, false, false, true); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void float2x2_operator_greater_equal_wide_scalar() + { + float2x2 a0 = float2x2(495.4574f, -14.3451233f, -463.4748f, 217.517517f); + float b0 = (189.205139f); + bool2x2 r0 = bool2x2(true, false, false, true); + TestUtils.AreEqual(a0 >= b0, r0); + + float2x2 a1 = float2x2(-246.865723f, 53.8151245f, -123.332947f, -221.505463f); + float b1 = (-377.6587f); + bool2x2 r1 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a1 >= b1, r1); + + float2x2 a2 = float2x2(252.994324f, -395.3633f, 164.772583f, -287.007324f); + float b2 = (-116.440369f); + bool2x2 r2 = bool2x2(true, false, true, false); + TestUtils.AreEqual(a2 >= b2, r2); + + float2x2 a3 = float2x2(355.837036f, 273.012268f, -418.1424f, 249.3841f); + float b3 = (184.195557f); + bool2x2 r3 = bool2x2(true, true, false, true); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void float2x2_operator_greater_equal_scalar_wide() + { + float a0 = (215.435364f); + float2x2 b0 = float2x2(204.802979f, -101.104034f, -122.055023f, -70.45615f); + bool2x2 r0 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a0 >= b0, r0); + + float a1 = (-239.62027f); + float2x2 b1 = float2x2(-185.992737f, -455.612579f, 276.665833f, 79.39917f); + bool2x2 r1 = bool2x2(false, true, false, false); + TestUtils.AreEqual(a1 >= b1, r1); + + float a2 = (416.420532f); + float2x2 b2 = float2x2(379.2735f, -439.5147f, 67.14099f, -74.56064f); + bool2x2 r2 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a2 >= b2, r2); + + float a3 = (-367.256348f); + float2x2 b3 = float2x2(494.950745f, -61.2355347f, -429.170258f, -213.824677f); + bool2x2 r3 = bool2x2(false, false, true, false); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void float2x2_operator_add_wide_wide() + { + float2x2 a0 = float2x2(465.148376f, 278.9107f, -277.5299f, -65.1972046f); + float2x2 b0 = float2x2(483.9944f, -204.07666f, -365.673553f, -509.920868f); + float2x2 r0 = float2x2(949.142761f, 74.8340454f, -643.2035f, -575.118042f); + TestUtils.AreEqual(a0 + b0, r0); + + float2x2 a1 = float2x2(-473.324371f, -4.69555664f, -470.536774f, -109.9501f); + float2x2 b1 = float2x2(-270.6975f, 486.763977f, 267.49176f, 251.642517f); + float2x2 r1 = float2x2(-744.021851f, 482.06842f, -203.045013f, 141.692413f); + TestUtils.AreEqual(a1 + b1, r1); + + float2x2 a2 = float2x2(-178.701447f, -420.033783f, 290.711121f, -446.529633f); + float2x2 b2 = float2x2(244.495117f, -78.67575f, 352.2055f, 82.7791748f); + float2x2 r2 = float2x2(65.79367f, -498.709534f, 642.9166f, -363.750458f); + TestUtils.AreEqual(a2 + b2, r2); + + float2x2 a3 = float2x2(491.066467f, -261.1173f, -298.4069f, 502.4286f); + float2x2 b3 = float2x2(462.5473f, -405.492f, -428.498322f, -41.87259f); + float2x2 r3 = float2x2(953.6138f, -666.6093f, -726.9052f, 460.556f); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void float2x2_operator_add_wide_scalar() + { + float2x2 a0 = float2x2(459.898315f, -447.663361f, -94.43863f, 126.429871f); + float b0 = (500.997253f); + float2x2 r0 = float2x2(960.895569f, 53.3338928f, 406.558624f, 627.4271f); + TestUtils.AreEqual(a0 + b0, r0); + + float2x2 a1 = float2x2(-36.254364f, -2.79125977f, -478.4148f, 443.115234f); + float b1 = (-349.6413f); + float2x2 r1 = float2x2(-385.89566f, -352.432556f, -828.0561f, 93.47394f); + TestUtils.AreEqual(a1 + b1, r1); + + float2x2 a2 = float2x2(268.092224f, -471.256073f, -2.664978f, 78.98584f); + float b2 = (41.3210449f); + float2x2 r2 = float2x2(309.413269f, -429.935028f, 38.6560669f, 120.306885f); + TestUtils.AreEqual(a2 + b2, r2); + + float2x2 a3 = float2x2(202.14801f, 10.3458252f, -151.244446f, 355.2328f); + float b3 = (311.725464f); + float2x2 r3 = float2x2(513.8735f, 322.0713f, 160.481018f, 666.958252f); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void float2x2_operator_add_scalar_wide() + { + float a0 = (-325.512756f); + float2x2 b0 = float2x2(-264.088135f, -106.009247f, -355.4473f, -447.3303f); + float2x2 r0 = float2x2(-589.6009f, -431.522f, -680.9601f, -772.843f); + TestUtils.AreEqual(a0 + b0, r0); + + float a1 = (-158.7002f); + float2x2 b1 = float2x2(-199.4837f, 180.318115f, 337.579346f, -37.0550232f); + float2x2 r1 = float2x2(-358.1839f, 21.61792f, 178.87915f, -195.755219f); + TestUtils.AreEqual(a1 + b1, r1); + + float a2 = (230.805f); + float2x2 b2 = float2x2(-140.174347f, 18.02417f, -138.614349f, 26.9041748f); + float2x2 r2 = float2x2(90.6306458f, 248.829163f, 92.19064f, 257.709167f); + TestUtils.AreEqual(a2 + b2, r2); + + float a3 = (-374.5376f); + float2x2 b3 = float2x2(154.46759f, 268.38385f, -190.963013f, 188.617249f); + float2x2 r3 = float2x2(-220.07f, -106.153748f, -565.5006f, -185.920349f); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void float2x2_operator_sub_wide_wide() + { + float2x2 a0 = float2x2(133.371033f, -131.832123f, -197.293152f, -485.28656f); + float2x2 b0 = float2x2(123.460266f, 359.56012f, -48.2484741f, 478.979065f); + float2x2 r0 = float2x2(9.910767f, -491.392242f, -149.044678f, -964.2656f); + TestUtils.AreEqual(a0 - b0, r0); + + float2x2 a1 = float2x2(-337.550323f, 471.6671f, 146.506592f, -130.585052f); + float2x2 b1 = float2x2(207.158325f, 142.36731f, -125.6055f, -65.29901f); + float2x2 r1 = float2x2(-544.7086f, 329.2998f, 272.1121f, -65.28604f); + TestUtils.AreEqual(a1 - b1, r1); + + float2x2 a2 = float2x2(110.7771f, -235.5416f, 78.87933f, -347.686157f); + float2x2 b2 = float2x2(-477.876434f, 164.5f, 428.009583f, 72.62781f); + float2x2 r2 = float2x2(588.653564f, -400.0416f, -349.130249f, -420.313965f); + TestUtils.AreEqual(a2 - b2, r2); + + float2x2 a3 = float2x2(-470.820557f, -11.45929f, -167.9479f, 330.676758f); + float2x2 b3 = float2x2(-446.8805f, 432.091431f, -225.554657f, -112.451965f); + float2x2 r3 = float2x2(-23.9400635f, -443.55072f, 57.60675f, 443.128723f); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void float2x2_operator_sub_wide_scalar() + { + float2x2 a0 = float2x2(48.9367065f, 410.4516f, -364.4417f, 163.980591f); + float b0 = (-291.5904f); + float2x2 r0 = float2x2(340.5271f, 702.042f, -72.85132f, 455.570984f); + TestUtils.AreEqual(a0 - b0, r0); + + float2x2 a1 = float2x2(-460.067322f, 204.358337f, 180.269714f, -377.9257f); + float b1 = (110.919434f); + float2x2 r1 = float2x2(-570.986755f, 93.4389f, 69.35028f, -488.845123f); + TestUtils.AreEqual(a1 - b1, r1); + + float2x2 a2 = float2x2(-470.262054f, 461.507568f, -246.287262f, 21.6052856f); + float b2 = (400.5349f); + float2x2 r2 = float2x2(-870.797f, 60.9726563f, -646.822144f, -378.929626f); + TestUtils.AreEqual(a2 - b2, r2); + + float2x2 a3 = float2x2(246.350708f, -122.718414f, -122.938721f, 360.15094f); + float b3 = (-121.427368f); + float2x2 r3 = float2x2(367.778076f, -1.29104614f, -1.51135254f, 481.5783f); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void float2x2_operator_sub_scalar_wide() + { + float a0 = (294.5865f); + float2x2 b0 = float2x2(452.352539f, 256.9898f, -275.159882f, -89.02753f); + float2x2 r0 = float2x2(-157.766052f, 37.59668f, 569.746338f, 383.614f); + TestUtils.AreEqual(a0 - b0, r0); + + float a1 = (488.2284f); + float2x2 b1 = float2x2(-333.2173f, -64.233f, -66.04172f, 341.204956f); + float2x2 r1 = float2x2(821.4457f, 552.4614f, 554.270142f, 147.023438f); + TestUtils.AreEqual(a1 - b1, r1); + + float a2 = (-385.775055f); + float2x2 b2 = float2x2(75.3947754f, 354.943726f, 169.131409f, 88.21661f); + float2x2 r2 = float2x2(-461.16983f, -740.71875f, -554.9065f, -473.991669f); + TestUtils.AreEqual(a2 - b2, r2); + + float a3 = (1.73498535f); + float2x2 b3 = float2x2(122.538025f, -264.945f, -50.83719f, -347.65033f); + float2x2 r3 = float2x2(-120.80304f, 266.68f, 52.5721741f, 349.3853f); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void float2x2_operator_mul_wide_wide() + { + float2x2 a0 = float2x2(-394.780548f, -412.3722f, -25.8745728f, -241.045959f); + float2x2 b0 = float2x2(-149.763977f, -345.04538f, -284.334045f, 267.979248f); + float2x2 r0 = float2x2(59123.9063f, 142287.125f, 7357.022f, -64595.3164f); + TestUtils.AreEqual(a0 * b0, r0); + + float2x2 a1 = float2x2(-93.6759949f, 244.159973f, 494.688477f, 53.5379639f); + float2x2 b1 = float2x2(-326.6485f, -150.689667f, 207.732422f, 366.192871f); + float2x2 r1 = float2x2(30599.123f, -36792.3867f, 102762.836f, 19605.22f); + TestUtils.AreEqual(a1 * b1, r1); + + float2x2 a2 = float2x2(-239.4964f, 236.675842f, -211.8562f, -216.654816f); + float2x2 b2 = float2x2(358.880737f, 214.853577f, 253.422791f, -307.7138f); + float2x2 r2 = float2x2(-85950.64f, 50850.6523f, -53689.19f, 66667.68f); + TestUtils.AreEqual(a2 * b2, r2); + + float2x2 a3 = float2x2(467.9583f, -178.021912f, -386.394257f, -422.4354f); + float2x2 b3 = float2x2(184.47113f, 426.436462f, -144.281433f, 459.4796f); + float2x2 r3 = float2x2(86324.8f, -75915.03f, 55749.5156f, -194100.453f); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void float2x2_operator_mul_wide_scalar() + { + float2x2 a0 = float2x2(328.203f, -290.10672f, 236.995728f, 120.481384f); + float b0 = (192.211182f); + float2x2 r0 = float2x2(63084.2852f, -55761.7539f, 45553.23f, 23157.87f); + TestUtils.AreEqual(a0 * b0, r0); + + float2x2 a1 = float2x2(357.903137f, -477.3105f, -438.272919f, -46.729187f); + float b1 = (134.867249f); + float2x2 r1 = float2x2(48269.41f, -64373.55f, -59108.6641f, -6302.237f); + TestUtils.AreEqual(a1 * b1, r1); + + float2x2 a2 = float2x2(-238.405f, -48.83484f, 355.30835f, 119.356628f); + float b2 = (422.08252f); + float2x2 r2 = float2x2(-100626.586f, -20612.332f, 149969.438f, 50378.3477f); + TestUtils.AreEqual(a2 * b2, r2); + + float2x2 a3 = float2x2(-196.995819f, -325.552155f, 53.9373169f, -87.45099f); + float b3 = (98.23602f); + float2x2 r3 = float2x2(-19352.0859f, -31980.95f, 5298.5874f, -8590.837f); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void float2x2_operator_mul_scalar_wide() + { + float a0 = (-464.5347f); + float2x2 b0 = float2x2(329.360962f, -198.683441f, 184.0794f, 256.016174f); + float2x2 r0 = float2x2(-152999.6f, 92295.35f, -85511.27f, -118928.4f); + TestUtils.AreEqual(a0 * b0, r0); + + float a1 = (266.226318f); + float2x2 b1 = float2x2(-97.8947449f, 159.748108f, -351.8222f, 491.801575f); + float2x2 r1 = float2x2(-26062.1582f, 42529.1523f, -93664.33f, 130930.523f); + TestUtils.AreEqual(a1 * b1, r1); + + float a2 = (49.90204f); + float2x2 b2 = float2x2(424.4626f, 160.1181f, -395.9921f, 125.20166f); + float2x2 r2 = float2x2(21181.5488f, 7990.21973f, -19760.8125f, 6247.818f); + TestUtils.AreEqual(a2 * b2, r2); + + float a3 = (-265.0158f); + float2x2 b3 = float2x2(314.656128f, -292.712036f, -37.72989f, 165.362244f); + float2x2 r3 = float2x2(-83388.85f, 77573.32f, 9999.017f, -43823.61f); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void float2x2_operator_div_wide_wide() + { + float2x2 a0 = float2x2(246.265747f, -269.85614f, -451.619537f, -7.388489f); + float2x2 b0 = float2x2(172.119812f, -77.14111f, -325.8354f, -450.608673f); + float2x2 r0 = float2x2(1.43078089f, 3.49821424f, 1.38603592f, 0.0163966864f); + TestUtils.AreEqual(a0 / b0, r0); + + float2x2 a1 = float2x2(-308.205566f, -373.3948f, 360.41864f, 25.8097534f); + float2x2 b1 = float2x2(-261.262146f, -122.449493f, -93.2107849f, -442.005219f); + float2x2 r1 = float2x2(1.17967939f, 3.04937816f, -3.86670542f, -0.0583924167f); + TestUtils.AreEqual(a1 / b1, r1); + + float2x2 a2 = float2x2(-274.050476f, 127.538574f, -447.671753f, -137.458588f); + float2x2 b2 = float2x2(484.362732f, -390.7818f, 402.02533f, 316.6507f); + float2x2 r2 = float2x2(-0.565795958f, -0.326367736f, -1.11354113f, -0.434101641f); + TestUtils.AreEqual(a2 / b2, r2); + + float2x2 a3 = float2x2(-136.133179f, 12.4376221f, 228.513f, 356.972351f); + float2x2 b3 = float2x2(397.154419f, -303.2622f, -118.591248f, -81.6503f); + float2x2 r3 = float2x2(-0.3427714f, -0.0410127677f, -1.926896f, -4.37196636f); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void float2x2_operator_div_wide_scalar() + { + float2x2 a0 = float2x2(-244.517456f, 69.1123047f, -333.023132f, 257.396851f); + float b0 = (-60.0243835f); + float2x2 r0 = float2x2(4.07363558f, -1.15140378f, 5.548131f, -4.28820467f); + TestUtils.AreEqual(a0 / b0, r0); + + float2x2 a1 = float2x2(403.2456f, 131.526611f, -261.8864f, -348.9238f); + float b1 = (154.34436f); + float2x2 r1 = float2x2(2.61263585f, 0.8521634f, -1.696767f, -2.26068377f); + TestUtils.AreEqual(a1 / b1, r1); + + float2x2 a2 = float2x2(-275.5387f, 287.6424f, 504.372253f, 491.7871f); + float b2 = (210.557922f); + float2x2 r2 = float2x2(-1.30861235f, 1.36609626f, 2.39540863f, 2.335638f); + TestUtils.AreEqual(a2 / b2, r2); + + float2x2 a3 = float2x2(-26.6315918f, 272.895142f, 178.096191f, -460.87558f); + float b3 = (-253.236664f); + float2x2 r3 = float2x2(0.105164833f, -1.07762885f, -0.7032797f, 1.81994021f); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void float2x2_operator_div_scalar_wide() + { + float a0 = (41.73767f); + float2x2 b0 = float2x2(-422.676147f, 248.129639f, 449.391357f, 245.858154f); + float2x2 r0 = float2x2(-0.09874622f, 0.168209136f, 0.0928759947f, 0.169763222f); + TestUtils.AreEqual(a0 / b0, r0); + + float a1 = (-326.6206f); + float2x2 b1 = float2x2(163.715088f, 333.6645f, 38.2910767f, -472.979767f); + float2x2 r1 = float2x2(-1.995055f, -0.978889346f, -8.529941f, 0.6905594f); + TestUtils.AreEqual(a1 / b1, r1); + + float a2 = (192.230164f); + float2x2 b2 = float2x2(-200.296875f, -490.181519f, -211.10257f, -322.852356f); + float2x2 r2 = float2x2(-0.9597262f, -0.3921612f, -0.9106008f, -0.595412f); + TestUtils.AreEqual(a2 / b2, r2); + + float a3 = (-137.985291f); + float2x2 b3 = float2x2(84.32971f, 355.063477f, 276.427246f, -382.988037f); + float2x2 r3 = float2x2(-1.63625944f, -0.388621479f, -0.499174f, 0.360286176f); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void float2x2_operator_mod_wide_wide() + { + float2x2 a0 = float2x2(-442.309875f, 368.5005f, -1.09390259f, -364.673828f); + float2x2 b0 = float2x2(-43.2450562f, -144.195862f, -62.6404724f, -336.828247f); + float2x2 r0 = float2x2(-9.859314f, 80.1087646f, -1.09390259f, -27.8455811f); + TestUtils.AreEqual(a0 % b0, r0); + + float2x2 a1 = float2x2(-197.343933f, -34.0349121f, -101.348572f, 208.318542f); + float2x2 b1 = float2x2(-154.61026f, -154.029358f, 487.0462f, -469.8291f); + float2x2 r1 = float2x2(-42.7336731f, -34.0349121f, -101.348572f, 208.318542f); + TestUtils.AreEqual(a1 % b1, r1); + + float2x2 a2 = float2x2(-140.770325f, 183.44696f, -463.368378f, 83.83911f); + float2x2 b2 = float2x2(-145.203766f, -203.384f, -22.52008f, 224.69f); + float2x2 r2 = float2x2(-140.770325f, 183.44696f, -12.9667664f, 83.83911f); + TestUtils.AreEqual(a2 % b2, r2); + + float2x2 a3 = float2x2(-64.71405f, 295.066833f, 212.25708f, 349.6283f); + float2x2 b3 = float2x2(-435.62674f, 12.0955811f, 40.3787842f, 345.784851f); + float2x2 r3 = float2x2(-64.71405f, 4.772888f, 10.3631592f, 3.84344482f); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void float2x2_operator_mod_wide_scalar() + { + float2x2 a0 = float2x2(-433.417f, -5.51412964f, 393.3944f, 299.41156f); + float b0 = (-90.49924f); + float2x2 r0 = float2x2(-71.4200439f, -5.51412964f, 31.39746f, 27.9138489f); + TestUtils.AreEqual(a0 % b0, r0); + + float2x2 a1 = float2x2(-120.80603f, -450.807678f, 186.094788f, -84.47363f); + float b1 = (-502.939026f); + float2x2 r1 = float2x2(-120.80603f, -450.807678f, 186.094788f, -84.47363f); + TestUtils.AreEqual(a1 % b1, r1); + + float2x2 a2 = float2x2(-318.7815f, -54.60019f, -172.338867f, -429.714661f); + float b2 = (433.4547f); + float2x2 r2 = float2x2(-318.7815f, -54.60019f, -172.338867f, -429.714661f); + TestUtils.AreEqual(a2 % b2, r2); + + float2x2 a3 = float2x2(222.361877f, 254.5108f, -433.0937f, -203.082611f); + float b3 = (5.79638672f); + float2x2 r3 = float2x2(2.09918213f, 5.26617432f, -4.161072f, -0.209075928f); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void float2x2_operator_mod_scalar_wide() + { + float a0 = (-396.4224f); + float2x2 b0 = float2x2(-159.140259f, 230.17334f, 14.7793579f, -303.1565f); + float2x2 r0 = float2x2(-78.14188f, -166.249054f, -12.1590881f, -93.2659f); + TestUtils.AreEqual(a0 % b0, r0); + + float a1 = (399.635f); + float2x2 b1 = float2x2(206.6947f, 397.0448f, -393.890656f, -372.067078f); + float2x2 r1 = float2x2(192.9403f, 2.59021f, 5.74435425f, 27.5679321f); + TestUtils.AreEqual(a1 % b1, r1); + + float a2 = (201.012268f); + float2x2 b2 = float2x2(-95.566864f, -258.951477f, 106.983582f, 469.323547f); + float2x2 r2 = float2x2(9.87854f, 201.012268f, 94.02869f, 201.012268f); + TestUtils.AreEqual(a2 % b2, r2); + + float a3 = (-34.80899f); + float2x2 b3 = float2x2(184.836548f, 374.79425f, -131.872711f, -120.092865f); + float2x2 r3 = float2x2(-34.80899f, -34.80899f, -34.80899f, -34.80899f); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void float2x2_operator_plus() + { + float2x2 a0 = float2x2(271.670837f, -79.08023f, -330.985046f, 31.824707f); + float2x2 r0 = float2x2(271.670837f, -79.08023f, -330.985046f, 31.824707f); + TestUtils.AreEqual(+a0, r0); + + float2x2 a1 = float2x2(315.449524f, 190.324646f, -350.3086f, -320.518463f); + float2x2 r1 = float2x2(315.449524f, 190.324646f, -350.3086f, -320.518463f); + TestUtils.AreEqual(+a1, r1); + + float2x2 a2 = float2x2(102.054382f, -428.7762f, 377.230164f, 234.773926f); + float2x2 r2 = float2x2(102.054382f, -428.7762f, 377.230164f, 234.773926f); + TestUtils.AreEqual(+a2, r2); + + float2x2 a3 = float2x2(34.28363f, 465.355957f, 309.59314f, -316.937134f); + float2x2 r3 = float2x2(34.28363f, 465.355957f, 309.59314f, -316.937134f); + TestUtils.AreEqual(+a3, r3); + } + + [TestCompiler] + public static void float2x2_operator_neg() + { + float2x2 a0 = float2x2(420.227173f, -196.2575f, -335.426819f, 509.04364f); + float2x2 r0 = float2x2(-420.227173f, 196.2575f, 335.426819f, -509.04364f); + TestUtils.AreEqual(-a0, r0); + + float2x2 a1 = float2x2(-33.0144043f, -495.837952f, -270.859467f, 19.68689f); + float2x2 r1 = float2x2(33.0144043f, 495.837952f, 270.859467f, -19.68689f); + TestUtils.AreEqual(-a1, r1); + + float2x2 a2 = float2x2(268.2367f, 223.381287f, -410.392059f, -395.681549f); + float2x2 r2 = float2x2(-268.2367f, -223.381287f, 410.392059f, 395.681549f); + TestUtils.AreEqual(-a2, r2); + + float2x2 a3 = float2x2(-349.149475f, -238.2196f, 292.543518f, 469.2926f); + float2x2 r3 = float2x2(349.149475f, 238.2196f, -292.543518f, -469.2926f); + TestUtils.AreEqual(-a3, r3); + } + + [TestCompiler] + public static void float2x2_operator_prefix_inc() + { + float2x2 a0 = float2x2(-99.79556f, 458.741821f, 96.1790161f, -48.55246f); + float2x2 r0 = float2x2(-98.79556f, 459.741821f, 97.1790161f, -47.55246f); + TestUtils.AreEqual(++a0, r0); + + float2x2 a1 = float2x2(-315.728973f, -323.614868f, -456.8903f, -76.50766f); + float2x2 r1 = float2x2(-314.728973f, -322.614868f, -455.8903f, -75.50766f); + TestUtils.AreEqual(++a1, r1); + + float2x2 a2 = float2x2(-305.584778f, 148.679321f, 363.2849f, -115.559235f); + float2x2 r2 = float2x2(-304.584778f, 149.679321f, 364.2849f, -114.559235f); + TestUtils.AreEqual(++a2, r2); + + float2x2 a3 = float2x2(-326.8778f, 339.8766f, -38.41043f, -153.373688f); + float2x2 r3 = float2x2(-325.8778f, 340.8766f, -37.41043f, -152.373688f); + TestUtils.AreEqual(++a3, r3); + } + + [TestCompiler] + public static void float2x2_operator_postfix_inc() + { + float2x2 a0 = float2x2(322.943542f, 472.0525f, 203.48761f, -49.8545837f); + float2x2 r0 = float2x2(322.943542f, 472.0525f, 203.48761f, -49.8545837f); + TestUtils.AreEqual(a0++, r0); + + float2x2 a1 = float2x2(-31.4205322f, 271.454651f, 55.7368774f, 153.7503f); + float2x2 r1 = float2x2(-31.4205322f, 271.454651f, 55.7368774f, 153.7503f); + TestUtils.AreEqual(a1++, r1); + + float2x2 a2 = float2x2(-174.173f, 215.110229f, 159.861023f, -333.050446f); + float2x2 r2 = float2x2(-174.173f, 215.110229f, 159.861023f, -333.050446f); + TestUtils.AreEqual(a2++, r2); + + float2x2 a3 = float2x2(241.4649f, -170.104645f, -270.652466f, -162.86026f); + float2x2 r3 = float2x2(241.4649f, -170.104645f, -270.652466f, -162.86026f); + TestUtils.AreEqual(a3++, r3); + } + + [TestCompiler] + public static void float2x2_operator_prefix_dec() + { + float2x2 a0 = float2x2(-416.201233f, -96.63788f, -50.14566f, -207.316437f); + float2x2 r0 = float2x2(-417.201233f, -97.63788f, -51.14566f, -208.316437f); + TestUtils.AreEqual(--a0, r0); + + float2x2 a1 = float2x2(439.479065f, 337.968933f, 246.088989f, 171.964539f); + float2x2 r1 = float2x2(438.479065f, 336.968933f, 245.088989f, 170.964539f); + TestUtils.AreEqual(--a1, r1); + + float2x2 a2 = float2x2(-227.44281f, 326.5078f, 400.7209f, -478.031372f); + float2x2 r2 = float2x2(-228.44281f, 325.5078f, 399.7209f, -479.031372f); + TestUtils.AreEqual(--a2, r2); + + float2x2 a3 = float2x2(-326.452972f, 112.796875f, -341.9763f, -503.27417f); + float2x2 r3 = float2x2(-327.452972f, 111.796875f, -342.9763f, -504.27417f); + TestUtils.AreEqual(--a3, r3); + } + + [TestCompiler] + public static void float2x2_operator_postfix_dec() + { + float2x2 a0 = float2x2(-376.5924f, 16.9697266f, -0.2506714f, -202.323273f); + float2x2 r0 = float2x2(-376.5924f, 16.9697266f, -0.2506714f, -202.323273f); + TestUtils.AreEqual(a0--, r0); + + float2x2 a1 = float2x2(409.557556f, -281.1117f, -262.0626f, -182.405731f); + float2x2 r1 = float2x2(409.557556f, -281.1117f, -262.0626f, -182.405731f); + TestUtils.AreEqual(a1--, r1); + + float2x2 a2 = float2x2(450.1281f, -332.154968f, -261.0089f, 205.461121f); + float2x2 r2 = float2x2(450.1281f, -332.154968f, -261.0089f, 205.461121f); + TestUtils.AreEqual(a2--, r2); + + float2x2 a3 = float2x2(-230.227783f, 378.641235f, 487.344849f, -192.177856f); + float2x2 r3 = float2x2(-230.227783f, 378.641235f, 487.344849f, -192.177856f); + TestUtils.AreEqual(a3--, r3); + } + + + } +} diff --git a/package/Tests/Tests/Shared/TestFloat2x2.gen.cs.meta b/package/Tests/Tests/Shared/TestFloat2x2.gen.cs.meta new file mode 100755 index 000000000..ca8cdeb8c --- /dev/null +++ b/package/Tests/Tests/Shared/TestFloat2x2.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 052651d6ebd1a8146ad211a6838dad17 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/package/Tests/Tests/Shared/TestFloat2x3.gen.cs b/package/Tests/Tests/Shared/TestFloat2x3.gen.cs new file mode 100755 index 000000000..dee01f197 --- /dev/null +++ b/package/Tests/Tests/Shared/TestFloat2x3.gen.cs @@ -0,0 +1,943 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using NUnit.Framework; +using static Unity.Mathematics.math; +using Burst.Compiler.IL.Tests; + +namespace Unity.Mathematics.Tests +{ + [TestFixture] + public class TestFloat2x3 + { + [TestCompiler] + public static void float2x3_zero() + { + TestUtils.AreEqual(float2x3.zero.c0.x, 0.0f); + TestUtils.AreEqual(float2x3.zero.c0.y, 0.0f); + TestUtils.AreEqual(float2x3.zero.c1.x, 0.0f); + TestUtils.AreEqual(float2x3.zero.c1.y, 0.0f); + TestUtils.AreEqual(float2x3.zero.c2.x, 0.0f); + TestUtils.AreEqual(float2x3.zero.c2.y, 0.0f); + } + + [TestCompiler] + public static void float2x3_operator_equal_wide_wide() + { + float2x3 a0 = float2x3(-135.18924f, -49.0941162f, 169.129822f, 240.8053f, 314.7392f, 442.393f); + float2x3 b0 = float2x3(-220.014648f, 66.98004f, 499.2016f, -371.1131f, 208.448669f, 390.8037f); + bool2x3 r0 = bool2x3(false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + float2x3 a1 = float2x3(177.924438f, 335.5334f, 168.15448f, 350.729553f, 367.178467f, 46.9414673f); + float2x3 b1 = float2x3(-72.44382f, 362.97644f, 194.678345f, 471.644836f, -404.044678f, -144.696747f); + bool2x3 r1 = bool2x3(false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + float2x3 a2 = float2x3(188.76416f, -97.2113953f, -293.320984f, -234.822937f, 417.0337f, 26.3864136f); + float2x3 b2 = float2x3(-494.446655f, -252.970367f, 234.417114f, 398.724f, 260.4287f, 370.144226f); + bool2x3 r2 = bool2x3(false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + float2x3 a3 = float2x3(269.245728f, 29.4741821f, 479.485229f, -237.230957f, -221.9837f, -506.672546f); + float2x3 b3 = float2x3(89.579834f, -434.816833f, -109.845337f, 336.973022f, -409.154968f, 500.387573f); + bool2x3 r3 = bool2x3(false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void float2x3_operator_equal_wide_scalar() + { + float2x3 a0 = float2x3(65.6712f, 404.415527f, -269.730164f, 83.6306152f, 152.9945f, -155.868286f); + float b0 = (-155.815765f); + bool2x3 r0 = bool2x3(false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + float2x3 a1 = float2x3(314.671265f, 290.04895f, -132.6352f, -65.66748f, -69.68326f, -191.190765f); + float b1 = (386.365173f); + bool2x3 r1 = bool2x3(false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + float2x3 a2 = float2x3(186.845215f, -319.144043f, -49.70108f, -300.8819f, 333.396851f, 386.3775f); + float b2 = (-232.895691f); + bool2x3 r2 = bool2x3(false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + float2x3 a3 = float2x3(-296.7019f, 141.542358f, -227.323334f, 83.87286f, -410.91687f, 110.501282f); + float b3 = (-309.1172f); + bool2x3 r3 = bool2x3(false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void float2x3_operator_equal_scalar_wide() + { + float a0 = (36.38391f); + float2x3 b0 = float2x3(-400.4892f, -71.2868347f, 156.978088f, -225.238739f, 499.141785f, -211.979919f); + bool2x3 r0 = bool2x3(false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + float a1 = (428.311951f); + float2x3 b1 = float2x3(-489.501343f, -5.691559f, -30.8659363f, -362.9831f, 184.503174f, -160.470612f); + bool2x3 r1 = bool2x3(false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + float a2 = (316.668823f); + float2x3 b2 = float2x3(390.369263f, 505.1051f, -294.6487f, 443.1991f, 96.5592651f, -257.012939f); + bool2x3 r2 = bool2x3(false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + float a3 = (-245.054962f); + float2x3 b3 = float2x3(326.464844f, -23.9599f, -168.694885f, 386.2486f, -227.090637f, -336.612427f); + bool2x3 r3 = bool2x3(false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void float2x3_operator_not_equal_wide_wide() + { + float2x3 a0 = float2x3(279.994141f, -43.34201f, -465.724731f, 317.466553f, 85.7149658f, 360.8905f); + float2x3 b0 = float2x3(-460.9121f, -476.009033f, 468.1364f, -341.012543f, -62.65805f, -458.801666f); + bool2x3 r0 = bool2x3(true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + float2x3 a1 = float2x3(366.081543f, 154.542847f, 332.4262f, 397.11322f, -431.374969f, 489.0108f); + float2x3 b1 = float2x3(-457.730225f, -59.5232544f, 3.024231f, 155.812744f, -19.8399048f, -6.01693726f); + bool2x3 r1 = bool2x3(true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + float2x3 a2 = float2x3(398.4336f, -489.817932f, 171.4049f, -67.82968f, -192.278717f, 227.84082f); + float2x3 b2 = float2x3(-406.207916f, -102.420715f, -40.362915f, 452.6754f, 93.25757f, -258.378052f); + bool2x3 r2 = bool2x3(true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + float2x3 a3 = float2x3(62.1381836f, 262.186462f, -404.0531f, 34.449585f, -204.795776f, -285.4118f); + float2x3 b3 = float2x3(-184.0498f, -379.2353f, -370.687317f, -255.947235f, 29.0557861f, 322.407654f); + bool2x3 r3 = bool2x3(true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void float2x3_operator_not_equal_wide_scalar() + { + float2x3 a0 = float2x3(-155.4411f, -19.4266052f, 174.633057f, 507.920715f, 59.177063f, 171.151489f); + float b0 = (-393.413544f); + bool2x3 r0 = bool2x3(true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + float2x3 a1 = float2x3(-58.92328f, 492.20105f, -165.241516f, 270.341f, -380.243256f, 501.899048f); + float b1 = (-398.176849f); + bool2x3 r1 = bool2x3(true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + float2x3 a2 = float2x3(-134.345459f, 46.7709961f, 161.459961f, 261.514221f, -145.6124f, -0.449920654f); + float b2 = (458.400452f); + bool2x3 r2 = bool2x3(true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + float2x3 a3 = float2x3(350.461426f, 242.664f, 382.677063f, -468.967957f, -497.459473f, -80.93225f); + float b3 = (202.221008f); + bool2x3 r3 = bool2x3(true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void float2x3_operator_not_equal_scalar_wide() + { + float a0 = (478.353149f); + float2x3 b0 = float2x3(459.553223f, 436.453247f, -488.714172f, 392.767944f, -266.736633f, 338.557861f); + bool2x3 r0 = bool2x3(true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + float a1 = (-338.100128f); + float2x3 b1 = float2x3(-152.314545f, -452.820679f, 209.439331f, 50.10797f, 372.4344f, -488.0213f); + bool2x3 r1 = bool2x3(true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + float a2 = (489.740784f); + float2x3 b2 = float2x3(270.4001f, -472.846771f, -286.850464f, -384.691864f, 443.423523f, 358.7472f); + bool2x3 r2 = bool2x3(true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + float a3 = (-15.4140625f); + float2x3 b3 = float2x3(-342.179169f, 468.967529f, -130.568085f, 401.785828f, -268.352264f, -239.231018f); + bool2x3 r3 = bool2x3(true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void float2x3_operator_less_wide_wide() + { + float2x3 a0 = float2x3(51.7102661f, -313.85556f, 283.047668f, 235.021912f, 44.07837f, -207.255676f); + float2x3 b0 = float2x3(-261.835236f, -19.81073f, -149.25882f, 205.99823f, -306.024384f, 102.121704f); + bool2x3 r0 = bool2x3(false, true, false, false, false, true); + TestUtils.AreEqual(a0 < b0, r0); + + float2x3 a1 = float2x3(3.38293457f, -144.301331f, -69.3696f, -135.667969f, -194.787354f, -33.473877f); + float2x3 b1 = float2x3(231.906311f, 179.49884f, 473.2249f, 15.8916626f, 270.049927f, 490.914f); + bool2x3 r1 = bool2x3(true, true, true, true, true, true); + TestUtils.AreEqual(a1 < b1, r1); + + float2x3 a2 = float2x3(-19.67508f, 423.237976f, -71.6983f, -501.886f, 7.64386f, 302.262878f); + float2x3 b2 = float2x3(-185.734131f, 76.4331055f, 97.75232f, 419.300781f, 73.953186f, 481.032349f); + bool2x3 r2 = bool2x3(false, false, true, true, true, true); + TestUtils.AreEqual(a2 < b2, r2); + + float2x3 a3 = float2x3(-140.5505f, -436.5867f, -351.4417f, 364.970825f, 301.8941f, 407.550964f); + float2x3 b3 = float2x3(7.00744629f, -7.32409668f, -413.075745f, -154.1189f, 449.202881f, 502.014282f); + bool2x3 r3 = bool2x3(true, true, false, false, true, true); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void float2x3_operator_less_wide_scalar() + { + float2x3 a0 = float2x3(-221.869781f, -121.546478f, -97.5239258f, 479.8811f, 67.11902f, 137.3288f); + float b0 = (199.0675f); + bool2x3 r0 = bool2x3(true, true, true, false, true, true); + TestUtils.AreEqual(a0 < b0, r0); + + float2x3 a1 = float2x3(282.9666f, -111.413147f, -288.081116f, 82.6654053f, -361.6429f, -68.0881958f); + float b1 = (258.2791f); + bool2x3 r1 = bool2x3(false, true, true, true, true, true); + TestUtils.AreEqual(a1 < b1, r1); + + float2x3 a2 = float2x3(12.7880249f, -78.76297f, 25.7277222f, 101.37085f, -330.442657f, -48.9205322f); + float b2 = (-66.703064f); + bool2x3 r2 = bool2x3(false, true, false, false, true, false); + TestUtils.AreEqual(a2 < b2, r2); + + float2x3 a3 = float2x3(359.604431f, 241.2768f, -183.437775f, 423.027161f, -334.622742f, -98.31558f); + float b3 = (-8.150085f); + bool2x3 r3 = bool2x3(false, false, true, false, true, true); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void float2x3_operator_less_scalar_wide() + { + float a0 = (-250.484924f); + float2x3 b0 = float2x3(-377.196533f, -505.147552f, 375.9267f, 110.17395f, -118.097565f, -40.4508972f); + bool2x3 r0 = bool2x3(false, false, true, true, true, true); + TestUtils.AreEqual(a0 < b0, r0); + + float a1 = (-299.744324f); + float2x3 b1 = float2x3(31.4371338f, -458.904541f, 13.6846924f, -458.5069f, 248.276489f, 389.231445f); + bool2x3 r1 = bool2x3(true, false, true, false, true, true); + TestUtils.AreEqual(a1 < b1, r1); + + float a2 = (488.745544f); + float2x3 b2 = float2x3(-221.637878f, -424.2672f, 249.059021f, -22.1361389f, -442.247742f, -340.857544f); + bool2x3 r2 = bool2x3(false, false, false, false, false, false); + TestUtils.AreEqual(a2 < b2, r2); + + float a3 = (-95.1117249f); + float2x3 b3 = float2x3(15.4094238f, 87.29248f, 495.067627f, 316.0185f, -125.568115f, 122.164795f); + bool2x3 r3 = bool2x3(true, true, true, true, false, true); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void float2x3_operator_greater_wide_wide() + { + float2x3 a0 = float2x3(-229.29068f, 505.536621f, -73.80707f, 100.292053f, -419.214783f, -159.559753f); + float2x3 b0 = float2x3(-445.845032f, -420.035278f, 299.0244f, -13.8809814f, 151.5617f, -163.50943f); + bool2x3 r0 = bool2x3(true, true, false, true, false, true); + TestUtils.AreEqual(a0 > b0, r0); + + float2x3 a1 = float2x3(-396.770355f, 127.037415f, 489.1399f, 51.9188843f, 155.384766f, -135.631653f); + float2x3 b1 = float2x3(-391.096039f, 479.283752f, -77.6748657f, -46.584198f, -415.377f, 71.46698f); + bool2x3 r1 = bool2x3(false, false, true, true, true, false); + TestUtils.AreEqual(a1 > b1, r1); + + float2x3 a2 = float2x3(-425.978149f, -228.430511f, 383.03833f, 136.533569f, 8.602417f, -251.324371f); + float2x3 b2 = float2x3(-206.061035f, 360.8363f, 236.968811f, 14.550354f, 364.735168f, -159.06131f); + bool2x3 r2 = bool2x3(false, false, true, true, false, false); + TestUtils.AreEqual(a2 > b2, r2); + + float2x3 a3 = float2x3(-345.954926f, -170.565918f, -293.2544f, 139.125f, 214.3031f, 238.7699f); + float2x3 b3 = float2x3(226.631165f, 182.796021f, 341.839355f, -79.13046f, -247.296814f, 164.589111f); + bool2x3 r3 = bool2x3(false, false, false, true, true, true); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void float2x3_operator_greater_wide_scalar() + { + float2x3 a0 = float2x3(11.156311f, -411.023224f, 385.885559f, -485.103058f, -491.180023f, 405.175354f); + float b0 = (-302.816956f); + bool2x3 r0 = bool2x3(true, false, true, false, false, true); + TestUtils.AreEqual(a0 > b0, r0); + + float2x3 a1 = float2x3(173.575073f, 501.306824f, -367.027771f, -86.12451f, -489.090576f, -172.518158f); + float b1 = (69.26929f); + bool2x3 r1 = bool2x3(true, true, false, false, false, false); + TestUtils.AreEqual(a1 > b1, r1); + + float2x3 a2 = float2x3(-18.1496277f, -238.8945f, -27.2391357f, 471.779358f, 240.164551f, -481.4781f); + float b2 = (-236.414948f); + bool2x3 r2 = bool2x3(true, false, true, true, true, false); + TestUtils.AreEqual(a2 > b2, r2); + + float2x3 a3 = float2x3(185.59436f, -510.228149f, -183.2862f, -386.127655f, -13.6382141f, -7.34790039f); + float b3 = (33.29474f); + bool2x3 r3 = bool2x3(true, false, false, false, false, false); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void float2x3_operator_greater_scalar_wide() + { + float a0 = (453.546082f); + float2x3 b0 = float2x3(-226.2044f, -423.465f, 409.405518f, 453.877075f, 87.47571f, 113.795593f); + bool2x3 r0 = bool2x3(true, true, true, false, true, true); + TestUtils.AreEqual(a0 > b0, r0); + + float a1 = (176.409241f); + float2x3 b1 = float2x3(-140.440033f, -182.48288f, -158.2933f, -162.685333f, -193.328674f, 230.181274f); + bool2x3 r1 = bool2x3(true, true, true, true, true, false); + TestUtils.AreEqual(a1 > b1, r1); + + float a2 = (-102.58783f); + float2x3 b2 = float2x3(392.520569f, -177.478668f, -10.2950134f, -24.04895f, 172.448669f, 374.048035f); + bool2x3 r2 = bool2x3(false, true, false, false, false, false); + TestUtils.AreEqual(a2 > b2, r2); + + float a3 = (-368.99762f); + float2x3 b3 = float2x3(-210.195282f, 149.470215f, -281.343262f, -100.469177f, 304.864441f, -361.524841f); + bool2x3 r3 = bool2x3(false, false, false, false, false, false); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void float2x3_operator_less_equal_wide_wide() + { + float2x3 a0 = float2x3(240.090515f, 462.213135f, 293.08252f, -427.870667f, -405.5227f, 204.591919f); + float2x3 b0 = float2x3(-81.20383f, 493.637451f, -411.4721f, 99.16443f, -295.6677f, -480.462555f); + bool2x3 r0 = bool2x3(false, true, false, true, true, false); + TestUtils.AreEqual(a0 <= b0, r0); + + float2x3 a1 = float2x3(294.6701f, -327.564453f, -456.12326f, 282.30127f, 421.881165f, -311.71283f); + float2x3 b1 = float2x3(74.41406f, 260.916138f, 306.173279f, 139.564819f, -505.752472f, -489.6268f); + bool2x3 r1 = bool2x3(false, true, true, false, false, false); + TestUtils.AreEqual(a1 <= b1, r1); + + float2x3 a2 = float2x3(84.5675049f, 447.244629f, -154.494354f, -424.364746f, 36.68451f, 267.0703f); + float2x3 b2 = float2x3(-280.0326f, 303.1599f, 511.1902f, -104.659729f, 95.14661f, -125.636353f); + bool2x3 r2 = bool2x3(false, false, true, true, true, false); + TestUtils.AreEqual(a2 <= b2, r2); + + float2x3 a3 = float2x3(307.893921f, -351.760132f, -157.360352f, 152.709045f, 372.267151f, 202.368286f); + float2x3 b3 = float2x3(376.2398f, -415.774719f, -47.48105f, 117.722107f, 469.378357f, -263.042358f); + bool2x3 r3 = bool2x3(true, false, true, false, true, false); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void float2x3_operator_less_equal_wide_scalar() + { + float2x3 a0 = float2x3(309.192444f, 69.67377f, -101.724182f, -315.9724f, -346.011047f, 424.15387f); + float b0 = (292.924255f); + bool2x3 r0 = bool2x3(false, true, true, true, true, false); + TestUtils.AreEqual(a0 <= b0, r0); + + float2x3 a1 = float2x3(-410.870056f, 183.821167f, 320.4425f, -257.870056f, -386.801758f, -182.938812f); + float b1 = (-483.902649f); + bool2x3 r1 = bool2x3(false, false, false, false, false, false); + TestUtils.AreEqual(a1 <= b1, r1); + + float2x3 a2 = float2x3(349.250122f, 373.5691f, 259.1515f, 450.130066f, -128.525543f, -43.8748779f); + float b2 = (485.311584f); + bool2x3 r2 = bool2x3(true, true, true, true, true, true); + TestUtils.AreEqual(a2 <= b2, r2); + + float2x3 a3 = float2x3(457.385742f, 479.451843f, -499.516449f, -398.132935f, 402.484863f, 87.91608f); + float b3 = (-77.6383057f); + bool2x3 r3 = bool2x3(false, false, true, true, false, false); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void float2x3_operator_less_equal_scalar_wide() + { + float a0 = (-511.152374f); + float2x3 b0 = float2x3(51.1589966f, 340.443665f, 312.81427f, 354.1925f, 136.396729f, -94.76788f); + bool2x3 r0 = bool2x3(true, true, true, true, true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + float a1 = (288.5443f); + float2x3 b1 = float2x3(304.042847f, -148.618073f, -506.3001f, 27.5812378f, 48.47113f, 104.883484f); + bool2x3 r1 = bool2x3(true, false, false, false, false, false); + TestUtils.AreEqual(a1 <= b1, r1); + + float a2 = (-488.685852f); + float2x3 b2 = float2x3(-480.435181f, 421.936646f, 239.721069f, -101.018433f, -283.951477f, -55.24353f); + bool2x3 r2 = bool2x3(true, true, true, true, true, true); + TestUtils.AreEqual(a2 <= b2, r2); + + float a3 = (-455.80484f); + float2x3 b3 = float2x3(131.107239f, -461.6988f, -388.482849f, -258.936035f, -225.223541f, -116.019989f); + bool2x3 r3 = bool2x3(true, false, true, true, true, true); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void float2x3_operator_greater_equal_wide_wide() + { + float2x3 a0 = float2x3(-386.5918f, -157.120789f, 391.015259f, -511.886871f, -5.42202759f, 287.645264f); + float2x3 b0 = float2x3(153.443f, 49.8924561f, 78.02582f, 138.813721f, -225.51059f, -339.3561f); + bool2x3 r0 = bool2x3(false, false, true, false, true, true); + TestUtils.AreEqual(a0 >= b0, r0); + + float2x3 a1 = float2x3(-122.535187f, 7.48144531f, 152.946411f, 48.9862061f, 57.3381348f, 300.4649f); + float2x3 b1 = float2x3(-373.302063f, 364.9359f, -322.7154f, 125.47821f, -25.77658f, 297.518921f); + bool2x3 r1 = bool2x3(true, false, true, false, true, true); + TestUtils.AreEqual(a1 >= b1, r1); + + float2x3 a2 = float2x3(349.25708f, 85.7496948f, -230.953308f, 418.711243f, -131.039917f, -126.512207f); + float2x3 b2 = float2x3(73.22235f, 462.783752f, 393.191345f, -95.0014343f, 381.357056f, 93.03192f); + bool2x3 r2 = bool2x3(true, false, false, true, false, false); + TestUtils.AreEqual(a2 >= b2, r2); + + float2x3 a3 = float2x3(-156.818481f, 422.3775f, -413.089325f, 219.442749f, 35.5911255f, 447.181519f); + float2x3 b3 = float2x3(254.253235f, 90.67279f, 348.938171f, 161.337646f, 79.43561f, 420.243469f); + bool2x3 r3 = bool2x3(false, true, false, true, false, true); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void float2x3_operator_greater_equal_wide_scalar() + { + float2x3 a0 = float2x3(495.4574f, -14.3451233f, -463.4748f, 217.517517f, -246.865723f, -377.6587f); + float b0 = (189.205139f); + bool2x3 r0 = bool2x3(true, false, false, true, false, false); + TestUtils.AreEqual(a0 >= b0, r0); + + float2x3 a1 = float2x3(53.8151245f, -221.505463f, 252.994324f, -116.440369f, -395.3633f, 164.772583f); + float b1 = (-123.332947f); + bool2x3 r1 = bool2x3(true, false, true, true, false, true); + TestUtils.AreEqual(a1 >= b1, r1); + + float2x3 a2 = float2x3(-287.007324f, 184.195557f, 273.012268f, -418.1424f, 249.3841f, 396.392151f); + float b2 = (355.837036f); + bool2x3 r2 = bool2x3(false, false, false, false, false, true); + TestUtils.AreEqual(a2 >= b2, r2); + + float2x3 a3 = float2x3(332.6654f, -335.12146f, -302.0869f, 254.442261f, 179.005066f, 71.1767f); + float b3 = (243.761414f); + bool2x3 r3 = bool2x3(true, false, false, true, false, false); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void float2x3_operator_greater_equal_scalar_wide() + { + float a0 = (215.435364f); + float2x3 b0 = float2x3(204.802979f, -101.104034f, -122.055023f, -70.45615f, -239.62027f, -185.992737f); + bool2x3 r0 = bool2x3(true, true, true, true, true, true); + TestUtils.AreEqual(a0 >= b0, r0); + + float a1 = (-455.612579f); + float2x3 b1 = float2x3(276.665833f, 79.39917f, 416.420532f, 379.2735f, -439.5147f, 67.14099f); + bool2x3 r1 = bool2x3(false, false, false, false, false, false); + TestUtils.AreEqual(a1 >= b1, r1); + + float a2 = (-74.56064f); + float2x3 b2 = float2x3(-367.256348f, 494.950745f, -61.2355347f, -429.170258f, -213.824677f, -264.310181f); + bool2x3 r2 = bool2x3(true, false, false, true, true, true); + TestUtils.AreEqual(a2 >= b2, r2); + + float a3 = (243.11377f); + float2x3 b3 = float2x3(-22.38388f, 304.862f, -323.686157f, 67.93805f, 125.303589f, -400.47052f); + bool2x3 r3 = bool2x3(true, false, true, true, true, true); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void float2x3_operator_add_wide_wide() + { + float2x3 a0 = float2x3(465.148376f, 278.9107f, -277.5299f, -65.1972046f, -473.324371f, -4.69555664f); + float2x3 b0 = float2x3(483.9944f, -204.07666f, -365.673553f, -509.920868f, -270.6975f, 486.763977f); + float2x3 r0 = float2x3(949.142761f, 74.8340454f, -643.2035f, -575.118042f, -744.021851f, 482.06842f); + TestUtils.AreEqual(a0 + b0, r0); + + float2x3 a1 = float2x3(-470.536774f, -109.9501f, -178.701447f, -420.033783f, 290.711121f, -446.529633f); + float2x3 b1 = float2x3(267.49176f, 251.642517f, 244.495117f, -78.67575f, 352.2055f, 82.7791748f); + float2x3 r1 = float2x3(-203.045013f, 141.692413f, 65.79367f, -498.709534f, 642.9166f, -363.750458f); + TestUtils.AreEqual(a1 + b1, r1); + + float2x3 a2 = float2x3(491.066467f, -261.1173f, -298.4069f, 502.4286f, 284.5943f, 401.128418f); + float2x3 b2 = float2x3(462.5473f, -405.492f, -428.498322f, -41.87259f, -269.9275f, 75.20447f); + float2x3 r2 = float2x3(953.6138f, -666.6093f, -726.9052f, 460.556f, 14.6668091f, 476.3329f); + TestUtils.AreEqual(a2 + b2, r2); + + float2x3 a3 = float2x3(-36.26349f, -102.949158f, 503.198181f, -384.4291f, -45.22821f, -198.67395f); + float2x3 b3 = float2x3(-141.913391f, -222.186768f, 41.3057251f, 148.339478f, -177.233124f, -176.51889f); + float2x3 r3 = float2x3(-178.17688f, -325.135925f, 544.5039f, -236.08963f, -222.461334f, -375.192841f); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void float2x3_operator_add_wide_scalar() + { + float2x3 a0 = float2x3(459.898315f, -447.663361f, -94.43863f, 126.429871f, -36.254364f, -349.6413f); + float b0 = (500.997253f); + float2x3 r0 = float2x3(960.895569f, 53.3338928f, 406.558624f, 627.4271f, 464.7429f, 151.355957f); + TestUtils.AreEqual(a0 + b0, r0); + + float2x3 a1 = float2x3(-2.79125977f, 443.115234f, 268.092224f, 41.3210449f, -471.256073f, -2.664978f); + float b1 = (-478.4148f); + float2x3 r1 = float2x3(-481.206055f, -35.29956f, -210.322571f, -437.09375f, -949.6709f, -481.079773f); + TestUtils.AreEqual(a1 + b1, r1); + + float2x3 a2 = float2x3(78.98584f, 311.725464f, 10.3458252f, -151.244446f, 355.2328f, -197.800751f); + float b2 = (202.14801f); + float2x3 r2 = float2x3(281.13385f, 513.8735f, 212.493835f, 50.9035645f, 557.3808f, 4.34725952f); + TestUtils.AreEqual(a2 + b2, r2); + + float2x3 a3 = float2x3(255.955261f, -181.626556f, -2.45492554f, 300.900635f, -236.491943f, -160.5841f); + float b3 = (244.1471f); + float2x3 r3 = float2x3(500.102356f, 62.52054f, 241.692169f, 545.0477f, 7.65515137f, 83.56299f); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void float2x3_operator_add_scalar_wide() + { + float a0 = (-325.512756f); + float2x3 b0 = float2x3(-264.088135f, -106.009247f, -355.4473f, -447.3303f, -158.7002f, -199.4837f); + float2x3 r0 = float2x3(-589.6009f, -431.522f, -680.9601f, -772.843f, -484.212952f, -524.99646f); + TestUtils.AreEqual(a0 + b0, r0); + + float a1 = (180.318115f); + float2x3 b1 = float2x3(337.579346f, -37.0550232f, 230.805f, -140.174347f, 18.02417f, -138.614349f); + float2x3 r1 = float2x3(517.897461f, 143.263092f, 411.1231f, 40.14377f, 198.342285f, 41.7037659f); + TestUtils.AreEqual(a1 + b1, r1); + + float a2 = (26.9041748f); + float2x3 b2 = float2x3(-374.5376f, 154.46759f, 268.38385f, -190.963013f, 188.617249f, -504.916138f); + float2x3 r2 = float2x3(-347.633423f, 181.371765f, 295.288025f, -164.058838f, 215.521423f, -478.011963f); + TestUtils.AreEqual(a2 + b2, r2); + + float a3 = (20.45404f); + float2x3 b3 = float2x3(197.945374f, 251.411926f, -421.0904f, 111.445374f, -73.26889f, 480.884583f); + float2x3 r3 = float2x3(218.399414f, 271.865967f, -400.636353f, 131.899414f, -52.81485f, 501.338623f); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void float2x3_operator_sub_wide_wide() + { + float2x3 a0 = float2x3(133.371033f, -131.832123f, -197.293152f, -485.28656f, -337.550323f, 471.6671f); + float2x3 b0 = float2x3(123.460266f, 359.56012f, -48.2484741f, 478.979065f, 207.158325f, 142.36731f); + float2x3 r0 = float2x3(9.910767f, -491.392242f, -149.044678f, -964.2656f, -544.7086f, 329.2998f); + TestUtils.AreEqual(a0 - b0, r0); + + float2x3 a1 = float2x3(146.506592f, -130.585052f, 110.7771f, -235.5416f, 78.87933f, -347.686157f); + float2x3 b1 = float2x3(-125.6055f, -65.29901f, -477.876434f, 164.5f, 428.009583f, 72.62781f); + float2x3 r1 = float2x3(272.1121f, -65.28604f, 588.653564f, -400.0416f, -349.130249f, -420.313965f); + TestUtils.AreEqual(a1 - b1, r1); + + float2x3 a2 = float2x3(-470.820557f, -11.45929f, -167.9479f, 330.676758f, -508.350861f, -252.031891f); + float2x3 b2 = float2x3(-446.8805f, 432.091431f, -225.554657f, -112.451965f, -210.6128f, -172.925049f); + float2x3 r2 = float2x3(-23.9400635f, -443.55072f, 57.60675f, 443.128723f, -297.738068f, -79.10684f); + TestUtils.AreEqual(a2 - b2, r2); + + float2x3 a3 = float2x3(-427.9342f, 192.6576f, 168.429321f, 457.308777f, 470.058533f, -299.711884f); + float2x3 b3 = float2x3(-80.60748f, 270.046082f, -154.255585f, 148.475769f, 13.6611328f, 70.67108f); + float2x3 r3 = float2x3(-347.326721f, -77.38849f, 322.6849f, 308.833f, 456.3974f, -370.382965f); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void float2x3_operator_sub_wide_scalar() + { + float2x3 a0 = float2x3(48.9367065f, 410.4516f, -364.4417f, 163.980591f, -460.067322f, 110.919434f); + float b0 = (-291.5904f); + float2x3 r0 = float2x3(340.5271f, 702.042f, -72.85132f, 455.570984f, -168.476929f, 402.509827f); + TestUtils.AreEqual(a0 - b0, r0); + + float2x3 a1 = float2x3(204.358337f, -377.9257f, -470.262054f, 400.5349f, 461.507568f, -246.287262f); + float b1 = (180.269714f); + float2x3 r1 = float2x3(24.088623f, -558.195435f, -650.531738f, 220.2652f, 281.237854f, -426.556976f); + TestUtils.AreEqual(a1 - b1, r1); + + float2x3 a2 = float2x3(21.6052856f, -121.427368f, -122.718414f, -122.938721f, 360.15094f, 342.874573f); + float b2 = (246.350708f); + float2x3 r2 = float2x3(-224.745422f, -367.778076f, -369.069122f, -369.289429f, 113.800232f, 96.5238647f); + TestUtils.AreEqual(a2 - b2, r2); + + float2x3 a3 = float2x3(18.92981f, 97.0437f, 485.914978f, -205.75766f, 253.443237f, -121.163055f); + float b3 = (164.602356f); + float2x3 r3 = float2x3(-145.672546f, -67.5586548f, 321.312622f, -370.360016f, 88.84088f, -285.7654f); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void float2x3_operator_sub_scalar_wide() + { + float a0 = (294.5865f); + float2x3 b0 = float2x3(452.352539f, 256.9898f, -275.159882f, -89.02753f, 488.2284f, -333.2173f); + float2x3 r0 = float2x3(-157.766052f, 37.59668f, 569.746338f, 383.614f, -193.6419f, 627.8038f); + TestUtils.AreEqual(a0 - b0, r0); + + float a1 = (-64.233f); + float2x3 b1 = float2x3(-66.04172f, 341.204956f, -385.775055f, 75.3947754f, 354.943726f, 169.131409f); + float2x3 r1 = float2x3(1.80871582f, -405.437958f, 321.542053f, -139.627777f, -419.176727f, -233.36441f); + TestUtils.AreEqual(a1 - b1, r1); + + float a2 = (88.21661f); + float2x3 b2 = float2x3(1.73498535f, 122.538025f, -264.945f, -50.83719f, -347.65033f, 4.06555176f); + float2x3 r2 = float2x3(86.48163f, -34.32141f, 353.161621f, 139.0538f, 435.866943f, 84.15106f); + TestUtils.AreEqual(a2 - b2, r2); + + float a3 = (-79.09543f); + float2x3 b3 = float2x3(354.358337f, -292.4925f, -53.2089844f, -246.3476f, 299.203369f, 432.1847f); + float2x3 r3 = float2x3(-433.453766f, 213.397064f, -25.8864441f, 167.252167f, -378.2988f, -511.280121f); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void float2x3_operator_mul_wide_wide() + { + float2x3 a0 = float2x3(-394.780548f, -412.3722f, -25.8745728f, -241.045959f, -93.6759949f, 244.159973f); + float2x3 b0 = float2x3(-149.763977f, -345.04538f, -284.334045f, 267.979248f, -326.6485f, -150.689667f); + float2x3 r0 = float2x3(59123.9063f, 142287.125f, 7357.022f, -64595.3164f, 30599.123f, -36792.3867f); + TestUtils.AreEqual(a0 * b0, r0); + + float2x3 a1 = float2x3(494.688477f, 53.5379639f, -239.4964f, 236.675842f, -211.8562f, -216.654816f); + float2x3 b1 = float2x3(207.732422f, 366.192871f, 358.880737f, 214.853577f, 253.422791f, -307.7138f); + float2x3 r1 = float2x3(102762.836f, 19605.22f, -85950.64f, 50850.6523f, -53689.19f, 66667.68f); + TestUtils.AreEqual(a1 * b1, r1); + + float2x3 a2 = float2x3(467.9583f, -178.021912f, -386.394257f, -422.4354f, 464.589539f, -251.315674f); + float2x3 b2 = float2x3(184.47113f, 426.436462f, -144.281433f, 459.4796f, -358.313354f, -201.3652f); + float2x3 r2 = float2x3(86324.8f, -75915.03f, 55749.5156f, -194100.453f, -166468.641f, 50606.23f); + TestUtils.AreEqual(a2 * b2, r2); + + float2x3 a3 = float2x3(-104.97879f, -66.93417f, -39.829895f, 401.5656f, 434.146179f, -336.4542f); + float2x3 b3 = float2x3(254.909973f, 168.520935f, 8.794556f, -194.846466f, -405.362671f, -180.732178f); + float2x3 r3 = float2x3(-26760.14f, -11279.81f, -350.286224f, -78243.64f, -175986.656f, 60808.0977f); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void float2x3_operator_mul_wide_scalar() + { + float2x3 a0 = float2x3(328.203f, -290.10672f, 236.995728f, 120.481384f, 357.903137f, 134.867249f); + float b0 = (192.211182f); + float2x3 r0 = float2x3(63084.2852f, -55761.7539f, 45553.23f, 23157.87f, 68792.9844f, 25922.9941f); + TestUtils.AreEqual(a0 * b0, r0); + + float2x3 a1 = float2x3(-477.3105f, -46.729187f, -238.405f, 422.08252f, -48.83484f, 355.30835f); + float b1 = (-438.272919f); + float2x3 r1 = float2x3(209192.266f, 20480.1367f, 104486.453f, -184987.344f, 21402.9883f, -155722.031f); + TestUtils.AreEqual(a1 * b1, r1); + + float2x3 a2 = float2x3(119.356628f, 98.23602f, -325.552155f, 53.9373169f, -87.45099f, -130.474121f); + float b2 = (-196.995819f); + float2x3 r2 = float2x3(-23512.7559f, -19352.0859f, 64132.4141f, -10625.4258f, 17227.4785f, 25702.8555f); + TestUtils.AreEqual(a2 * b2, r2); + + float2x3 a3 = float2x3(-222.594574f, 293.361084f, 174.381958f, -327.120056f, 56.62915f, 257.541565f); + float b3 = (126.015015f); + float2x3 r3 = float2x3(-28050.2578f, 36967.9023f, 21974.7441f, -41222.04f, 7136.123f, 32454.1035f); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void float2x3_operator_mul_scalar_wide() + { + float a0 = (-464.5347f); + float2x3 b0 = float2x3(329.360962f, -198.683441f, 184.0794f, 256.016174f, 266.226318f, -97.8947449f); + float2x3 r0 = float2x3(-152999.6f, 92295.35f, -85511.27f, -118928.4f, -123671.359f, 45475.5039f); + TestUtils.AreEqual(a0 * b0, r0); + + float a1 = (159.748108f); + float2x3 b1 = float2x3(-351.8222f, 491.801575f, 49.90204f, 424.4626f, 160.1181f, -395.9921f); + float2x3 r1 = float2x3(-56202.93f, 78564.37f, 7971.75635f, 67807.09f, 25578.5645f, -63258.99f); + TestUtils.AreEqual(a1 * b1, r1); + + float a2 = (125.20166f); + float2x3 b2 = float2x3(-265.0158f, 314.656128f, -292.712036f, -37.72989f, 165.362244f, 356.517761f); + float2x3 r2 = float2x3(-33180.418f, 39395.47f, -36648.03f, -4723.84473f, 20703.627f, 44636.6172f); + TestUtils.AreEqual(a2 * b2, r2); + + float a3 = (-188.813324f); + float2x3 b3 = float2x3(504.9157f, 40.5721436f, -206.775116f, -61.60269f, 118.971619f, 53.7483521f); + float2x3 r3 = float2x3(-95334.81f, -7660.56152f, 39041.9f, 11631.4092f, -22463.4277f, -10148.4053f); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void float2x3_operator_div_wide_wide() + { + float2x3 a0 = float2x3(246.265747f, -269.85614f, -451.619537f, -7.388489f, -308.205566f, -373.3948f); + float2x3 b0 = float2x3(172.119812f, -77.14111f, -325.8354f, -450.608673f, -261.262146f, -122.449493f); + float2x3 r0 = float2x3(1.43078089f, 3.49821424f, 1.38603592f, 0.0163966864f, 1.17967939f, 3.04937816f); + TestUtils.AreEqual(a0 / b0, r0); + + float2x3 a1 = float2x3(360.41864f, 25.8097534f, -274.050476f, 127.538574f, -447.671753f, -137.458588f); + float2x3 b1 = float2x3(-93.2107849f, -442.005219f, 484.362732f, -390.7818f, 402.02533f, 316.6507f); + float2x3 r1 = float2x3(-3.86670542f, -0.0583924167f, -0.565795958f, -0.326367736f, -1.11354113f, -0.434101641f); + TestUtils.AreEqual(a1 / b1, r1); + + float2x3 a2 = float2x3(-136.133179f, 12.4376221f, 228.513f, 356.972351f, -24.7620544f, 411.6684f); + float2x3 b2 = float2x3(397.154419f, -303.2622f, -118.591248f, -81.6503f, -84.34686f, -488.419434f); + float2x3 r2 = float2x3(-0.3427714f, -0.0410127677f, -1.926896f, -4.37196636f, 0.2935741f, -0.8428584f); + TestUtils.AreEqual(a2 / b2, r2); + + float2x3 a3 = float2x3(-204.078888f, 11.3654175f, 82.15228f, 37.3894653f, 394.2658f, -429.912781f); + float2x3 b3 = float2x3(404.160522f, -136.728851f, -19.8327026f, -102.607239f, 166.116028f, -112.840179f); + float2x3 r3 = float2x3(-0.504945159f, -0.0831237659f, -4.14226341f, -0.364394039f, 2.37343621f, 3.80992651f); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void float2x3_operator_div_wide_scalar() + { + float2x3 a0 = float2x3(-244.517456f, 69.1123047f, -333.023132f, 257.396851f, 403.2456f, 154.34436f); + float b0 = (-60.0243835f); + float2x3 r0 = float2x3(4.07363558f, -1.15140378f, 5.548131f, -4.28820467f, -6.71803f, -2.571361f); + TestUtils.AreEqual(a0 / b0, r0); + + float2x3 a1 = float2x3(131.526611f, -348.9238f, -275.5387f, 210.557922f, 287.6424f, 504.372253f); + float b1 = (-261.8864f); + float2x3 r1 = float2x3(-0.5022277f, 1.33234787f, 1.05213058f, -0.8040047f, -1.0983479f, -1.92591989f); + TestUtils.AreEqual(a1 / b1, r1); + + float2x3 a2 = float2x3(491.7871f, -253.236664f, 272.895142f, 178.096191f, -460.87558f, -502.646027f); + float b2 = (-26.6315918f); + float2x3 r2 = float2x3(-18.4663048f, 9.508882f, -10.2470455f, -6.687403f, 17.3055973f, 18.874052f); + TestUtils.AreEqual(a2 / b2, r2); + + float2x3 a3 = float2x3(-84.3248f, 83.7963257f, 197.042053f, 317.168274f, 403.387146f, 81.6464844f); + float b3 = (-174.690338f); + float2x3 r3 = float2x3(0.482710153f, -0.479684949f, -1.12795055f, -1.8156029f, -2.30915546f, -0.467378378f); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void float2x3_operator_div_scalar_wide() + { + float a0 = (41.73767f); + float2x3 b0 = float2x3(-422.676147f, 248.129639f, 449.391357f, 245.858154f, -326.6206f, 163.715088f); + float2x3 r0 = float2x3(-0.09874622f, 0.168209136f, 0.0928759947f, 0.169763222f, -0.1277864f, 0.2549409f); + TestUtils.AreEqual(a0 / b0, r0); + + float a1 = (333.6645f); + float2x3 b1 = float2x3(38.2910767f, -472.979767f, 192.230164f, -200.296875f, -490.181519f, -211.10257f); + float2x3 r1 = float2x3(8.713897f, -0.7054519f, 1.73575509f, -1.66584969f, -0.6806958f, -1.58058f); + TestUtils.AreEqual(a1 / b1, r1); + + float a2 = (-322.852356f); + float2x3 b2 = float2x3(-137.985291f, 84.32971f, 355.063477f, 276.427246f, -382.988037f, -488.647156f); + float2x3 r2 = float2x3(2.339759f, -3.8284533f, -0.909280658f, -1.16794693f, 0.8429829f, 0.6607065f); + TestUtils.AreEqual(a2 / b2, r2); + + float a3 = (344.846f); + float2x3 b3 = float2x3(168.85498f, -44.1955872f, 420.55072f, -175.6152f, -9.220581f, -344.194275f); + float2x3 r3 = float2x3(2.04226136f, -7.802725f, 0.8199867f, -1.96364558f, -37.3995972f, -1.00189352f); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void float2x3_operator_mod_wide_wide() + { + float2x3 a0 = float2x3(-442.309875f, 368.5005f, -1.09390259f, -364.673828f, -197.343933f, -34.0349121f); + float2x3 b0 = float2x3(-43.2450562f, -144.195862f, -62.6404724f, -336.828247f, -154.61026f, -154.029358f); + float2x3 r0 = float2x3(-9.859314f, 80.1087646f, -1.09390259f, -27.8455811f, -42.7336731f, -34.0349121f); + TestUtils.AreEqual(a0 % b0, r0); + + float2x3 a1 = float2x3(-101.348572f, 208.318542f, -140.770325f, 183.44696f, -463.368378f, 83.83911f); + float2x3 b1 = float2x3(487.0462f, -469.8291f, -145.203766f, -203.384f, -22.52008f, 224.69f); + float2x3 r1 = float2x3(-101.348572f, 208.318542f, -140.770325f, 183.44696f, -12.9667664f, 83.83911f); + TestUtils.AreEqual(a1 % b1, r1); + + float2x3 a2 = float2x3(-64.71405f, 295.066833f, 212.25708f, 349.6283f, 119.875916f, -37.8058167f); + float2x3 b2 = float2x3(-435.62674f, 12.0955811f, 40.3787842f, 345.784851f, -433.471252f, -355.649963f); + float2x3 r2 = float2x3(-64.71405f, 4.772888f, 10.3631592f, 3.84344482f, 119.875916f, -37.8058167f); + TestUtils.AreEqual(a2 % b2, r2); + + float2x3 a3 = float2x3(142.41156f, 332.244263f, -464.194275f, -296.147827f, 225.175354f, -212.060272f); + float2x3 b3 = float2x3(4.015442f, 66.65979f, -221.853638f, -355.056763f, 357.935974f, 71.3753052f); + float2x3 r3 = float2x3(1.87109375f, 65.6051f, -20.487f, -296.147827f, 225.175354f, -69.30966f); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void float2x3_operator_mod_wide_scalar() + { + float2x3 a0 = float2x3(-433.417f, -5.51412964f, 393.3944f, 299.41156f, -120.80603f, -502.939026f); + float b0 = (-90.49924f); + float2x3 r0 = float2x3(-71.4200439f, -5.51412964f, 31.39746f, 27.9138489f, -30.3067932f, -50.44284f); + TestUtils.AreEqual(a0 % b0, r0); + + float2x3 a1 = float2x3(-450.807678f, -84.47363f, -318.7815f, 433.4547f, -54.60019f, -172.338867f); + float b1 = (186.094788f); + float2x3 r1 = float2x3(-78.6181f, -84.47363f, -132.6867f, 61.2651367f, -54.60019f, -172.338867f); + TestUtils.AreEqual(a1 % b1, r1); + + float2x3 a2 = float2x3(-429.714661f, 5.79638672f, 254.5108f, -433.0937f, -203.082611f, -75.3564148f); + float b2 = (222.361877f); + float2x3 r2 = float2x3(-207.352783f, 5.79638672f, 32.1489258f, -210.731812f, -203.082611f, -75.3564148f); + TestUtils.AreEqual(a2 % b2, r2); + + float2x3 a3 = float2x3(252.289124f, 5.337219f, -279.060425f, 483.5506f, -331.993347f, 336f); + float b3 = (-69.4039f); + float2x3 r3 = float2x3(44.0774231f, 5.337219f, -1.44482422f, 67.1272f, -54.3777466f, 58.3844f); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void float2x3_operator_mod_scalar_wide() + { + float a0 = (-396.4224f); + float2x3 b0 = float2x3(-159.140259f, 230.17334f, 14.7793579f, -303.1565f, 399.635f, 206.6947f); + float2x3 r0 = float2x3(-78.14188f, -166.249054f, -12.1590881f, -93.2659f, -396.4224f, -189.727692f); + TestUtils.AreEqual(a0 % b0, r0); + + float a1 = (397.0448f); + float2x3 b1 = float2x3(-393.890656f, -372.067078f, 201.012268f, -95.566864f, -258.951477f, 106.983582f); + float2x3 r1 = float2x3(3.15414429f, 24.9777222f, 196.032532f, 14.7773438f, 138.093323f, 76.0940552f); + TestUtils.AreEqual(a1 % b1, r1); + + float a2 = (469.323547f); + float2x3 b2 = float2x3(-34.80899f, 184.836548f, 374.79425f, -131.872711f, -120.092865f, 4.506653f); + float2x3 r2 = float2x3(16.8066711f, 99.65045f, 94.5293f, 73.7054138f, 109.044952f, 0.631652832f); + TestUtils.AreEqual(a2 % b2, r2); + + float a3 = (-111.401947f); + float2x3 b3 = float2x3(391.54248f, -218.668884f, 196.377441f, -511.032623f, 499.9535f, -433.523071f); + float2x3 r3 = float2x3(-111.401947f, -111.401947f, -111.401947f, -111.401947f, -111.401947f, -111.401947f); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void float2x3_operator_plus() + { + float2x3 a0 = float2x3(271.670837f, -79.08023f, -330.985046f, 31.824707f, 315.449524f, 319.222168f); + float2x3 r0 = float2x3(271.670837f, -79.08023f, -330.985046f, 31.824707f, 315.449524f, 319.222168f); + TestUtils.AreEqual(+a0, r0); + + float2x3 a1 = float2x3(190.324646f, -320.518463f, 102.054382f, -107.00351f, -428.7762f, 377.230164f); + float2x3 r1 = float2x3(190.324646f, -320.518463f, 102.054382f, -107.00351f, -428.7762f, 377.230164f); + TestUtils.AreEqual(+a1, r1); + + float2x3 a2 = float2x3(234.773926f, 258.330383f, 465.355957f, 309.59314f, -316.937134f, -230.052673f); + float2x3 r2 = float2x3(234.773926f, 258.330383f, 465.355957f, 309.59314f, -316.937134f, -230.052673f); + TestUtils.AreEqual(+a2, r2); + + float2x3 a3 = float2x3(301.7851f, 350.2464f, 60.8197632f, -472.4421f, -364.802551f, 239.152344f); + float2x3 r3 = float2x3(301.7851f, 350.2464f, 60.8197632f, -472.4421f, -364.802551f, 239.152344f); + TestUtils.AreEqual(+a3, r3); + } + + [TestCompiler] + public static void float2x3_operator_neg() + { + float2x3 a0 = float2x3(420.227173f, -196.2575f, -335.426819f, 509.04364f, -33.0144043f, -498.575317f); + float2x3 r0 = float2x3(-420.227173f, 196.2575f, 335.426819f, -509.04364f, 33.0144043f, 498.575317f); + TestUtils.AreEqual(-a0, r0); + + float2x3 a1 = float2x3(-495.837952f, 19.68689f, 268.2367f, -180.600525f, 223.381287f, -410.392059f); + float2x3 r1 = float2x3(495.837952f, -19.68689f, -268.2367f, 180.600525f, -223.381287f, 410.392059f); + TestUtils.AreEqual(-a1, r1); + + float2x3 a2 = float2x3(-395.681549f, -110.9393f, -238.2196f, 292.543518f, 469.2926f, 48.29071f); + float2x3 r2 = float2x3(395.681549f, 110.9393f, 238.2196f, -292.543518f, -469.2926f, -48.29071f); + TestUtils.AreEqual(-a2, r2); + + float2x3 a3 = float2x3(88.7237549f, 55.7080078f, 464.541382f, 499.2428f, 175.015015f, 196.387573f); + float2x3 r3 = float2x3(-88.7237549f, -55.7080078f, -464.541382f, -499.2428f, -175.015015f, -196.387573f); + TestUtils.AreEqual(-a3, r3); + } + + [TestCompiler] + public static void float2x3_operator_prefix_inc() + { + float2x3 a0 = float2x3(-99.79556f, 458.741821f, 96.1790161f, -48.55246f, -315.728973f, -299.230164f); + float2x3 r0 = float2x3(-98.79556f, 459.741821f, 97.1790161f, -47.55246f, -314.728973f, -298.230164f); + TestUtils.AreEqual(++a0, r0); + + float2x3 a1 = float2x3(-323.614868f, -76.50766f, -305.584778f, 64.0965f, 148.679321f, 363.2849f); + float2x3 r1 = float2x3(-322.614868f, -75.50766f, -304.584778f, 65.0965f, 149.679321f, 364.2849f); + TestUtils.AreEqual(++a1, r1); + + float2x3 a2 = float2x3(-115.559235f, -179.894653f, 339.8766f, -38.41043f, -153.373688f, 261.625549f); + float2x3 r2 = float2x3(-114.559235f, -178.894653f, 340.8766f, -37.41043f, -152.373688f, 262.625549f); + TestUtils.AreEqual(++a2, r2); + + float2x3 a3 = float2x3(155.030823f, 301.3058f, -221.355408f, -429.698151f, -271.2893f, -264.380066f); + float2x3 r3 = float2x3(156.030823f, 302.3058f, -220.355408f, -428.698151f, -270.2893f, -263.380066f); + TestUtils.AreEqual(++a3, r3); + } + + [TestCompiler] + public static void float2x3_operator_postfix_inc() + { + float2x3 a0 = float2x3(322.943542f, 472.0525f, 203.48761f, -49.8545837f, -31.4205322f, 455.3366f); + float2x3 r0 = float2x3(322.943542f, 472.0525f, 203.48761f, -49.8545837f, -31.4205322f, 455.3366f); + TestUtils.AreEqual(a0++, r0); + + float2x3 a1 = float2x3(271.454651f, 153.7503f, -174.173f, -427.401062f, 215.110229f, 159.861023f); + float2x3 r1 = float2x3(271.454651f, 153.7503f, -174.173f, -427.401062f, 215.110229f, 159.861023f); + TestUtils.AreEqual(a1++, r1); + + float2x3 a2 = float2x3(-333.050446f, 287.220459f, -170.104645f, -270.652466f, -162.86026f, 454.488831f); + float2x3 r2 = float2x3(-333.050446f, 287.220459f, -170.104645f, -270.652466f, -162.86026f, 454.488831f); + TestUtils.AreEqual(a2++, r2); + + float2x3 a3 = float2x3(-449.9273f, -311.435852f, 69.7314453f, -232.299652f, -341.498535f, 188.006592f); + float2x3 r3 = float2x3(-449.9273f, -311.435852f, 69.7314453f, -232.299652f, -341.498535f, 188.006592f); + TestUtils.AreEqual(a3++, r3); + } + + [TestCompiler] + public static void float2x3_operator_prefix_dec() + { + float2x3 a0 = float2x3(-416.201233f, -96.63788f, -50.14566f, -207.316437f, 439.479065f, -304.400818f); + float2x3 r0 = float2x3(-417.201233f, -97.63788f, -51.14566f, -208.316437f, 438.479065f, -305.400818f); + TestUtils.AreEqual(--a0, r0); + + float2x3 a1 = float2x3(337.968933f, 171.964539f, -227.44281f, 298.2848f, 326.5078f, 400.7209f); + float2x3 r1 = float2x3(336.968933f, 170.964539f, -228.44281f, 297.2848f, 325.5078f, 399.7209f); + TestUtils.AreEqual(--a1, r1); + + float2x3 a2 = float2x3(-478.031372f, -24.5845032f, 112.796875f, -341.9763f, -503.27417f, -79.6352539f); + float2x3 r2 = float2x3(-479.031372f, -25.5845032f, 111.796875f, -342.9763f, -504.27417f, -80.6352539f); + TestUtils.AreEqual(--a2, r2); + + float2x3 a3 = float2x3(-131.00415f, -15.7086487f, 188.758423f, 307.791931f, -406.667725f, 181.4751f); + float2x3 r3 = float2x3(-132.00415f, -16.7086487f, 187.758423f, 306.791931f, -407.667725f, 180.4751f); + TestUtils.AreEqual(--a3, r3); + } + + [TestCompiler] + public static void float2x3_operator_postfix_dec() + { + float2x3 a0 = float2x3(-376.5924f, 16.9697266f, -0.2506714f, -202.323273f, 409.557556f, 47.85663f); + float2x3 r0 = float2x3(-376.5924f, 16.9697266f, -0.2506714f, -202.323273f, 409.557556f, 47.85663f); + TestUtils.AreEqual(a0--, r0); + + float2x3 a1 = float2x3(-281.1117f, -182.405731f, 450.1281f, -129.232666f, -332.154968f, -261.0089f); + float2x3 r1 = float2x3(-281.1117f, -182.405731f, 450.1281f, -129.232666f, -332.154968f, -261.0089f); + TestUtils.AreEqual(a1--, r1); + + float2x3 a2 = float2x3(205.461121f, -483.066528f, 378.641235f, 487.344849f, -192.177856f, -357.0542f); + float2x3 r2 = float2x3(205.461121f, -483.066528f, 378.641235f, 487.344849f, -192.177856f, -357.0542f); + TestUtils.AreEqual(a2--, r2); + + float2x3 a3 = float2x3(-396.302063f, 115.867737f, -20.8232117f, 323.4054f, 379.156128f, 311.299f); + float2x3 r3 = float2x3(-396.302063f, 115.867737f, -20.8232117f, 323.4054f, 379.156128f, 311.299f); + TestUtils.AreEqual(a3--, r3); + } + + + } +} diff --git a/package/Tests/Tests/Shared/TestFloat2x3.gen.cs.meta b/package/Tests/Tests/Shared/TestFloat2x3.gen.cs.meta new file mode 100755 index 000000000..8cbf217f1 --- /dev/null +++ b/package/Tests/Tests/Shared/TestFloat2x3.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c55c5a192a2ac9046aed8be3f03ce6f2 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/package/Tests/Tests/Shared/TestFloat2x4.gen.cs b/package/Tests/Tests/Shared/TestFloat2x4.gen.cs new file mode 100755 index 000000000..270723255 --- /dev/null +++ b/package/Tests/Tests/Shared/TestFloat2x4.gen.cs @@ -0,0 +1,945 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using NUnit.Framework; +using static Unity.Mathematics.math; +using Burst.Compiler.IL.Tests; + +namespace Unity.Mathematics.Tests +{ + [TestFixture] + public class TestFloat2x4 + { + [TestCompiler] + public static void float2x4_zero() + { + TestUtils.AreEqual(float2x4.zero.c0.x, 0.0f); + TestUtils.AreEqual(float2x4.zero.c0.y, 0.0f); + TestUtils.AreEqual(float2x4.zero.c1.x, 0.0f); + TestUtils.AreEqual(float2x4.zero.c1.y, 0.0f); + TestUtils.AreEqual(float2x4.zero.c2.x, 0.0f); + TestUtils.AreEqual(float2x4.zero.c2.y, 0.0f); + TestUtils.AreEqual(float2x4.zero.c3.x, 0.0f); + TestUtils.AreEqual(float2x4.zero.c3.y, 0.0f); + } + + [TestCompiler] + public static void float2x4_operator_equal_wide_wide() + { + float2x4 a0 = float2x4(-135.18924f, -49.0941162f, 169.129822f, 240.8053f, 314.7392f, 442.393f, 177.924438f, 335.5334f); + float2x4 b0 = float2x4(-220.014648f, 66.98004f, 499.2016f, -371.1131f, 208.448669f, 390.8037f, -72.44382f, 362.97644f); + bool2x4 r0 = bool2x4(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + float2x4 a1 = float2x4(168.15448f, 350.729553f, 367.178467f, 46.9414673f, 188.76416f, -97.2113953f, -293.320984f, -234.822937f); + float2x4 b1 = float2x4(194.678345f, 471.644836f, -404.044678f, -144.696747f, -494.446655f, -252.970367f, 234.417114f, 398.724f); + bool2x4 r1 = bool2x4(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + float2x4 a2 = float2x4(417.0337f, 26.3864136f, 269.245728f, 29.4741821f, 479.485229f, -237.230957f, -221.9837f, -506.672546f); + float2x4 b2 = float2x4(260.4287f, 370.144226f, 89.579834f, -434.816833f, -109.845337f, 336.973022f, -409.154968f, 500.387573f); + bool2x4 r2 = bool2x4(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + float2x4 a3 = float2x4(-22.98944f, 487.260864f, -419.731964f, 337.2033f, 245.043884f, 390.215881f, 84.4129639f, 434.2079f); + float2x4 b3 = float2x4(-174.081818f, 395.101135f, 350.3393f, -243.144592f, -416.397369f, 151.576477f, -18.2243347f, -431.677917f); + bool2x4 r3 = bool2x4(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void float2x4_operator_equal_wide_scalar() + { + float2x4 a0 = float2x4(65.6712f, 404.415527f, -269.730164f, 83.6306152f, 152.9945f, -155.868286f, 314.671265f, 386.365173f); + float b0 = (-155.815765f); + bool2x4 r0 = bool2x4(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + float2x4 a1 = float2x4(290.04895f, -65.66748f, -69.68326f, -191.190765f, 186.845215f, -232.895691f, -319.144043f, -49.70108f); + float b1 = (-132.6352f); + bool2x4 r1 = bool2x4(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + float2x4 a2 = float2x4(-300.8819f, 386.3775f, -296.7019f, -309.1172f, 141.542358f, -227.323334f, 83.87286f, -410.91687f); + float b2 = (333.396851f); + bool2x4 r2 = bool2x4(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + float2x4 a3 = float2x4(110.501282f, 36.57434f, -427.541443f, -268.170837f, 175.8117f, -193.47995f, 291.051941f, 423.97168f); + float b3 = (-390.103577f); + bool2x4 r3 = bool2x4(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void float2x4_operator_equal_scalar_wide() + { + float a0 = (36.38391f); + float2x4 b0 = float2x4(-400.4892f, -71.2868347f, 156.978088f, -225.238739f, 499.141785f, -211.979919f, 428.311951f, -489.501343f); + bool2x4 r0 = bool2x4(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + float a1 = (-5.691559f); + float2x4 b1 = float2x4(-30.8659363f, -362.9831f, 184.503174f, -160.470612f, 316.668823f, 390.369263f, 505.1051f, -294.6487f); + bool2x4 r1 = bool2x4(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + float a2 = (443.1991f); + float2x4 b2 = float2x4(96.5592651f, -257.012939f, -245.054962f, 326.464844f, -23.9599f, -168.694885f, 386.2486f, -227.090637f); + bool2x4 r2 = bool2x4(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + float a3 = (-336.612427f); + float2x4 b3 = float2x4(365.108154f, -405.390839f, -473.995483f, 298.435364f, -149.86322f, 450.0664f, 153.47644f, 56.28778f); + bool2x4 r3 = bool2x4(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void float2x4_operator_not_equal_wide_wide() + { + float2x4 a0 = float2x4(279.994141f, -43.34201f, -465.724731f, 317.466553f, 85.7149658f, 360.8905f, 366.081543f, 154.542847f); + float2x4 b0 = float2x4(-460.9121f, -476.009033f, 468.1364f, -341.012543f, -62.65805f, -458.801666f, -457.730225f, -59.5232544f); + bool2x4 r0 = bool2x4(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + float2x4 a1 = float2x4(332.4262f, 397.11322f, -431.374969f, 489.0108f, 398.4336f, -489.817932f, 171.4049f, -67.82968f); + float2x4 b1 = float2x4(3.024231f, 155.812744f, -19.8399048f, -6.01693726f, -406.207916f, -102.420715f, -40.362915f, 452.6754f); + bool2x4 r1 = bool2x4(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + float2x4 a2 = float2x4(-192.278717f, 227.84082f, 62.1381836f, 262.186462f, -404.0531f, 34.449585f, -204.795776f, -285.4118f); + float2x4 b2 = float2x4(93.25757f, -258.378052f, -184.0498f, -379.2353f, -370.687317f, -255.947235f, 29.0557861f, 322.407654f); + bool2x4 r2 = bool2x4(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + float2x4 a3 = float2x4(-72.20682f, 444.749268f, 238.81781f, 365.1801f, -437.9229f, -362.442627f, 445.954346f, -0.417480469f); + float2x4 b3 = float2x4(415.071716f, -467.726135f, -433.784668f, -212.165924f, 474.674927f, 452.483215f, -92.11273f, -385.9221f); + bool2x4 r3 = bool2x4(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void float2x4_operator_not_equal_wide_scalar() + { + float2x4 a0 = float2x4(-155.4411f, -19.4266052f, 174.633057f, 507.920715f, 59.177063f, 171.151489f, -58.92328f, -398.176849f); + float b0 = (-393.413544f); + bool2x4 r0 = bool2x4(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + float2x4 a1 = float2x4(492.20105f, 270.341f, -380.243256f, 501.899048f, -134.345459f, 458.400452f, 46.7709961f, 161.459961f); + float b1 = (-165.241516f); + bool2x4 r1 = bool2x4(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + float2x4 a2 = float2x4(261.514221f, -0.449920654f, 350.461426f, 202.221008f, 242.664f, 382.677063f, -468.967957f, -497.459473f); + float b2 = (-145.6124f); + bool2x4 r2 = bool2x4(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + float2x4 a3 = float2x4(-80.93225f, -506.490326f, 449.348145f, 210.771f, 249.181824f, -338.468536f, 229.670654f, -76.5433044f); + float b3 = (-328.587769f); + bool2x4 r3 = bool2x4(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void float2x4_operator_not_equal_scalar_wide() + { + float a0 = (478.353149f); + float2x4 b0 = float2x4(459.553223f, 436.453247f, -488.714172f, 392.767944f, -266.736633f, 338.557861f, -338.100128f, -152.314545f); + bool2x4 r0 = bool2x4(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + float a1 = (-452.820679f); + float2x4 b1 = float2x4(209.439331f, 50.10797f, 372.4344f, -488.0213f, 489.740784f, 270.4001f, -472.846771f, -286.850464f); + bool2x4 r1 = bool2x4(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + float a2 = (-384.691864f); + float2x4 b2 = float2x4(443.423523f, 358.7472f, -15.4140625f, -342.179169f, 468.967529f, -130.568085f, 401.785828f, -268.352264f); + bool2x4 r2 = bool2x4(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + float a3 = (-239.231018f); + float2x4 b3 = float2x4(411.386536f, 139.769348f, 334.522034f, -223.629242f, -12.4884644f, 113.468872f, -189.652252f, -212.846558f); + bool2x4 r3 = bool2x4(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void float2x4_operator_less_wide_wide() + { + float2x4 a0 = float2x4(51.7102661f, -313.85556f, 283.047668f, 235.021912f, 44.07837f, -207.255676f, 3.38293457f, -144.301331f); + float2x4 b0 = float2x4(-261.835236f, -19.81073f, -149.25882f, 205.99823f, -306.024384f, 102.121704f, 231.906311f, 179.49884f); + bool2x4 r0 = bool2x4(false, true, false, false, false, true, true, true); + TestUtils.AreEqual(a0 < b0, r0); + + float2x4 a1 = float2x4(-69.3696f, -135.667969f, -194.787354f, -33.473877f, -19.67508f, 423.237976f, -71.6983f, -501.886f); + float2x4 b1 = float2x4(473.2249f, 15.8916626f, 270.049927f, 490.914f, -185.734131f, 76.4331055f, 97.75232f, 419.300781f); + bool2x4 r1 = bool2x4(true, true, true, true, false, false, true, true); + TestUtils.AreEqual(a1 < b1, r1); + + float2x4 a2 = float2x4(7.64386f, 302.262878f, -140.5505f, -436.5867f, -351.4417f, 364.970825f, 301.8941f, 407.550964f); + float2x4 b2 = float2x4(73.953186f, 481.032349f, 7.00744629f, -7.32409668f, -413.075745f, -154.1189f, 449.202881f, 502.014282f); + bool2x4 r2 = bool2x4(true, true, true, true, false, false, true, true); + TestUtils.AreEqual(a2 < b2, r2); + + float2x4 a3 = float2x4(269.1078f, 462.98822f, 223.884155f, -287.18924f, 283.6386f, 511.864319f, -60.4967957f, -234.303467f); + float2x4 b3 = float2x4(-382.315857f, 251.535156f, 143.17395f, 293.660339f, -292.769562f, -43.2182f, -353.4112f, 458.32605f); + bool2x4 r3 = bool2x4(false, false, false, true, false, false, false, true); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void float2x4_operator_less_wide_scalar() + { + float2x4 a0 = float2x4(-221.869781f, -121.546478f, -97.5239258f, 479.8811f, 67.11902f, 137.3288f, 282.9666f, 258.2791f); + float b0 = (199.0675f); + bool2x4 r0 = bool2x4(true, true, true, false, true, true, false, false); + TestUtils.AreEqual(a0 < b0, r0); + + float2x4 a1 = float2x4(-111.413147f, 82.6654053f, -361.6429f, -68.0881958f, 12.7880249f, -66.703064f, -78.76297f, 25.7277222f); + float b1 = (-288.081116f); + bool2x4 r1 = bool2x4(false, false, true, false, false, false, false, false); + TestUtils.AreEqual(a1 < b1, r1); + + float2x4 a2 = float2x4(101.37085f, -48.9205322f, 359.604431f, -8.150085f, 241.2768f, -183.437775f, 423.027161f, -334.622742f); + float b2 = (-330.442657f); + bool2x4 r2 = bool2x4(false, false, false, false, false, false, false, true); + TestUtils.AreEqual(a2 < b2, r2); + + float2x4 a3 = float2x4(-98.31558f, 297.925232f, -492.108154f, -395.807251f, 95.78882f, -220.62146f, -455.37558f, 360.291565f); + float b3 = (300.410156f); + bool2x4 r3 = bool2x4(true, true, true, true, true, true, true, false); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void float2x4_operator_less_scalar_wide() + { + float a0 = (-250.484924f); + float2x4 b0 = float2x4(-377.196533f, -505.147552f, 375.9267f, 110.17395f, -118.097565f, -40.4508972f, -299.744324f, 31.4371338f); + bool2x4 r0 = bool2x4(false, false, true, true, true, true, false, true); + TestUtils.AreEqual(a0 < b0, r0); + + float a1 = (-458.904541f); + float2x4 b1 = float2x4(13.6846924f, -458.5069f, 248.276489f, 389.231445f, 488.745544f, -221.637878f, -424.2672f, 249.059021f); + bool2x4 r1 = bool2x4(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 < b1, r1); + + float a2 = (-22.1361389f); + float2x4 b2 = float2x4(-442.247742f, -340.857544f, -95.1117249f, 15.4094238f, 87.29248f, 495.067627f, 316.0185f, -125.568115f); + bool2x4 r2 = bool2x4(false, false, false, true, true, true, true, false); + TestUtils.AreEqual(a2 < b2, r2); + + float a3 = (122.164795f); + float2x4 b3 = float2x4(96.75537f, -228.906342f, -143.9527f, -230.238281f, -327.6126f, 103.39801f, 434.488831f, -157.4502f); + bool2x4 r3 = bool2x4(false, false, false, false, false, false, true, false); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void float2x4_operator_greater_wide_wide() + { + float2x4 a0 = float2x4(-229.29068f, 505.536621f, -73.80707f, 100.292053f, -419.214783f, -159.559753f, -396.770355f, 127.037415f); + float2x4 b0 = float2x4(-445.845032f, -420.035278f, 299.0244f, -13.8809814f, 151.5617f, -163.50943f, -391.096039f, 479.283752f); + bool2x4 r0 = bool2x4(true, true, false, true, false, true, false, false); + TestUtils.AreEqual(a0 > b0, r0); + + float2x4 a1 = float2x4(489.1399f, 51.9188843f, 155.384766f, -135.631653f, -425.978149f, -228.430511f, 383.03833f, 136.533569f); + float2x4 b1 = float2x4(-77.6748657f, -46.584198f, -415.377f, 71.46698f, -206.061035f, 360.8363f, 236.968811f, 14.550354f); + bool2x4 r1 = bool2x4(true, true, true, false, false, false, true, true); + TestUtils.AreEqual(a1 > b1, r1); + + float2x4 a2 = float2x4(8.602417f, -251.324371f, -345.954926f, -170.565918f, -293.2544f, 139.125f, 214.3031f, 238.7699f); + float2x4 b2 = float2x4(364.735168f, -159.06131f, 226.631165f, 182.796021f, 341.839355f, -79.13046f, -247.296814f, 164.589111f); + bool2x4 r2 = bool2x4(false, false, false, false, false, true, true, true); + TestUtils.AreEqual(a2 > b2, r2); + + float2x4 a3 = float2x4(105.535217f, -170.9253f, 26.9802246f, -188.928314f, 201.786621f, -506.057159f, 15.454895f, 115.080688f); + float2x4 b3 = float2x4(-352.1598f, 9.822632f, 186.721619f, -325.913635f, -77.93036f, -379.746033f, 251.45575f, -144.183563f); + bool2x4 r3 = bool2x4(true, false, false, true, true, false, false, true); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void float2x4_operator_greater_wide_scalar() + { + float2x4 a0 = float2x4(11.156311f, -411.023224f, 385.885559f, -485.103058f, -491.180023f, 405.175354f, 173.575073f, 69.26929f); + float b0 = (-302.816956f); + bool2x4 r0 = bool2x4(true, false, true, false, false, true, true, true); + TestUtils.AreEqual(a0 > b0, r0); + + float2x4 a1 = float2x4(501.306824f, -86.12451f, -489.090576f, -172.518158f, -18.1496277f, -236.414948f, -238.8945f, -27.2391357f); + float b1 = (-367.027771f); + bool2x4 r1 = bool2x4(true, true, false, true, true, true, true, true); + TestUtils.AreEqual(a1 > b1, r1); + + float2x4 a2 = float2x4(471.779358f, -481.4781f, 185.59436f, 33.29474f, -510.228149f, -183.2862f, -386.127655f, -13.6382141f); + float b2 = (240.164551f); + bool2x4 r2 = bool2x4(true, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 > b2, r2); + + float2x4 a3 = float2x4(-7.34790039f, 52.24951f, 16.3232422f, -410.5101f, -262.2675f, -458.255981f, -218.866119f, -34.6923523f); + float b3 = (-261.865967f); + bool2x4 r3 = bool2x4(true, true, true, false, false, false, true, true); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void float2x4_operator_greater_scalar_wide() + { + float a0 = (453.546082f); + float2x4 b0 = float2x4(-226.2044f, -423.465f, 409.405518f, 453.877075f, 87.47571f, 113.795593f, 176.409241f, -140.440033f); + bool2x4 r0 = bool2x4(true, true, true, false, true, true, true, true); + TestUtils.AreEqual(a0 > b0, r0); + + float a1 = (-182.48288f); + float2x4 b1 = float2x4(-158.2933f, -162.685333f, -193.328674f, 230.181274f, -102.58783f, 392.520569f, -177.478668f, -10.2950134f); + bool2x4 r1 = bool2x4(false, false, true, false, false, false, false, false); + TestUtils.AreEqual(a1 > b1, r1); + + float a2 = (-24.04895f); + float2x4 b2 = float2x4(172.448669f, 374.048035f, -368.99762f, -210.195282f, 149.470215f, -281.343262f, -100.469177f, 304.864441f); + bool2x4 r2 = bool2x4(false, false, true, true, false, true, true, false); + TestUtils.AreEqual(a2 > b2, r2); + + float a3 = (-361.524841f); + float2x4 b3 = float2x4(-372.452362f, -33.9095459f, -69.5952759f, -460.4324f, -309.341675f, 486.131531f, 471.920959f, 479.361572f); + bool2x4 r3 = bool2x4(true, false, false, true, false, false, false, false); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void float2x4_operator_less_equal_wide_wide() + { + float2x4 a0 = float2x4(240.090515f, 462.213135f, 293.08252f, -427.870667f, -405.5227f, 204.591919f, 294.6701f, -327.564453f); + float2x4 b0 = float2x4(-81.20383f, 493.637451f, -411.4721f, 99.16443f, -295.6677f, -480.462555f, 74.41406f, 260.916138f); + bool2x4 r0 = bool2x4(false, true, false, true, true, false, false, true); + TestUtils.AreEqual(a0 <= b0, r0); + + float2x4 a1 = float2x4(-456.12326f, 282.30127f, 421.881165f, -311.71283f, 84.5675049f, 447.244629f, -154.494354f, -424.364746f); + float2x4 b1 = float2x4(306.173279f, 139.564819f, -505.752472f, -489.6268f, -280.0326f, 303.1599f, 511.1902f, -104.659729f); + bool2x4 r1 = bool2x4(true, false, false, false, false, false, true, true); + TestUtils.AreEqual(a1 <= b1, r1); + + float2x4 a2 = float2x4(36.68451f, 267.0703f, 307.893921f, -351.760132f, -157.360352f, 152.709045f, 372.267151f, 202.368286f); + float2x4 b2 = float2x4(95.14661f, -125.636353f, 376.2398f, -415.774719f, -47.48105f, 117.722107f, 469.378357f, -263.042358f); + bool2x4 r2 = bool2x4(true, false, true, false, true, false, true, false); + TestUtils.AreEqual(a2 <= b2, r2); + + float2x4 a3 = float2x4(-77.04346f, 438.1848f, 260.282349f, 386.034058f, -281.491f, -102.930054f, -346.716736f, -258.3412f); + float2x4 b3 = float2x4(-216.002319f, 66.73425f, 99.21863f, 233.843018f, 439.839966f, 61.1151123f, -219.030579f, -404.7129f); + bool2x4 r3 = bool2x4(false, false, false, false, true, true, true, false); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void float2x4_operator_less_equal_wide_scalar() + { + float2x4 a0 = float2x4(309.192444f, 69.67377f, -101.724182f, -315.9724f, -346.011047f, 424.15387f, -410.870056f, -483.902649f); + float b0 = (292.924255f); + bool2x4 r0 = bool2x4(false, true, true, true, true, false, true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + float2x4 a1 = float2x4(183.821167f, -257.870056f, -386.801758f, -182.938812f, 349.250122f, 485.311584f, 373.5691f, 259.1515f); + float b1 = (320.4425f); + bool2x4 r1 = bool2x4(true, true, true, true, false, false, false, true); + TestUtils.AreEqual(a1 <= b1, r1); + + float2x4 a2 = float2x4(450.130066f, -43.8748779f, 457.385742f, -77.6383057f, 479.451843f, -499.516449f, -398.132935f, 402.484863f); + float b2 = (-128.525543f); + bool2x4 r2 = bool2x4(false, false, false, false, false, true, true, false); + TestUtils.AreEqual(a2 <= b2, r2); + + float2x4 a3 = float2x4(87.91608f, 125.950806f, -54.49362f, 250.667419f, 97.94293f, 228.021545f, -213.378662f, 42.2608032f); + float b3 = (-502.1736f); + bool2x4 r3 = bool2x4(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void float2x4_operator_less_equal_scalar_wide() + { + float a0 = (-511.152374f); + float2x4 b0 = float2x4(51.1589966f, 340.443665f, 312.81427f, 354.1925f, 136.396729f, -94.76788f, 288.5443f, 304.042847f); + bool2x4 r0 = bool2x4(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + float a1 = (-148.618073f); + float2x4 b1 = float2x4(-506.3001f, 27.5812378f, 48.47113f, 104.883484f, -488.685852f, -480.435181f, 421.936646f, 239.721069f); + bool2x4 r1 = bool2x4(false, true, true, true, false, false, true, true); + TestUtils.AreEqual(a1 <= b1, r1); + + float a2 = (-101.018433f); + float2x4 b2 = float2x4(-283.951477f, -55.24353f, -455.80484f, 131.107239f, -461.6988f, -388.482849f, -258.936035f, -225.223541f); + bool2x4 r2 = bool2x4(false, true, false, true, false, false, false, false); + TestUtils.AreEqual(a2 <= b2, r2); + + float a3 = (-116.019989f); + float2x4 b3 = float2x4(-442.595245f, 297.333374f, 36.6872559f, 485.097839f, 344.445679f, 237.592163f, 230.390869f, -413.9848f); + bool2x4 r3 = bool2x4(false, true, true, true, true, true, true, false); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void float2x4_operator_greater_equal_wide_wide() + { + float2x4 a0 = float2x4(-386.5918f, -157.120789f, 391.015259f, -511.886871f, -5.42202759f, 287.645264f, -122.535187f, 7.48144531f); + float2x4 b0 = float2x4(153.443f, 49.8924561f, 78.02582f, 138.813721f, -225.51059f, -339.3561f, -373.302063f, 364.9359f); + bool2x4 r0 = bool2x4(false, false, true, false, true, true, true, false); + TestUtils.AreEqual(a0 >= b0, r0); + + float2x4 a1 = float2x4(152.946411f, 48.9862061f, 57.3381348f, 300.4649f, 349.25708f, 85.7496948f, -230.953308f, 418.711243f); + float2x4 b1 = float2x4(-322.7154f, 125.47821f, -25.77658f, 297.518921f, 73.22235f, 462.783752f, 393.191345f, -95.0014343f); + bool2x4 r1 = bool2x4(true, false, true, true, true, false, false, true); + TestUtils.AreEqual(a1 >= b1, r1); + + float2x4 a2 = float2x4(-131.039917f, -126.512207f, -156.818481f, 422.3775f, -413.089325f, 219.442749f, 35.5911255f, 447.181519f); + float2x4 b2 = float2x4(381.357056f, 93.03192f, 254.253235f, 90.67279f, 348.938171f, 161.337646f, 79.43561f, 420.243469f); + bool2x4 r2 = bool2x4(false, false, false, true, false, true, false, true); + TestUtils.AreEqual(a2 >= b2, r2); + + float2x4 a3 = float2x4(-223.492981f, 302.123f, 459.852722f, -347.128021f, 364.9781f, 212.635437f, 504.276062f, -142.232971f); + float2x4 b3 = float2x4(453.684875f, -154.011658f, -97.29007f, 151.184753f, 57.36029f, -194.207092f, -462.670624f, 113.3866f); + bool2x4 r3 = bool2x4(false, true, true, false, true, true, true, false); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void float2x4_operator_greater_equal_wide_scalar() + { + float2x4 a0 = float2x4(495.4574f, -14.3451233f, -463.4748f, 217.517517f, -246.865723f, -377.6587f, 53.8151245f, -123.332947f); + float b0 = (189.205139f); + bool2x4 r0 = bool2x4(true, false, false, true, false, false, false, false); + TestUtils.AreEqual(a0 >= b0, r0); + + float2x4 a1 = float2x4(-221.505463f, -116.440369f, -395.3633f, 164.772583f, -287.007324f, 355.837036f, 184.195557f, 273.012268f); + float b1 = (252.994324f); + bool2x4 r1 = bool2x4(false, false, false, false, false, true, false, true); + TestUtils.AreEqual(a1 >= b1, r1); + + float2x4 a2 = float2x4(-418.1424f, 396.392151f, 332.6654f, 243.761414f, -335.12146f, -302.0869f, 254.442261f, 179.005066f); + float b2 = (249.3841f); + bool2x4 r2 = bool2x4(false, true, true, false, false, false, true, false); + TestUtils.AreEqual(a2 >= b2, r2); + + float2x4 a3 = float2x4(71.1767f, 307.890564f, -388.578522f, 150.605774f, -219.892578f, -491.681f, 30.99707f, 199.232239f); + float b3 = (-331.271667f); + bool2x4 r3 = bool2x4(true, true, false, true, true, false, true, true); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void float2x4_operator_greater_equal_scalar_wide() + { + float a0 = (215.435364f); + float2x4 b0 = float2x4(204.802979f, -101.104034f, -122.055023f, -70.45615f, -239.62027f, -185.992737f, -455.612579f, 276.665833f); + bool2x4 r0 = bool2x4(true, true, true, true, true, true, true, false); + TestUtils.AreEqual(a0 >= b0, r0); + + float a1 = (79.39917f); + float2x4 b1 = float2x4(416.420532f, 379.2735f, -439.5147f, 67.14099f, -74.56064f, -367.256348f, 494.950745f, -61.2355347f); + bool2x4 r1 = bool2x4(false, false, true, true, true, true, false, true); + TestUtils.AreEqual(a1 >= b1, r1); + + float a2 = (-429.170258f); + float2x4 b2 = float2x4(-213.824677f, -264.310181f, 243.11377f, -22.38388f, 304.862f, -323.686157f, 67.93805f, 125.303589f); + bool2x4 r2 = bool2x4(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 >= b2, r2); + + float a3 = (-400.47052f); + float2x4 b3 = float2x4(-283.159637f, -42.31961f, -429.510376f, 499.395874f, -289.963074f, -136.008789f, -351.125244f, -381.8183f); + bool2x4 r3 = bool2x4(false, false, true, false, false, false, false, false); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void float2x4_operator_add_wide_wide() + { + float2x4 a0 = float2x4(465.148376f, 278.9107f, -277.5299f, -65.1972046f, -473.324371f, -4.69555664f, -470.536774f, -109.9501f); + float2x4 b0 = float2x4(483.9944f, -204.07666f, -365.673553f, -509.920868f, -270.6975f, 486.763977f, 267.49176f, 251.642517f); + float2x4 r0 = float2x4(949.142761f, 74.8340454f, -643.2035f, -575.118042f, -744.021851f, 482.06842f, -203.045013f, 141.692413f); + TestUtils.AreEqual(a0 + b0, r0); + + float2x4 a1 = float2x4(-178.701447f, -420.033783f, 290.711121f, -446.529633f, 491.066467f, -261.1173f, -298.4069f, 502.4286f); + float2x4 b1 = float2x4(244.495117f, -78.67575f, 352.2055f, 82.7791748f, 462.5473f, -405.492f, -428.498322f, -41.87259f); + float2x4 r1 = float2x4(65.79367f, -498.709534f, 642.9166f, -363.750458f, 953.6138f, -666.6093f, -726.9052f, 460.556f); + TestUtils.AreEqual(a1 + b1, r1); + + float2x4 a2 = float2x4(284.5943f, 401.128418f, -36.26349f, -102.949158f, 503.198181f, -384.4291f, -45.22821f, -198.67395f); + float2x4 b2 = float2x4(-269.9275f, 75.20447f, -141.913391f, -222.186768f, 41.3057251f, 148.339478f, -177.233124f, -176.51889f); + float2x4 r2 = float2x4(14.6668091f, 476.3329f, -178.17688f, -325.135925f, 544.5039f, -236.08963f, -222.461334f, -375.192841f); + TestUtils.AreEqual(a2 + b2, r2); + + float2x4 a3 = float2x4(-62.8800049f, -79.5522461f, 413.098267f, -100.877594f, 418.524f, -183.143127f, 407.443726f, 300.486023f); + float2x4 b3 = float2x4(492.692444f, 439.043823f, -511.742767f, -399.057129f, -315.868469f, -228.07724f, -171.7052f, 467.17395f); + float2x4 r3 = float2x4(429.812439f, 359.491577f, -98.6445f, -499.934723f, 102.655518f, -411.220367f, 235.738525f, 767.66f); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void float2x4_operator_add_wide_scalar() + { + float2x4 a0 = float2x4(459.898315f, -447.663361f, -94.43863f, 126.429871f, -36.254364f, -349.6413f, -2.79125977f, -478.4148f); + float b0 = (500.997253f); + float2x4 r0 = float2x4(960.895569f, 53.3338928f, 406.558624f, 627.4271f, 464.7429f, 151.355957f, 498.206f, 22.5824585f); + TestUtils.AreEqual(a0 + b0, r0); + + float2x4 a1 = float2x4(443.115234f, 41.3210449f, -471.256073f, -2.664978f, 78.98584f, 202.14801f, 311.725464f, 10.3458252f); + float b1 = (268.092224f); + float2x4 r1 = float2x4(711.207458f, 309.413269f, -203.163849f, 265.427246f, 347.078064f, 470.240234f, 579.8177f, 278.438049f); + TestUtils.AreEqual(a1 + b1, r1); + + float2x4 a2 = float2x4(-151.244446f, -197.800751f, 255.955261f, 244.1471f, -181.626556f, -2.45492554f, 300.900635f, -236.491943f); + float b2 = (355.2328f); + float2x4 r2 = float2x4(203.988342f, 157.432037f, 611.188049f, 599.3799f, 173.606232f, 352.777863f, 656.1334f, 118.740845f); + TestUtils.AreEqual(a2 + b2, r2); + + float2x4 a3 = float2x4(-160.5841f, -242.9411f, 466.344116f, 237.987488f, 264.294f, 372.866821f, -198.837769f, -381.930969f); + float b3 = (-172.5422f); + float2x4 r3 = float2x4(-333.1263f, -415.4833f, 293.8019f, 65.44528f, 91.7518f, 200.324615f, -371.379974f, -554.473145f); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void float2x4_operator_add_scalar_wide() + { + float a0 = (-325.512756f); + float2x4 b0 = float2x4(-264.088135f, -106.009247f, -355.4473f, -447.3303f, -158.7002f, -199.4837f, 180.318115f, 337.579346f); + float2x4 r0 = float2x4(-589.6009f, -431.522f, -680.9601f, -772.843f, -484.212952f, -524.99646f, -145.194641f, 12.0665894f); + TestUtils.AreEqual(a0 + b0, r0); + + float a1 = (-37.0550232f); + float2x4 b1 = float2x4(230.805f, -140.174347f, 18.02417f, -138.614349f, 26.9041748f, -374.5376f, 154.46759f, 268.38385f); + float2x4 r1 = float2x4(193.749969f, -177.22937f, -19.0308533f, -175.669373f, -10.1508484f, -411.592621f, 117.412567f, 231.328827f); + TestUtils.AreEqual(a1 + b1, r1); + + float a2 = (-190.963013f); + float2x4 b2 = float2x4(188.617249f, -504.916138f, 20.45404f, 197.945374f, 251.411926f, -421.0904f, 111.445374f, -73.26889f); + float2x4 r2 = float2x4(-2.34576416f, -695.87915f, -170.508972f, 6.982361f, 60.4489136f, -612.0534f, -79.51764f, -264.2319f); + TestUtils.AreEqual(a2 + b2, r2); + + float a3 = (480.884583f); + float2x4 b3 = float2x4(438.05304f, 66.8443f, -270.796021f, -44.02191f, 197.6947f, 19.1139526f, 349.2378f, 366.2345f); + float2x4 r3 = float2x4(918.9376f, 547.7289f, 210.088562f, 436.862671f, 678.5793f, 499.998535f, 830.1224f, 847.1191f); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void float2x4_operator_sub_wide_wide() + { + float2x4 a0 = float2x4(133.371033f, -131.832123f, -197.293152f, -485.28656f, -337.550323f, 471.6671f, 146.506592f, -130.585052f); + float2x4 b0 = float2x4(123.460266f, 359.56012f, -48.2484741f, 478.979065f, 207.158325f, 142.36731f, -125.6055f, -65.29901f); + float2x4 r0 = float2x4(9.910767f, -491.392242f, -149.044678f, -964.2656f, -544.7086f, 329.2998f, 272.1121f, -65.28604f); + TestUtils.AreEqual(a0 - b0, r0); + + float2x4 a1 = float2x4(110.7771f, -235.5416f, 78.87933f, -347.686157f, -470.820557f, -11.45929f, -167.9479f, 330.676758f); + float2x4 b1 = float2x4(-477.876434f, 164.5f, 428.009583f, 72.62781f, -446.8805f, 432.091431f, -225.554657f, -112.451965f); + float2x4 r1 = float2x4(588.653564f, -400.0416f, -349.130249f, -420.313965f, -23.9400635f, -443.55072f, 57.60675f, 443.128723f); + TestUtils.AreEqual(a1 - b1, r1); + + float2x4 a2 = float2x4(-508.350861f, -252.031891f, -427.9342f, 192.6576f, 168.429321f, 457.308777f, 470.058533f, -299.711884f); + float2x4 b2 = float2x4(-210.6128f, -172.925049f, -80.60748f, 270.046082f, -154.255585f, 148.475769f, 13.6611328f, 70.67108f); + float2x4 r2 = float2x4(-297.738068f, -79.10684f, -347.326721f, -77.38849f, 322.6849f, 308.833f, 456.3974f, -370.382965f); + TestUtils.AreEqual(a2 - b2, r2); + + float2x4 a3 = float2x4(-308.939575f, 454.5334f, 26.1069336f, -482.711823f, -40.8535461f, 318.380676f, 475.210815f, 134.926941f); + float2x4 b3 = float2x4(-221.325439f, -9.25882f, 288.173828f, 217.36145f, 307.540039f, -262.412659f, -405.378021f, 400.004333f); + float2x4 r3 = float2x4(-87.6141357f, 463.7922f, -262.0669f, -700.073242f, -348.3936f, 580.793335f, 880.588867f, -265.0774f); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void float2x4_operator_sub_wide_scalar() + { + float2x4 a0 = float2x4(48.9367065f, 410.4516f, -364.4417f, 163.980591f, -460.067322f, 110.919434f, 204.358337f, 180.269714f); + float b0 = (-291.5904f); + float2x4 r0 = float2x4(340.5271f, 702.042f, -72.85132f, 455.570984f, -168.476929f, 402.509827f, 495.94873f, 471.8601f); + TestUtils.AreEqual(a0 - b0, r0); + + float2x4 a1 = float2x4(-377.9257f, 400.5349f, 461.507568f, -246.287262f, 21.6052856f, 246.350708f, -121.427368f, -122.718414f); + float b1 = (-470.262054f); + float2x4 r1 = float2x4(92.3363647f, 870.797f, 931.769653f, 223.9748f, 491.86734f, 716.6128f, 348.8347f, 347.54364f); + TestUtils.AreEqual(a1 - b1, r1); + + float2x4 a2 = float2x4(-122.938721f, 342.874573f, 18.92981f, 164.602356f, 97.0437f, 485.914978f, -205.75766f, 253.443237f); + float b2 = (360.15094f); + float2x4 r2 = float2x4(-483.089661f, -17.2763672f, -341.22113f, -195.548584f, -263.107239f, 125.764038f, -565.908569f, -106.7077f); + TestUtils.AreEqual(a2 - b2, r2); + + float2x4 a3 = float2x4(-121.163055f, -450.820282f, -248.073364f, -26.9960632f, 441.5526f, 449.910583f, 354.886047f, 98.82147f); + float b3 = (187.998413f); + float2x4 r3 = float2x4(-309.161469f, -638.8187f, -436.071777f, -214.994476f, 253.5542f, 261.91217f, 166.887634f, -89.17694f); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void float2x4_operator_sub_scalar_wide() + { + float a0 = (294.5865f); + float2x4 b0 = float2x4(452.352539f, 256.9898f, -275.159882f, -89.02753f, 488.2284f, -333.2173f, -64.233f, -66.04172f); + float2x4 r0 = float2x4(-157.766052f, 37.59668f, 569.746338f, 383.614f, -193.6419f, 627.8038f, 358.8195f, 360.6282f); + TestUtils.AreEqual(a0 - b0, r0); + + float a1 = (341.204956f); + float2x4 b1 = float2x4(-385.775055f, 75.3947754f, 354.943726f, 169.131409f, 88.21661f, 1.73498535f, 122.538025f, -264.945f); + float2x4 r1 = float2x4(726.98f, 265.810181f, -13.73877f, 172.073547f, 252.988342f, 339.469971f, 218.666931f, 606.149963f); + TestUtils.AreEqual(a1 - b1, r1); + + float a2 = (-50.83719f); + float2x4 b2 = float2x4(-347.65033f, 4.06555176f, -79.09543f, 354.358337f, -292.4925f, -53.2089844f, -246.3476f, 299.203369f); + float2x4 r2 = float2x4(296.813141f, -54.90274f, 28.25824f, -405.195526f, 241.6553f, 2.37179565f, 195.5104f, -350.040558f); + TestUtils.AreEqual(a2 - b2, r2); + + float a3 = (432.1847f); + float2x4 b3 = float2x4(-163.88f, 176.742554f, -104.98584f, -445.797638f, -28.8731689f, -169.588226f, -270.359253f, 68.04761f); + float2x4 r3 = float2x4(596.0647f, 255.442139f, 537.170532f, 877.9823f, 461.057861f, 601.772949f, 702.543945f, 364.1371f); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void float2x4_operator_mul_wide_wide() + { + float2x4 a0 = float2x4(-394.780548f, -412.3722f, -25.8745728f, -241.045959f, -93.6759949f, 244.159973f, 494.688477f, 53.5379639f); + float2x4 b0 = float2x4(-149.763977f, -345.04538f, -284.334045f, 267.979248f, -326.6485f, -150.689667f, 207.732422f, 366.192871f); + float2x4 r0 = float2x4(59123.9063f, 142287.125f, 7357.022f, -64595.3164f, 30599.123f, -36792.3867f, 102762.836f, 19605.22f); + TestUtils.AreEqual(a0 * b0, r0); + + float2x4 a1 = float2x4(-239.4964f, 236.675842f, -211.8562f, -216.654816f, 467.9583f, -178.021912f, -386.394257f, -422.4354f); + float2x4 b1 = float2x4(358.880737f, 214.853577f, 253.422791f, -307.7138f, 184.47113f, 426.436462f, -144.281433f, 459.4796f); + float2x4 r1 = float2x4(-85950.64f, 50850.6523f, -53689.19f, 66667.68f, 86324.8f, -75915.03f, 55749.5156f, -194100.453f); + TestUtils.AreEqual(a1 * b1, r1); + + float2x4 a2 = float2x4(464.589539f, -251.315674f, -104.97879f, -66.93417f, -39.829895f, 401.5656f, 434.146179f, -336.4542f); + float2x4 b2 = float2x4(-358.313354f, -201.3652f, 254.909973f, 168.520935f, 8.794556f, -194.846466f, -405.362671f, -180.732178f); + float2x4 r2 = float2x4(-166468.641f, 50606.23f, -26760.14f, -11279.81f, -350.286224f, -78243.64f, -175986.656f, 60808.0977f); + TestUtils.AreEqual(a2 * b2, r2); + + float2x4 a3 = float2x4(-83.11417f, 329.960266f, -316.972168f, 474.937927f, -445.109161f, -301.003723f, 405.687866f, 142.373474f); + float2x4 b3 = float2x4(-189.746918f, -35.5184631f, 120.31665f, -136.203339f, 407.3416f, 301.6543f, -155.482391f, -461.394562f); + float2x4 r3 = float2x4(15770.6572f, -11719.6816f, -38137.03f, -64688.1328f, -181311.484f, -90799.07f, -63077.32f, -65690.34f); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void float2x4_operator_mul_wide_scalar() + { + float2x4 a0 = float2x4(328.203f, -290.10672f, 236.995728f, 120.481384f, 357.903137f, 134.867249f, -477.3105f, -438.272919f); + float b0 = (192.211182f); + float2x4 r0 = float2x4(63084.2852f, -55761.7539f, 45553.23f, 23157.87f, 68792.9844f, 25922.9941f, -91744.4141f, -84240.95f); + TestUtils.AreEqual(a0 * b0, r0); + + float2x4 a1 = float2x4(-46.729187f, 422.08252f, -48.83484f, 355.30835f, 119.356628f, -196.995819f, 98.23602f, -325.552155f); + float b1 = (-238.405f); + float2x4 r1 = float2x4(11140.4717f, -100626.586f, 11642.47f, -84707.29f, -28455.2168f, 46964.79f, -23419.959f, 77613.26f); + TestUtils.AreEqual(a1 * b1, r1); + + float2x4 a2 = float2x4(53.9373169f, -130.474121f, -222.594574f, 126.015015f, 293.361084f, 174.381958f, -327.120056f, 56.62915f); + float b2 = (-87.45099f); + float2x4 r2 = float2x4(-4716.87158f, 11410.0908f, 19466.1152f, -11020.1377f, -25654.7168f, -15249.875f, 28606.9727f, -4952.27539f); + TestUtils.AreEqual(a2 * b2, r2); + + float2x4 a3 = float2x4(257.541565f, -452.6919f, -49.22061f, 141.600952f, 431.5857f, 180.355164f, -40.9234619f, 279.543518f); + float b3 = (-475.6087f); + float2x4 r3 = float2x4(-122489.008f, 215304.2f, 23409.752f, -67346.65f, -205265.9f, -85778.4844f, 19463.5547f, -132953.328f); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void float2x4_operator_mul_scalar_wide() + { + float a0 = (-464.5347f); + float2x4 b0 = float2x4(329.360962f, -198.683441f, 184.0794f, 256.016174f, 266.226318f, -97.8947449f, 159.748108f, -351.8222f); + float2x4 r0 = float2x4(-152999.6f, 92295.35f, -85511.27f, -118928.4f, -123671.359f, 45475.5039f, -74208.54f, 163433.625f); + TestUtils.AreEqual(a0 * b0, r0); + + float a1 = (491.801575f); + float2x4 b1 = float2x4(49.90204f, 424.4626f, 160.1181f, -395.9921f, 125.20166f, -265.0158f, 314.656128f, -292.712036f); + float2x4 r1 = float2x4(24541.9f, 208751.375f, 78746.3359f, -194749.531f, 61574.375f, -130335.195f, 154748.375f, -143956.234f); + TestUtils.AreEqual(a1 * b1, r1); + + float a2 = (-37.72989f); + float2x4 b2 = float2x4(165.362244f, 356.517761f, -188.813324f, 504.9157f, 40.5721436f, -206.775116f, -61.60269f, 118.971619f); + float2x4 r2 = float2x4(-6239.099f, -13451.376f, 7123.906f, -19050.4141f, -1530.78247f, 7801.602f, 2324.2627f, -4488.786f); + TestUtils.AreEqual(a2 * b2, r2); + + float a3 = (53.7483521f); + float2x4 b3 = float2x4(-198.6694f, 96.236084f, -20.2418823f, -31.1239624f, 38.89044f, -13.1333008f, 507.871277f, 95.0179443f); + float2x4 r3 = float2x4(-10678.1533f, 5172.531f, -1087.96777f, -1672.86169f, 2090.297f, -705.89325f, 27297.2441f, 5107.058f); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void float2x4_operator_div_wide_wide() + { + float2x4 a0 = float2x4(246.265747f, -269.85614f, -451.619537f, -7.388489f, -308.205566f, -373.3948f, 360.41864f, 25.8097534f); + float2x4 b0 = float2x4(172.119812f, -77.14111f, -325.8354f, -450.608673f, -261.262146f, -122.449493f, -93.2107849f, -442.005219f); + float2x4 r0 = float2x4(1.43078089f, 3.49821424f, 1.38603592f, 0.0163966864f, 1.17967939f, 3.04937816f, -3.86670542f, -0.0583924167f); + TestUtils.AreEqual(a0 / b0, r0); + + float2x4 a1 = float2x4(-274.050476f, 127.538574f, -447.671753f, -137.458588f, -136.133179f, 12.4376221f, 228.513f, 356.972351f); + float2x4 b1 = float2x4(484.362732f, -390.7818f, 402.02533f, 316.6507f, 397.154419f, -303.2622f, -118.591248f, -81.6503f); + float2x4 r1 = float2x4(-0.565795958f, -0.326367736f, -1.11354113f, -0.434101641f, -0.3427714f, -0.0410127677f, -1.926896f, -4.37196636f); + TestUtils.AreEqual(a1 / b1, r1); + + float2x4 a2 = float2x4(-24.7620544f, 411.6684f, -204.078888f, 11.3654175f, 82.15228f, 37.3894653f, 394.2658f, -429.912781f); + float2x4 b2 = float2x4(-84.34686f, -488.419434f, 404.160522f, -136.728851f, -19.8327026f, -102.607239f, 166.116028f, -112.840179f); + float2x4 r2 = float2x4(0.2935741f, -0.8428584f, -0.504945159f, -0.0831237659f, -4.14226341f, -0.364394039f, 2.37343621f, 3.80992651f); + TestUtils.AreEqual(a2 / b2, r2); + + float2x4 a3 = float2x4(315.37384f, -122.665985f, 447.526123f, -210.4815f, -202.42157f, -453.007935f, 173.72699f, -167.121674f); + float2x4 b3 = float2x4(-218.209686f, 458.517517f, 119.587219f, 356.240417f, -74.50687f, -336.773926f, -216.126312f, 322.385681f); + float2x4 r3 = float2x4(-1.44527888f, -0.267527372f, 3.742257f, -0.5908412f, 2.71681762f, 1.34513962f, -0.803821564f, -0.5183905f); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void float2x4_operator_div_wide_scalar() + { + float2x4 a0 = float2x4(-244.517456f, 69.1123047f, -333.023132f, 257.396851f, 403.2456f, 154.34436f, 131.526611f, -261.8864f); + float b0 = (-60.0243835f); + float2x4 r0 = float2x4(4.07363558f, -1.15140378f, 5.548131f, -4.28820467f, -6.71803f, -2.571361f, -2.19121981f, 4.36300039f); + TestUtils.AreEqual(a0 / b0, r0); + + float2x4 a1 = float2x4(-348.9238f, 210.557922f, 287.6424f, 504.372253f, 491.7871f, -26.6315918f, -253.236664f, 272.895142f); + float b1 = (-275.5387f); + float2x4 r1 = float2x4(1.26633322f, -0.764168262f, -1.04392743f, -1.83049512f, -1.78482044f, 0.09665282f, 0.91906023f, -0.990405858f); + TestUtils.AreEqual(a1 / b1, r1); + + float2x4 a2 = float2x4(178.096191f, -502.646027f, -84.3248f, -174.690338f, 83.7963257f, 197.042053f, 317.168274f, 403.387146f); + float b2 = (-460.87558f); + float2x4 r2 = float2x4(-0.386430085f, 1.0906328f, 0.182966515f, 0.379040122f, -0.181819841f, -0.427538484f, -0.688186347f, -0.875262558f); + TestUtils.AreEqual(a2 / b2, r2); + + float2x4 a3 = float2x4(81.6464844f, -413.5605f, 207.341f, 358.562134f, 20.7490845f, -68.57712f, 310.702454f, 417.4049f); + float b3 = (60.6068726f); + float2x4 r3 = float2x4(1.3471489f, -6.82365656f, 3.42108083f, 5.916196f, 0.3423553f, -1.13150728f, 5.12652159f, 6.887089f); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void float2x4_operator_div_scalar_wide() + { + float a0 = (41.73767f); + float2x4 b0 = float2x4(-422.676147f, 248.129639f, 449.391357f, 245.858154f, -326.6206f, 163.715088f, 333.6645f, 38.2910767f); + float2x4 r0 = float2x4(-0.09874622f, 0.168209136f, 0.0928759947f, 0.169763222f, -0.1277864f, 0.2549409f, 0.125088736f, 1.0900104f); + TestUtils.AreEqual(a0 / b0, r0); + + float a1 = (-472.979767f); + float2x4 b1 = float2x4(192.230164f, -200.296875f, -490.181519f, -211.10257f, -322.852356f, -137.985291f, 84.32971f, 355.063477f); + float2x4 r1 = float2x4(-2.46048665f, 2.36139369f, 0.9649074f, 2.24052119f, 1.46500325f, 3.42775488f, -5.60869646f, -1.3320992f); + TestUtils.AreEqual(a1 / b1, r1); + + float a2 = (276.427246f); + float2x4 b2 = float2x4(-382.988037f, -488.647156f, 344.846f, 168.85498f, -44.1955872f, 420.55072f, -175.6152f, -9.220581f); + float2x4 r2 = float2x4(-0.7217647f, -0.5656991f, 0.801596165f, 1.637069f, -6.25463438f, 0.6572982f, -1.57405078f, -29.9793739f); + TestUtils.AreEqual(a2 / b2, r2); + + float a3 = (-344.194275f); + float2x4 b3 = float2x4(-449.0715f, 117.704895f, -337.0274f, 239.393433f, -389.355164f, 242.716064f, 496.2765f, 91.74579f); + float2x4 r3 = float2x4(0.7664576f, -2.924214f, 1.02126491f, -1.43777657f, 0.8840111f, -1.41809428f, -0.693553448f, -3.75160837f); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void float2x4_operator_mod_wide_wide() + { + float2x4 a0 = float2x4(-442.309875f, 368.5005f, -1.09390259f, -364.673828f, -197.343933f, -34.0349121f, -101.348572f, 208.318542f); + float2x4 b0 = float2x4(-43.2450562f, -144.195862f, -62.6404724f, -336.828247f, -154.61026f, -154.029358f, 487.0462f, -469.8291f); + float2x4 r0 = float2x4(-9.859314f, 80.1087646f, -1.09390259f, -27.8455811f, -42.7336731f, -34.0349121f, -101.348572f, 208.318542f); + TestUtils.AreEqual(a0 % b0, r0); + + float2x4 a1 = float2x4(-140.770325f, 183.44696f, -463.368378f, 83.83911f, -64.71405f, 295.066833f, 212.25708f, 349.6283f); + float2x4 b1 = float2x4(-145.203766f, -203.384f, -22.52008f, 224.69f, -435.62674f, 12.0955811f, 40.3787842f, 345.784851f); + float2x4 r1 = float2x4(-140.770325f, 183.44696f, -12.9667664f, 83.83911f, -64.71405f, 4.772888f, 10.3631592f, 3.84344482f); + TestUtils.AreEqual(a1 % b1, r1); + + float2x4 a2 = float2x4(119.875916f, -37.8058167f, 142.41156f, 332.244263f, -464.194275f, -296.147827f, 225.175354f, -212.060272f); + float2x4 b2 = float2x4(-433.471252f, -355.649963f, 4.015442f, 66.65979f, -221.853638f, -355.056763f, 357.935974f, 71.3753052f); + float2x4 r2 = float2x4(119.875916f, -37.8058167f, 1.87109375f, 65.6051f, -20.487f, -296.147827f, 225.175354f, -69.30966f); + TestUtils.AreEqual(a2 % b2, r2); + + float2x4 a3 = float2x4(156.985718f, 507.6183f, 270.830444f, 337.7343f, 384.915833f, 432.5182f, 154.292725f, -37.0853271f); + float2x4 b3 = float2x4(-131.4183f, -473.9876f, 76.2178345f, 92.2102051f, -368.189575f, -77.46716f, 135.230591f, 274.277283f); + float2x4 r3 = float2x4(25.5674133f, 33.6306763f, 42.17694f, 61.1037f, 16.7262573f, 45.182373f, 19.0621338f, -37.0853271f); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void float2x4_operator_mod_wide_scalar() + { + float2x4 a0 = float2x4(-433.417f, -5.51412964f, 393.3944f, 299.41156f, -120.80603f, -502.939026f, -450.807678f, 186.094788f); + float b0 = (-90.49924f); + float2x4 r0 = float2x4(-71.4200439f, -5.51412964f, 31.39746f, 27.9138489f, -30.3067932f, -50.44284f, -88.81073f, 5.09631348f); + TestUtils.AreEqual(a0 % b0, r0); + + float2x4 a1 = float2x4(-84.47363f, 433.4547f, -54.60019f, -172.338867f, -429.714661f, 222.361877f, 5.79638672f, 254.5108f); + float b1 = (-318.7815f); + float2x4 r1 = float2x4(-84.47363f, 114.673218f, -54.60019f, -172.338867f, -110.933167f, 222.361877f, 5.79638672f, 254.5108f); + TestUtils.AreEqual(a1 % b1, r1); + + float2x4 a2 = float2x4(-433.0937f, -75.3564148f, 252.289124f, -69.4039f, 5.337219f, -279.060425f, 483.5506f, -331.993347f); + float b2 = (-203.082611f); + float2x4 r2 = float2x4(-26.9284668f, -75.3564148f, 49.2065125f, -69.4039f, 5.337219f, -75.97781f, 77.385376f, -128.910736f); + TestUtils.AreEqual(a2 % b2, r2); + + float2x4 a3 = float2x4(336f, -124.720764f, 38.1759033f, 271.287f, 405.773621f, -194.761444f, 235.724f, 465.984863f); + float b3 = (67.8396f); + float2x4 r3 = float2x4(64.6416f, -56.8811646f, 38.1759033f, 67.76819f, 66.57562f, -59.0822449f, 32.2052f, 58.9472656f); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void float2x4_operator_mod_scalar_wide() + { + float a0 = (-396.4224f); + float2x4 b0 = float2x4(-159.140259f, 230.17334f, 14.7793579f, -303.1565f, 399.635f, 206.6947f, 397.0448f, -393.890656f); + float2x4 r0 = float2x4(-78.14188f, -166.249054f, -12.1590881f, -93.2659f, -396.4224f, -189.727692f, -396.4224f, -2.53173828f); + TestUtils.AreEqual(a0 % b0, r0); + + float a1 = (-372.067078f); + float2x4 b1 = float2x4(201.012268f, -95.566864f, -258.951477f, 106.983582f, 469.323547f, -34.80899f, 184.836548f, 374.79425f); + float2x4 r1 = float2x4(-171.05481f, -85.3664856f, -113.1156f, -51.116333f, -372.067078f, -23.9771729f, -2.393982f, -372.067078f); + TestUtils.AreEqual(a1 % b1, r1); + + float a2 = (-131.872711f); + float2x4 b2 = float2x4(-120.092865f, 4.506653f, -111.401947f, 391.54248f, -218.668884f, 196.377441f, -511.032623f, 499.9535f); + float2x4 r2 = float2x4(-11.7798462f, -1.179779f, -20.4707642f, -131.872711f, -131.872711f, -131.872711f, -131.872711f, -131.872711f); + TestUtils.AreEqual(a2 % b2, r2); + + float a3 = (-433.523071f); + float2x4 b3 = float2x4(-163.866852f, 177.004028f, 110.650146f, 17.68457f, -95.85297f, -432.440979f, 192.692078f, -268.131775f); + float2x4 r3 = float2x4(-105.789368f, -79.5150146f, -101.572632f, -9.093384f, -50.1112061f, -1.08209229f, -48.138916f, -165.3913f); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void float2x4_operator_plus() + { + float2x4 a0 = float2x4(271.670837f, -79.08023f, -330.985046f, 31.824707f, 315.449524f, 319.222168f, 190.324646f, -350.3086f); + float2x4 r0 = float2x4(271.670837f, -79.08023f, -330.985046f, 31.824707f, 315.449524f, 319.222168f, 190.324646f, -350.3086f); + TestUtils.AreEqual(+a0, r0); + + float2x4 a1 = float2x4(-320.518463f, -107.00351f, -428.7762f, 377.230164f, 234.773926f, 34.28363f, 258.330383f, 465.355957f); + float2x4 r1 = float2x4(-320.518463f, -107.00351f, -428.7762f, 377.230164f, 234.773926f, 34.28363f, 258.330383f, 465.355957f); + TestUtils.AreEqual(+a1, r1); + + float2x4 a2 = float2x4(309.59314f, -230.052673f, 301.7851f, 2.58575439f, 350.2464f, 60.8197632f, -472.4421f, -364.802551f); + float2x4 r2 = float2x4(309.59314f, -230.052673f, 301.7851f, 2.58575439f, 350.2464f, 60.8197632f, -472.4421f, -364.802551f); + TestUtils.AreEqual(+a2, r2); + + float2x4 a3 = float2x4(239.152344f, 285.80896f, -273.2638f, -206.686371f, -113.362305f, -351.754883f, -116.536224f, -496.053284f); + float2x4 r3 = float2x4(239.152344f, 285.80896f, -273.2638f, -206.686371f, -113.362305f, -351.754883f, -116.536224f, -496.053284f); + TestUtils.AreEqual(+a3, r3); + } + + [TestCompiler] + public static void float2x4_operator_neg() + { + float2x4 a0 = float2x4(420.227173f, -196.2575f, -335.426819f, 509.04364f, -33.0144043f, -498.575317f, -495.837952f, -270.859467f); + float2x4 r0 = float2x4(-420.227173f, 196.2575f, 335.426819f, -509.04364f, 33.0144043f, 498.575317f, 495.837952f, 270.859467f); + TestUtils.AreEqual(-a0, r0); + + float2x4 a1 = float2x4(19.68689f, -180.600525f, 223.381287f, -410.392059f, -395.681549f, -349.149475f, -110.9393f, -238.2196f); + float2x4 r1 = float2x4(-19.68689f, 180.600525f, -223.381287f, 410.392059f, 395.681549f, 349.149475f, 110.9393f, 238.2196f); + TestUtils.AreEqual(-a1, r1); + + float2x4 a2 = float2x4(292.543518f, 48.29071f, 88.7237549f, 66.1485f, 55.7080078f, 464.541382f, 499.2428f, 175.015015f); + float2x4 r2 = float2x4(-292.543518f, -48.29071f, -88.7237549f, -66.1485f, -55.7080078f, -464.541382f, -499.2428f, -175.015015f); + TestUtils.AreEqual(-a2, r2); + + float2x4 a3 = float2x4(196.387573f, 149.660034f, 320.391724f, -359.8338f, 22.0384521f, -159.55426f, 419.822449f, 303.323425f); + float2x4 r3 = float2x4(-196.387573f, -149.660034f, -320.391724f, 359.8338f, -22.0384521f, 159.55426f, -419.822449f, -303.323425f); + TestUtils.AreEqual(-a3, r3); + } + + [TestCompiler] + public static void float2x4_operator_prefix_inc() + { + float2x4 a0 = float2x4(-99.79556f, 458.741821f, 96.1790161f, -48.55246f, -315.728973f, -299.230164f, -323.614868f, -456.8903f); + float2x4 r0 = float2x4(-98.79556f, 459.741821f, 97.1790161f, -47.55246f, -314.728973f, -298.230164f, -322.614868f, -455.8903f); + TestUtils.AreEqual(++a0, r0); + + float2x4 a1 = float2x4(-76.50766f, 64.0965f, 148.679321f, 363.2849f, -115.559235f, -326.8778f, -179.894653f, 339.8766f); + float2x4 r1 = float2x4(-75.50766f, 65.0965f, 149.679321f, 364.2849f, -114.559235f, -325.8778f, -178.894653f, 340.8766f); + TestUtils.AreEqual(++a1, r1); + + float2x4 a2 = float2x4(-38.41043f, 261.625549f, 155.030823f, -396.650238f, 301.3058f, -221.355408f, -429.698151f, -271.2893f); + float2x4 r2 = float2x4(-37.41043f, 262.625549f, 156.030823f, -395.650238f, 302.3058f, -220.355408f, -428.698151f, -270.2893f); + TestUtils.AreEqual(++a2, r2); + + float2x4 a3 = float2x4(-264.380066f, 223.232422f, -71.076355f, -388.2279f, 131.283142f, 22.3049316f, -480.760468f, 200.951782f); + float2x4 r3 = float2x4(-263.380066f, 224.232422f, -70.076355f, -387.2279f, 132.283142f, 23.3049316f, -479.760468f, 201.951782f); + TestUtils.AreEqual(++a3, r3); + } + + [TestCompiler] + public static void float2x4_operator_postfix_inc() + { + float2x4 a0 = float2x4(322.943542f, 472.0525f, 203.48761f, -49.8545837f, -31.4205322f, 455.3366f, 271.454651f, 55.7368774f); + float2x4 r0 = float2x4(322.943542f, 472.0525f, 203.48761f, -49.8545837f, -31.4205322f, 455.3366f, 271.454651f, 55.7368774f); + TestUtils.AreEqual(a0++, r0); + + float2x4 a1 = float2x4(153.7503f, -427.401062f, 215.110229f, 159.861023f, -333.050446f, 241.4649f, 287.220459f, -170.104645f); + float2x4 r1 = float2x4(153.7503f, -427.401062f, 215.110229f, 159.861023f, -333.050446f, 241.4649f, 287.220459f, -170.104645f); + TestUtils.AreEqual(a1++, r1); + + float2x4 a2 = float2x4(-270.652466f, 454.488831f, -449.9273f, 209.522644f, -311.435852f, 69.7314453f, -232.299652f, -341.498535f); + float2x4 r2 = float2x4(-270.652466f, 454.488831f, -449.9273f, 209.522644f, -311.435852f, 69.7314453f, -232.299652f, -341.498535f); + TestUtils.AreEqual(a2++, r2); + + float2x4 a3 = float2x4(188.006592f, 25.5656738f, -463.725647f, 504.448975f, -310.144958f, -117.398468f, 403.508728f, -111.279541f); + float2x4 r3 = float2x4(188.006592f, 25.5656738f, -463.725647f, 504.448975f, -310.144958f, -117.398468f, 403.508728f, -111.279541f); + TestUtils.AreEqual(a3++, r3); + } + + [TestCompiler] + public static void float2x4_operator_prefix_dec() + { + float2x4 a0 = float2x4(-416.201233f, -96.63788f, -50.14566f, -207.316437f, 439.479065f, -304.400818f, 337.968933f, 246.088989f); + float2x4 r0 = float2x4(-417.201233f, -97.63788f, -51.14566f, -208.316437f, 438.479065f, -305.400818f, 336.968933f, 245.088989f); + TestUtils.AreEqual(--a0, r0); + + float2x4 a1 = float2x4(171.964539f, 298.2848f, 326.5078f, 400.7209f, -478.031372f, -326.452972f, -24.5845032f, 112.796875f); + float2x4 r1 = float2x4(170.964539f, 297.2848f, 325.5078f, 399.7209f, -479.031372f, -327.452972f, -25.5845032f, 111.796875f); + TestUtils.AreEqual(--a1, r1); + + float2x4 a2 = float2x4(-341.9763f, -79.6352539f, -131.00415f, 147.893677f, -15.7086487f, 188.758423f, 307.791931f, -406.667725f); + float2x4 r2 = float2x4(-342.9763f, -80.6352539f, -132.00415f, 146.893677f, -16.7086487f, 187.758423f, 306.791931f, -407.667725f); + TestUtils.AreEqual(--a2, r2); + + float2x4 a3 = float2x4(181.4751f, -505.2157f, -372.241943f, -4.031769f, 83.76776f, -30.6314087f, -436.906555f, -51.668396f); + float2x4 r3 = float2x4(180.4751f, -506.2157f, -373.241943f, -5.031769f, 82.76776f, -31.6314087f, -437.906555f, -52.668396f); + TestUtils.AreEqual(--a3, r3); + } + + [TestCompiler] + public static void float2x4_operator_postfix_dec() + { + float2x4 a0 = float2x4(-376.5924f, 16.9697266f, -0.2506714f, -202.323273f, 409.557556f, 47.85663f, -281.1117f, -262.0626f); + float2x4 r0 = float2x4(-376.5924f, 16.9697266f, -0.2506714f, -202.323273f, 409.557556f, 47.85663f, -281.1117f, -262.0626f); + TestUtils.AreEqual(a0--, r0); + + float2x4 a1 = float2x4(-182.405731f, -129.232666f, -332.154968f, -261.0089f, 205.461121f, -230.227783f, -483.066528f, 378.641235f); + float2x4 r1 = float2x4(-182.405731f, -129.232666f, -332.154968f, -261.0089f, 205.461121f, -230.227783f, -483.066528f, 378.641235f); + TestUtils.AreEqual(a1--, r1); + + float2x4 a2 = float2x4(487.344849f, -357.0542f, -396.302063f, 279.424255f, 115.867737f, -20.8232117f, 323.4054f, 379.156128f); + float2x4 r2 = float2x4(487.344849f, -357.0542f, -396.302063f, 279.424255f, 115.867737f, -20.8232117f, 323.4054f, 379.156128f); + TestUtils.AreEqual(a2--, r2); + + float2x4 a3 = float2x4(311.299f, -428.2567f, -425.2884f, -194.6413f, -258.848358f, -208.985779f, -313.4259f, 178.3125f); + float2x4 r3 = float2x4(311.299f, -428.2567f, -425.2884f, -194.6413f, -258.848358f, -208.985779f, -313.4259f, 178.3125f); + TestUtils.AreEqual(a3--, r3); + } + + + } +} diff --git a/package/Tests/Tests/Shared/TestFloat2x4.gen.cs.meta b/package/Tests/Tests/Shared/TestFloat2x4.gen.cs.meta new file mode 100755 index 000000000..6568ff0ca --- /dev/null +++ b/package/Tests/Tests/Shared/TestFloat2x4.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b3517a3babe572246a5b80234b2f8a4b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/package/Tests/Tests/Shared/TestFloat3.gen.cs b/package/Tests/Tests/Shared/TestFloat3.gen.cs new file mode 100755 index 000000000..a3e6ac3e0 --- /dev/null +++ b/package/Tests/Tests/Shared/TestFloat3.gen.cs @@ -0,0 +1,1062 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using NUnit.Framework; +using static Unity.Mathematics.math; +using Burst.Compiler.IL.Tests; + +namespace Unity.Mathematics.Tests +{ + [TestFixture] + public class TestFloat3 + { + [TestCompiler] + public static void float3_zero() + { + TestUtils.AreEqual(float3.zero.x, 0.0f); + TestUtils.AreEqual(float3.zero.y, 0.0f); + TestUtils.AreEqual(float3.zero.z, 0.0f); + } + + [TestCompiler] + public static void float3_constructor() + { + float3 a = new float3(1, 2, 3); + TestUtils.AreEqual(a.x, 1); + TestUtils.AreEqual(a.y, 2); + TestUtils.AreEqual(a.z, 3); + } + + [TestCompiler] + public static void float3_scalar_constructor() + { + float3 a = new float3(17.0f); + TestUtils.AreEqual(a.x, 17.0f); + TestUtils.AreEqual(a.y, 17.0f); + TestUtils.AreEqual(a.z, 17.0f); + } + + [TestCompiler] + public static void float3_static_constructor() + { + float3 a = float3(1, 2, 3); + TestUtils.AreEqual(a.x, 1); + TestUtils.AreEqual(a.y, 2); + TestUtils.AreEqual(a.z, 3); + } + + [TestCompiler] + public static void float3_static_scalar_constructor() + { + float3 a = float3(17.0f); + TestUtils.AreEqual(a.x, 17.0f); + TestUtils.AreEqual(a.y, 17.0f); + TestUtils.AreEqual(a.z, 17.0f); + } + + [TestCompiler] + public static void float3_operator_equal_wide_wide() + { + float3 a0 = float3(-135.18924f, -49.0941162f, 169.129822f); + float3 b0 = float3(-220.014648f, 66.98004f, 499.2016f); + bool3 r0 = bool3(false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + float3 a1 = float3(240.8053f, 314.7392f, 442.393f); + float3 b1 = float3(-371.1131f, 208.448669f, 390.8037f); + bool3 r1 = bool3(false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + float3 a2 = float3(177.924438f, 335.5334f, 168.15448f); + float3 b2 = float3(-72.44382f, 362.97644f, 194.678345f); + bool3 r2 = bool3(false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + float3 a3 = float3(350.729553f, 367.178467f, 46.9414673f); + float3 b3 = float3(471.644836f, -404.044678f, -144.696747f); + bool3 r3 = bool3(false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void float3_operator_equal_wide_scalar() + { + float3 a0 = float3(65.6712f, 404.415527f, -269.730164f); + float b0 = (-155.815765f); + bool3 r0 = bool3(false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + float3 a1 = float3(83.6306152f, -155.868286f, 314.671265f); + float b1 = (152.9945f); + bool3 r1 = bool3(false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + float3 a2 = float3(386.365173f, -132.6352f, -65.66748f); + float b2 = (290.04895f); + bool3 r2 = bool3(false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + float3 a3 = float3(-69.68326f, 186.845215f, -232.895691f); + float b3 = (-191.190765f); + bool3 r3 = bool3(false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void float3_operator_equal_scalar_wide() + { + float a0 = (36.38391f); + float3 b0 = float3(-400.4892f, -71.2868347f, 156.978088f); + bool3 r0 = bool3(false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + float a1 = (-225.238739f); + float3 b1 = float3(499.141785f, -211.979919f, 428.311951f); + bool3 r1 = bool3(false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + float a2 = (-489.501343f); + float3 b2 = float3(-5.691559f, -30.8659363f, -362.9831f); + bool3 r2 = bool3(false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + float a3 = (184.503174f); + float3 b3 = float3(-160.470612f, 316.668823f, 390.369263f); + bool3 r3 = bool3(false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void float3_operator_not_equal_wide_wide() + { + float3 a0 = float3(279.994141f, -43.34201f, -465.724731f); + float3 b0 = float3(-460.9121f, -476.009033f, 468.1364f); + bool3 r0 = bool3(true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + float3 a1 = float3(317.466553f, 85.7149658f, 360.8905f); + float3 b1 = float3(-341.012543f, -62.65805f, -458.801666f); + bool3 r1 = bool3(true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + float3 a2 = float3(366.081543f, 154.542847f, 332.4262f); + float3 b2 = float3(-457.730225f, -59.5232544f, 3.024231f); + bool3 r2 = bool3(true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + float3 a3 = float3(397.11322f, -431.374969f, 489.0108f); + float3 b3 = float3(155.812744f, -19.8399048f, -6.01693726f); + bool3 r3 = bool3(true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void float3_operator_not_equal_wide_scalar() + { + float3 a0 = float3(-155.4411f, -19.4266052f, 174.633057f); + float b0 = (-393.413544f); + bool3 r0 = bool3(true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + float3 a1 = float3(507.920715f, 171.151489f, -58.92328f); + float b1 = (59.177063f); + bool3 r1 = bool3(true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + float3 a2 = float3(-398.176849f, -165.241516f, 270.341f); + float b2 = (492.20105f); + bool3 r2 = bool3(true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + float3 a3 = float3(-380.243256f, -134.345459f, 458.400452f); + float b3 = (501.899048f); + bool3 r3 = bool3(true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void float3_operator_not_equal_scalar_wide() + { + float a0 = (478.353149f); + float3 b0 = float3(459.553223f, 436.453247f, -488.714172f); + bool3 r0 = bool3(true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + float a1 = (392.767944f); + float3 b1 = float3(-266.736633f, 338.557861f, -338.100128f); + bool3 r1 = bool3(true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + float a2 = (-152.314545f); + float3 b2 = float3(-452.820679f, 209.439331f, 50.10797f); + bool3 r2 = bool3(true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + float a3 = (372.4344f); + float3 b3 = float3(-488.0213f, 489.740784f, 270.4001f); + bool3 r3 = bool3(true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void float3_operator_less_wide_wide() + { + float3 a0 = float3(51.7102661f, -313.85556f, 283.047668f); + float3 b0 = float3(-261.835236f, -19.81073f, -149.25882f); + bool3 r0 = bool3(false, true, false); + TestUtils.AreEqual(a0 < b0, r0); + + float3 a1 = float3(235.021912f, 44.07837f, -207.255676f); + float3 b1 = float3(205.99823f, -306.024384f, 102.121704f); + bool3 r1 = bool3(false, false, true); + TestUtils.AreEqual(a1 < b1, r1); + + float3 a2 = float3(3.38293457f, -144.301331f, -69.3696f); + float3 b2 = float3(231.906311f, 179.49884f, 473.2249f); + bool3 r2 = bool3(true, true, true); + TestUtils.AreEqual(a2 < b2, r2); + + float3 a3 = float3(-135.667969f, -194.787354f, -33.473877f); + float3 b3 = float3(15.8916626f, 270.049927f, 490.914f); + bool3 r3 = bool3(true, true, true); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void float3_operator_less_wide_scalar() + { + float3 a0 = float3(-221.869781f, -121.546478f, -97.5239258f); + float b0 = (199.0675f); + bool3 r0 = bool3(true, true, true); + TestUtils.AreEqual(a0 < b0, r0); + + float3 a1 = float3(479.8811f, 137.3288f, 282.9666f); + float b1 = (67.11902f); + bool3 r1 = bool3(false, false, false); + TestUtils.AreEqual(a1 < b1, r1); + + float3 a2 = float3(258.2791f, -288.081116f, 82.6654053f); + float b2 = (-111.413147f); + bool3 r2 = bool3(false, true, false); + TestUtils.AreEqual(a2 < b2, r2); + + float3 a3 = float3(-361.6429f, 12.7880249f, -66.703064f); + float b3 = (-68.0881958f); + bool3 r3 = bool3(true, false, false); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void float3_operator_less_scalar_wide() + { + float a0 = (-250.484924f); + float3 b0 = float3(-377.196533f, -505.147552f, 375.9267f); + bool3 r0 = bool3(false, false, true); + TestUtils.AreEqual(a0 < b0, r0); + + float a1 = (110.17395f); + float3 b1 = float3(-118.097565f, -40.4508972f, -299.744324f); + bool3 r1 = bool3(false, false, false); + TestUtils.AreEqual(a1 < b1, r1); + + float a2 = (31.4371338f); + float3 b2 = float3(-458.904541f, 13.6846924f, -458.5069f); + bool3 r2 = bool3(false, false, false); + TestUtils.AreEqual(a2 < b2, r2); + + float a3 = (248.276489f); + float3 b3 = float3(389.231445f, 488.745544f, -221.637878f); + bool3 r3 = bool3(true, true, false); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void float3_operator_greater_wide_wide() + { + float3 a0 = float3(-229.29068f, 505.536621f, -73.80707f); + float3 b0 = float3(-445.845032f, -420.035278f, 299.0244f); + bool3 r0 = bool3(true, true, false); + TestUtils.AreEqual(a0 > b0, r0); + + float3 a1 = float3(100.292053f, -419.214783f, -159.559753f); + float3 b1 = float3(-13.8809814f, 151.5617f, -163.50943f); + bool3 r1 = bool3(true, false, true); + TestUtils.AreEqual(a1 > b1, r1); + + float3 a2 = float3(-396.770355f, 127.037415f, 489.1399f); + float3 b2 = float3(-391.096039f, 479.283752f, -77.6748657f); + bool3 r2 = bool3(false, false, true); + TestUtils.AreEqual(a2 > b2, r2); + + float3 a3 = float3(51.9188843f, 155.384766f, -135.631653f); + float3 b3 = float3(-46.584198f, -415.377f, 71.46698f); + bool3 r3 = bool3(true, true, false); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void float3_operator_greater_wide_scalar() + { + float3 a0 = float3(11.156311f, -411.023224f, 385.885559f); + float b0 = (-302.816956f); + bool3 r0 = bool3(true, false, true); + TestUtils.AreEqual(a0 > b0, r0); + + float3 a1 = float3(-485.103058f, 405.175354f, 173.575073f); + float b1 = (-491.180023f); + bool3 r1 = bool3(true, true, true); + TestUtils.AreEqual(a1 > b1, r1); + + float3 a2 = float3(69.26929f, -367.027771f, -86.12451f); + float b2 = (501.306824f); + bool3 r2 = bool3(false, false, false); + TestUtils.AreEqual(a2 > b2, r2); + + float3 a3 = float3(-489.090576f, -18.1496277f, -236.414948f); + float b3 = (-172.518158f); + bool3 r3 = bool3(false, true, false); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void float3_operator_greater_scalar_wide() + { + float a0 = (453.546082f); + float3 b0 = float3(-226.2044f, -423.465f, 409.405518f); + bool3 r0 = bool3(true, true, true); + TestUtils.AreEqual(a0 > b0, r0); + + float a1 = (453.877075f); + float3 b1 = float3(87.47571f, 113.795593f, 176.409241f); + bool3 r1 = bool3(true, true, true); + TestUtils.AreEqual(a1 > b1, r1); + + float a2 = (-140.440033f); + float3 b2 = float3(-182.48288f, -158.2933f, -162.685333f); + bool3 r2 = bool3(true, true, true); + TestUtils.AreEqual(a2 > b2, r2); + + float a3 = (-193.328674f); + float3 b3 = float3(230.181274f, -102.58783f, 392.520569f); + bool3 r3 = bool3(false, false, false); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void float3_operator_less_equal_wide_wide() + { + float3 a0 = float3(240.090515f, 462.213135f, 293.08252f); + float3 b0 = float3(-81.20383f, 493.637451f, -411.4721f); + bool3 r0 = bool3(false, true, false); + TestUtils.AreEqual(a0 <= b0, r0); + + float3 a1 = float3(-427.870667f, -405.5227f, 204.591919f); + float3 b1 = float3(99.16443f, -295.6677f, -480.462555f); + bool3 r1 = bool3(true, true, false); + TestUtils.AreEqual(a1 <= b1, r1); + + float3 a2 = float3(294.6701f, -327.564453f, -456.12326f); + float3 b2 = float3(74.41406f, 260.916138f, 306.173279f); + bool3 r2 = bool3(false, true, true); + TestUtils.AreEqual(a2 <= b2, r2); + + float3 a3 = float3(282.30127f, 421.881165f, -311.71283f); + float3 b3 = float3(139.564819f, -505.752472f, -489.6268f); + bool3 r3 = bool3(false, false, false); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void float3_operator_less_equal_wide_scalar() + { + float3 a0 = float3(309.192444f, 69.67377f, -101.724182f); + float b0 = (292.924255f); + bool3 r0 = bool3(false, true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + float3 a1 = float3(-315.9724f, 424.15387f, -410.870056f); + float b1 = (-346.011047f); + bool3 r1 = bool3(false, false, true); + TestUtils.AreEqual(a1 <= b1, r1); + + float3 a2 = float3(-483.902649f, 320.4425f, -257.870056f); + float b2 = (183.821167f); + bool3 r2 = bool3(true, false, true); + TestUtils.AreEqual(a2 <= b2, r2); + + float3 a3 = float3(-386.801758f, 349.250122f, 485.311584f); + float b3 = (-182.938812f); + bool3 r3 = bool3(true, false, false); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void float3_operator_less_equal_scalar_wide() + { + float a0 = (-511.152374f); + float3 b0 = float3(51.1589966f, 340.443665f, 312.81427f); + bool3 r0 = bool3(true, true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + float a1 = (354.1925f); + float3 b1 = float3(136.396729f, -94.76788f, 288.5443f); + bool3 r1 = bool3(false, false, false); + TestUtils.AreEqual(a1 <= b1, r1); + + float a2 = (304.042847f); + float3 b2 = float3(-148.618073f, -506.3001f, 27.5812378f); + bool3 r2 = bool3(false, false, false); + TestUtils.AreEqual(a2 <= b2, r2); + + float a3 = (48.47113f); + float3 b3 = float3(104.883484f, -488.685852f, -480.435181f); + bool3 r3 = bool3(true, false, false); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void float3_operator_greater_equal_wide_wide() + { + float3 a0 = float3(-386.5918f, -157.120789f, 391.015259f); + float3 b0 = float3(153.443f, 49.8924561f, 78.02582f); + bool3 r0 = bool3(false, false, true); + TestUtils.AreEqual(a0 >= b0, r0); + + float3 a1 = float3(-511.886871f, -5.42202759f, 287.645264f); + float3 b1 = float3(138.813721f, -225.51059f, -339.3561f); + bool3 r1 = bool3(false, true, true); + TestUtils.AreEqual(a1 >= b1, r1); + + float3 a2 = float3(-122.535187f, 7.48144531f, 152.946411f); + float3 b2 = float3(-373.302063f, 364.9359f, -322.7154f); + bool3 r2 = bool3(true, false, true); + TestUtils.AreEqual(a2 >= b2, r2); + + float3 a3 = float3(48.9862061f, 57.3381348f, 300.4649f); + float3 b3 = float3(125.47821f, -25.77658f, 297.518921f); + bool3 r3 = bool3(false, true, true); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void float3_operator_greater_equal_wide_scalar() + { + float3 a0 = float3(495.4574f, -14.3451233f, -463.4748f); + float b0 = (189.205139f); + bool3 r0 = bool3(true, false, false); + TestUtils.AreEqual(a0 >= b0, r0); + + float3 a1 = float3(217.517517f, -377.6587f, 53.8151245f); + float b1 = (-246.865723f); + bool3 r1 = bool3(true, false, true); + TestUtils.AreEqual(a1 >= b1, r1); + + float3 a2 = float3(-123.332947f, 252.994324f, -116.440369f); + float b2 = (-221.505463f); + bool3 r2 = bool3(true, true, true); + TestUtils.AreEqual(a2 >= b2, r2); + + float3 a3 = float3(-395.3633f, -287.007324f, 355.837036f); + float b3 = (164.772583f); + bool3 r3 = bool3(false, false, true); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void float3_operator_greater_equal_scalar_wide() + { + float a0 = (215.435364f); + float3 b0 = float3(204.802979f, -101.104034f, -122.055023f); + bool3 r0 = bool3(true, true, true); + TestUtils.AreEqual(a0 >= b0, r0); + + float a1 = (-70.45615f); + float3 b1 = float3(-239.62027f, -185.992737f, -455.612579f); + bool3 r1 = bool3(true, true, true); + TestUtils.AreEqual(a1 >= b1, r1); + + float a2 = (276.665833f); + float3 b2 = float3(79.39917f, 416.420532f, 379.2735f); + bool3 r2 = bool3(true, false, false); + TestUtils.AreEqual(a2 >= b2, r2); + + float a3 = (-439.5147f); + float3 b3 = float3(67.14099f, -74.56064f, -367.256348f); + bool3 r3 = bool3(false, false, false); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void float3_operator_add_wide_wide() + { + float3 a0 = float3(465.148376f, 278.9107f, -277.5299f); + float3 b0 = float3(483.9944f, -204.07666f, -365.673553f); + float3 r0 = float3(949.142761f, 74.8340454f, -643.2035f); + TestUtils.AreEqual(a0 + b0, r0); + + float3 a1 = float3(-65.1972046f, -473.324371f, -4.69555664f); + float3 b1 = float3(-509.920868f, -270.6975f, 486.763977f); + float3 r1 = float3(-575.118042f, -744.021851f, 482.06842f); + TestUtils.AreEqual(a1 + b1, r1); + + float3 a2 = float3(-470.536774f, -109.9501f, -178.701447f); + float3 b2 = float3(267.49176f, 251.642517f, 244.495117f); + float3 r2 = float3(-203.045013f, 141.692413f, 65.79367f); + TestUtils.AreEqual(a2 + b2, r2); + + float3 a3 = float3(-420.033783f, 290.711121f, -446.529633f); + float3 b3 = float3(-78.67575f, 352.2055f, 82.7791748f); + float3 r3 = float3(-498.709534f, 642.9166f, -363.750458f); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void float3_operator_add_wide_scalar() + { + float3 a0 = float3(459.898315f, -447.663361f, -94.43863f); + float b0 = (500.997253f); + float3 r0 = float3(960.895569f, 53.3338928f, 406.558624f); + TestUtils.AreEqual(a0 + b0, r0); + + float3 a1 = float3(126.429871f, -349.6413f, -2.79125977f); + float b1 = (-36.254364f); + float3 r1 = float3(90.17551f, -385.89566f, -39.0456238f); + TestUtils.AreEqual(a1 + b1, r1); + + float3 a2 = float3(-478.4148f, 268.092224f, 41.3210449f); + float b2 = (443.115234f); + float3 r2 = float3(-35.29956f, 711.207458f, 484.436279f); + TestUtils.AreEqual(a2 + b2, r2); + + float3 a3 = float3(-471.256073f, 78.98584f, 202.14801f); + float b3 = (-2.664978f); + float3 r3 = float3(-473.921051f, 76.32086f, 199.483032f); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void float3_operator_add_scalar_wide() + { + float a0 = (-325.512756f); + float3 b0 = float3(-264.088135f, -106.009247f, -355.4473f); + float3 r0 = float3(-589.6009f, -431.522f, -680.9601f); + TestUtils.AreEqual(a0 + b0, r0); + + float a1 = (-447.3303f); + float3 b1 = float3(-158.7002f, -199.4837f, 180.318115f); + float3 r1 = float3(-606.0305f, -646.813965f, -267.012177f); + TestUtils.AreEqual(a1 + b1, r1); + + float a2 = (337.579346f); + float3 b2 = float3(-37.0550232f, 230.805f, -140.174347f); + float3 r2 = float3(300.524323f, 568.384338f, 197.405f); + TestUtils.AreEqual(a2 + b2, r2); + + float a3 = (18.02417f); + float3 b3 = float3(-138.614349f, 26.9041748f, -374.5376f); + float3 r3 = float3(-120.590179f, 44.9283447f, -356.513428f); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void float3_operator_sub_wide_wide() + { + float3 a0 = float3(133.371033f, -131.832123f, -197.293152f); + float3 b0 = float3(123.460266f, 359.56012f, -48.2484741f); + float3 r0 = float3(9.910767f, -491.392242f, -149.044678f); + TestUtils.AreEqual(a0 - b0, r0); + + float3 a1 = float3(-485.28656f, -337.550323f, 471.6671f); + float3 b1 = float3(478.979065f, 207.158325f, 142.36731f); + float3 r1 = float3(-964.2656f, -544.7086f, 329.2998f); + TestUtils.AreEqual(a1 - b1, r1); + + float3 a2 = float3(146.506592f, -130.585052f, 110.7771f); + float3 b2 = float3(-125.6055f, -65.29901f, -477.876434f); + float3 r2 = float3(272.1121f, -65.28604f, 588.653564f); + TestUtils.AreEqual(a2 - b2, r2); + + float3 a3 = float3(-235.5416f, 78.87933f, -347.686157f); + float3 b3 = float3(164.5f, 428.009583f, 72.62781f); + float3 r3 = float3(-400.0416f, -349.130249f, -420.313965f); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void float3_operator_sub_wide_scalar() + { + float3 a0 = float3(48.9367065f, 410.4516f, -364.4417f); + float b0 = (-291.5904f); + float3 r0 = float3(340.5271f, 702.042f, -72.85132f); + TestUtils.AreEqual(a0 - b0, r0); + + float3 a1 = float3(163.980591f, 110.919434f, 204.358337f); + float b1 = (-460.067322f); + float3 r1 = float3(624.0479f, 570.986755f, 664.425659f); + TestUtils.AreEqual(a1 - b1, r1); + + float3 a2 = float3(180.269714f, -470.262054f, 400.5349f); + float b2 = (-377.9257f); + float3 r2 = float3(558.195435f, -92.3363647f, 778.4606f); + TestUtils.AreEqual(a2 - b2, r2); + + float3 a3 = float3(461.507568f, 21.6052856f, 246.350708f); + float b3 = (-246.287262f); + float3 r3 = float3(707.7948f, 267.892548f, 492.63797f); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void float3_operator_sub_scalar_wide() + { + float a0 = (294.5865f); + float3 b0 = float3(452.352539f, 256.9898f, -275.159882f); + float3 r0 = float3(-157.766052f, 37.59668f, 569.746338f); + TestUtils.AreEqual(a0 - b0, r0); + + float a1 = (-89.02753f); + float3 b1 = float3(488.2284f, -333.2173f, -64.233f); + float3 r1 = float3(-577.2559f, 244.189758f, -24.7945251f); + TestUtils.AreEqual(a1 - b1, r1); + + float a2 = (-66.04172f); + float3 b2 = float3(341.204956f, -385.775055f, 75.3947754f); + float3 r2 = float3(-407.246674f, 319.733337f, -141.4365f); + TestUtils.AreEqual(a2 - b2, r2); + + float a3 = (354.943726f); + float3 b3 = float3(169.131409f, 88.21661f, 1.73498535f); + float3 r3 = float3(185.812317f, 266.7271f, 353.20874f); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void float3_operator_mul_wide_wide() + { + float3 a0 = float3(-394.780548f, -412.3722f, -25.8745728f); + float3 b0 = float3(-149.763977f, -345.04538f, -284.334045f); + float3 r0 = float3(59123.9063f, 142287.125f, 7357.022f); + TestUtils.AreEqual(a0 * b0, r0); + + float3 a1 = float3(-241.045959f, -93.6759949f, 244.159973f); + float3 b1 = float3(267.979248f, -326.6485f, -150.689667f); + float3 r1 = float3(-64595.3164f, 30599.123f, -36792.3867f); + TestUtils.AreEqual(a1 * b1, r1); + + float3 a2 = float3(494.688477f, 53.5379639f, -239.4964f); + float3 b2 = float3(207.732422f, 366.192871f, 358.880737f); + float3 r2 = float3(102762.836f, 19605.22f, -85950.64f); + TestUtils.AreEqual(a2 * b2, r2); + + float3 a3 = float3(236.675842f, -211.8562f, -216.654816f); + float3 b3 = float3(214.853577f, 253.422791f, -307.7138f); + float3 r3 = float3(50850.6523f, -53689.19f, 66667.68f); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void float3_operator_mul_wide_scalar() + { + float3 a0 = float3(328.203f, -290.10672f, 236.995728f); + float b0 = (192.211182f); + float3 r0 = float3(63084.2852f, -55761.7539f, 45553.23f); + TestUtils.AreEqual(a0 * b0, r0); + + float3 a1 = float3(120.481384f, 134.867249f, -477.3105f); + float b1 = (357.903137f); + float3 r1 = float3(43120.6641f, 48269.41f, -170830.922f); + TestUtils.AreEqual(a1 * b1, r1); + + float3 a2 = float3(-438.272919f, -238.405f, 422.08252f); + float b2 = (-46.729187f); + float3 r2 = float3(20480.1367f, 11140.4717f, -19723.5723f); + TestUtils.AreEqual(a2 * b2, r2); + + float3 a3 = float3(-48.83484f, 119.356628f, -196.995819f); + float b3 = (355.30835f); + float3 r3 = float3(-17351.4258f, 42408.4063f, -69994.26f); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void float3_operator_mul_scalar_wide() + { + float a0 = (-464.5347f); + float3 b0 = float3(329.360962f, -198.683441f, 184.0794f); + float3 r0 = float3(-152999.6f, 92295.35f, -85511.27f); + TestUtils.AreEqual(a0 * b0, r0); + + float a1 = (256.016174f); + float3 b1 = float3(266.226318f, -97.8947449f, 159.748108f); + float3 r1 = float3(68158.24f, -25062.6387f, 40898.0977f); + TestUtils.AreEqual(a1 * b1, r1); + + float a2 = (-351.8222f); + float3 b2 = float3(491.801575f, 49.90204f, 424.4626f); + float3 r2 = float3(-173026.719f, -17556.6445f, -149335.359f); + TestUtils.AreEqual(a2 * b2, r2); + + float a3 = (160.1181f); + float3 b3 = float3(-395.9921f, 125.20166f, -265.0158f); + float3 r3 = float3(-63405.5039f, 20047.0527f, -42433.83f); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void float3_operator_div_wide_wide() + { + float3 a0 = float3(246.265747f, -269.85614f, -451.619537f); + float3 b0 = float3(172.119812f, -77.14111f, -325.8354f); + float3 r0 = float3(1.43078089f, 3.49821424f, 1.38603592f); + TestUtils.AreEqual(a0 / b0, r0); + + float3 a1 = float3(-7.388489f, -308.205566f, -373.3948f); + float3 b1 = float3(-450.608673f, -261.262146f, -122.449493f); + float3 r1 = float3(0.0163966864f, 1.17967939f, 3.04937816f); + TestUtils.AreEqual(a1 / b1, r1); + + float3 a2 = float3(360.41864f, 25.8097534f, -274.050476f); + float3 b2 = float3(-93.2107849f, -442.005219f, 484.362732f); + float3 r2 = float3(-3.86670542f, -0.0583924167f, -0.565795958f); + TestUtils.AreEqual(a2 / b2, r2); + + float3 a3 = float3(127.538574f, -447.671753f, -137.458588f); + float3 b3 = float3(-390.7818f, 402.02533f, 316.6507f); + float3 r3 = float3(-0.326367736f, -1.11354113f, -0.434101641f); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void float3_operator_div_wide_scalar() + { + float3 a0 = float3(-244.517456f, 69.1123047f, -333.023132f); + float b0 = (-60.0243835f); + float3 r0 = float3(4.07363558f, -1.15140378f, 5.548131f); + TestUtils.AreEqual(a0 / b0, r0); + + float3 a1 = float3(257.396851f, 154.34436f, 131.526611f); + float b1 = (403.2456f); + float3 r1 = float3(0.6383129f, 0.38275522f, 0.326169968f); + TestUtils.AreEqual(a1 / b1, r1); + + float3 a2 = float3(-261.8864f, -275.5387f, 210.557922f); + float b2 = (-348.9238f); + float3 r2 = float3(0.75055474f, 0.789681554f, -0.6034496f); + TestUtils.AreEqual(a2 / b2, r2); + + float3 a3 = float3(287.6424f, 491.7871f, -26.6315918f); + float b3 = (504.372253f); + float3 r3 = float3(0.570297837f, 0.9750479f, -0.05280146f); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void float3_operator_div_scalar_wide() + { + float a0 = (41.73767f); + float3 b0 = float3(-422.676147f, 248.129639f, 449.391357f); + float3 r0 = float3(-0.09874622f, 0.168209136f, 0.0928759947f); + TestUtils.AreEqual(a0 / b0, r0); + + float a1 = (245.858154f); + float3 b1 = float3(-326.6206f, 163.715088f, 333.6645f); + float3 r1 = float3(-0.7527331f, 1.501744f, 0.736842453f); + TestUtils.AreEqual(a1 / b1, r1); + + float a2 = (38.2910767f); + float3 b2 = float3(-472.979767f, 192.230164f, -200.296875f); + float3 r2 = float3(-0.0809571147f, 0.19919391f, -0.191171616f); + TestUtils.AreEqual(a2 / b2, r2); + + float a3 = (-490.181519f); + float3 b3 = float3(-211.10257f, -322.852356f, -137.985291f); + float3 r3 = float3(2.32200646f, 1.51828384f, 3.55241871f); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void float3_operator_mod_wide_wide() + { + float3 a0 = float3(-442.309875f, 368.5005f, -1.09390259f); + float3 b0 = float3(-43.2450562f, -144.195862f, -62.6404724f); + float3 r0 = float3(-9.859314f, 80.1087646f, -1.09390259f); + TestUtils.AreEqual(a0 % b0, r0); + + float3 a1 = float3(-364.673828f, -197.343933f, -34.0349121f); + float3 b1 = float3(-336.828247f, -154.61026f, -154.029358f); + float3 r1 = float3(-27.8455811f, -42.7336731f, -34.0349121f); + TestUtils.AreEqual(a1 % b1, r1); + + float3 a2 = float3(-101.348572f, 208.318542f, -140.770325f); + float3 b2 = float3(487.0462f, -469.8291f, -145.203766f); + float3 r2 = float3(-101.348572f, 208.318542f, -140.770325f); + TestUtils.AreEqual(a2 % b2, r2); + + float3 a3 = float3(183.44696f, -463.368378f, 83.83911f); + float3 b3 = float3(-203.384f, -22.52008f, 224.69f); + float3 r3 = float3(183.44696f, -12.9667664f, 83.83911f); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void float3_operator_mod_wide_scalar() + { + float3 a0 = float3(-433.417f, -5.51412964f, 393.3944f); + float b0 = (-90.49924f); + float3 r0 = float3(-71.4200439f, -5.51412964f, 31.39746f); + TestUtils.AreEqual(a0 % b0, r0); + + float3 a1 = float3(299.41156f, -502.939026f, -450.807678f); + float b1 = (-120.80603f); + float3 r1 = float3(57.7995f, -19.7149048f, -88.38959f); + TestUtils.AreEqual(a1 % b1, r1); + + float3 a2 = float3(186.094788f, -318.7815f, 433.4547f); + float b2 = (-84.47363f); + float3 r2 = float3(17.147522f, -65.3605957f, 11.0865479f); + TestUtils.AreEqual(a2 % b2, r2); + + float3 a3 = float3(-54.60019f, -429.714661f, 222.361877f); + float b3 = (-172.338867f); + float3 r3 = float3(-54.60019f, -85.03693f, 50.02301f); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void float3_operator_mod_scalar_wide() + { + float a0 = (-396.4224f); + float3 b0 = float3(-159.140259f, 230.17334f, 14.7793579f); + float3 r0 = float3(-78.14188f, -166.249054f, -12.1590881f); + TestUtils.AreEqual(a0 % b0, r0); + + float a1 = (-303.1565f); + float3 b1 = float3(399.635f, 206.6947f, 397.0448f); + float3 r1 = float3(-303.1565f, -96.46179f, -303.1565f); + TestUtils.AreEqual(a1 % b1, r1); + + float a2 = (-393.890656f); + float3 b2 = float3(-372.067078f, 201.012268f, -95.566864f); + float3 r2 = float3(-21.8235779f, -192.878387f, -11.6231995f); + TestUtils.AreEqual(a2 % b2, r2); + + float a3 = (-258.951477f); + float3 b3 = float3(106.983582f, 469.323547f, -34.80899f); + float3 r3 = float3(-44.984314f, -258.951477f, -15.2885437f); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void float3_operator_plus() + { + float3 a0 = float3(271.670837f, -79.08023f, -330.985046f); + float3 r0 = float3(271.670837f, -79.08023f, -330.985046f); + TestUtils.AreEqual(+a0, r0); + + float3 a1 = float3(31.824707f, 319.222168f, 190.324646f); + float3 r1 = float3(31.824707f, 319.222168f, 190.324646f); + TestUtils.AreEqual(+a1, r1); + + float3 a2 = float3(-350.3086f, 102.054382f, -107.00351f); + float3 r2 = float3(-350.3086f, 102.054382f, -107.00351f); + TestUtils.AreEqual(+a2, r2); + + float3 a3 = float3(-428.7762f, 234.773926f, 34.28363f); + float3 r3 = float3(-428.7762f, 234.773926f, 34.28363f); + TestUtils.AreEqual(+a3, r3); + } + + [TestCompiler] + public static void float3_operator_neg() + { + float3 a0 = float3(420.227173f, -196.2575f, -335.426819f); + float3 r0 = float3(-420.227173f, 196.2575f, 335.426819f); + TestUtils.AreEqual(-a0, r0); + + float3 a1 = float3(509.04364f, -498.575317f, -495.837952f); + float3 r1 = float3(-509.04364f, 498.575317f, 495.837952f); + TestUtils.AreEqual(-a1, r1); + + float3 a2 = float3(-270.859467f, 268.2367f, -180.600525f); + float3 r2 = float3(270.859467f, -268.2367f, 180.600525f); + TestUtils.AreEqual(-a2, r2); + + float3 a3 = float3(223.381287f, -395.681549f, -349.149475f); + float3 r3 = float3(-223.381287f, 395.681549f, 349.149475f); + TestUtils.AreEqual(-a3, r3); + } + + [TestCompiler] + public static void float3_operator_prefix_inc() + { + float3 a0 = float3(-99.79556f, 458.741821f, 96.1790161f); + float3 r0 = float3(-98.79556f, 459.741821f, 97.1790161f); + TestUtils.AreEqual(++a0, r0); + + float3 a1 = float3(-48.55246f, -299.230164f, -323.614868f); + float3 r1 = float3(-47.55246f, -298.230164f, -322.614868f); + TestUtils.AreEqual(++a1, r1); + + float3 a2 = float3(-456.8903f, -305.584778f, 64.0965f); + float3 r2 = float3(-455.8903f, -304.584778f, 65.0965f); + TestUtils.AreEqual(++a2, r2); + + float3 a3 = float3(148.679321f, -115.559235f, -326.8778f); + float3 r3 = float3(149.679321f, -114.559235f, -325.8778f); + TestUtils.AreEqual(++a3, r3); + } + + [TestCompiler] + public static void float3_operator_postfix_inc() + { + float3 a0 = float3(322.943542f, 472.0525f, 203.48761f); + float3 r0 = float3(322.943542f, 472.0525f, 203.48761f); + TestUtils.AreEqual(a0++, r0); + + float3 a1 = float3(-49.8545837f, 455.3366f, 271.454651f); + float3 r1 = float3(-49.8545837f, 455.3366f, 271.454651f); + TestUtils.AreEqual(a1++, r1); + + float3 a2 = float3(55.7368774f, -174.173f, -427.401062f); + float3 r2 = float3(55.7368774f, -174.173f, -427.401062f); + TestUtils.AreEqual(a2++, r2); + + float3 a3 = float3(215.110229f, -333.050446f, 241.4649f); + float3 r3 = float3(215.110229f, -333.050446f, 241.4649f); + TestUtils.AreEqual(a3++, r3); + } + + [TestCompiler] + public static void float3_operator_prefix_dec() + { + float3 a0 = float3(-416.201233f, -96.63788f, -50.14566f); + float3 r0 = float3(-417.201233f, -97.63788f, -51.14566f); + TestUtils.AreEqual(--a0, r0); + + float3 a1 = float3(-207.316437f, -304.400818f, 337.968933f); + float3 r1 = float3(-208.316437f, -305.400818f, 336.968933f); + TestUtils.AreEqual(--a1, r1); + + float3 a2 = float3(246.088989f, -227.44281f, 298.2848f); + float3 r2 = float3(245.088989f, -228.44281f, 297.2848f); + TestUtils.AreEqual(--a2, r2); + + float3 a3 = float3(326.5078f, -478.031372f, -326.452972f); + float3 r3 = float3(325.5078f, -479.031372f, -327.452972f); + TestUtils.AreEqual(--a3, r3); + } + + [TestCompiler] + public static void float3_operator_postfix_dec() + { + float3 a0 = float3(-376.5924f, 16.9697266f, -0.2506714f); + float3 r0 = float3(-376.5924f, 16.9697266f, -0.2506714f); + TestUtils.AreEqual(a0--, r0); + + float3 a1 = float3(-202.323273f, 47.85663f, -281.1117f); + float3 r1 = float3(-202.323273f, 47.85663f, -281.1117f); + TestUtils.AreEqual(a1--, r1); + + float3 a2 = float3(-262.0626f, 450.1281f, -129.232666f); + float3 r2 = float3(-262.0626f, 450.1281f, -129.232666f); + TestUtils.AreEqual(a2--, r2); + + float3 a3 = float3(-332.154968f, 205.461121f, -230.227783f); + float3 r3 = float3(-332.154968f, 205.461121f, -230.227783f); + TestUtils.AreEqual(a3--, r3); + } + + [TestCompiler] + public static void float3_shuffle_result_1() + { + float3 a = float3(0, 1, 2); + float3 b = float3(3, 4, 5); + + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftX), (0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftY), (1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftZ), (2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX), (3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY), (4)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ), (5)); + } + + [TestCompiler] + public static void float3_shuffle_result_2() + { + float3 a = float3(0, 1, 2); + float3 b = float3(3, 4, 5); + + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.RightY), float2(4, 4)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.RightX), float2(4, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftY, ShuffleComponent.RightX), float2(1, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ, ShuffleComponent.LeftZ), float2(5, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ, ShuffleComponent.LeftY), float2(5, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftY, ShuffleComponent.LeftZ), float2(1, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.LeftZ), float2(3, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ, ShuffleComponent.LeftX), float2(5, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ, ShuffleComponent.RightZ), float2(5, 5)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.LeftY), float2(4, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.RightZ), float2(4, 5)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ, ShuffleComponent.LeftX), float2(5, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.RightX), float2(4, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ, ShuffleComponent.RightY), float2(5, 4)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.LeftX), float2(3, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftY, ShuffleComponent.LeftZ), float2(1, 2)); + } + + [TestCompiler] + public static void float3_shuffle_result_3() + { + float3 a = float3(0, 1, 2); + float3 b = float3(3, 4, 5); + + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftY, ShuffleComponent.RightZ, ShuffleComponent.RightX), float3(1, 5, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.LeftX, ShuffleComponent.LeftZ), float3(4, 0, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftZ, ShuffleComponent.RightZ, ShuffleComponent.RightX), float3(2, 5, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.LeftX, ShuffleComponent.LeftY), float3(4, 0, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ, ShuffleComponent.RightY, ShuffleComponent.LeftZ), float3(5, 4, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftZ, ShuffleComponent.LeftX, ShuffleComponent.LeftY), float3(2, 0, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftZ, ShuffleComponent.RightY, ShuffleComponent.RightX), float3(2, 4, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftZ, ShuffleComponent.LeftY, ShuffleComponent.RightZ), float3(2, 1, 5)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.RightY, ShuffleComponent.RightZ), float3(4, 4, 5)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.RightX, ShuffleComponent.LeftY), float3(4, 3, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ, ShuffleComponent.RightZ, ShuffleComponent.LeftX), float3(5, 5, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ, ShuffleComponent.LeftY, ShuffleComponent.RightX), float3(5, 1, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.LeftY, ShuffleComponent.RightZ), float3(4, 1, 5)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftZ, ShuffleComponent.RightX, ShuffleComponent.RightY), float3(2, 3, 4)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.LeftX, ShuffleComponent.RightY), float3(4, 0, 4)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.LeftX, ShuffleComponent.RightZ), float3(4, 0, 5)); + } + + [TestCompiler] + public static void float3_shuffle_result_4() + { + float3 a = float3(0, 1, 2); + float3 b = float3(3, 4, 5); + + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftY, ShuffleComponent.LeftZ, ShuffleComponent.RightX, ShuffleComponent.LeftY), float4(1, 2, 3, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.LeftZ, ShuffleComponent.RightZ, ShuffleComponent.RightY), float4(4, 2, 5, 4)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.RightY, ShuffleComponent.RightZ, ShuffleComponent.LeftY), float4(4, 4, 5, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.RightX, ShuffleComponent.LeftY, ShuffleComponent.LeftY), float4(3, 3, 1, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.LeftY, ShuffleComponent.LeftY, ShuffleComponent.LeftX), float4(4, 1, 1, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.RightY, ShuffleComponent.RightX, ShuffleComponent.RightZ), float4(3, 4, 3, 5)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftY, ShuffleComponent.RightZ, ShuffleComponent.LeftX, ShuffleComponent.RightZ), float4(1, 5, 0, 5)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.LeftX, ShuffleComponent.LeftX, ShuffleComponent.LeftX), float4(4, 0, 0, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.RightZ, ShuffleComponent.LeftZ, ShuffleComponent.LeftX), float4(3, 5, 2, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.RightX, ShuffleComponent.LeftY, ShuffleComponent.RightX), float4(4, 3, 1, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftX, ShuffleComponent.LeftZ, ShuffleComponent.RightZ, ShuffleComponent.LeftX), float4(0, 2, 5, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftY, ShuffleComponent.RightY, ShuffleComponent.RightZ, ShuffleComponent.RightZ), float4(1, 4, 5, 5)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftZ, ShuffleComponent.RightX, ShuffleComponent.LeftY, ShuffleComponent.RightX), float4(2, 3, 1, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.LeftX, ShuffleComponent.LeftY, ShuffleComponent.LeftZ), float4(3, 0, 1, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ, ShuffleComponent.RightX, ShuffleComponent.LeftX, ShuffleComponent.RightY), float4(5, 3, 0, 4)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftZ, ShuffleComponent.RightZ, ShuffleComponent.LeftX, ShuffleComponent.RightY), float4(2, 5, 0, 4)); + } + + + } +} diff --git a/package/Tests/Tests/Shared/TestFloat3.gen.cs.meta b/package/Tests/Tests/Shared/TestFloat3.gen.cs.meta new file mode 100755 index 000000000..b9523b258 --- /dev/null +++ b/package/Tests/Tests/Shared/TestFloat3.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d920c9d9a3133d242af38fd80330960f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/package/Tests/Tests/Shared/TestFloat3x2.gen.cs b/package/Tests/Tests/Shared/TestFloat3x2.gen.cs new file mode 100755 index 000000000..c32f143ab --- /dev/null +++ b/package/Tests/Tests/Shared/TestFloat3x2.gen.cs @@ -0,0 +1,943 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using NUnit.Framework; +using static Unity.Mathematics.math; +using Burst.Compiler.IL.Tests; + +namespace Unity.Mathematics.Tests +{ + [TestFixture] + public class TestFloat3x2 + { + [TestCompiler] + public static void float3x2_zero() + { + TestUtils.AreEqual(float3x2.zero.c0.x, 0.0f); + TestUtils.AreEqual(float3x2.zero.c0.y, 0.0f); + TestUtils.AreEqual(float3x2.zero.c0.z, 0.0f); + TestUtils.AreEqual(float3x2.zero.c1.x, 0.0f); + TestUtils.AreEqual(float3x2.zero.c1.y, 0.0f); + TestUtils.AreEqual(float3x2.zero.c1.z, 0.0f); + } + + [TestCompiler] + public static void float3x2_operator_equal_wide_wide() + { + float3x2 a0 = float3x2(-135.18924f, -49.0941162f, 169.129822f, 240.8053f, 314.7392f, 442.393f); + float3x2 b0 = float3x2(-220.014648f, 66.98004f, 499.2016f, -371.1131f, 208.448669f, 390.8037f); + bool3x2 r0 = bool3x2(false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + float3x2 a1 = float3x2(177.924438f, 335.5334f, 168.15448f, 350.729553f, 367.178467f, 46.9414673f); + float3x2 b1 = float3x2(-72.44382f, 362.97644f, 194.678345f, 471.644836f, -404.044678f, -144.696747f); + bool3x2 r1 = bool3x2(false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + float3x2 a2 = float3x2(188.76416f, -97.2113953f, -293.320984f, -234.822937f, 417.0337f, 26.3864136f); + float3x2 b2 = float3x2(-494.446655f, -252.970367f, 234.417114f, 398.724f, 260.4287f, 370.144226f); + bool3x2 r2 = bool3x2(false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + float3x2 a3 = float3x2(269.245728f, 29.4741821f, 479.485229f, -237.230957f, -221.9837f, -506.672546f); + float3x2 b3 = float3x2(89.579834f, -434.816833f, -109.845337f, 336.973022f, -409.154968f, 500.387573f); + bool3x2 r3 = bool3x2(false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void float3x2_operator_equal_wide_scalar() + { + float3x2 a0 = float3x2(65.6712f, 404.415527f, -269.730164f, 83.6306152f, 152.9945f, -155.868286f); + float b0 = (-155.815765f); + bool3x2 r0 = bool3x2(false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + float3x2 a1 = float3x2(314.671265f, 290.04895f, -132.6352f, -65.66748f, -69.68326f, -191.190765f); + float b1 = (386.365173f); + bool3x2 r1 = bool3x2(false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + float3x2 a2 = float3x2(186.845215f, -319.144043f, -49.70108f, -300.8819f, 333.396851f, 386.3775f); + float b2 = (-232.895691f); + bool3x2 r2 = bool3x2(false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + float3x2 a3 = float3x2(-296.7019f, 141.542358f, -227.323334f, 83.87286f, -410.91687f, 110.501282f); + float b3 = (-309.1172f); + bool3x2 r3 = bool3x2(false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void float3x2_operator_equal_scalar_wide() + { + float a0 = (36.38391f); + float3x2 b0 = float3x2(-400.4892f, -71.2868347f, 156.978088f, -225.238739f, 499.141785f, -211.979919f); + bool3x2 r0 = bool3x2(false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + float a1 = (428.311951f); + float3x2 b1 = float3x2(-489.501343f, -5.691559f, -30.8659363f, -362.9831f, 184.503174f, -160.470612f); + bool3x2 r1 = bool3x2(false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + float a2 = (316.668823f); + float3x2 b2 = float3x2(390.369263f, 505.1051f, -294.6487f, 443.1991f, 96.5592651f, -257.012939f); + bool3x2 r2 = bool3x2(false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + float a3 = (-245.054962f); + float3x2 b3 = float3x2(326.464844f, -23.9599f, -168.694885f, 386.2486f, -227.090637f, -336.612427f); + bool3x2 r3 = bool3x2(false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void float3x2_operator_not_equal_wide_wide() + { + float3x2 a0 = float3x2(279.994141f, -43.34201f, -465.724731f, 317.466553f, 85.7149658f, 360.8905f); + float3x2 b0 = float3x2(-460.9121f, -476.009033f, 468.1364f, -341.012543f, -62.65805f, -458.801666f); + bool3x2 r0 = bool3x2(true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + float3x2 a1 = float3x2(366.081543f, 154.542847f, 332.4262f, 397.11322f, -431.374969f, 489.0108f); + float3x2 b1 = float3x2(-457.730225f, -59.5232544f, 3.024231f, 155.812744f, -19.8399048f, -6.01693726f); + bool3x2 r1 = bool3x2(true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + float3x2 a2 = float3x2(398.4336f, -489.817932f, 171.4049f, -67.82968f, -192.278717f, 227.84082f); + float3x2 b2 = float3x2(-406.207916f, -102.420715f, -40.362915f, 452.6754f, 93.25757f, -258.378052f); + bool3x2 r2 = bool3x2(true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + float3x2 a3 = float3x2(62.1381836f, 262.186462f, -404.0531f, 34.449585f, -204.795776f, -285.4118f); + float3x2 b3 = float3x2(-184.0498f, -379.2353f, -370.687317f, -255.947235f, 29.0557861f, 322.407654f); + bool3x2 r3 = bool3x2(true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void float3x2_operator_not_equal_wide_scalar() + { + float3x2 a0 = float3x2(-155.4411f, -19.4266052f, 174.633057f, 507.920715f, 59.177063f, 171.151489f); + float b0 = (-393.413544f); + bool3x2 r0 = bool3x2(true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + float3x2 a1 = float3x2(-58.92328f, 492.20105f, -165.241516f, 270.341f, -380.243256f, 501.899048f); + float b1 = (-398.176849f); + bool3x2 r1 = bool3x2(true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + float3x2 a2 = float3x2(-134.345459f, 46.7709961f, 161.459961f, 261.514221f, -145.6124f, -0.449920654f); + float b2 = (458.400452f); + bool3x2 r2 = bool3x2(true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + float3x2 a3 = float3x2(350.461426f, 242.664f, 382.677063f, -468.967957f, -497.459473f, -80.93225f); + float b3 = (202.221008f); + bool3x2 r3 = bool3x2(true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void float3x2_operator_not_equal_scalar_wide() + { + float a0 = (478.353149f); + float3x2 b0 = float3x2(459.553223f, 436.453247f, -488.714172f, 392.767944f, -266.736633f, 338.557861f); + bool3x2 r0 = bool3x2(true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + float a1 = (-338.100128f); + float3x2 b1 = float3x2(-152.314545f, -452.820679f, 209.439331f, 50.10797f, 372.4344f, -488.0213f); + bool3x2 r1 = bool3x2(true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + float a2 = (489.740784f); + float3x2 b2 = float3x2(270.4001f, -472.846771f, -286.850464f, -384.691864f, 443.423523f, 358.7472f); + bool3x2 r2 = bool3x2(true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + float a3 = (-15.4140625f); + float3x2 b3 = float3x2(-342.179169f, 468.967529f, -130.568085f, 401.785828f, -268.352264f, -239.231018f); + bool3x2 r3 = bool3x2(true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void float3x2_operator_less_wide_wide() + { + float3x2 a0 = float3x2(51.7102661f, -313.85556f, 283.047668f, 235.021912f, 44.07837f, -207.255676f); + float3x2 b0 = float3x2(-261.835236f, -19.81073f, -149.25882f, 205.99823f, -306.024384f, 102.121704f); + bool3x2 r0 = bool3x2(false, true, false, false, false, true); + TestUtils.AreEqual(a0 < b0, r0); + + float3x2 a1 = float3x2(3.38293457f, -144.301331f, -69.3696f, -135.667969f, -194.787354f, -33.473877f); + float3x2 b1 = float3x2(231.906311f, 179.49884f, 473.2249f, 15.8916626f, 270.049927f, 490.914f); + bool3x2 r1 = bool3x2(true, true, true, true, true, true); + TestUtils.AreEqual(a1 < b1, r1); + + float3x2 a2 = float3x2(-19.67508f, 423.237976f, -71.6983f, -501.886f, 7.64386f, 302.262878f); + float3x2 b2 = float3x2(-185.734131f, 76.4331055f, 97.75232f, 419.300781f, 73.953186f, 481.032349f); + bool3x2 r2 = bool3x2(false, false, true, true, true, true); + TestUtils.AreEqual(a2 < b2, r2); + + float3x2 a3 = float3x2(-140.5505f, -436.5867f, -351.4417f, 364.970825f, 301.8941f, 407.550964f); + float3x2 b3 = float3x2(7.00744629f, -7.32409668f, -413.075745f, -154.1189f, 449.202881f, 502.014282f); + bool3x2 r3 = bool3x2(true, true, false, false, true, true); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void float3x2_operator_less_wide_scalar() + { + float3x2 a0 = float3x2(-221.869781f, -121.546478f, -97.5239258f, 479.8811f, 67.11902f, 137.3288f); + float b0 = (199.0675f); + bool3x2 r0 = bool3x2(true, true, true, false, true, true); + TestUtils.AreEqual(a0 < b0, r0); + + float3x2 a1 = float3x2(282.9666f, -111.413147f, -288.081116f, 82.6654053f, -361.6429f, -68.0881958f); + float b1 = (258.2791f); + bool3x2 r1 = bool3x2(false, true, true, true, true, true); + TestUtils.AreEqual(a1 < b1, r1); + + float3x2 a2 = float3x2(12.7880249f, -78.76297f, 25.7277222f, 101.37085f, -330.442657f, -48.9205322f); + float b2 = (-66.703064f); + bool3x2 r2 = bool3x2(false, true, false, false, true, false); + TestUtils.AreEqual(a2 < b2, r2); + + float3x2 a3 = float3x2(359.604431f, 241.2768f, -183.437775f, 423.027161f, -334.622742f, -98.31558f); + float b3 = (-8.150085f); + bool3x2 r3 = bool3x2(false, false, true, false, true, true); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void float3x2_operator_less_scalar_wide() + { + float a0 = (-250.484924f); + float3x2 b0 = float3x2(-377.196533f, -505.147552f, 375.9267f, 110.17395f, -118.097565f, -40.4508972f); + bool3x2 r0 = bool3x2(false, false, true, true, true, true); + TestUtils.AreEqual(a0 < b0, r0); + + float a1 = (-299.744324f); + float3x2 b1 = float3x2(31.4371338f, -458.904541f, 13.6846924f, -458.5069f, 248.276489f, 389.231445f); + bool3x2 r1 = bool3x2(true, false, true, false, true, true); + TestUtils.AreEqual(a1 < b1, r1); + + float a2 = (488.745544f); + float3x2 b2 = float3x2(-221.637878f, -424.2672f, 249.059021f, -22.1361389f, -442.247742f, -340.857544f); + bool3x2 r2 = bool3x2(false, false, false, false, false, false); + TestUtils.AreEqual(a2 < b2, r2); + + float a3 = (-95.1117249f); + float3x2 b3 = float3x2(15.4094238f, 87.29248f, 495.067627f, 316.0185f, -125.568115f, 122.164795f); + bool3x2 r3 = bool3x2(true, true, true, true, false, true); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void float3x2_operator_greater_wide_wide() + { + float3x2 a0 = float3x2(-229.29068f, 505.536621f, -73.80707f, 100.292053f, -419.214783f, -159.559753f); + float3x2 b0 = float3x2(-445.845032f, -420.035278f, 299.0244f, -13.8809814f, 151.5617f, -163.50943f); + bool3x2 r0 = bool3x2(true, true, false, true, false, true); + TestUtils.AreEqual(a0 > b0, r0); + + float3x2 a1 = float3x2(-396.770355f, 127.037415f, 489.1399f, 51.9188843f, 155.384766f, -135.631653f); + float3x2 b1 = float3x2(-391.096039f, 479.283752f, -77.6748657f, -46.584198f, -415.377f, 71.46698f); + bool3x2 r1 = bool3x2(false, false, true, true, true, false); + TestUtils.AreEqual(a1 > b1, r1); + + float3x2 a2 = float3x2(-425.978149f, -228.430511f, 383.03833f, 136.533569f, 8.602417f, -251.324371f); + float3x2 b2 = float3x2(-206.061035f, 360.8363f, 236.968811f, 14.550354f, 364.735168f, -159.06131f); + bool3x2 r2 = bool3x2(false, false, true, true, false, false); + TestUtils.AreEqual(a2 > b2, r2); + + float3x2 a3 = float3x2(-345.954926f, -170.565918f, -293.2544f, 139.125f, 214.3031f, 238.7699f); + float3x2 b3 = float3x2(226.631165f, 182.796021f, 341.839355f, -79.13046f, -247.296814f, 164.589111f); + bool3x2 r3 = bool3x2(false, false, false, true, true, true); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void float3x2_operator_greater_wide_scalar() + { + float3x2 a0 = float3x2(11.156311f, -411.023224f, 385.885559f, -485.103058f, -491.180023f, 405.175354f); + float b0 = (-302.816956f); + bool3x2 r0 = bool3x2(true, false, true, false, false, true); + TestUtils.AreEqual(a0 > b0, r0); + + float3x2 a1 = float3x2(173.575073f, 501.306824f, -367.027771f, -86.12451f, -489.090576f, -172.518158f); + float b1 = (69.26929f); + bool3x2 r1 = bool3x2(true, true, false, false, false, false); + TestUtils.AreEqual(a1 > b1, r1); + + float3x2 a2 = float3x2(-18.1496277f, -238.8945f, -27.2391357f, 471.779358f, 240.164551f, -481.4781f); + float b2 = (-236.414948f); + bool3x2 r2 = bool3x2(true, false, true, true, true, false); + TestUtils.AreEqual(a2 > b2, r2); + + float3x2 a3 = float3x2(185.59436f, -510.228149f, -183.2862f, -386.127655f, -13.6382141f, -7.34790039f); + float b3 = (33.29474f); + bool3x2 r3 = bool3x2(true, false, false, false, false, false); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void float3x2_operator_greater_scalar_wide() + { + float a0 = (453.546082f); + float3x2 b0 = float3x2(-226.2044f, -423.465f, 409.405518f, 453.877075f, 87.47571f, 113.795593f); + bool3x2 r0 = bool3x2(true, true, true, false, true, true); + TestUtils.AreEqual(a0 > b0, r0); + + float a1 = (176.409241f); + float3x2 b1 = float3x2(-140.440033f, -182.48288f, -158.2933f, -162.685333f, -193.328674f, 230.181274f); + bool3x2 r1 = bool3x2(true, true, true, true, true, false); + TestUtils.AreEqual(a1 > b1, r1); + + float a2 = (-102.58783f); + float3x2 b2 = float3x2(392.520569f, -177.478668f, -10.2950134f, -24.04895f, 172.448669f, 374.048035f); + bool3x2 r2 = bool3x2(false, true, false, false, false, false); + TestUtils.AreEqual(a2 > b2, r2); + + float a3 = (-368.99762f); + float3x2 b3 = float3x2(-210.195282f, 149.470215f, -281.343262f, -100.469177f, 304.864441f, -361.524841f); + bool3x2 r3 = bool3x2(false, false, false, false, false, false); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void float3x2_operator_less_equal_wide_wide() + { + float3x2 a0 = float3x2(240.090515f, 462.213135f, 293.08252f, -427.870667f, -405.5227f, 204.591919f); + float3x2 b0 = float3x2(-81.20383f, 493.637451f, -411.4721f, 99.16443f, -295.6677f, -480.462555f); + bool3x2 r0 = bool3x2(false, true, false, true, true, false); + TestUtils.AreEqual(a0 <= b0, r0); + + float3x2 a1 = float3x2(294.6701f, -327.564453f, -456.12326f, 282.30127f, 421.881165f, -311.71283f); + float3x2 b1 = float3x2(74.41406f, 260.916138f, 306.173279f, 139.564819f, -505.752472f, -489.6268f); + bool3x2 r1 = bool3x2(false, true, true, false, false, false); + TestUtils.AreEqual(a1 <= b1, r1); + + float3x2 a2 = float3x2(84.5675049f, 447.244629f, -154.494354f, -424.364746f, 36.68451f, 267.0703f); + float3x2 b2 = float3x2(-280.0326f, 303.1599f, 511.1902f, -104.659729f, 95.14661f, -125.636353f); + bool3x2 r2 = bool3x2(false, false, true, true, true, false); + TestUtils.AreEqual(a2 <= b2, r2); + + float3x2 a3 = float3x2(307.893921f, -351.760132f, -157.360352f, 152.709045f, 372.267151f, 202.368286f); + float3x2 b3 = float3x2(376.2398f, -415.774719f, -47.48105f, 117.722107f, 469.378357f, -263.042358f); + bool3x2 r3 = bool3x2(true, false, true, false, true, false); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void float3x2_operator_less_equal_wide_scalar() + { + float3x2 a0 = float3x2(309.192444f, 69.67377f, -101.724182f, -315.9724f, -346.011047f, 424.15387f); + float b0 = (292.924255f); + bool3x2 r0 = bool3x2(false, true, true, true, true, false); + TestUtils.AreEqual(a0 <= b0, r0); + + float3x2 a1 = float3x2(-410.870056f, 183.821167f, 320.4425f, -257.870056f, -386.801758f, -182.938812f); + float b1 = (-483.902649f); + bool3x2 r1 = bool3x2(false, false, false, false, false, false); + TestUtils.AreEqual(a1 <= b1, r1); + + float3x2 a2 = float3x2(349.250122f, 373.5691f, 259.1515f, 450.130066f, -128.525543f, -43.8748779f); + float b2 = (485.311584f); + bool3x2 r2 = bool3x2(true, true, true, true, true, true); + TestUtils.AreEqual(a2 <= b2, r2); + + float3x2 a3 = float3x2(457.385742f, 479.451843f, -499.516449f, -398.132935f, 402.484863f, 87.91608f); + float b3 = (-77.6383057f); + bool3x2 r3 = bool3x2(false, false, true, true, false, false); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void float3x2_operator_less_equal_scalar_wide() + { + float a0 = (-511.152374f); + float3x2 b0 = float3x2(51.1589966f, 340.443665f, 312.81427f, 354.1925f, 136.396729f, -94.76788f); + bool3x2 r0 = bool3x2(true, true, true, true, true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + float a1 = (288.5443f); + float3x2 b1 = float3x2(304.042847f, -148.618073f, -506.3001f, 27.5812378f, 48.47113f, 104.883484f); + bool3x2 r1 = bool3x2(true, false, false, false, false, false); + TestUtils.AreEqual(a1 <= b1, r1); + + float a2 = (-488.685852f); + float3x2 b2 = float3x2(-480.435181f, 421.936646f, 239.721069f, -101.018433f, -283.951477f, -55.24353f); + bool3x2 r2 = bool3x2(true, true, true, true, true, true); + TestUtils.AreEqual(a2 <= b2, r2); + + float a3 = (-455.80484f); + float3x2 b3 = float3x2(131.107239f, -461.6988f, -388.482849f, -258.936035f, -225.223541f, -116.019989f); + bool3x2 r3 = bool3x2(true, false, true, true, true, true); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void float3x2_operator_greater_equal_wide_wide() + { + float3x2 a0 = float3x2(-386.5918f, -157.120789f, 391.015259f, -511.886871f, -5.42202759f, 287.645264f); + float3x2 b0 = float3x2(153.443f, 49.8924561f, 78.02582f, 138.813721f, -225.51059f, -339.3561f); + bool3x2 r0 = bool3x2(false, false, true, false, true, true); + TestUtils.AreEqual(a0 >= b0, r0); + + float3x2 a1 = float3x2(-122.535187f, 7.48144531f, 152.946411f, 48.9862061f, 57.3381348f, 300.4649f); + float3x2 b1 = float3x2(-373.302063f, 364.9359f, -322.7154f, 125.47821f, -25.77658f, 297.518921f); + bool3x2 r1 = bool3x2(true, false, true, false, true, true); + TestUtils.AreEqual(a1 >= b1, r1); + + float3x2 a2 = float3x2(349.25708f, 85.7496948f, -230.953308f, 418.711243f, -131.039917f, -126.512207f); + float3x2 b2 = float3x2(73.22235f, 462.783752f, 393.191345f, -95.0014343f, 381.357056f, 93.03192f); + bool3x2 r2 = bool3x2(true, false, false, true, false, false); + TestUtils.AreEqual(a2 >= b2, r2); + + float3x2 a3 = float3x2(-156.818481f, 422.3775f, -413.089325f, 219.442749f, 35.5911255f, 447.181519f); + float3x2 b3 = float3x2(254.253235f, 90.67279f, 348.938171f, 161.337646f, 79.43561f, 420.243469f); + bool3x2 r3 = bool3x2(false, true, false, true, false, true); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void float3x2_operator_greater_equal_wide_scalar() + { + float3x2 a0 = float3x2(495.4574f, -14.3451233f, -463.4748f, 217.517517f, -246.865723f, -377.6587f); + float b0 = (189.205139f); + bool3x2 r0 = bool3x2(true, false, false, true, false, false); + TestUtils.AreEqual(a0 >= b0, r0); + + float3x2 a1 = float3x2(53.8151245f, -221.505463f, 252.994324f, -116.440369f, -395.3633f, 164.772583f); + float b1 = (-123.332947f); + bool3x2 r1 = bool3x2(true, false, true, true, false, true); + TestUtils.AreEqual(a1 >= b1, r1); + + float3x2 a2 = float3x2(-287.007324f, 184.195557f, 273.012268f, -418.1424f, 249.3841f, 396.392151f); + float b2 = (355.837036f); + bool3x2 r2 = bool3x2(false, false, false, false, false, true); + TestUtils.AreEqual(a2 >= b2, r2); + + float3x2 a3 = float3x2(332.6654f, -335.12146f, -302.0869f, 254.442261f, 179.005066f, 71.1767f); + float b3 = (243.761414f); + bool3x2 r3 = bool3x2(true, false, false, true, false, false); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void float3x2_operator_greater_equal_scalar_wide() + { + float a0 = (215.435364f); + float3x2 b0 = float3x2(204.802979f, -101.104034f, -122.055023f, -70.45615f, -239.62027f, -185.992737f); + bool3x2 r0 = bool3x2(true, true, true, true, true, true); + TestUtils.AreEqual(a0 >= b0, r0); + + float a1 = (-455.612579f); + float3x2 b1 = float3x2(276.665833f, 79.39917f, 416.420532f, 379.2735f, -439.5147f, 67.14099f); + bool3x2 r1 = bool3x2(false, false, false, false, false, false); + TestUtils.AreEqual(a1 >= b1, r1); + + float a2 = (-74.56064f); + float3x2 b2 = float3x2(-367.256348f, 494.950745f, -61.2355347f, -429.170258f, -213.824677f, -264.310181f); + bool3x2 r2 = bool3x2(true, false, false, true, true, true); + TestUtils.AreEqual(a2 >= b2, r2); + + float a3 = (243.11377f); + float3x2 b3 = float3x2(-22.38388f, 304.862f, -323.686157f, 67.93805f, 125.303589f, -400.47052f); + bool3x2 r3 = bool3x2(true, false, true, true, true, true); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void float3x2_operator_add_wide_wide() + { + float3x2 a0 = float3x2(465.148376f, 278.9107f, -277.5299f, -65.1972046f, -473.324371f, -4.69555664f); + float3x2 b0 = float3x2(483.9944f, -204.07666f, -365.673553f, -509.920868f, -270.6975f, 486.763977f); + float3x2 r0 = float3x2(949.142761f, 74.8340454f, -643.2035f, -575.118042f, -744.021851f, 482.06842f); + TestUtils.AreEqual(a0 + b0, r0); + + float3x2 a1 = float3x2(-470.536774f, -109.9501f, -178.701447f, -420.033783f, 290.711121f, -446.529633f); + float3x2 b1 = float3x2(267.49176f, 251.642517f, 244.495117f, -78.67575f, 352.2055f, 82.7791748f); + float3x2 r1 = float3x2(-203.045013f, 141.692413f, 65.79367f, -498.709534f, 642.9166f, -363.750458f); + TestUtils.AreEqual(a1 + b1, r1); + + float3x2 a2 = float3x2(491.066467f, -261.1173f, -298.4069f, 502.4286f, 284.5943f, 401.128418f); + float3x2 b2 = float3x2(462.5473f, -405.492f, -428.498322f, -41.87259f, -269.9275f, 75.20447f); + float3x2 r2 = float3x2(953.6138f, -666.6093f, -726.9052f, 460.556f, 14.6668091f, 476.3329f); + TestUtils.AreEqual(a2 + b2, r2); + + float3x2 a3 = float3x2(-36.26349f, -102.949158f, 503.198181f, -384.4291f, -45.22821f, -198.67395f); + float3x2 b3 = float3x2(-141.913391f, -222.186768f, 41.3057251f, 148.339478f, -177.233124f, -176.51889f); + float3x2 r3 = float3x2(-178.17688f, -325.135925f, 544.5039f, -236.08963f, -222.461334f, -375.192841f); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void float3x2_operator_add_wide_scalar() + { + float3x2 a0 = float3x2(459.898315f, -447.663361f, -94.43863f, 126.429871f, -36.254364f, -349.6413f); + float b0 = (500.997253f); + float3x2 r0 = float3x2(960.895569f, 53.3338928f, 406.558624f, 627.4271f, 464.7429f, 151.355957f); + TestUtils.AreEqual(a0 + b0, r0); + + float3x2 a1 = float3x2(-2.79125977f, 443.115234f, 268.092224f, 41.3210449f, -471.256073f, -2.664978f); + float b1 = (-478.4148f); + float3x2 r1 = float3x2(-481.206055f, -35.29956f, -210.322571f, -437.09375f, -949.6709f, -481.079773f); + TestUtils.AreEqual(a1 + b1, r1); + + float3x2 a2 = float3x2(78.98584f, 311.725464f, 10.3458252f, -151.244446f, 355.2328f, -197.800751f); + float b2 = (202.14801f); + float3x2 r2 = float3x2(281.13385f, 513.8735f, 212.493835f, 50.9035645f, 557.3808f, 4.34725952f); + TestUtils.AreEqual(a2 + b2, r2); + + float3x2 a3 = float3x2(255.955261f, -181.626556f, -2.45492554f, 300.900635f, -236.491943f, -160.5841f); + float b3 = (244.1471f); + float3x2 r3 = float3x2(500.102356f, 62.52054f, 241.692169f, 545.0477f, 7.65515137f, 83.56299f); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void float3x2_operator_add_scalar_wide() + { + float a0 = (-325.512756f); + float3x2 b0 = float3x2(-264.088135f, -106.009247f, -355.4473f, -447.3303f, -158.7002f, -199.4837f); + float3x2 r0 = float3x2(-589.6009f, -431.522f, -680.9601f, -772.843f, -484.212952f, -524.99646f); + TestUtils.AreEqual(a0 + b0, r0); + + float a1 = (180.318115f); + float3x2 b1 = float3x2(337.579346f, -37.0550232f, 230.805f, -140.174347f, 18.02417f, -138.614349f); + float3x2 r1 = float3x2(517.897461f, 143.263092f, 411.1231f, 40.14377f, 198.342285f, 41.7037659f); + TestUtils.AreEqual(a1 + b1, r1); + + float a2 = (26.9041748f); + float3x2 b2 = float3x2(-374.5376f, 154.46759f, 268.38385f, -190.963013f, 188.617249f, -504.916138f); + float3x2 r2 = float3x2(-347.633423f, 181.371765f, 295.288025f, -164.058838f, 215.521423f, -478.011963f); + TestUtils.AreEqual(a2 + b2, r2); + + float a3 = (20.45404f); + float3x2 b3 = float3x2(197.945374f, 251.411926f, -421.0904f, 111.445374f, -73.26889f, 480.884583f); + float3x2 r3 = float3x2(218.399414f, 271.865967f, -400.636353f, 131.899414f, -52.81485f, 501.338623f); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void float3x2_operator_sub_wide_wide() + { + float3x2 a0 = float3x2(133.371033f, -131.832123f, -197.293152f, -485.28656f, -337.550323f, 471.6671f); + float3x2 b0 = float3x2(123.460266f, 359.56012f, -48.2484741f, 478.979065f, 207.158325f, 142.36731f); + float3x2 r0 = float3x2(9.910767f, -491.392242f, -149.044678f, -964.2656f, -544.7086f, 329.2998f); + TestUtils.AreEqual(a0 - b0, r0); + + float3x2 a1 = float3x2(146.506592f, -130.585052f, 110.7771f, -235.5416f, 78.87933f, -347.686157f); + float3x2 b1 = float3x2(-125.6055f, -65.29901f, -477.876434f, 164.5f, 428.009583f, 72.62781f); + float3x2 r1 = float3x2(272.1121f, -65.28604f, 588.653564f, -400.0416f, -349.130249f, -420.313965f); + TestUtils.AreEqual(a1 - b1, r1); + + float3x2 a2 = float3x2(-470.820557f, -11.45929f, -167.9479f, 330.676758f, -508.350861f, -252.031891f); + float3x2 b2 = float3x2(-446.8805f, 432.091431f, -225.554657f, -112.451965f, -210.6128f, -172.925049f); + float3x2 r2 = float3x2(-23.9400635f, -443.55072f, 57.60675f, 443.128723f, -297.738068f, -79.10684f); + TestUtils.AreEqual(a2 - b2, r2); + + float3x2 a3 = float3x2(-427.9342f, 192.6576f, 168.429321f, 457.308777f, 470.058533f, -299.711884f); + float3x2 b3 = float3x2(-80.60748f, 270.046082f, -154.255585f, 148.475769f, 13.6611328f, 70.67108f); + float3x2 r3 = float3x2(-347.326721f, -77.38849f, 322.6849f, 308.833f, 456.3974f, -370.382965f); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void float3x2_operator_sub_wide_scalar() + { + float3x2 a0 = float3x2(48.9367065f, 410.4516f, -364.4417f, 163.980591f, -460.067322f, 110.919434f); + float b0 = (-291.5904f); + float3x2 r0 = float3x2(340.5271f, 702.042f, -72.85132f, 455.570984f, -168.476929f, 402.509827f); + TestUtils.AreEqual(a0 - b0, r0); + + float3x2 a1 = float3x2(204.358337f, -377.9257f, -470.262054f, 400.5349f, 461.507568f, -246.287262f); + float b1 = (180.269714f); + float3x2 r1 = float3x2(24.088623f, -558.195435f, -650.531738f, 220.2652f, 281.237854f, -426.556976f); + TestUtils.AreEqual(a1 - b1, r1); + + float3x2 a2 = float3x2(21.6052856f, -121.427368f, -122.718414f, -122.938721f, 360.15094f, 342.874573f); + float b2 = (246.350708f); + float3x2 r2 = float3x2(-224.745422f, -367.778076f, -369.069122f, -369.289429f, 113.800232f, 96.5238647f); + TestUtils.AreEqual(a2 - b2, r2); + + float3x2 a3 = float3x2(18.92981f, 97.0437f, 485.914978f, -205.75766f, 253.443237f, -121.163055f); + float b3 = (164.602356f); + float3x2 r3 = float3x2(-145.672546f, -67.5586548f, 321.312622f, -370.360016f, 88.84088f, -285.7654f); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void float3x2_operator_sub_scalar_wide() + { + float a0 = (294.5865f); + float3x2 b0 = float3x2(452.352539f, 256.9898f, -275.159882f, -89.02753f, 488.2284f, -333.2173f); + float3x2 r0 = float3x2(-157.766052f, 37.59668f, 569.746338f, 383.614f, -193.6419f, 627.8038f); + TestUtils.AreEqual(a0 - b0, r0); + + float a1 = (-64.233f); + float3x2 b1 = float3x2(-66.04172f, 341.204956f, -385.775055f, 75.3947754f, 354.943726f, 169.131409f); + float3x2 r1 = float3x2(1.80871582f, -405.437958f, 321.542053f, -139.627777f, -419.176727f, -233.36441f); + TestUtils.AreEqual(a1 - b1, r1); + + float a2 = (88.21661f); + float3x2 b2 = float3x2(1.73498535f, 122.538025f, -264.945f, -50.83719f, -347.65033f, 4.06555176f); + float3x2 r2 = float3x2(86.48163f, -34.32141f, 353.161621f, 139.0538f, 435.866943f, 84.15106f); + TestUtils.AreEqual(a2 - b2, r2); + + float a3 = (-79.09543f); + float3x2 b3 = float3x2(354.358337f, -292.4925f, -53.2089844f, -246.3476f, 299.203369f, 432.1847f); + float3x2 r3 = float3x2(-433.453766f, 213.397064f, -25.8864441f, 167.252167f, -378.2988f, -511.280121f); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void float3x2_operator_mul_wide_wide() + { + float3x2 a0 = float3x2(-394.780548f, -412.3722f, -25.8745728f, -241.045959f, -93.6759949f, 244.159973f); + float3x2 b0 = float3x2(-149.763977f, -345.04538f, -284.334045f, 267.979248f, -326.6485f, -150.689667f); + float3x2 r0 = float3x2(59123.9063f, 142287.125f, 7357.022f, -64595.3164f, 30599.123f, -36792.3867f); + TestUtils.AreEqual(a0 * b0, r0); + + float3x2 a1 = float3x2(494.688477f, 53.5379639f, -239.4964f, 236.675842f, -211.8562f, -216.654816f); + float3x2 b1 = float3x2(207.732422f, 366.192871f, 358.880737f, 214.853577f, 253.422791f, -307.7138f); + float3x2 r1 = float3x2(102762.836f, 19605.22f, -85950.64f, 50850.6523f, -53689.19f, 66667.68f); + TestUtils.AreEqual(a1 * b1, r1); + + float3x2 a2 = float3x2(467.9583f, -178.021912f, -386.394257f, -422.4354f, 464.589539f, -251.315674f); + float3x2 b2 = float3x2(184.47113f, 426.436462f, -144.281433f, 459.4796f, -358.313354f, -201.3652f); + float3x2 r2 = float3x2(86324.8f, -75915.03f, 55749.5156f, -194100.453f, -166468.641f, 50606.23f); + TestUtils.AreEqual(a2 * b2, r2); + + float3x2 a3 = float3x2(-104.97879f, -66.93417f, -39.829895f, 401.5656f, 434.146179f, -336.4542f); + float3x2 b3 = float3x2(254.909973f, 168.520935f, 8.794556f, -194.846466f, -405.362671f, -180.732178f); + float3x2 r3 = float3x2(-26760.14f, -11279.81f, -350.286224f, -78243.64f, -175986.656f, 60808.0977f); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void float3x2_operator_mul_wide_scalar() + { + float3x2 a0 = float3x2(328.203f, -290.10672f, 236.995728f, 120.481384f, 357.903137f, 134.867249f); + float b0 = (192.211182f); + float3x2 r0 = float3x2(63084.2852f, -55761.7539f, 45553.23f, 23157.87f, 68792.9844f, 25922.9941f); + TestUtils.AreEqual(a0 * b0, r0); + + float3x2 a1 = float3x2(-477.3105f, -46.729187f, -238.405f, 422.08252f, -48.83484f, 355.30835f); + float b1 = (-438.272919f); + float3x2 r1 = float3x2(209192.266f, 20480.1367f, 104486.453f, -184987.344f, 21402.9883f, -155722.031f); + TestUtils.AreEqual(a1 * b1, r1); + + float3x2 a2 = float3x2(119.356628f, 98.23602f, -325.552155f, 53.9373169f, -87.45099f, -130.474121f); + float b2 = (-196.995819f); + float3x2 r2 = float3x2(-23512.7559f, -19352.0859f, 64132.4141f, -10625.4258f, 17227.4785f, 25702.8555f); + TestUtils.AreEqual(a2 * b2, r2); + + float3x2 a3 = float3x2(-222.594574f, 293.361084f, 174.381958f, -327.120056f, 56.62915f, 257.541565f); + float b3 = (126.015015f); + float3x2 r3 = float3x2(-28050.2578f, 36967.9023f, 21974.7441f, -41222.04f, 7136.123f, 32454.1035f); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void float3x2_operator_mul_scalar_wide() + { + float a0 = (-464.5347f); + float3x2 b0 = float3x2(329.360962f, -198.683441f, 184.0794f, 256.016174f, 266.226318f, -97.8947449f); + float3x2 r0 = float3x2(-152999.6f, 92295.35f, -85511.27f, -118928.4f, -123671.359f, 45475.5039f); + TestUtils.AreEqual(a0 * b0, r0); + + float a1 = (159.748108f); + float3x2 b1 = float3x2(-351.8222f, 491.801575f, 49.90204f, 424.4626f, 160.1181f, -395.9921f); + float3x2 r1 = float3x2(-56202.93f, 78564.37f, 7971.75635f, 67807.09f, 25578.5645f, -63258.99f); + TestUtils.AreEqual(a1 * b1, r1); + + float a2 = (125.20166f); + float3x2 b2 = float3x2(-265.0158f, 314.656128f, -292.712036f, -37.72989f, 165.362244f, 356.517761f); + float3x2 r2 = float3x2(-33180.418f, 39395.47f, -36648.03f, -4723.84473f, 20703.627f, 44636.6172f); + TestUtils.AreEqual(a2 * b2, r2); + + float a3 = (-188.813324f); + float3x2 b3 = float3x2(504.9157f, 40.5721436f, -206.775116f, -61.60269f, 118.971619f, 53.7483521f); + float3x2 r3 = float3x2(-95334.81f, -7660.56152f, 39041.9f, 11631.4092f, -22463.4277f, -10148.4053f); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void float3x2_operator_div_wide_wide() + { + float3x2 a0 = float3x2(246.265747f, -269.85614f, -451.619537f, -7.388489f, -308.205566f, -373.3948f); + float3x2 b0 = float3x2(172.119812f, -77.14111f, -325.8354f, -450.608673f, -261.262146f, -122.449493f); + float3x2 r0 = float3x2(1.43078089f, 3.49821424f, 1.38603592f, 0.0163966864f, 1.17967939f, 3.04937816f); + TestUtils.AreEqual(a0 / b0, r0); + + float3x2 a1 = float3x2(360.41864f, 25.8097534f, -274.050476f, 127.538574f, -447.671753f, -137.458588f); + float3x2 b1 = float3x2(-93.2107849f, -442.005219f, 484.362732f, -390.7818f, 402.02533f, 316.6507f); + float3x2 r1 = float3x2(-3.86670542f, -0.0583924167f, -0.565795958f, -0.326367736f, -1.11354113f, -0.434101641f); + TestUtils.AreEqual(a1 / b1, r1); + + float3x2 a2 = float3x2(-136.133179f, 12.4376221f, 228.513f, 356.972351f, -24.7620544f, 411.6684f); + float3x2 b2 = float3x2(397.154419f, -303.2622f, -118.591248f, -81.6503f, -84.34686f, -488.419434f); + float3x2 r2 = float3x2(-0.3427714f, -0.0410127677f, -1.926896f, -4.37196636f, 0.2935741f, -0.8428584f); + TestUtils.AreEqual(a2 / b2, r2); + + float3x2 a3 = float3x2(-204.078888f, 11.3654175f, 82.15228f, 37.3894653f, 394.2658f, -429.912781f); + float3x2 b3 = float3x2(404.160522f, -136.728851f, -19.8327026f, -102.607239f, 166.116028f, -112.840179f); + float3x2 r3 = float3x2(-0.504945159f, -0.0831237659f, -4.14226341f, -0.364394039f, 2.37343621f, 3.80992651f); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void float3x2_operator_div_wide_scalar() + { + float3x2 a0 = float3x2(-244.517456f, 69.1123047f, -333.023132f, 257.396851f, 403.2456f, 154.34436f); + float b0 = (-60.0243835f); + float3x2 r0 = float3x2(4.07363558f, -1.15140378f, 5.548131f, -4.28820467f, -6.71803f, -2.571361f); + TestUtils.AreEqual(a0 / b0, r0); + + float3x2 a1 = float3x2(131.526611f, -348.9238f, -275.5387f, 210.557922f, 287.6424f, 504.372253f); + float b1 = (-261.8864f); + float3x2 r1 = float3x2(-0.5022277f, 1.33234787f, 1.05213058f, -0.8040047f, -1.0983479f, -1.92591989f); + TestUtils.AreEqual(a1 / b1, r1); + + float3x2 a2 = float3x2(491.7871f, -253.236664f, 272.895142f, 178.096191f, -460.87558f, -502.646027f); + float b2 = (-26.6315918f); + float3x2 r2 = float3x2(-18.4663048f, 9.508882f, -10.2470455f, -6.687403f, 17.3055973f, 18.874052f); + TestUtils.AreEqual(a2 / b2, r2); + + float3x2 a3 = float3x2(-84.3248f, 83.7963257f, 197.042053f, 317.168274f, 403.387146f, 81.6464844f); + float b3 = (-174.690338f); + float3x2 r3 = float3x2(0.482710153f, -0.479684949f, -1.12795055f, -1.8156029f, -2.30915546f, -0.467378378f); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void float3x2_operator_div_scalar_wide() + { + float a0 = (41.73767f); + float3x2 b0 = float3x2(-422.676147f, 248.129639f, 449.391357f, 245.858154f, -326.6206f, 163.715088f); + float3x2 r0 = float3x2(-0.09874622f, 0.168209136f, 0.0928759947f, 0.169763222f, -0.1277864f, 0.2549409f); + TestUtils.AreEqual(a0 / b0, r0); + + float a1 = (333.6645f); + float3x2 b1 = float3x2(38.2910767f, -472.979767f, 192.230164f, -200.296875f, -490.181519f, -211.10257f); + float3x2 r1 = float3x2(8.713897f, -0.7054519f, 1.73575509f, -1.66584969f, -0.6806958f, -1.58058f); + TestUtils.AreEqual(a1 / b1, r1); + + float a2 = (-322.852356f); + float3x2 b2 = float3x2(-137.985291f, 84.32971f, 355.063477f, 276.427246f, -382.988037f, -488.647156f); + float3x2 r2 = float3x2(2.339759f, -3.8284533f, -0.909280658f, -1.16794693f, 0.8429829f, 0.6607065f); + TestUtils.AreEqual(a2 / b2, r2); + + float a3 = (344.846f); + float3x2 b3 = float3x2(168.85498f, -44.1955872f, 420.55072f, -175.6152f, -9.220581f, -344.194275f); + float3x2 r3 = float3x2(2.04226136f, -7.802725f, 0.8199867f, -1.96364558f, -37.3995972f, -1.00189352f); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void float3x2_operator_mod_wide_wide() + { + float3x2 a0 = float3x2(-442.309875f, 368.5005f, -1.09390259f, -364.673828f, -197.343933f, -34.0349121f); + float3x2 b0 = float3x2(-43.2450562f, -144.195862f, -62.6404724f, -336.828247f, -154.61026f, -154.029358f); + float3x2 r0 = float3x2(-9.859314f, 80.1087646f, -1.09390259f, -27.8455811f, -42.7336731f, -34.0349121f); + TestUtils.AreEqual(a0 % b0, r0); + + float3x2 a1 = float3x2(-101.348572f, 208.318542f, -140.770325f, 183.44696f, -463.368378f, 83.83911f); + float3x2 b1 = float3x2(487.0462f, -469.8291f, -145.203766f, -203.384f, -22.52008f, 224.69f); + float3x2 r1 = float3x2(-101.348572f, 208.318542f, -140.770325f, 183.44696f, -12.9667664f, 83.83911f); + TestUtils.AreEqual(a1 % b1, r1); + + float3x2 a2 = float3x2(-64.71405f, 295.066833f, 212.25708f, 349.6283f, 119.875916f, -37.8058167f); + float3x2 b2 = float3x2(-435.62674f, 12.0955811f, 40.3787842f, 345.784851f, -433.471252f, -355.649963f); + float3x2 r2 = float3x2(-64.71405f, 4.772888f, 10.3631592f, 3.84344482f, 119.875916f, -37.8058167f); + TestUtils.AreEqual(a2 % b2, r2); + + float3x2 a3 = float3x2(142.41156f, 332.244263f, -464.194275f, -296.147827f, 225.175354f, -212.060272f); + float3x2 b3 = float3x2(4.015442f, 66.65979f, -221.853638f, -355.056763f, 357.935974f, 71.3753052f); + float3x2 r3 = float3x2(1.87109375f, 65.6051f, -20.487f, -296.147827f, 225.175354f, -69.30966f); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void float3x2_operator_mod_wide_scalar() + { + float3x2 a0 = float3x2(-433.417f, -5.51412964f, 393.3944f, 299.41156f, -120.80603f, -502.939026f); + float b0 = (-90.49924f); + float3x2 r0 = float3x2(-71.4200439f, -5.51412964f, 31.39746f, 27.9138489f, -30.3067932f, -50.44284f); + TestUtils.AreEqual(a0 % b0, r0); + + float3x2 a1 = float3x2(-450.807678f, -84.47363f, -318.7815f, 433.4547f, -54.60019f, -172.338867f); + float b1 = (186.094788f); + float3x2 r1 = float3x2(-78.6181f, -84.47363f, -132.6867f, 61.2651367f, -54.60019f, -172.338867f); + TestUtils.AreEqual(a1 % b1, r1); + + float3x2 a2 = float3x2(-429.714661f, 5.79638672f, 254.5108f, -433.0937f, -203.082611f, -75.3564148f); + float b2 = (222.361877f); + float3x2 r2 = float3x2(-207.352783f, 5.79638672f, 32.1489258f, -210.731812f, -203.082611f, -75.3564148f); + TestUtils.AreEqual(a2 % b2, r2); + + float3x2 a3 = float3x2(252.289124f, 5.337219f, -279.060425f, 483.5506f, -331.993347f, 336f); + float b3 = (-69.4039f); + float3x2 r3 = float3x2(44.0774231f, 5.337219f, -1.44482422f, 67.1272f, -54.3777466f, 58.3844f); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void float3x2_operator_mod_scalar_wide() + { + float a0 = (-396.4224f); + float3x2 b0 = float3x2(-159.140259f, 230.17334f, 14.7793579f, -303.1565f, 399.635f, 206.6947f); + float3x2 r0 = float3x2(-78.14188f, -166.249054f, -12.1590881f, -93.2659f, -396.4224f, -189.727692f); + TestUtils.AreEqual(a0 % b0, r0); + + float a1 = (397.0448f); + float3x2 b1 = float3x2(-393.890656f, -372.067078f, 201.012268f, -95.566864f, -258.951477f, 106.983582f); + float3x2 r1 = float3x2(3.15414429f, 24.9777222f, 196.032532f, 14.7773438f, 138.093323f, 76.0940552f); + TestUtils.AreEqual(a1 % b1, r1); + + float a2 = (469.323547f); + float3x2 b2 = float3x2(-34.80899f, 184.836548f, 374.79425f, -131.872711f, -120.092865f, 4.506653f); + float3x2 r2 = float3x2(16.8066711f, 99.65045f, 94.5293f, 73.7054138f, 109.044952f, 0.631652832f); + TestUtils.AreEqual(a2 % b2, r2); + + float a3 = (-111.401947f); + float3x2 b3 = float3x2(391.54248f, -218.668884f, 196.377441f, -511.032623f, 499.9535f, -433.523071f); + float3x2 r3 = float3x2(-111.401947f, -111.401947f, -111.401947f, -111.401947f, -111.401947f, -111.401947f); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void float3x2_operator_plus() + { + float3x2 a0 = float3x2(271.670837f, -79.08023f, -330.985046f, 31.824707f, 315.449524f, 319.222168f); + float3x2 r0 = float3x2(271.670837f, -79.08023f, -330.985046f, 31.824707f, 315.449524f, 319.222168f); + TestUtils.AreEqual(+a0, r0); + + float3x2 a1 = float3x2(190.324646f, -320.518463f, 102.054382f, -107.00351f, -428.7762f, 377.230164f); + float3x2 r1 = float3x2(190.324646f, -320.518463f, 102.054382f, -107.00351f, -428.7762f, 377.230164f); + TestUtils.AreEqual(+a1, r1); + + float3x2 a2 = float3x2(234.773926f, 258.330383f, 465.355957f, 309.59314f, -316.937134f, -230.052673f); + float3x2 r2 = float3x2(234.773926f, 258.330383f, 465.355957f, 309.59314f, -316.937134f, -230.052673f); + TestUtils.AreEqual(+a2, r2); + + float3x2 a3 = float3x2(301.7851f, 350.2464f, 60.8197632f, -472.4421f, -364.802551f, 239.152344f); + float3x2 r3 = float3x2(301.7851f, 350.2464f, 60.8197632f, -472.4421f, -364.802551f, 239.152344f); + TestUtils.AreEqual(+a3, r3); + } + + [TestCompiler] + public static void float3x2_operator_neg() + { + float3x2 a0 = float3x2(420.227173f, -196.2575f, -335.426819f, 509.04364f, -33.0144043f, -498.575317f); + float3x2 r0 = float3x2(-420.227173f, 196.2575f, 335.426819f, -509.04364f, 33.0144043f, 498.575317f); + TestUtils.AreEqual(-a0, r0); + + float3x2 a1 = float3x2(-495.837952f, 19.68689f, 268.2367f, -180.600525f, 223.381287f, -410.392059f); + float3x2 r1 = float3x2(495.837952f, -19.68689f, -268.2367f, 180.600525f, -223.381287f, 410.392059f); + TestUtils.AreEqual(-a1, r1); + + float3x2 a2 = float3x2(-395.681549f, -110.9393f, -238.2196f, 292.543518f, 469.2926f, 48.29071f); + float3x2 r2 = float3x2(395.681549f, 110.9393f, 238.2196f, -292.543518f, -469.2926f, -48.29071f); + TestUtils.AreEqual(-a2, r2); + + float3x2 a3 = float3x2(88.7237549f, 55.7080078f, 464.541382f, 499.2428f, 175.015015f, 196.387573f); + float3x2 r3 = float3x2(-88.7237549f, -55.7080078f, -464.541382f, -499.2428f, -175.015015f, -196.387573f); + TestUtils.AreEqual(-a3, r3); + } + + [TestCompiler] + public static void float3x2_operator_prefix_inc() + { + float3x2 a0 = float3x2(-99.79556f, 458.741821f, 96.1790161f, -48.55246f, -315.728973f, -299.230164f); + float3x2 r0 = float3x2(-98.79556f, 459.741821f, 97.1790161f, -47.55246f, -314.728973f, -298.230164f); + TestUtils.AreEqual(++a0, r0); + + float3x2 a1 = float3x2(-323.614868f, -76.50766f, -305.584778f, 64.0965f, 148.679321f, 363.2849f); + float3x2 r1 = float3x2(-322.614868f, -75.50766f, -304.584778f, 65.0965f, 149.679321f, 364.2849f); + TestUtils.AreEqual(++a1, r1); + + float3x2 a2 = float3x2(-115.559235f, -179.894653f, 339.8766f, -38.41043f, -153.373688f, 261.625549f); + float3x2 r2 = float3x2(-114.559235f, -178.894653f, 340.8766f, -37.41043f, -152.373688f, 262.625549f); + TestUtils.AreEqual(++a2, r2); + + float3x2 a3 = float3x2(155.030823f, 301.3058f, -221.355408f, -429.698151f, -271.2893f, -264.380066f); + float3x2 r3 = float3x2(156.030823f, 302.3058f, -220.355408f, -428.698151f, -270.2893f, -263.380066f); + TestUtils.AreEqual(++a3, r3); + } + + [TestCompiler] + public static void float3x2_operator_postfix_inc() + { + float3x2 a0 = float3x2(322.943542f, 472.0525f, 203.48761f, -49.8545837f, -31.4205322f, 455.3366f); + float3x2 r0 = float3x2(322.943542f, 472.0525f, 203.48761f, -49.8545837f, -31.4205322f, 455.3366f); + TestUtils.AreEqual(a0++, r0); + + float3x2 a1 = float3x2(271.454651f, 153.7503f, -174.173f, -427.401062f, 215.110229f, 159.861023f); + float3x2 r1 = float3x2(271.454651f, 153.7503f, -174.173f, -427.401062f, 215.110229f, 159.861023f); + TestUtils.AreEqual(a1++, r1); + + float3x2 a2 = float3x2(-333.050446f, 287.220459f, -170.104645f, -270.652466f, -162.86026f, 454.488831f); + float3x2 r2 = float3x2(-333.050446f, 287.220459f, -170.104645f, -270.652466f, -162.86026f, 454.488831f); + TestUtils.AreEqual(a2++, r2); + + float3x2 a3 = float3x2(-449.9273f, -311.435852f, 69.7314453f, -232.299652f, -341.498535f, 188.006592f); + float3x2 r3 = float3x2(-449.9273f, -311.435852f, 69.7314453f, -232.299652f, -341.498535f, 188.006592f); + TestUtils.AreEqual(a3++, r3); + } + + [TestCompiler] + public static void float3x2_operator_prefix_dec() + { + float3x2 a0 = float3x2(-416.201233f, -96.63788f, -50.14566f, -207.316437f, 439.479065f, -304.400818f); + float3x2 r0 = float3x2(-417.201233f, -97.63788f, -51.14566f, -208.316437f, 438.479065f, -305.400818f); + TestUtils.AreEqual(--a0, r0); + + float3x2 a1 = float3x2(337.968933f, 171.964539f, -227.44281f, 298.2848f, 326.5078f, 400.7209f); + float3x2 r1 = float3x2(336.968933f, 170.964539f, -228.44281f, 297.2848f, 325.5078f, 399.7209f); + TestUtils.AreEqual(--a1, r1); + + float3x2 a2 = float3x2(-478.031372f, -24.5845032f, 112.796875f, -341.9763f, -503.27417f, -79.6352539f); + float3x2 r2 = float3x2(-479.031372f, -25.5845032f, 111.796875f, -342.9763f, -504.27417f, -80.6352539f); + TestUtils.AreEqual(--a2, r2); + + float3x2 a3 = float3x2(-131.00415f, -15.7086487f, 188.758423f, 307.791931f, -406.667725f, 181.4751f); + float3x2 r3 = float3x2(-132.00415f, -16.7086487f, 187.758423f, 306.791931f, -407.667725f, 180.4751f); + TestUtils.AreEqual(--a3, r3); + } + + [TestCompiler] + public static void float3x2_operator_postfix_dec() + { + float3x2 a0 = float3x2(-376.5924f, 16.9697266f, -0.2506714f, -202.323273f, 409.557556f, 47.85663f); + float3x2 r0 = float3x2(-376.5924f, 16.9697266f, -0.2506714f, -202.323273f, 409.557556f, 47.85663f); + TestUtils.AreEqual(a0--, r0); + + float3x2 a1 = float3x2(-281.1117f, -182.405731f, 450.1281f, -129.232666f, -332.154968f, -261.0089f); + float3x2 r1 = float3x2(-281.1117f, -182.405731f, 450.1281f, -129.232666f, -332.154968f, -261.0089f); + TestUtils.AreEqual(a1--, r1); + + float3x2 a2 = float3x2(205.461121f, -483.066528f, 378.641235f, 487.344849f, -192.177856f, -357.0542f); + float3x2 r2 = float3x2(205.461121f, -483.066528f, 378.641235f, 487.344849f, -192.177856f, -357.0542f); + TestUtils.AreEqual(a2--, r2); + + float3x2 a3 = float3x2(-396.302063f, 115.867737f, -20.8232117f, 323.4054f, 379.156128f, 311.299f); + float3x2 r3 = float3x2(-396.302063f, 115.867737f, -20.8232117f, 323.4054f, 379.156128f, 311.299f); + TestUtils.AreEqual(a3--, r3); + } + + + } +} diff --git a/package/Tests/Tests/Shared/TestFloat3x2.gen.cs.meta b/package/Tests/Tests/Shared/TestFloat3x2.gen.cs.meta new file mode 100755 index 000000000..e0a2446bd --- /dev/null +++ b/package/Tests/Tests/Shared/TestFloat3x2.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 5c2a01faa80e74147aeb6f5a1d9fc18d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/package/Tests/Tests/Shared/TestFloat3x3.gen.cs b/package/Tests/Tests/Shared/TestFloat3x3.gen.cs new file mode 100755 index 000000000..a8c8d87d9 --- /dev/null +++ b/package/Tests/Tests/Shared/TestFloat3x3.gen.cs @@ -0,0 +1,960 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using NUnit.Framework; +using static Unity.Mathematics.math; +using Burst.Compiler.IL.Tests; + +namespace Unity.Mathematics.Tests +{ + [TestFixture] + public class TestFloat3x3 + { + [TestCompiler] + public static void float3x3_zero() + { + TestUtils.AreEqual(float3x3.zero.c0.x, 0.0f); + TestUtils.AreEqual(float3x3.zero.c0.y, 0.0f); + TestUtils.AreEqual(float3x3.zero.c0.z, 0.0f); + TestUtils.AreEqual(float3x3.zero.c1.x, 0.0f); + TestUtils.AreEqual(float3x3.zero.c1.y, 0.0f); + TestUtils.AreEqual(float3x3.zero.c1.z, 0.0f); + TestUtils.AreEqual(float3x3.zero.c2.x, 0.0f); + TestUtils.AreEqual(float3x3.zero.c2.y, 0.0f); + TestUtils.AreEqual(float3x3.zero.c2.z, 0.0f); + } + + [TestCompiler] + public static void float3x3_identity() + { + TestUtils.AreEqual(float3x3.identity.c0.x, 1.0f); + TestUtils.AreEqual(float3x3.identity.c0.y, 0.0f); + TestUtils.AreEqual(float3x3.identity.c0.z, 0.0f); + TestUtils.AreEqual(float3x3.identity.c1.x, 0.0f); + TestUtils.AreEqual(float3x3.identity.c1.y, 1.0f); + TestUtils.AreEqual(float3x3.identity.c1.z, 0.0f); + TestUtils.AreEqual(float3x3.identity.c2.x, 0.0f); + TestUtils.AreEqual(float3x3.identity.c2.y, 0.0f); + TestUtils.AreEqual(float3x3.identity.c2.z, 1.0f); + } + + [TestCompiler] + public static void float3x3_operator_equal_wide_wide() + { + float3x3 a0 = float3x3(-135.18924f, -49.0941162f, 169.129822f, 240.8053f, 314.7392f, 442.393f, 177.924438f, 335.5334f, 168.15448f); + float3x3 b0 = float3x3(-220.014648f, 66.98004f, 499.2016f, -371.1131f, 208.448669f, 390.8037f, -72.44382f, 362.97644f, 194.678345f); + bool3x3 r0 = bool3x3(false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + float3x3 a1 = float3x3(350.729553f, 367.178467f, 46.9414673f, 188.76416f, -97.2113953f, -293.320984f, -234.822937f, 417.0337f, 26.3864136f); + float3x3 b1 = float3x3(471.644836f, -404.044678f, -144.696747f, -494.446655f, -252.970367f, 234.417114f, 398.724f, 260.4287f, 370.144226f); + bool3x3 r1 = bool3x3(false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + float3x3 a2 = float3x3(269.245728f, 29.4741821f, 479.485229f, -237.230957f, -221.9837f, -506.672546f, -22.98944f, 487.260864f, -419.731964f); + float3x3 b2 = float3x3(89.579834f, -434.816833f, -109.845337f, 336.973022f, -409.154968f, 500.387573f, -174.081818f, 395.101135f, 350.3393f); + bool3x3 r2 = bool3x3(false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + float3x3 a3 = float3x3(337.2033f, 245.043884f, 390.215881f, 84.4129639f, 434.2079f, -68.7284241f, 485.769958f, 413.169739f, -418.2693f); + float3x3 b3 = float3x3(-243.144592f, -416.397369f, 151.576477f, -18.2243347f, -431.677917f, -468.330963f, 429.495728f, 477.389221f, -433.4254f); + bool3x3 r3 = bool3x3(false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void float3x3_operator_equal_wide_scalar() + { + float3x3 a0 = float3x3(65.6712f, 404.415527f, -269.730164f, 83.6306152f, 152.9945f, -155.868286f, 314.671265f, 386.365173f, 290.04895f); + float b0 = (-155.815765f); + bool3x3 r0 = bool3x3(false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + float3x3 a1 = float3x3(-132.6352f, -69.68326f, -191.190765f, 186.845215f, -232.895691f, -319.144043f, -49.70108f, -300.8819f, 333.396851f); + float b1 = (-65.66748f); + bool3x3 r1 = bool3x3(false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + float3x3 a2 = float3x3(386.3775f, -309.1172f, 141.542358f, -227.323334f, 83.87286f, -410.91687f, 110.501282f, -390.103577f, 36.57434f); + float b2 = (-296.7019f); + bool3x3 r2 = bool3x3(false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + float3x3 a3 = float3x3(-427.541443f, 175.8117f, -193.47995f, 291.051941f, 423.97168f, -429.8739f, -275.156952f, -56.3323669f, -95.83597f); + float b3 = (-268.170837f); + bool3x3 r3 = bool3x3(false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void float3x3_operator_equal_scalar_wide() + { + float a0 = (36.38391f); + float3x3 b0 = float3x3(-400.4892f, -71.2868347f, 156.978088f, -225.238739f, 499.141785f, -211.979919f, 428.311951f, -489.501343f, -5.691559f); + bool3x3 r0 = bool3x3(false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + float a1 = (-30.8659363f); + float3x3 b1 = float3x3(-362.9831f, 184.503174f, -160.470612f, 316.668823f, 390.369263f, 505.1051f, -294.6487f, 443.1991f, 96.5592651f); + bool3x3 r1 = bool3x3(false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + float a2 = (-257.012939f); + float3x3 b2 = float3x3(-245.054962f, 326.464844f, -23.9599f, -168.694885f, 386.2486f, -227.090637f, -336.612427f, 365.108154f, -405.390839f); + bool3x3 r2 = bool3x3(false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + float a3 = (-473.995483f); + float3x3 b3 = float3x3(298.435364f, -149.86322f, 450.0664f, 153.47644f, 56.28778f, 39.3421021f, -350.403717f, -482.717224f, 239.9654f); + bool3x3 r3 = bool3x3(false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void float3x3_operator_not_equal_wide_wide() + { + float3x3 a0 = float3x3(279.994141f, -43.34201f, -465.724731f, 317.466553f, 85.7149658f, 360.8905f, 366.081543f, 154.542847f, 332.4262f); + float3x3 b0 = float3x3(-460.9121f, -476.009033f, 468.1364f, -341.012543f, -62.65805f, -458.801666f, -457.730225f, -59.5232544f, 3.024231f); + bool3x3 r0 = bool3x3(true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + float3x3 a1 = float3x3(397.11322f, -431.374969f, 489.0108f, 398.4336f, -489.817932f, 171.4049f, -67.82968f, -192.278717f, 227.84082f); + float3x3 b1 = float3x3(155.812744f, -19.8399048f, -6.01693726f, -406.207916f, -102.420715f, -40.362915f, 452.6754f, 93.25757f, -258.378052f); + bool3x3 r1 = bool3x3(true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + float3x3 a2 = float3x3(62.1381836f, 262.186462f, -404.0531f, 34.449585f, -204.795776f, -285.4118f, -72.20682f, 444.749268f, 238.81781f); + float3x3 b2 = float3x3(-184.0498f, -379.2353f, -370.687317f, -255.947235f, 29.0557861f, 322.407654f, 415.071716f, -467.726135f, -433.784668f); + bool3x3 r2 = bool3x3(true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + float3x3 a3 = float3x3(365.1801f, -437.9229f, -362.442627f, 445.954346f, -0.417480469f, -506.828369f, 245.477051f, -173.571045f, 390.338562f); + float3x3 b3 = float3x3(-212.165924f, 474.674927f, 452.483215f, -92.11273f, -385.9221f, 420.2151f, -239.176056f, -99.0791f, 4.476013f); + bool3x3 r3 = bool3x3(true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void float3x3_operator_not_equal_wide_scalar() + { + float3x3 a0 = float3x3(-155.4411f, -19.4266052f, 174.633057f, 507.920715f, 59.177063f, 171.151489f, -58.92328f, -398.176849f, 492.20105f); + float b0 = (-393.413544f); + bool3x3 r0 = bool3x3(true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + float3x3 a1 = float3x3(-165.241516f, -380.243256f, 501.899048f, -134.345459f, 458.400452f, 46.7709961f, 161.459961f, 261.514221f, -145.6124f); + float b1 = (270.341f); + bool3x3 r1 = bool3x3(true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + float3x3 a2 = float3x3(-0.449920654f, 202.221008f, 242.664f, 382.677063f, -468.967957f, -497.459473f, -80.93225f, -328.587769f, -506.490326f); + float b2 = (350.461426f); + bool3x3 r2 = bool3x3(true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + float3x3 a3 = float3x3(449.348145f, 249.181824f, -338.468536f, 229.670654f, -76.5433044f, 317.286072f, 401.939575f, 210.984863f, -147.096313f); + float b3 = (210.771f); + bool3x3 r3 = bool3x3(true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void float3x3_operator_not_equal_scalar_wide() + { + float a0 = (478.353149f); + float3x3 b0 = float3x3(459.553223f, 436.453247f, -488.714172f, 392.767944f, -266.736633f, 338.557861f, -338.100128f, -152.314545f, -452.820679f); + bool3x3 r0 = bool3x3(true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + float a1 = (209.439331f); + float3x3 b1 = float3x3(50.10797f, 372.4344f, -488.0213f, 489.740784f, 270.4001f, -472.846771f, -286.850464f, -384.691864f, 443.423523f); + bool3x3 r1 = bool3x3(true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + float a2 = (358.7472f); + float3x3 b2 = float3x3(-15.4140625f, -342.179169f, 468.967529f, -130.568085f, 401.785828f, -268.352264f, -239.231018f, 411.386536f, 139.769348f); + bool3x3 r2 = bool3x3(true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + float a3 = (334.522034f); + float3x3 b3 = float3x3(-223.629242f, -12.4884644f, 113.468872f, -189.652252f, -212.846558f, 306.1256f, -178.330383f, 382.141968f, -340.8656f); + bool3x3 r3 = bool3x3(true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void float3x3_operator_less_wide_wide() + { + float3x3 a0 = float3x3(51.7102661f, -313.85556f, 283.047668f, 235.021912f, 44.07837f, -207.255676f, 3.38293457f, -144.301331f, -69.3696f); + float3x3 b0 = float3x3(-261.835236f, -19.81073f, -149.25882f, 205.99823f, -306.024384f, 102.121704f, 231.906311f, 179.49884f, 473.2249f); + bool3x3 r0 = bool3x3(false, true, false, false, false, true, true, true, true); + TestUtils.AreEqual(a0 < b0, r0); + + float3x3 a1 = float3x3(-135.667969f, -194.787354f, -33.473877f, -19.67508f, 423.237976f, -71.6983f, -501.886f, 7.64386f, 302.262878f); + float3x3 b1 = float3x3(15.8916626f, 270.049927f, 490.914f, -185.734131f, 76.4331055f, 97.75232f, 419.300781f, 73.953186f, 481.032349f); + bool3x3 r1 = bool3x3(true, true, true, false, false, true, true, true, true); + TestUtils.AreEqual(a1 < b1, r1); + + float3x3 a2 = float3x3(-140.5505f, -436.5867f, -351.4417f, 364.970825f, 301.8941f, 407.550964f, 269.1078f, 462.98822f, 223.884155f); + float3x3 b2 = float3x3(7.00744629f, -7.32409668f, -413.075745f, -154.1189f, 449.202881f, 502.014282f, -382.315857f, 251.535156f, 143.17395f); + bool3x3 r2 = bool3x3(true, true, false, false, true, true, false, false, false); + TestUtils.AreEqual(a2 < b2, r2); + + float3x3 a3 = float3x3(-287.18924f, 283.6386f, 511.864319f, -60.4967957f, -234.303467f, -316.1384f, -417.522156f, 441.643433f, -191.950623f); + float3x3 b3 = float3x3(293.660339f, -292.769562f, -43.2182f, -353.4112f, 458.32605f, -114.556458f, 441.429749f, -113.333679f, 435.622925f); + bool3x3 r3 = bool3x3(true, false, false, false, true, true, true, false, true); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void float3x3_operator_less_wide_scalar() + { + float3x3 a0 = float3x3(-221.869781f, -121.546478f, -97.5239258f, 479.8811f, 67.11902f, 137.3288f, 282.9666f, 258.2791f, -111.413147f); + float b0 = (199.0675f); + bool3x3 r0 = bool3x3(true, true, true, false, true, true, false, false, true); + TestUtils.AreEqual(a0 < b0, r0); + + float3x3 a1 = float3x3(-288.081116f, -361.6429f, -68.0881958f, 12.7880249f, -66.703064f, -78.76297f, 25.7277222f, 101.37085f, -330.442657f); + float b1 = (82.6654053f); + bool3x3 r1 = bool3x3(true, true, true, true, true, true, true, false, true); + TestUtils.AreEqual(a1 < b1, r1); + + float3x3 a2 = float3x3(-48.9205322f, -8.150085f, 241.2768f, -183.437775f, 423.027161f, -334.622742f, -98.31558f, 300.410156f, 297.925232f); + float b2 = (359.604431f); + bool3x3 r2 = bool3x3(true, true, true, true, false, true, true, true, true); + TestUtils.AreEqual(a2 < b2, r2); + + float3x3 a3 = float3x3(-492.108154f, 95.78882f, -220.62146f, -455.37558f, 360.291565f, -296.372131f, 272.488342f, 360.207947f, 389.727417f); + float b3 = (-395.807251f); + bool3x3 r3 = bool3x3(true, false, false, true, false, false, false, false, false); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void float3x3_operator_less_scalar_wide() + { + float a0 = (-250.484924f); + float3x3 b0 = float3x3(-377.196533f, -505.147552f, 375.9267f, 110.17395f, -118.097565f, -40.4508972f, -299.744324f, 31.4371338f, -458.904541f); + bool3x3 r0 = bool3x3(false, false, true, true, true, true, false, true, false); + TestUtils.AreEqual(a0 < b0, r0); + + float a1 = (13.6846924f); + float3x3 b1 = float3x3(-458.5069f, 248.276489f, 389.231445f, 488.745544f, -221.637878f, -424.2672f, 249.059021f, -22.1361389f, -442.247742f); + bool3x3 r1 = bool3x3(false, true, true, true, false, false, true, false, false); + TestUtils.AreEqual(a1 < b1, r1); + + float a2 = (-340.857544f); + float3x3 b2 = float3x3(-95.1117249f, 15.4094238f, 87.29248f, 495.067627f, 316.0185f, -125.568115f, 122.164795f, 96.75537f, -228.906342f); + bool3x3 r2 = bool3x3(true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 < b2, r2); + + float a3 = (-143.9527f); + float3x3 b3 = float3x3(-230.238281f, -327.6126f, 103.39801f, 434.488831f, -157.4502f, 190.572144f, 108.2583f, 132.550781f, -431.515228f); + bool3x3 r3 = bool3x3(false, false, true, true, false, true, true, true, false); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void float3x3_operator_greater_wide_wide() + { + float3x3 a0 = float3x3(-229.29068f, 505.536621f, -73.80707f, 100.292053f, -419.214783f, -159.559753f, -396.770355f, 127.037415f, 489.1399f); + float3x3 b0 = float3x3(-445.845032f, -420.035278f, 299.0244f, -13.8809814f, 151.5617f, -163.50943f, -391.096039f, 479.283752f, -77.6748657f); + bool3x3 r0 = bool3x3(true, true, false, true, false, true, false, false, true); + TestUtils.AreEqual(a0 > b0, r0); + + float3x3 a1 = float3x3(51.9188843f, 155.384766f, -135.631653f, -425.978149f, -228.430511f, 383.03833f, 136.533569f, 8.602417f, -251.324371f); + float3x3 b1 = float3x3(-46.584198f, -415.377f, 71.46698f, -206.061035f, 360.8363f, 236.968811f, 14.550354f, 364.735168f, -159.06131f); + bool3x3 r1 = bool3x3(true, true, false, false, false, true, true, false, false); + TestUtils.AreEqual(a1 > b1, r1); + + float3x3 a2 = float3x3(-345.954926f, -170.565918f, -293.2544f, 139.125f, 214.3031f, 238.7699f, 105.535217f, -170.9253f, 26.9802246f); + float3x3 b2 = float3x3(226.631165f, 182.796021f, 341.839355f, -79.13046f, -247.296814f, 164.589111f, -352.1598f, 9.822632f, 186.721619f); + bool3x3 r2 = bool3x3(false, false, false, true, true, true, true, false, false); + TestUtils.AreEqual(a2 > b2, r2); + + float3x3 a3 = float3x3(-188.928314f, 201.786621f, -506.057159f, 15.454895f, 115.080688f, -496.971832f, 339.888123f, 372.228333f, 313.2387f); + float3x3 b3 = float3x3(-325.913635f, -77.93036f, -379.746033f, 251.45575f, -144.183563f, 337.8899f, -249.505554f, -225.9013f, -249.491272f); + bool3x3 r3 = bool3x3(true, true, false, false, true, false, true, true, true); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void float3x3_operator_greater_wide_scalar() + { + float3x3 a0 = float3x3(11.156311f, -411.023224f, 385.885559f, -485.103058f, -491.180023f, 405.175354f, 173.575073f, 69.26929f, 501.306824f); + float b0 = (-302.816956f); + bool3x3 r0 = bool3x3(true, false, true, false, false, true, true, true, true); + TestUtils.AreEqual(a0 > b0, r0); + + float3x3 a1 = float3x3(-367.027771f, -489.090576f, -172.518158f, -18.1496277f, -236.414948f, -238.8945f, -27.2391357f, 471.779358f, 240.164551f); + float b1 = (-86.12451f); + bool3x3 r1 = bool3x3(false, false, false, true, false, false, true, true, true); + TestUtils.AreEqual(a1 > b1, r1); + + float3x3 a2 = float3x3(-481.4781f, 33.29474f, -510.228149f, -183.2862f, -386.127655f, -13.6382141f, -7.34790039f, -261.865967f, 52.24951f); + float b2 = (185.59436f); + bool3x3 r2 = bool3x3(false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 > b2, r2); + + float3x3 a3 = float3x3(16.3232422f, -262.2675f, -458.255981f, -218.866119f, -34.6923523f, 290.573059f, 180.2633f, -482.863953f, 100.7063f); + float b3 = (-410.5101f); + bool3x3 r3 = bool3x3(true, true, false, true, true, true, true, false, true); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void float3x3_operator_greater_scalar_wide() + { + float a0 = (453.546082f); + float3x3 b0 = float3x3(-226.2044f, -423.465f, 409.405518f, 453.877075f, 87.47571f, 113.795593f, 176.409241f, -140.440033f, -182.48288f); + bool3x3 r0 = bool3x3(true, true, true, false, true, true, true, true, true); + TestUtils.AreEqual(a0 > b0, r0); + + float a1 = (-158.2933f); + float3x3 b1 = float3x3(-162.685333f, -193.328674f, 230.181274f, -102.58783f, 392.520569f, -177.478668f, -10.2950134f, -24.04895f, 172.448669f); + bool3x3 r1 = bool3x3(true, true, false, false, false, true, false, false, false); + TestUtils.AreEqual(a1 > b1, r1); + + float a2 = (374.048035f); + float3x3 b2 = float3x3(-368.99762f, -210.195282f, 149.470215f, -281.343262f, -100.469177f, 304.864441f, -361.524841f, -372.452362f, -33.9095459f); + bool3x3 r2 = bool3x3(true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 > b2, r2); + + float a3 = (-69.5952759f); + float3x3 b3 = float3x3(-460.4324f, -309.341675f, 486.131531f, 471.920959f, 479.361572f, -107.004181f, 331.636536f, -340.840149f, -384.2146f); + bool3x3 r3 = bool3x3(true, true, false, false, false, true, false, true, true); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void float3x3_operator_less_equal_wide_wide() + { + float3x3 a0 = float3x3(240.090515f, 462.213135f, 293.08252f, -427.870667f, -405.5227f, 204.591919f, 294.6701f, -327.564453f, -456.12326f); + float3x3 b0 = float3x3(-81.20383f, 493.637451f, -411.4721f, 99.16443f, -295.6677f, -480.462555f, 74.41406f, 260.916138f, 306.173279f); + bool3x3 r0 = bool3x3(false, true, false, true, true, false, false, true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + float3x3 a1 = float3x3(282.30127f, 421.881165f, -311.71283f, 84.5675049f, 447.244629f, -154.494354f, -424.364746f, 36.68451f, 267.0703f); + float3x3 b1 = float3x3(139.564819f, -505.752472f, -489.6268f, -280.0326f, 303.1599f, 511.1902f, -104.659729f, 95.14661f, -125.636353f); + bool3x3 r1 = bool3x3(false, false, false, false, false, true, true, true, false); + TestUtils.AreEqual(a1 <= b1, r1); + + float3x3 a2 = float3x3(307.893921f, -351.760132f, -157.360352f, 152.709045f, 372.267151f, 202.368286f, -77.04346f, 438.1848f, 260.282349f); + float3x3 b2 = float3x3(376.2398f, -415.774719f, -47.48105f, 117.722107f, 469.378357f, -263.042358f, -216.002319f, 66.73425f, 99.21863f); + bool3x3 r2 = bool3x3(true, false, true, false, true, false, false, false, false); + TestUtils.AreEqual(a2 <= b2, r2); + + float3x3 a3 = float3x3(386.034058f, -281.491f, -102.930054f, -346.716736f, -258.3412f, -383.302948f, -5.14703369f, 319.34375f, 465.022217f); + float3x3 b3 = float3x3(233.843018f, 439.839966f, 61.1151123f, -219.030579f, -404.7129f, -202.748352f, -312.476471f, 310.0719f, -320.363037f); + bool3x3 r3 = bool3x3(false, true, true, true, false, true, false, false, false); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void float3x3_operator_less_equal_wide_scalar() + { + float3x3 a0 = float3x3(309.192444f, 69.67377f, -101.724182f, -315.9724f, -346.011047f, 424.15387f, -410.870056f, -483.902649f, 183.821167f); + float b0 = (292.924255f); + bool3x3 r0 = bool3x3(false, true, true, true, true, false, true, true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + float3x3 a1 = float3x3(320.4425f, -386.801758f, -182.938812f, 349.250122f, 485.311584f, 373.5691f, 259.1515f, 450.130066f, -128.525543f); + float b1 = (-257.870056f); + bool3x3 r1 = bool3x3(false, true, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 <= b1, r1); + + float3x3 a2 = float3x3(-43.8748779f, -77.6383057f, 479.451843f, -499.516449f, -398.132935f, 402.484863f, 87.91608f, -502.1736f, 125.950806f); + float b2 = (457.385742f); + bool3x3 r2 = bool3x3(true, true, false, true, true, true, true, true, true); + TestUtils.AreEqual(a2 <= b2, r2); + + float3x3 a3 = float3x3(-54.49362f, 97.94293f, 228.021545f, -213.378662f, 42.2608032f, -24.8275757f, -451.0416f, 429.577576f, -308.4343f); + float b3 = (250.667419f); + bool3x3 r3 = bool3x3(true, true, true, true, true, true, true, false, true); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void float3x3_operator_less_equal_scalar_wide() + { + float a0 = (-511.152374f); + float3x3 b0 = float3x3(51.1589966f, 340.443665f, 312.81427f, 354.1925f, 136.396729f, -94.76788f, 288.5443f, 304.042847f, -148.618073f); + bool3x3 r0 = bool3x3(true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + float a1 = (-506.3001f); + float3x3 b1 = float3x3(27.5812378f, 48.47113f, 104.883484f, -488.685852f, -480.435181f, 421.936646f, 239.721069f, -101.018433f, -283.951477f); + bool3x3 r1 = bool3x3(true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 <= b1, r1); + + float a2 = (-55.24353f); + float3x3 b2 = float3x3(-455.80484f, 131.107239f, -461.6988f, -388.482849f, -258.936035f, -225.223541f, -116.019989f, -442.595245f, 297.333374f); + bool3x3 r2 = bool3x3(false, true, false, false, false, false, false, false, true); + TestUtils.AreEqual(a2 <= b2, r2); + + float a3 = (36.6872559f); + float3x3 b3 = float3x3(485.097839f, 344.445679f, 237.592163f, 230.390869f, -413.9848f, -215.901672f, 39.5603638f, 22.947998f, -162.060577f); + bool3x3 r3 = bool3x3(true, true, true, true, false, false, true, false, false); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void float3x3_operator_greater_equal_wide_wide() + { + float3x3 a0 = float3x3(-386.5918f, -157.120789f, 391.015259f, -511.886871f, -5.42202759f, 287.645264f, -122.535187f, 7.48144531f, 152.946411f); + float3x3 b0 = float3x3(153.443f, 49.8924561f, 78.02582f, 138.813721f, -225.51059f, -339.3561f, -373.302063f, 364.9359f, -322.7154f); + bool3x3 r0 = bool3x3(false, false, true, false, true, true, true, false, true); + TestUtils.AreEqual(a0 >= b0, r0); + + float3x3 a1 = float3x3(48.9862061f, 57.3381348f, 300.4649f, 349.25708f, 85.7496948f, -230.953308f, 418.711243f, -131.039917f, -126.512207f); + float3x3 b1 = float3x3(125.47821f, -25.77658f, 297.518921f, 73.22235f, 462.783752f, 393.191345f, -95.0014343f, 381.357056f, 93.03192f); + bool3x3 r1 = bool3x3(false, true, true, true, false, false, true, false, false); + TestUtils.AreEqual(a1 >= b1, r1); + + float3x3 a2 = float3x3(-156.818481f, 422.3775f, -413.089325f, 219.442749f, 35.5911255f, 447.181519f, -223.492981f, 302.123f, 459.852722f); + float3x3 b2 = float3x3(254.253235f, 90.67279f, 348.938171f, 161.337646f, 79.43561f, 420.243469f, 453.684875f, -154.011658f, -97.29007f); + bool3x3 r2 = bool3x3(false, true, false, true, false, true, false, true, true); + TestUtils.AreEqual(a2 >= b2, r2); + + float3x3 a3 = float3x3(-347.128021f, 364.9781f, 212.635437f, 504.276062f, -142.232971f, -132.2218f, 303.683777f, 265.210144f, 9.754395f); + float3x3 b3 = float3x3(151.184753f, 57.36029f, -194.207092f, -462.670624f, 113.3866f, -129.3533f, 8.107788f, 426.449524f, 410.693176f); + bool3x3 r3 = bool3x3(false, true, true, true, false, false, true, false, false); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void float3x3_operator_greater_equal_wide_scalar() + { + float3x3 a0 = float3x3(495.4574f, -14.3451233f, -463.4748f, 217.517517f, -246.865723f, -377.6587f, 53.8151245f, -123.332947f, -221.505463f); + float b0 = (189.205139f); + bool3x3 r0 = bool3x3(true, false, false, true, false, false, false, false, false); + TestUtils.AreEqual(a0 >= b0, r0); + + float3x3 a1 = float3x3(252.994324f, -395.3633f, 164.772583f, -287.007324f, 355.837036f, 184.195557f, 273.012268f, -418.1424f, 249.3841f); + float b1 = (-116.440369f); + bool3x3 r1 = bool3x3(true, false, true, false, true, true, true, false, true); + TestUtils.AreEqual(a1 >= b1, r1); + + float3x3 a2 = float3x3(396.392151f, 243.761414f, -335.12146f, -302.0869f, 254.442261f, 179.005066f, 71.1767f, -331.271667f, 307.890564f); + float b2 = (332.6654f); + bool3x3 r2 = bool3x3(true, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 >= b2, r2); + + float3x3 a3 = float3x3(-388.578522f, -219.892578f, -491.681f, 30.99707f, 199.232239f, -74.50003f, -343.386475f, 216.031555f, -420.403137f); + float b3 = (150.605774f); + bool3x3 r3 = bool3x3(false, false, false, false, true, false, false, true, false); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void float3x3_operator_greater_equal_scalar_wide() + { + float a0 = (215.435364f); + float3x3 b0 = float3x3(204.802979f, -101.104034f, -122.055023f, -70.45615f, -239.62027f, -185.992737f, -455.612579f, 276.665833f, 79.39917f); + bool3x3 r0 = bool3x3(true, true, true, true, true, true, true, false, true); + TestUtils.AreEqual(a0 >= b0, r0); + + float a1 = (416.420532f); + float3x3 b1 = float3x3(379.2735f, -439.5147f, 67.14099f, -74.56064f, -367.256348f, 494.950745f, -61.2355347f, -429.170258f, -213.824677f); + bool3x3 r1 = bool3x3(true, true, true, true, true, false, true, true, true); + TestUtils.AreEqual(a1 >= b1, r1); + + float a2 = (-264.310181f); + float3x3 b2 = float3x3(243.11377f, -22.38388f, 304.862f, -323.686157f, 67.93805f, 125.303589f, -400.47052f, -283.159637f, -42.31961f); + bool3x3 r2 = bool3x3(false, false, false, true, false, false, true, true, false); + TestUtils.AreEqual(a2 >= b2, r2); + + float a3 = (-429.510376f); + float3x3 b3 = float3x3(499.395874f, -289.963074f, -136.008789f, -351.125244f, -381.8183f, 393.3009f, 18.02362f, -169.92392f, -285.884949f); + bool3x3 r3 = bool3x3(false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void float3x3_operator_add_wide_wide() + { + float3x3 a0 = float3x3(465.148376f, 278.9107f, -277.5299f, -65.1972046f, -473.324371f, -4.69555664f, -470.536774f, -109.9501f, -178.701447f); + float3x3 b0 = float3x3(483.9944f, -204.07666f, -365.673553f, -509.920868f, -270.6975f, 486.763977f, 267.49176f, 251.642517f, 244.495117f); + float3x3 r0 = float3x3(949.142761f, 74.8340454f, -643.2035f, -575.118042f, -744.021851f, 482.06842f, -203.045013f, 141.692413f, 65.79367f); + TestUtils.AreEqual(a0 + b0, r0); + + float3x3 a1 = float3x3(-420.033783f, 290.711121f, -446.529633f, 491.066467f, -261.1173f, -298.4069f, 502.4286f, 284.5943f, 401.128418f); + float3x3 b1 = float3x3(-78.67575f, 352.2055f, 82.7791748f, 462.5473f, -405.492f, -428.498322f, -41.87259f, -269.9275f, 75.20447f); + float3x3 r1 = float3x3(-498.709534f, 642.9166f, -363.750458f, 953.6138f, -666.6093f, -726.9052f, 460.556f, 14.6668091f, 476.3329f); + TestUtils.AreEqual(a1 + b1, r1); + + float3x3 a2 = float3x3(-36.26349f, -102.949158f, 503.198181f, -384.4291f, -45.22821f, -198.67395f, -62.8800049f, -79.5522461f, 413.098267f); + float3x3 b2 = float3x3(-141.913391f, -222.186768f, 41.3057251f, 148.339478f, -177.233124f, -176.51889f, 492.692444f, 439.043823f, -511.742767f); + float3x3 r2 = float3x3(-178.17688f, -325.135925f, 544.5039f, -236.08963f, -222.461334f, -375.192841f, 429.812439f, 359.491577f, -98.6445f); + TestUtils.AreEqual(a2 + b2, r2); + + float3x3 a3 = float3x3(-100.877594f, 418.524f, -183.143127f, 407.443726f, 300.486023f, -261.126129f, -309.830353f, 378.363342f, -224.094f); + float3x3 b3 = float3x3(-399.057129f, -315.868469f, -228.07724f, -171.7052f, 467.17395f, -474.822937f, 311.390747f, 326.8454f, 475.2119f); + float3x3 r3 = float3x3(-499.934723f, 102.655518f, -411.220367f, 235.738525f, 767.66f, -735.9491f, 1.56039429f, 705.20874f, 251.11792f); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void float3x3_operator_add_wide_scalar() + { + float3x3 a0 = float3x3(459.898315f, -447.663361f, -94.43863f, 126.429871f, -36.254364f, -349.6413f, -2.79125977f, -478.4148f, 443.115234f); + float b0 = (500.997253f); + float3x3 r0 = float3x3(960.895569f, 53.3338928f, 406.558624f, 627.4271f, 464.7429f, 151.355957f, 498.206f, 22.5824585f, 944.1125f); + TestUtils.AreEqual(a0 + b0, r0); + + float3x3 a1 = float3x3(268.092224f, -471.256073f, -2.664978f, 78.98584f, 202.14801f, 311.725464f, 10.3458252f, -151.244446f, 355.2328f); + float b1 = (41.3210449f); + float3x3 r1 = float3x3(309.413269f, -429.935028f, 38.6560669f, 120.306885f, 243.469055f, 353.0465f, 51.66687f, -109.9234f, 396.553833f); + TestUtils.AreEqual(a1 + b1, r1); + + float3x3 a2 = float3x3(-197.800751f, 244.1471f, -181.626556f, -2.45492554f, 300.900635f, -236.491943f, -160.5841f, -172.5422f, -242.9411f); + float b2 = (255.955261f); + float3x3 r2 = float3x3(58.15451f, 500.102356f, 74.3287048f, 253.500336f, 556.8559f, 19.4633179f, 95.3711548f, 83.4130554f, 13.01416f); + TestUtils.AreEqual(a2 + b2, r2); + + float3x3 a3 = float3x3(466.344116f, 264.294f, 372.866821f, -198.837769f, -381.930969f, 402.160339f, -117.024841f, 497.373779f, 485.9093f); + float b3 = (237.987488f); + float3x3 r3 = float3x3(704.3316f, 502.2815f, 610.8543f, 39.14972f, -143.943481f, 640.1478f, 120.962646f, 735.361267f, 723.8968f); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void float3x3_operator_add_scalar_wide() + { + float a0 = (-325.512756f); + float3x3 b0 = float3x3(-264.088135f, -106.009247f, -355.4473f, -447.3303f, -158.7002f, -199.4837f, 180.318115f, 337.579346f, -37.0550232f); + float3x3 r0 = float3x3(-589.6009f, -431.522f, -680.9601f, -772.843f, -484.212952f, -524.99646f, -145.194641f, 12.0665894f, -362.56778f); + TestUtils.AreEqual(a0 + b0, r0); + + float a1 = (230.805f); + float3x3 b1 = float3x3(-140.174347f, 18.02417f, -138.614349f, 26.9041748f, -374.5376f, 154.46759f, 268.38385f, -190.963013f, 188.617249f); + float3x3 r1 = float3x3(90.6306458f, 248.829163f, 92.19064f, 257.709167f, -143.7326f, 385.272583f, 499.188843f, 39.84198f, 419.422241f); + TestUtils.AreEqual(a1 + b1, r1); + + float a2 = (-504.916138f); + float3x3 b2 = float3x3(20.45404f, 197.945374f, 251.411926f, -421.0904f, 111.445374f, -73.26889f, 480.884583f, 438.05304f, 66.8443f); + float3x3 r2 = float3x3(-484.4621f, -306.970764f, -253.504211f, -926.006531f, -393.470764f, -578.185059f, -24.0315552f, -66.8631f, -438.071838f); + TestUtils.AreEqual(a2 + b2, r2); + + float a3 = (-270.796021f); + float3x3 b3 = float3x3(-44.02191f, 197.6947f, 19.1139526f, 349.2378f, 366.2345f, -413.4803f, -260.720184f, 77.54236f, 183.9549f); + float3x3 r3 = float3x3(-314.817932f, -73.10132f, -251.682068f, 78.44177f, 95.43848f, -684.2763f, -531.516235f, -193.253662f, -86.8411255f); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void float3x3_operator_sub_wide_wide() + { + float3x3 a0 = float3x3(133.371033f, -131.832123f, -197.293152f, -485.28656f, -337.550323f, 471.6671f, 146.506592f, -130.585052f, 110.7771f); + float3x3 b0 = float3x3(123.460266f, 359.56012f, -48.2484741f, 478.979065f, 207.158325f, 142.36731f, -125.6055f, -65.29901f, -477.876434f); + float3x3 r0 = float3x3(9.910767f, -491.392242f, -149.044678f, -964.2656f, -544.7086f, 329.2998f, 272.1121f, -65.28604f, 588.653564f); + TestUtils.AreEqual(a0 - b0, r0); + + float3x3 a1 = float3x3(-235.5416f, 78.87933f, -347.686157f, -470.820557f, -11.45929f, -167.9479f, 330.676758f, -508.350861f, -252.031891f); + float3x3 b1 = float3x3(164.5f, 428.009583f, 72.62781f, -446.8805f, 432.091431f, -225.554657f, -112.451965f, -210.6128f, -172.925049f); + float3x3 r1 = float3x3(-400.0416f, -349.130249f, -420.313965f, -23.9400635f, -443.55072f, 57.60675f, 443.128723f, -297.738068f, -79.10684f); + TestUtils.AreEqual(a1 - b1, r1); + + float3x3 a2 = float3x3(-427.9342f, 192.6576f, 168.429321f, 457.308777f, 470.058533f, -299.711884f, -308.939575f, 454.5334f, 26.1069336f); + float3x3 b2 = float3x3(-80.60748f, 270.046082f, -154.255585f, 148.475769f, 13.6611328f, 70.67108f, -221.325439f, -9.25882f, 288.173828f); + float3x3 r2 = float3x3(-347.326721f, -77.38849f, 322.6849f, 308.833f, 456.3974f, -370.382965f, -87.6141357f, 463.7922f, -262.0669f); + TestUtils.AreEqual(a2 - b2, r2); + + float3x3 a3 = float3x3(-482.711823f, -40.8535461f, 318.380676f, 475.210815f, 134.926941f, 388.481567f, 138.7182f, -385.5736f, -149.3648f); + float3x3 b3 = float3x3(217.36145f, 307.540039f, -262.412659f, -405.378021f, 400.004333f, 72.11908f, -154.880585f, -469.659973f, -320.615417f); + float3x3 r3 = float3x3(-700.073242f, -348.3936f, 580.793335f, 880.588867f, -265.0774f, 316.3625f, 293.5988f, 84.0863647f, 171.25061f); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void float3x3_operator_sub_wide_scalar() + { + float3x3 a0 = float3x3(48.9367065f, 410.4516f, -364.4417f, 163.980591f, -460.067322f, 110.919434f, 204.358337f, 180.269714f, -377.9257f); + float b0 = (-291.5904f); + float3x3 r0 = float3x3(340.5271f, 702.042f, -72.85132f, 455.570984f, -168.476929f, 402.509827f, 495.94873f, 471.8601f, -86.3353f); + TestUtils.AreEqual(a0 - b0, r0); + + float3x3 a1 = float3x3(-470.262054f, 461.507568f, -246.287262f, 21.6052856f, 246.350708f, -121.427368f, -122.718414f, -122.938721f, 360.15094f); + float b1 = (400.5349f); + float3x3 r1 = float3x3(-870.797f, 60.9726563f, -646.822144f, -378.929626f, -154.1842f, -521.9623f, -523.2533f, -523.473633f, -40.3839722f); + TestUtils.AreEqual(a1 - b1, r1); + + float3x3 a2 = float3x3(342.874573f, 164.602356f, 97.0437f, 485.914978f, -205.75766f, 253.443237f, -121.163055f, 187.998413f, -450.820282f); + float b2 = (18.92981f); + float3x3 r2 = float3x3(323.944763f, 145.672546f, 78.11389f, 466.985168f, -224.687469f, 234.513428f, -140.092865f, 169.0686f, -469.7501f); + TestUtils.AreEqual(a2 - b2, r2); + + float3x3 a3 = float3x3(-248.073364f, 441.5526f, 449.910583f, 354.886047f, 98.82147f, -189.193237f, 269.074829f, -59.11856f, 363.458374f); + float b3 = (-26.9960632f); + float3x3 r3 = float3x3(-221.0773f, 468.548676f, 476.906647f, 381.8821f, 125.817535f, -162.197174f, 296.0709f, -32.1224976f, 390.454437f); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void float3x3_operator_sub_scalar_wide() + { + float a0 = (294.5865f); + float3x3 b0 = float3x3(452.352539f, 256.9898f, -275.159882f, -89.02753f, 488.2284f, -333.2173f, -64.233f, -66.04172f, 341.204956f); + float3x3 r0 = float3x3(-157.766052f, 37.59668f, 569.746338f, 383.614f, -193.6419f, 627.8038f, 358.8195f, 360.6282f, -46.61847f); + TestUtils.AreEqual(a0 - b0, r0); + + float a1 = (-385.775055f); + float3x3 b1 = float3x3(75.3947754f, 354.943726f, 169.131409f, 88.21661f, 1.73498535f, 122.538025f, -264.945f, -50.83719f, -347.65033f); + float3x3 r1 = float3x3(-461.16983f, -740.71875f, -554.9065f, -473.991669f, -387.51004f, -508.31308f, -120.830048f, -334.937866f, -38.1247253f); + TestUtils.AreEqual(a1 - b1, r1); + + float a2 = (4.06555176f); + float3x3 b2 = float3x3(-79.09543f, 354.358337f, -292.4925f, -53.2089844f, -246.3476f, 299.203369f, 432.1847f, -163.88f, 176.742554f); + float3x3 r2 = float3x3(83.16098f, -350.2928f, 296.558044f, 57.2745361f, 250.413147f, -295.137817f, -428.119141f, 167.945557f, -172.677f); + TestUtils.AreEqual(a2 - b2, r2); + + float a3 = (-104.98584f); + float3x3 b3 = float3x3(-445.797638f, -28.8731689f, -169.588226f, -270.359253f, 68.04761f, -65.53128f, 440.380371f, 427.360657f, -81.47296f); + float3x3 r3 = float3x3(340.8118f, -76.11267f, 64.60239f, 165.373413f, -173.033447f, -39.45456f, -545.3662f, -532.3465f, -23.5128784f); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void float3x3_operator_mul_wide_wide() + { + float3x3 a0 = float3x3(-394.780548f, -412.3722f, -25.8745728f, -241.045959f, -93.6759949f, 244.159973f, 494.688477f, 53.5379639f, -239.4964f); + float3x3 b0 = float3x3(-149.763977f, -345.04538f, -284.334045f, 267.979248f, -326.6485f, -150.689667f, 207.732422f, 366.192871f, 358.880737f); + float3x3 r0 = float3x3(59123.9063f, 142287.125f, 7357.022f, -64595.3164f, 30599.123f, -36792.3867f, 102762.836f, 19605.22f, -85950.64f); + TestUtils.AreEqual(a0 * b0, r0); + + float3x3 a1 = float3x3(236.675842f, -211.8562f, -216.654816f, 467.9583f, -178.021912f, -386.394257f, -422.4354f, 464.589539f, -251.315674f); + float3x3 b1 = float3x3(214.853577f, 253.422791f, -307.7138f, 184.47113f, 426.436462f, -144.281433f, 459.4796f, -358.313354f, -201.3652f); + float3x3 r1 = float3x3(50850.6523f, -53689.19f, 66667.68f, 86324.8f, -75915.03f, 55749.5156f, -194100.453f, -166468.641f, 50606.23f); + TestUtils.AreEqual(a1 * b1, r1); + + float3x3 a2 = float3x3(-104.97879f, -66.93417f, -39.829895f, 401.5656f, 434.146179f, -336.4542f, -83.11417f, 329.960266f, -316.972168f); + float3x3 b2 = float3x3(254.909973f, 168.520935f, 8.794556f, -194.846466f, -405.362671f, -180.732178f, -189.746918f, -35.5184631f, 120.31665f); + float3x3 r2 = float3x3(-26760.14f, -11279.81f, -350.286224f, -78243.64f, -175986.656f, 60808.0977f, 15770.6572f, -11719.6816f, -38137.03f); + TestUtils.AreEqual(a2 * b2, r2); + + float3x3 a3 = float3x3(474.937927f, -445.109161f, -301.003723f, 405.687866f, 142.373474f, -416.213074f, -103.279205f, -52.9519043f, -40.82834f); + float3x3 b3 = float3x3(-136.203339f, 407.3416f, 301.6543f, -155.482391f, -461.394562f, 296.680359f, 341.001831f, -257.0968f, 17.5936279f); + float3x3 r3 = float3x3(-64688.1328f, -181311.484f, -90799.07f, -63077.32f, -65690.34f, -123482.242f, -35218.4f, 13613.7656f, -718.3186f); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void float3x3_operator_mul_wide_scalar() + { + float3x3 a0 = float3x3(328.203f, -290.10672f, 236.995728f, 120.481384f, 357.903137f, 134.867249f, -477.3105f, -438.272919f, -46.729187f); + float b0 = (192.211182f); + float3x3 r0 = float3x3(63084.2852f, -55761.7539f, 45553.23f, 23157.87f, 68792.9844f, 25922.9941f, -91744.4141f, -84240.95f, -8981.872f); + TestUtils.AreEqual(a0 * b0, r0); + + float3x3 a1 = float3x3(-238.405f, -48.83484f, 355.30835f, 119.356628f, -196.995819f, 98.23602f, -325.552155f, 53.9373169f, -87.45099f); + float b1 = (422.08252f); + float3x3 r1 = float3x3(-100626.586f, -20612.332f, 149969.438f, 50378.3477f, -83148.49f, 41463.707f, -137409.875f, 22765.998f, -36911.5352f); + TestUtils.AreEqual(a1 * b1, r1); + + float3x3 a2 = float3x3(-130.474121f, 126.015015f, 293.361084f, 174.381958f, -327.120056f, 56.62915f, 257.541565f, -475.6087f, -452.6919f); + float b2 = (-222.594574f); + float3x3 r2 = float3x3(29042.832f, -28050.2578f, -65300.5859f, -38816.4766f, 72815.15f, -12605.3418f, -57327.3555f, 105867.914f, 100766.758f); + TestUtils.AreEqual(a2 * b2, r2); + + float3x3 a3 = float3x3(-49.22061f, 431.5857f, 180.355164f, -40.9234619f, 279.543518f, 120.014465f, -59.508667f, 319.489868f, -403.523163f); + float b3 = (141.600952f); + float3x3 r3 = float3x3(-6969.68555f, 61112.9453f, 25538.4629f, -5794.80127f, 39583.63f, 16994.1621f, -8426.484f, 45240.07f, -57139.2656f); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void float3x3_operator_mul_scalar_wide() + { + float a0 = (-464.5347f); + float3x3 b0 = float3x3(329.360962f, -198.683441f, 184.0794f, 256.016174f, 266.226318f, -97.8947449f, 159.748108f, -351.8222f, 491.801575f); + float3x3 r0 = float3x3(-152999.6f, 92295.35f, -85511.27f, -118928.4f, -123671.359f, 45475.5039f, -74208.54f, 163433.625f, -228458.891f); + TestUtils.AreEqual(a0 * b0, r0); + + float a1 = (49.90204f); + float3x3 b1 = float3x3(424.4626f, 160.1181f, -395.9921f, 125.20166f, -265.0158f, 314.656128f, -292.712036f, -37.72989f, 165.362244f); + float3x3 r1 = float3x3(21181.5488f, 7990.21973f, -19760.8125f, 6247.818f, -13224.8291f, 15701.9824f, -14606.9277f, -1882.79834f, 8251.913f); + TestUtils.AreEqual(a1 * b1, r1); + + float a2 = (356.517761f); + float3x3 b2 = float3x3(-188.813324f, 504.9157f, 40.5721436f, -206.775116f, -61.60269f, 118.971619f, 53.7483521f, -198.6694f, 96.236084f); + float3x3 r2 = float3x3(-67315.3047f, 180011.422f, 14464.6895f, -73719f, -21962.4531f, 42415.4961f, 19162.2422f, -70829.17f, 34309.875f); + TestUtils.AreEqual(a2 * b2, r2); + + float a3 = (-20.2418823f); + float3x3 b3 = float3x3(-31.1239624f, 38.89044f, -13.1333008f, 507.871277f, 95.0179443f, 340.7486f, 438.986877f, -227.165955f, 452.573f); + float3x3 r3 = float3x3(630.007568f, -787.215759f, 265.842743f, -10280.2705f, -1923.342f, -6897.393f, -8885.921f, 4598.2666f, -9160.93f); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void float3x3_operator_div_wide_wide() + { + float3x3 a0 = float3x3(246.265747f, -269.85614f, -451.619537f, -7.388489f, -308.205566f, -373.3948f, 360.41864f, 25.8097534f, -274.050476f); + float3x3 b0 = float3x3(172.119812f, -77.14111f, -325.8354f, -450.608673f, -261.262146f, -122.449493f, -93.2107849f, -442.005219f, 484.362732f); + float3x3 r0 = float3x3(1.43078089f, 3.49821424f, 1.38603592f, 0.0163966864f, 1.17967939f, 3.04937816f, -3.86670542f, -0.0583924167f, -0.565795958f); + TestUtils.AreEqual(a0 / b0, r0); + + float3x3 a1 = float3x3(127.538574f, -447.671753f, -137.458588f, -136.133179f, 12.4376221f, 228.513f, 356.972351f, -24.7620544f, 411.6684f); + float3x3 b1 = float3x3(-390.7818f, 402.02533f, 316.6507f, 397.154419f, -303.2622f, -118.591248f, -81.6503f, -84.34686f, -488.419434f); + float3x3 r1 = float3x3(-0.326367736f, -1.11354113f, -0.434101641f, -0.3427714f, -0.0410127677f, -1.926896f, -4.37196636f, 0.2935741f, -0.8428584f); + TestUtils.AreEqual(a1 / b1, r1); + + float3x3 a2 = float3x3(-204.078888f, 11.3654175f, 82.15228f, 37.3894653f, 394.2658f, -429.912781f, 315.37384f, -122.665985f, 447.526123f); + float3x3 b2 = float3x3(404.160522f, -136.728851f, -19.8327026f, -102.607239f, 166.116028f, -112.840179f, -218.209686f, 458.517517f, 119.587219f); + float3x3 r2 = float3x3(-0.504945159f, -0.0831237659f, -4.14226341f, -0.364394039f, 2.37343621f, 3.80992651f, -1.44527888f, -0.267527372f, 3.742257f); + TestUtils.AreEqual(a2 / b2, r2); + + float3x3 a3 = float3x3(-210.4815f, -202.42157f, -453.007935f, 173.72699f, -167.121674f, -106.234528f, 414.312561f, 7.12084961f, 274.073669f); + float3x3 b3 = float3x3(356.240417f, -74.50687f, -336.773926f, -216.126312f, 322.385681f, 220.2555f, -67.2345f, 2.229187f, -166.210968f); + float3x3 r3 = float3x3(-0.5908412f, 2.71681762f, 1.34513962f, -0.803821564f, -0.5183905f, -0.482324064f, -6.16220236f, 3.19437075f, -1.64895058f); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void float3x3_operator_div_wide_scalar() + { + float3x3 a0 = float3x3(-244.517456f, 69.1123047f, -333.023132f, 257.396851f, 403.2456f, 154.34436f, 131.526611f, -261.8864f, -348.9238f); + float b0 = (-60.0243835f); + float3x3 r0 = float3x3(4.07363558f, -1.15140378f, 5.548131f, -4.28820467f, -6.71803f, -2.571361f, -2.19121981f, 4.36300039f, 5.813034f); + TestUtils.AreEqual(a0 / b0, r0); + + float3x3 a1 = float3x3(-275.5387f, 287.6424f, 504.372253f, 491.7871f, -26.6315918f, -253.236664f, 272.895142f, 178.096191f, -460.87558f); + float b1 = (210.557922f); + float3x3 r1 = float3x3(-1.30861235f, 1.36609626f, 2.39540863f, 2.335638f, -0.126481071f, -1.20269358f, 1.29605734f, 0.8458299f, -2.18883038f); + TestUtils.AreEqual(a1 / b1, r1); + + float3x3 a2 = float3x3(-502.646027f, -174.690338f, 83.7963257f, 197.042053f, 317.168274f, 403.387146f, 81.6464844f, 60.6068726f, -413.5605f); + float b2 = (-84.3248f); + float3x3 r2 = float3x3(5.9608326f, 2.07163668f, -0.99373287f, -2.33670354f, -3.76126933f, -4.783731f, -0.9682381f, -0.7187313f, 4.90437555f); + TestUtils.AreEqual(a2 / b2, r2); + + float3x3 a3 = float3x3(207.341f, 20.7490845f, -68.57712f, 310.702454f, 417.4049f, 147.866211f, 506.658875f, -435.778564f, 210.672913f); + float b3 = (358.562134f); + float3x3 r3 = float3x3(0.578256845f, 0.05786747f, -0.191255882f, 0.8665233f, 1.16410756f, 0.412386566f, 1.41302955f, -1.21535015f, 0.587549269f); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void float3x3_operator_div_scalar_wide() + { + float a0 = (41.73767f); + float3x3 b0 = float3x3(-422.676147f, 248.129639f, 449.391357f, 245.858154f, -326.6206f, 163.715088f, 333.6645f, 38.2910767f, -472.979767f); + float3x3 r0 = float3x3(-0.09874622f, 0.168209136f, 0.0928759947f, 0.169763222f, -0.1277864f, 0.2549409f, 0.125088736f, 1.0900104f, -0.0882440954f); + TestUtils.AreEqual(a0 / b0, r0); + + float a1 = (192.230164f); + float3x3 b1 = float3x3(-200.296875f, -490.181519f, -211.10257f, -322.852356f, -137.985291f, 84.32971f, 355.063477f, 276.427246f, -382.988037f); + float3x3 r1 = float3x3(-0.9597262f, -0.3921612f, -0.9106008f, -0.595412f, -1.39312065f, 2.279507f, 0.5413966f, 0.6954096f, -0.501922131f); + TestUtils.AreEqual(a1 / b1, r1); + + float a2 = (-488.647156f); + float3x3 b2 = float3x3(344.846f, 168.85498f, -44.1955872f, 420.55072f, -175.6152f, -9.220581f, -344.194275f, -449.0715f, 117.704895f); + float3x3 r2 = float3x3(-1.417001f, -2.89388657f, 11.056469f, -1.1619221f, 2.78248787f, 52.995266f, 1.41968417f, 1.08812773f, -4.15146f); + TestUtils.AreEqual(a2 / b2, r2); + + float a3 = (-337.0274f); + float3x3 b3 = float3x3(239.393433f, -389.355164f, 242.716064f, 496.2765f, 91.74579f, -490.492126f, 485.755432f, -317.572266f, -451.6248f); + float3x3 r3 = float3x3(-1.407839f, 0.865604043f, -1.38856649f, -0.6791122f, -3.67349172f, 0.6871209f, -0.6938212f, 1.06126213f, 0.746255338f); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void float3x3_operator_mod_wide_wide() + { + float3x3 a0 = float3x3(-442.309875f, 368.5005f, -1.09390259f, -364.673828f, -197.343933f, -34.0349121f, -101.348572f, 208.318542f, -140.770325f); + float3x3 b0 = float3x3(-43.2450562f, -144.195862f, -62.6404724f, -336.828247f, -154.61026f, -154.029358f, 487.0462f, -469.8291f, -145.203766f); + float3x3 r0 = float3x3(-9.859314f, 80.1087646f, -1.09390259f, -27.8455811f, -42.7336731f, -34.0349121f, -101.348572f, 208.318542f, -140.770325f); + TestUtils.AreEqual(a0 % b0, r0); + + float3x3 a1 = float3x3(183.44696f, -463.368378f, 83.83911f, -64.71405f, 295.066833f, 212.25708f, 349.6283f, 119.875916f, -37.8058167f); + float3x3 b1 = float3x3(-203.384f, -22.52008f, 224.69f, -435.62674f, 12.0955811f, 40.3787842f, 345.784851f, -433.471252f, -355.649963f); + float3x3 r1 = float3x3(183.44696f, -12.9667664f, 83.83911f, -64.71405f, 4.772888f, 10.3631592f, 3.84344482f, 119.875916f, -37.8058167f); + TestUtils.AreEqual(a1 % b1, r1); + + float3x3 a2 = float3x3(142.41156f, 332.244263f, -464.194275f, -296.147827f, 225.175354f, -212.060272f, 156.985718f, 507.6183f, 270.830444f); + float3x3 b2 = float3x3(4.015442f, 66.65979f, -221.853638f, -355.056763f, 357.935974f, 71.3753052f, -131.4183f, -473.9876f, 76.2178345f); + float3x3 r2 = float3x3(1.87109375f, 65.6051f, -20.487f, -296.147827f, 225.175354f, -69.30966f, 25.5674133f, 33.6306763f, 42.17694f); + TestUtils.AreEqual(a2 % b2, r2); + + float3x3 a3 = float3x3(337.7343f, 384.915833f, 432.5182f, 154.292725f, -37.0853271f, 7.76147461f, 238.094727f, 12.8520508f, -100.240662f); + float3x3 b3 = float3x3(92.2102051f, -368.189575f, -77.46716f, 135.230591f, 274.277283f, 132.180237f, -179.877319f, 51.9685669f, 367.214233f); + float3x3 r3 = float3x3(61.1037f, 16.7262573f, 45.182373f, 19.0621338f, -37.0853271f, 7.76147461f, 58.2174072f, 12.8520508f, -100.240662f); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void float3x3_operator_mod_wide_scalar() + { + float3x3 a0 = float3x3(-433.417f, -5.51412964f, 393.3944f, 299.41156f, -120.80603f, -502.939026f, -450.807678f, 186.094788f, -84.47363f); + float b0 = (-90.49924f); + float3x3 r0 = float3x3(-71.4200439f, -5.51412964f, 31.39746f, 27.9138489f, -30.3067932f, -50.44284f, -88.81073f, 5.09631348f, -84.47363f); + TestUtils.AreEqual(a0 % b0, r0); + + float3x3 a1 = float3x3(-318.7815f, -54.60019f, -172.338867f, -429.714661f, 222.361877f, 5.79638672f, 254.5108f, -433.0937f, -203.082611f); + float b1 = (433.4547f); + float3x3 r1 = float3x3(-318.7815f, -54.60019f, -172.338867f, -429.714661f, 222.361877f, 5.79638672f, 254.5108f, -433.0937f, -203.082611f); + TestUtils.AreEqual(a1 % b1, r1); + + float3x3 a2 = float3x3(-75.3564148f, -69.4039f, 5.337219f, -279.060425f, 483.5506f, -331.993347f, 336f, 67.8396f, -124.720764f); + float b2 = (252.289124f); + float3x3 r2 = float3x3(-75.3564148f, -69.4039f, 5.337219f, -26.7713013f, 231.261475f, -79.70422f, 83.71088f, 67.8396f, -124.720764f); + TestUtils.AreEqual(a2 % b2, r2); + + float3x3 a3 = float3x3(38.1759033f, 405.773621f, -194.761444f, 235.724f, 465.984863f, -304.153168f, -295.520264f, 313.7224f, -232.202637f); + float b3 = (271.287f); + float3x3 r3 = float3x3(38.1759033f, 134.486633f, -194.761444f, 235.724f, 194.697876f, -32.86618f, -24.2332764f, 42.4354248f, -232.202637f); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void float3x3_operator_mod_scalar_wide() + { + float a0 = (-396.4224f); + float3x3 b0 = float3x3(-159.140259f, 230.17334f, 14.7793579f, -303.1565f, 399.635f, 206.6947f, 397.0448f, -393.890656f, -372.067078f); + float3x3 r0 = float3x3(-78.14188f, -166.249054f, -12.1590881f, -93.2659f, -396.4224f, -189.727692f, -396.4224f, -2.53173828f, -24.3553162f); + TestUtils.AreEqual(a0 % b0, r0); + + float a1 = (201.012268f); + float3x3 b1 = float3x3(-95.566864f, -258.951477f, 106.983582f, 469.323547f, -34.80899f, 184.836548f, 374.79425f, -131.872711f, -120.092865f); + float3x3 r1 = float3x3(9.87854f, 201.012268f, 94.02869f, 201.012268f, 26.9673157f, 16.17572f, 201.012268f, 69.13956f, 80.9194f); + TestUtils.AreEqual(a1 % b1, r1); + + float a2 = (4.506653f); + float3x3 b2 = float3x3(-111.401947f, 391.54248f, -218.668884f, 196.377441f, -511.032623f, 499.9535f, -433.523071f, -163.866852f, 177.004028f); + float3x3 r2 = float3x3(4.506653f, 4.506653f, 4.506653f, 4.506653f, 4.506653f, 4.506653f, 4.506653f, 4.506653f, 4.506653f); + TestUtils.AreEqual(a2 % b2, r2); + + float a3 = (110.650146f); + float3x3 b3 = float3x3(17.68457f, -95.85297f, -432.440979f, 192.692078f, -268.131775f, 271.075134f, 423.7027f, -413.233246f, 127.956238f); + float3x3 r3 = float3x3(4.54272461f, 14.79718f, 110.650146f, 110.650146f, 110.650146f, 110.650146f, 110.650146f, 110.650146f, 110.650146f); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void float3x3_operator_plus() + { + float3x3 a0 = float3x3(271.670837f, -79.08023f, -330.985046f, 31.824707f, 315.449524f, 319.222168f, 190.324646f, -350.3086f, -320.518463f); + float3x3 r0 = float3x3(271.670837f, -79.08023f, -330.985046f, 31.824707f, 315.449524f, 319.222168f, 190.324646f, -350.3086f, -320.518463f); + TestUtils.AreEqual(+a0, r0); + + float3x3 a1 = float3x3(102.054382f, -428.7762f, 377.230164f, 234.773926f, 34.28363f, 258.330383f, 465.355957f, 309.59314f, -316.937134f); + float3x3 r1 = float3x3(102.054382f, -428.7762f, 377.230164f, 234.773926f, 34.28363f, 258.330383f, 465.355957f, 309.59314f, -316.937134f); + TestUtils.AreEqual(+a1, r1); + + float3x3 a2 = float3x3(-230.052673f, 2.58575439f, 350.2464f, 60.8197632f, -472.4421f, -364.802551f, 239.152344f, 473.803162f, 285.80896f); + float3x3 r2 = float3x3(-230.052673f, 2.58575439f, 350.2464f, 60.8197632f, -472.4421f, -364.802551f, 239.152344f, 473.803162f, 285.80896f); + TestUtils.AreEqual(+a2, r2); + + float3x3 a3 = float3x3(-273.2638f, -113.362305f, -351.754883f, -116.536224f, -496.053284f, -330.005341f, -379.674255f, -339.673218f, -29.0835266f); + float3x3 r3 = float3x3(-273.2638f, -113.362305f, -351.754883f, -116.536224f, -496.053284f, -330.005341f, -379.674255f, -339.673218f, -29.0835266f); + TestUtils.AreEqual(+a3, r3); + } + + [TestCompiler] + public static void float3x3_operator_neg() + { + float3x3 a0 = float3x3(420.227173f, -196.2575f, -335.426819f, 509.04364f, -33.0144043f, -498.575317f, -495.837952f, -270.859467f, 19.68689f); + float3x3 r0 = float3x3(-420.227173f, 196.2575f, 335.426819f, -509.04364f, 33.0144043f, 498.575317f, 495.837952f, 270.859467f, -19.68689f); + TestUtils.AreEqual(-a0, r0); + + float3x3 a1 = float3x3(268.2367f, 223.381287f, -410.392059f, -395.681549f, -349.149475f, -110.9393f, -238.2196f, 292.543518f, 469.2926f); + float3x3 r1 = float3x3(-268.2367f, -223.381287f, 410.392059f, 395.681549f, 349.149475f, 110.9393f, 238.2196f, -292.543518f, -469.2926f); + TestUtils.AreEqual(-a1, r1); + + float3x3 a2 = float3x3(48.29071f, 66.1485f, 55.7080078f, 464.541382f, 499.2428f, 175.015015f, 196.387573f, -306.1656f, 149.660034f); + float3x3 r2 = float3x3(-48.29071f, -66.1485f, -55.7080078f, -464.541382f, -499.2428f, -175.015015f, -196.387573f, 306.1656f, -149.660034f); + TestUtils.AreEqual(-a2, r2); + + float3x3 a3 = float3x3(320.391724f, 22.0384521f, -159.55426f, 419.822449f, 303.323425f, 363.716736f, 280.887878f, -270.6513f, -201.615753f); + float3x3 r3 = float3x3(-320.391724f, -22.0384521f, 159.55426f, -419.822449f, -303.323425f, -363.716736f, -280.887878f, 270.6513f, 201.615753f); + TestUtils.AreEqual(-a3, r3); + } + + [TestCompiler] + public static void float3x3_operator_prefix_inc() + { + float3x3 a0 = float3x3(-99.79556f, 458.741821f, 96.1790161f, -48.55246f, -315.728973f, -299.230164f, -323.614868f, -456.8903f, -76.50766f); + float3x3 r0 = float3x3(-98.79556f, 459.741821f, 97.1790161f, -47.55246f, -314.728973f, -298.230164f, -322.614868f, -455.8903f, -75.50766f); + TestUtils.AreEqual(++a0, r0); + + float3x3 a1 = float3x3(-305.584778f, 148.679321f, 363.2849f, -115.559235f, -326.8778f, -179.894653f, 339.8766f, -38.41043f, -153.373688f); + float3x3 r1 = float3x3(-304.584778f, 149.679321f, 364.2849f, -114.559235f, -325.8778f, -178.894653f, 340.8766f, -37.41043f, -152.373688f); + TestUtils.AreEqual(++a1, r1); + + float3x3 a2 = float3x3(261.625549f, -396.650238f, 301.3058f, -221.355408f, -429.698151f, -271.2893f, -264.380066f, -377.5592f, 223.232422f); + float3x3 r2 = float3x3(262.625549f, -395.650238f, 302.3058f, -220.355408f, -428.698151f, -270.2893f, -263.380066f, -376.5592f, 224.232422f); + TestUtils.AreEqual(++a2, r2); + + float3x3 a3 = float3x3(-71.076355f, 131.283142f, 22.3049316f, -480.760468f, 200.951782f, 117.9541f, 139.525818f, 335.6897f, 162.6615f); + float3x3 r3 = float3x3(-70.076355f, 132.283142f, 23.3049316f, -479.760468f, 201.951782f, 118.9541f, 140.525818f, 336.6897f, 163.6615f); + TestUtils.AreEqual(++a3, r3); + } + + [TestCompiler] + public static void float3x3_operator_postfix_inc() + { + float3x3 a0 = float3x3(322.943542f, 472.0525f, 203.48761f, -49.8545837f, -31.4205322f, 455.3366f, 271.454651f, 55.7368774f, 153.7503f); + float3x3 r0 = float3x3(322.943542f, 472.0525f, 203.48761f, -49.8545837f, -31.4205322f, 455.3366f, 271.454651f, 55.7368774f, 153.7503f); + TestUtils.AreEqual(a0++, r0); + + float3x3 a1 = float3x3(-174.173f, 215.110229f, 159.861023f, -333.050446f, 241.4649f, 287.220459f, -170.104645f, -270.652466f, -162.86026f); + float3x3 r1 = float3x3(-174.173f, 215.110229f, 159.861023f, -333.050446f, 241.4649f, 287.220459f, -170.104645f, -270.652466f, -162.86026f); + TestUtils.AreEqual(a1++, r1); + + float3x3 a2 = float3x3(454.488831f, 209.522644f, -311.435852f, 69.7314453f, -232.299652f, -341.498535f, 188.006592f, 417.7298f, 25.5656738f); + float3x3 r2 = float3x3(454.488831f, 209.522644f, -311.435852f, 69.7314453f, -232.299652f, -341.498535f, 188.006592f, 417.7298f, 25.5656738f); + TestUtils.AreEqual(a2++, r2); + + float3x3 a3 = float3x3(-463.725647f, -310.144958f, -117.398468f, 403.508728f, -111.279541f, 446.607666f, -12.35257f, -232.150116f, 64.57703f); + float3x3 r3 = float3x3(-463.725647f, -310.144958f, -117.398468f, 403.508728f, -111.279541f, 446.607666f, -12.35257f, -232.150116f, 64.57703f); + TestUtils.AreEqual(a3++, r3); + } + + [TestCompiler] + public static void float3x3_operator_prefix_dec() + { + float3x3 a0 = float3x3(-416.201233f, -96.63788f, -50.14566f, -207.316437f, 439.479065f, -304.400818f, 337.968933f, 246.088989f, 171.964539f); + float3x3 r0 = float3x3(-417.201233f, -97.63788f, -51.14566f, -208.316437f, 438.479065f, -305.400818f, 336.968933f, 245.088989f, 170.964539f); + TestUtils.AreEqual(--a0, r0); + + float3x3 a1 = float3x3(-227.44281f, 326.5078f, 400.7209f, -478.031372f, -326.452972f, -24.5845032f, 112.796875f, -341.9763f, -503.27417f); + float3x3 r1 = float3x3(-228.44281f, 325.5078f, 399.7209f, -479.031372f, -327.452972f, -25.5845032f, 111.796875f, -342.9763f, -504.27417f); + TestUtils.AreEqual(--a1, r1); + + float3x3 a2 = float3x3(-79.6352539f, 147.893677f, -15.7086487f, 188.758423f, 307.791931f, -406.667725f, 181.4751f, -188.69223f, -505.2157f); + float3x3 r2 = float3x3(-80.6352539f, 146.893677f, -16.7086487f, 187.758423f, 306.791931f, -407.667725f, 180.4751f, -189.69223f, -506.2157f); + TestUtils.AreEqual(--a2, r2); + + float3x3 a3 = float3x3(-372.241943f, 83.76776f, -30.6314087f, -436.906555f, -51.668396f, 345.021545f, 4.73535156f, -68.65332f, 481.4961f); + float3x3 r3 = float3x3(-373.241943f, 82.76776f, -31.6314087f, -437.906555f, -52.668396f, 344.021545f, 3.73535156f, -69.65332f, 480.4961f); + TestUtils.AreEqual(--a3, r3); + } + + [TestCompiler] + public static void float3x3_operator_postfix_dec() + { + float3x3 a0 = float3x3(-376.5924f, 16.9697266f, -0.2506714f, -202.323273f, 409.557556f, 47.85663f, -281.1117f, -262.0626f, -182.405731f); + float3x3 r0 = float3x3(-376.5924f, 16.9697266f, -0.2506714f, -202.323273f, 409.557556f, 47.85663f, -281.1117f, -262.0626f, -182.405731f); + TestUtils.AreEqual(a0--, r0); + + float3x3 a1 = float3x3(450.1281f, -332.154968f, -261.0089f, 205.461121f, -230.227783f, -483.066528f, 378.641235f, 487.344849f, -192.177856f); + float3x3 r1 = float3x3(450.1281f, -332.154968f, -261.0089f, 205.461121f, -230.227783f, -483.066528f, 378.641235f, 487.344849f, -192.177856f); + TestUtils.AreEqual(a1--, r1); + + float3x3 a2 = float3x3(-357.0542f, 279.424255f, 115.867737f, -20.8232117f, 323.4054f, 379.156128f, 311.299f, 409.222473f, -428.2567f); + float3x3 r2 = float3x3(-357.0542f, 279.424255f, 115.867737f, -20.8232117f, 323.4054f, 379.156128f, 311.299f, 409.222473f, -428.2567f); + TestUtils.AreEqual(a2--, r2); + + float3x3 a3 = float3x3(-425.2884f, -258.848358f, -208.985779f, -313.4259f, 178.3125f, 176.78949f, -370.7863f, 64.90387f, 449.637756f); + float3x3 r3 = float3x3(-425.2884f, -258.848358f, -208.985779f, -313.4259f, 178.3125f, 176.78949f, -370.7863f, 64.90387f, 449.637756f); + TestUtils.AreEqual(a3--, r3); + } + + + } +} diff --git a/package/Tests/Tests/Shared/TestFloat3x3.gen.cs.meta b/package/Tests/Tests/Shared/TestFloat3x3.gen.cs.meta new file mode 100755 index 000000000..15fc4b704 --- /dev/null +++ b/package/Tests/Tests/Shared/TestFloat3x3.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 27c6e6d3cc1ef6643995a494e7e3b0d3 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/package/Tests/Tests/Shared/TestFloat3x4.gen.cs b/package/Tests/Tests/Shared/TestFloat3x4.gen.cs new file mode 100755 index 000000000..62a5ce997 --- /dev/null +++ b/package/Tests/Tests/Shared/TestFloat3x4.gen.cs @@ -0,0 +1,949 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using NUnit.Framework; +using static Unity.Mathematics.math; +using Burst.Compiler.IL.Tests; + +namespace Unity.Mathematics.Tests +{ + [TestFixture] + public class TestFloat3x4 + { + [TestCompiler] + public static void float3x4_zero() + { + TestUtils.AreEqual(float3x4.zero.c0.x, 0.0f); + TestUtils.AreEqual(float3x4.zero.c0.y, 0.0f); + TestUtils.AreEqual(float3x4.zero.c0.z, 0.0f); + TestUtils.AreEqual(float3x4.zero.c1.x, 0.0f); + TestUtils.AreEqual(float3x4.zero.c1.y, 0.0f); + TestUtils.AreEqual(float3x4.zero.c1.z, 0.0f); + TestUtils.AreEqual(float3x4.zero.c2.x, 0.0f); + TestUtils.AreEqual(float3x4.zero.c2.y, 0.0f); + TestUtils.AreEqual(float3x4.zero.c2.z, 0.0f); + TestUtils.AreEqual(float3x4.zero.c3.x, 0.0f); + TestUtils.AreEqual(float3x4.zero.c3.y, 0.0f); + TestUtils.AreEqual(float3x4.zero.c3.z, 0.0f); + } + + [TestCompiler] + public static void float3x4_operator_equal_wide_wide() + { + float3x4 a0 = float3x4(-135.18924f, -49.0941162f, 169.129822f, 240.8053f, 314.7392f, 442.393f, 177.924438f, 335.5334f, 168.15448f, 350.729553f, 367.178467f, 46.9414673f); + float3x4 b0 = float3x4(-220.014648f, 66.98004f, 499.2016f, -371.1131f, 208.448669f, 390.8037f, -72.44382f, 362.97644f, 194.678345f, 471.644836f, -404.044678f, -144.696747f); + bool3x4 r0 = bool3x4(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + float3x4 a1 = float3x4(188.76416f, -97.2113953f, -293.320984f, -234.822937f, 417.0337f, 26.3864136f, 269.245728f, 29.4741821f, 479.485229f, -237.230957f, -221.9837f, -506.672546f); + float3x4 b1 = float3x4(-494.446655f, -252.970367f, 234.417114f, 398.724f, 260.4287f, 370.144226f, 89.579834f, -434.816833f, -109.845337f, 336.973022f, -409.154968f, 500.387573f); + bool3x4 r1 = bool3x4(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + float3x4 a2 = float3x4(-22.98944f, 487.260864f, -419.731964f, 337.2033f, 245.043884f, 390.215881f, 84.4129639f, 434.2079f, -68.7284241f, 485.769958f, 413.169739f, -418.2693f); + float3x4 b2 = float3x4(-174.081818f, 395.101135f, 350.3393f, -243.144592f, -416.397369f, 151.576477f, -18.2243347f, -431.677917f, -468.330963f, 429.495728f, 477.389221f, -433.4254f); + bool3x4 r2 = bool3x4(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + float3x4 a3 = float3x4(-346.795868f, 504.159668f, 345.186279f, -434.713043f, -499.7741f, 282.019043f, 259.15625f, 306.455933f, 435.2254f, -386.8997f, 211.364014f, -7.229828f); + float3x4 b3 = float3x4(273.5464f, -34.9762268f, 221.968445f, 85.91913f, -85.59894f, 392.7608f, -117.924072f, -445.3056f, -242.468964f, 173.643066f, 389.897766f, -14.2904663f); + bool3x4 r3 = bool3x4(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void float3x4_operator_equal_wide_scalar() + { + float3x4 a0 = float3x4(65.6712f, 404.415527f, -269.730164f, 83.6306152f, 152.9945f, -155.868286f, 314.671265f, 386.365173f, 290.04895f, -132.6352f, -65.66748f, -69.68326f); + float b0 = (-155.815765f); + bool3x4 r0 = bool3x4(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + float3x4 a1 = float3x4(-191.190765f, -232.895691f, -319.144043f, -49.70108f, -300.8819f, 333.396851f, 386.3775f, -296.7019f, -309.1172f, 141.542358f, -227.323334f, 83.87286f); + float b1 = (186.845215f); + bool3x4 r1 = bool3x4(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + float3x4 a2 = float3x4(-410.91687f, -390.103577f, 36.57434f, -427.541443f, -268.170837f, 175.8117f, -193.47995f, 291.051941f, 423.97168f, -429.8739f, -275.156952f, -56.3323669f); + float b2 = (110.501282f); + bool3x4 r2 = bool3x4(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + float3x4 a3 = float3x4(-95.83597f, 253.006165f, -300.509521f, 314.866516f, 195.616211f, -26.1289063f, -284.7747f, -242.672058f, 140.3606f, 505.644348f, 506.537964f, -502.3698f); + float b3 = (-124.865326f); + bool3x4 r3 = bool3x4(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void float3x4_operator_equal_scalar_wide() + { + float a0 = (36.38391f); + float3x4 b0 = float3x4(-400.4892f, -71.2868347f, 156.978088f, -225.238739f, 499.141785f, -211.979919f, 428.311951f, -489.501343f, -5.691559f, -30.8659363f, -362.9831f, 184.503174f); + bool3x4 r0 = bool3x4(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + float a1 = (-160.470612f); + float3x4 b1 = float3x4(316.668823f, 390.369263f, 505.1051f, -294.6487f, 443.1991f, 96.5592651f, -257.012939f, -245.054962f, 326.464844f, -23.9599f, -168.694885f, 386.2486f); + bool3x4 r1 = bool3x4(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + float a2 = (-227.090637f); + float3x4 b2 = float3x4(-336.612427f, 365.108154f, -405.390839f, -473.995483f, 298.435364f, -149.86322f, 450.0664f, 153.47644f, 56.28778f, 39.3421021f, -350.403717f, -482.717224f); + bool3x4 r2 = bool3x4(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + float a3 = (239.9654f); + float3x4 b3 = float3x4(-3.40603638f, -1.49484253f, 105.960449f, 151.537537f, 63.2832031f, -289.693176f, 137.553772f, -247.666473f, -339.420563f, 23.2382813f, 21.1778564f, 477.03656f); + bool3x4 r3 = bool3x4(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void float3x4_operator_not_equal_wide_wide() + { + float3x4 a0 = float3x4(279.994141f, -43.34201f, -465.724731f, 317.466553f, 85.7149658f, 360.8905f, 366.081543f, 154.542847f, 332.4262f, 397.11322f, -431.374969f, 489.0108f); + float3x4 b0 = float3x4(-460.9121f, -476.009033f, 468.1364f, -341.012543f, -62.65805f, -458.801666f, -457.730225f, -59.5232544f, 3.024231f, 155.812744f, -19.8399048f, -6.01693726f); + bool3x4 r0 = bool3x4(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + float3x4 a1 = float3x4(398.4336f, -489.817932f, 171.4049f, -67.82968f, -192.278717f, 227.84082f, 62.1381836f, 262.186462f, -404.0531f, 34.449585f, -204.795776f, -285.4118f); + float3x4 b1 = float3x4(-406.207916f, -102.420715f, -40.362915f, 452.6754f, 93.25757f, -258.378052f, -184.0498f, -379.2353f, -370.687317f, -255.947235f, 29.0557861f, 322.407654f); + bool3x4 r1 = bool3x4(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + float3x4 a2 = float3x4(-72.20682f, 444.749268f, 238.81781f, 365.1801f, -437.9229f, -362.442627f, 445.954346f, -0.417480469f, -506.828369f, 245.477051f, -173.571045f, 390.338562f); + float3x4 b2 = float3x4(415.071716f, -467.726135f, -433.784668f, -212.165924f, 474.674927f, 452.483215f, -92.11273f, -385.9221f, 420.2151f, -239.176056f, -99.0791f, 4.476013f); + bool3x4 r2 = bool3x4(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + float3x4 a3 = float3x4(252.837769f, 47.8658447f, 457.7105f, -313.22113f, 391.203857f, 481.786133f, 26.8878174f, -298.1424f, 240.077454f, -332.455139f, -333.607178f, -313.1897f); + float3x4 b3 = float3x4(264.348572f, 451.312317f, 232.958008f, -142.6222f, -300.2256f, 268.333252f, -112.103546f, -270.494019f, -71.9932251f, 99.46326f, 321.7033f, 200.059631f); + bool3x4 r3 = bool3x4(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void float3x4_operator_not_equal_wide_scalar() + { + float3x4 a0 = float3x4(-155.4411f, -19.4266052f, 174.633057f, 507.920715f, 59.177063f, 171.151489f, -58.92328f, -398.176849f, 492.20105f, -165.241516f, 270.341f, -380.243256f); + float b0 = (-393.413544f); + bool3x4 r0 = bool3x4(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + float3x4 a1 = float3x4(501.899048f, 458.400452f, 46.7709961f, 161.459961f, 261.514221f, -145.6124f, -0.449920654f, 350.461426f, 202.221008f, 242.664f, 382.677063f, -468.967957f); + float b1 = (-134.345459f); + bool3x4 r1 = bool3x4(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + float3x4 a2 = float3x4(-497.459473f, -328.587769f, -506.490326f, 449.348145f, 210.771f, 249.181824f, -338.468536f, 229.670654f, -76.5433044f, 317.286072f, 401.939575f, 210.984863f); + float b2 = (-80.93225f); + bool3x4 r2 = bool3x4(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + float3x4 a3 = float3x4(-147.096313f, 207.731384f, 284.3921f, -509.0853f, 414.307617f, -52.2944641f, -140.437927f, -316.787781f, -358.696838f, 312.31897f, 270.629456f, -140.016724f); + float b3 = (-193.399048f); + bool3x4 r3 = bool3x4(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void float3x4_operator_not_equal_scalar_wide() + { + float a0 = (478.353149f); + float3x4 b0 = float3x4(459.553223f, 436.453247f, -488.714172f, 392.767944f, -266.736633f, 338.557861f, -338.100128f, -152.314545f, -452.820679f, 209.439331f, 50.10797f, 372.4344f); + bool3x4 r0 = bool3x4(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + float a1 = (-488.0213f); + float3x4 b1 = float3x4(489.740784f, 270.4001f, -472.846771f, -286.850464f, -384.691864f, 443.423523f, 358.7472f, -15.4140625f, -342.179169f, 468.967529f, -130.568085f, 401.785828f); + bool3x4 r1 = bool3x4(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + float a2 = (-268.352264f); + float3x4 b2 = float3x4(-239.231018f, 411.386536f, 139.769348f, 334.522034f, -223.629242f, -12.4884644f, 113.468872f, -189.652252f, -212.846558f, 306.1256f, -178.330383f, 382.141968f); + bool3x4 r2 = bool3x4(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + float a3 = (-340.8656f); + float3x4 b3 = float3x4(-17.58023f, -409.874847f, -349.70166f, 275.8543f, -229.371948f, -127.505737f, 90.75342f, -422.087128f, -2.44754028f, -280.5517f, -484.374359f, -33.7634277f); + bool3x4 r3 = bool3x4(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void float3x4_operator_less_wide_wide() + { + float3x4 a0 = float3x4(51.7102661f, -313.85556f, 283.047668f, 235.021912f, 44.07837f, -207.255676f, 3.38293457f, -144.301331f, -69.3696f, -135.667969f, -194.787354f, -33.473877f); + float3x4 b0 = float3x4(-261.835236f, -19.81073f, -149.25882f, 205.99823f, -306.024384f, 102.121704f, 231.906311f, 179.49884f, 473.2249f, 15.8916626f, 270.049927f, 490.914f); + bool3x4 r0 = bool3x4(false, true, false, false, false, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 < b0, r0); + + float3x4 a1 = float3x4(-19.67508f, 423.237976f, -71.6983f, -501.886f, 7.64386f, 302.262878f, -140.5505f, -436.5867f, -351.4417f, 364.970825f, 301.8941f, 407.550964f); + float3x4 b1 = float3x4(-185.734131f, 76.4331055f, 97.75232f, 419.300781f, 73.953186f, 481.032349f, 7.00744629f, -7.32409668f, -413.075745f, -154.1189f, 449.202881f, 502.014282f); + bool3x4 r1 = bool3x4(false, false, true, true, true, true, true, true, false, false, true, true); + TestUtils.AreEqual(a1 < b1, r1); + + float3x4 a2 = float3x4(269.1078f, 462.98822f, 223.884155f, -287.18924f, 283.6386f, 511.864319f, -60.4967957f, -234.303467f, -316.1384f, -417.522156f, 441.643433f, -191.950623f); + float3x4 b2 = float3x4(-382.315857f, 251.535156f, 143.17395f, 293.660339f, -292.769562f, -43.2182f, -353.4112f, 458.32605f, -114.556458f, 441.429749f, -113.333679f, 435.622925f); + bool3x4 r2 = bool3x4(false, false, false, true, false, false, false, true, true, true, false, true); + TestUtils.AreEqual(a2 < b2, r2); + + float3x4 a3 = float3x4(397.811584f, -144.666626f, 417.079041f, -322.980133f, -81.2850952f, 319.325317f, 146.764038f, -316.583374f, -150.857544f, -314.606323f, 7.14312744f, -458.8273f); + float3x4 b3 = float3x4(383.656128f, -293.7116f, -391.35498f, 43.12201f, 433.223633f, -201.382446f, -241.421173f, 376.469849f, -503.39743f, -359.780945f, 118.631531f, -510.030518f); + bool3x4 r3 = bool3x4(false, false, false, true, true, false, false, true, false, false, true, false); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void float3x4_operator_less_wide_scalar() + { + float3x4 a0 = float3x4(-221.869781f, -121.546478f, -97.5239258f, 479.8811f, 67.11902f, 137.3288f, 282.9666f, 258.2791f, -111.413147f, -288.081116f, 82.6654053f, -361.6429f); + float b0 = (199.0675f); + bool3x4 r0 = bool3x4(true, true, true, false, true, true, false, false, true, true, true, true); + TestUtils.AreEqual(a0 < b0, r0); + + float3x4 a1 = float3x4(-68.0881958f, -66.703064f, -78.76297f, 25.7277222f, 101.37085f, -330.442657f, -48.9205322f, 359.604431f, -8.150085f, 241.2768f, -183.437775f, 423.027161f); + float b1 = (12.7880249f); + bool3x4 r1 = bool3x4(true, true, true, false, false, true, true, false, true, false, true, false); + TestUtils.AreEqual(a1 < b1, r1); + + float3x4 a2 = float3x4(-334.622742f, 300.410156f, 297.925232f, -492.108154f, -395.807251f, 95.78882f, -220.62146f, -455.37558f, 360.291565f, -296.372131f, 272.488342f, 360.207947f); + float b2 = (-98.31558f); + bool3x4 r2 = bool3x4(true, false, false, true, true, false, true, true, false, true, false, false); + TestUtils.AreEqual(a2 < b2, r2); + + float3x4 a3 = float3x4(389.727417f, -400.615234f, -85.46912f, -467.702148f, -51.38788f, 201.764648f, -47.8412781f, -180.740051f, -409.0157f, 229.699036f, 176.197876f, -410.45517f); + float b3 = (68.7366943f); + bool3x4 r3 = bool3x4(false, true, true, true, true, false, true, true, true, false, false, true); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void float3x4_operator_less_scalar_wide() + { + float a0 = (-250.484924f); + float3x4 b0 = float3x4(-377.196533f, -505.147552f, 375.9267f, 110.17395f, -118.097565f, -40.4508972f, -299.744324f, 31.4371338f, -458.904541f, 13.6846924f, -458.5069f, 248.276489f); + bool3x4 r0 = bool3x4(false, false, true, true, true, true, false, true, false, true, false, true); + TestUtils.AreEqual(a0 < b0, r0); + + float a1 = (389.231445f); + float3x4 b1 = float3x4(488.745544f, -221.637878f, -424.2672f, 249.059021f, -22.1361389f, -442.247742f, -340.857544f, -95.1117249f, 15.4094238f, 87.29248f, 495.067627f, 316.0185f); + bool3x4 r1 = bool3x4(true, false, false, false, false, false, false, false, false, false, true, false); + TestUtils.AreEqual(a1 < b1, r1); + + float a2 = (-125.568115f); + float3x4 b2 = float3x4(122.164795f, 96.75537f, -228.906342f, -143.9527f, -230.238281f, -327.6126f, 103.39801f, 434.488831f, -157.4502f, 190.572144f, 108.2583f, 132.550781f); + bool3x4 r2 = bool3x4(true, true, false, false, false, false, true, true, false, true, true, true); + TestUtils.AreEqual(a2 < b2, r2); + + float a3 = (-431.515228f); + float3x4 b3 = float3x4(-192.203522f, -431.835f, -85.58124f, 328.670532f, 273.577881f, -178.669067f, 352.6363f, -82.6058044f, 238.908875f, 291.335327f, 183.357361f, -185.0326f); + bool3x4 r3 = bool3x4(true, false, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void float3x4_operator_greater_wide_wide() + { + float3x4 a0 = float3x4(-229.29068f, 505.536621f, -73.80707f, 100.292053f, -419.214783f, -159.559753f, -396.770355f, 127.037415f, 489.1399f, 51.9188843f, 155.384766f, -135.631653f); + float3x4 b0 = float3x4(-445.845032f, -420.035278f, 299.0244f, -13.8809814f, 151.5617f, -163.50943f, -391.096039f, 479.283752f, -77.6748657f, -46.584198f, -415.377f, 71.46698f); + bool3x4 r0 = bool3x4(true, true, false, true, false, true, false, false, true, true, true, false); + TestUtils.AreEqual(a0 > b0, r0); + + float3x4 a1 = float3x4(-425.978149f, -228.430511f, 383.03833f, 136.533569f, 8.602417f, -251.324371f, -345.954926f, -170.565918f, -293.2544f, 139.125f, 214.3031f, 238.7699f); + float3x4 b1 = float3x4(-206.061035f, 360.8363f, 236.968811f, 14.550354f, 364.735168f, -159.06131f, 226.631165f, 182.796021f, 341.839355f, -79.13046f, -247.296814f, 164.589111f); + bool3x4 r1 = bool3x4(false, false, true, true, false, false, false, false, false, true, true, true); + TestUtils.AreEqual(a1 > b1, r1); + + float3x4 a2 = float3x4(105.535217f, -170.9253f, 26.9802246f, -188.928314f, 201.786621f, -506.057159f, 15.454895f, 115.080688f, -496.971832f, 339.888123f, 372.228333f, 313.2387f); + float3x4 b2 = float3x4(-352.1598f, 9.822632f, 186.721619f, -325.913635f, -77.93036f, -379.746033f, 251.45575f, -144.183563f, 337.8899f, -249.505554f, -225.9013f, -249.491272f); + bool3x4 r2 = bool3x4(true, false, false, true, true, false, false, true, false, true, true, true); + TestUtils.AreEqual(a2 > b2, r2); + + float3x4 a3 = float3x4(-419.108948f, -265.329773f, -42.5019836f, 369.163879f, 67.16907f, -256.6989f, -104.105927f, 499.570129f, 41.6635132f, 151.1521f, 220.688354f, -344.658875f); + float3x4 b3 = float3x4(381.122864f, 325.5454f, 455.49884f, 333.318665f, 118.980347f, 223.19812f, -385.289063f, 333.8808f, -437.4107f, 243.975464f, -302.8199f, -32.7101746f); + bool3x4 r3 = bool3x4(false, false, false, true, false, false, true, true, true, false, true, false); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void float3x4_operator_greater_wide_scalar() + { + float3x4 a0 = float3x4(11.156311f, -411.023224f, 385.885559f, -485.103058f, -491.180023f, 405.175354f, 173.575073f, 69.26929f, 501.306824f, -367.027771f, -86.12451f, -489.090576f); + float b0 = (-302.816956f); + bool3x4 r0 = bool3x4(true, false, true, false, false, true, true, true, true, false, true, false); + TestUtils.AreEqual(a0 > b0, r0); + + float3x4 a1 = float3x4(-172.518158f, -236.414948f, -238.8945f, -27.2391357f, 471.779358f, 240.164551f, -481.4781f, 185.59436f, 33.29474f, -510.228149f, -183.2862f, -386.127655f); + float b1 = (-18.1496277f); + bool3x4 r1 = bool3x4(false, false, false, false, true, true, false, true, true, false, false, false); + TestUtils.AreEqual(a1 > b1, r1); + + float3x4 a2 = float3x4(-13.6382141f, -261.865967f, 52.24951f, 16.3232422f, -410.5101f, -262.2675f, -458.255981f, -218.866119f, -34.6923523f, 290.573059f, 180.2633f, -482.863953f); + float b2 = (-7.34790039f); + bool3x4 r2 = bool3x4(false, false, true, true, false, false, false, false, false, true, true, false); + TestUtils.AreEqual(a2 > b2, r2); + + float3x4 a3 = float3x4(100.7063f, 501.319763f, -289.280975f, -25.8497f, 455.1624f, -63.3173523f, -17.4467773f, 53.01776f, 88.81958f, 182.357971f, -428.927216f, 408.336853f); + float b3 = (180.672546f); + bool3x4 r3 = bool3x4(false, true, false, false, true, false, false, false, false, true, false, true); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void float3x4_operator_greater_scalar_wide() + { + float a0 = (453.546082f); + float3x4 b0 = float3x4(-226.2044f, -423.465f, 409.405518f, 453.877075f, 87.47571f, 113.795593f, 176.409241f, -140.440033f, -182.48288f, -158.2933f, -162.685333f, -193.328674f); + bool3x4 r0 = bool3x4(true, true, true, false, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 > b0, r0); + + float a1 = (230.181274f); + float3x4 b1 = float3x4(-102.58783f, 392.520569f, -177.478668f, -10.2950134f, -24.04895f, 172.448669f, 374.048035f, -368.99762f, -210.195282f, 149.470215f, -281.343262f, -100.469177f); + bool3x4 r1 = bool3x4(true, false, true, true, true, true, false, true, true, true, true, true); + TestUtils.AreEqual(a1 > b1, r1); + + float a2 = (304.864441f); + float3x4 b2 = float3x4(-361.524841f, -372.452362f, -33.9095459f, -69.5952759f, -460.4324f, -309.341675f, 486.131531f, 471.920959f, 479.361572f, -107.004181f, 331.636536f, -340.840149f); + bool3x4 r2 = bool3x4(true, true, true, true, true, true, false, false, false, true, false, true); + TestUtils.AreEqual(a2 > b2, r2); + + float a3 = (-384.2146f); + float3x4 b3 = float3x4(-451.726563f, 467.97876f, -236.569122f, 44.6547241f, -285.797852f, 42.730957f, 338.18512f, 274.017029f, -108.60437f, -211.37326f, -19.00415f, 194.114685f); + bool3x4 r3 = bool3x4(true, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void float3x4_operator_less_equal_wide_wide() + { + float3x4 a0 = float3x4(240.090515f, 462.213135f, 293.08252f, -427.870667f, -405.5227f, 204.591919f, 294.6701f, -327.564453f, -456.12326f, 282.30127f, 421.881165f, -311.71283f); + float3x4 b0 = float3x4(-81.20383f, 493.637451f, -411.4721f, 99.16443f, -295.6677f, -480.462555f, 74.41406f, 260.916138f, 306.173279f, 139.564819f, -505.752472f, -489.6268f); + bool3x4 r0 = bool3x4(false, true, false, true, true, false, false, true, true, false, false, false); + TestUtils.AreEqual(a0 <= b0, r0); + + float3x4 a1 = float3x4(84.5675049f, 447.244629f, -154.494354f, -424.364746f, 36.68451f, 267.0703f, 307.893921f, -351.760132f, -157.360352f, 152.709045f, 372.267151f, 202.368286f); + float3x4 b1 = float3x4(-280.0326f, 303.1599f, 511.1902f, -104.659729f, 95.14661f, -125.636353f, 376.2398f, -415.774719f, -47.48105f, 117.722107f, 469.378357f, -263.042358f); + bool3x4 r1 = bool3x4(false, false, true, true, true, false, true, false, true, false, true, false); + TestUtils.AreEqual(a1 <= b1, r1); + + float3x4 a2 = float3x4(-77.04346f, 438.1848f, 260.282349f, 386.034058f, -281.491f, -102.930054f, -346.716736f, -258.3412f, -383.302948f, -5.14703369f, 319.34375f, 465.022217f); + float3x4 b2 = float3x4(-216.002319f, 66.73425f, 99.21863f, 233.843018f, 439.839966f, 61.1151123f, -219.030579f, -404.7129f, -202.748352f, -312.476471f, 310.0719f, -320.363037f); + bool3x4 r2 = bool3x4(false, false, false, false, true, true, true, false, true, false, false, false); + TestUtils.AreEqual(a2 <= b2, r2); + + float3x4 a3 = float3x4(145.933472f, -215.074829f, -146.461517f, -349.893982f, 29.5991211f, -131.796631f, -438.9947f, 147.057922f, 221.112488f, -356.145355f, -32.83017f, 442.942017f); + float3x4 b3 = float3x4(186.075989f, -42.6377869f, 82.56506f, 127.189087f, 198.286987f, -450.492035f, 20.901001f, 449.465881f, -478.7727f, 380.053955f, 99.1247559f, -450.329773f); + bool3x4 r3 = bool3x4(true, true, true, true, true, false, true, true, false, true, true, false); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void float3x4_operator_less_equal_wide_scalar() + { + float3x4 a0 = float3x4(309.192444f, 69.67377f, -101.724182f, -315.9724f, -346.011047f, 424.15387f, -410.870056f, -483.902649f, 183.821167f, 320.4425f, -257.870056f, -386.801758f); + float b0 = (292.924255f); + bool3x4 r0 = bool3x4(false, true, true, true, true, false, true, true, true, false, true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + float3x4 a1 = float3x4(-182.938812f, 485.311584f, 373.5691f, 259.1515f, 450.130066f, -128.525543f, -43.8748779f, 457.385742f, -77.6383057f, 479.451843f, -499.516449f, -398.132935f); + float b1 = (349.250122f); + bool3x4 r1 = bool3x4(true, false, false, true, false, true, true, false, true, false, true, true); + TestUtils.AreEqual(a1 <= b1, r1); + + float3x4 a2 = float3x4(402.484863f, -502.1736f, 125.950806f, -54.49362f, 250.667419f, 97.94293f, 228.021545f, -213.378662f, 42.2608032f, -24.8275757f, -451.0416f, 429.577576f); + float b2 = (87.91608f); + bool3x4 r2 = bool3x4(false, true, false, true, false, false, false, true, true, true, true, false); + TestUtils.AreEqual(a2 <= b2, r2); + + float3x4 a3 = float3x4(-308.4343f, -279.4071f, 181.672241f, -290.148743f, -184.844086f, 447.6939f, 168.8866f, 26.3789673f, 392.558533f, 255.604858f, 162.163452f, 195.496277f); + float b3 = (355.160339f); + bool3x4 r3 = bool3x4(true, true, true, true, true, false, true, true, false, true, true, true); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void float3x4_operator_less_equal_scalar_wide() + { + float a0 = (-511.152374f); + float3x4 b0 = float3x4(51.1589966f, 340.443665f, 312.81427f, 354.1925f, 136.396729f, -94.76788f, 288.5443f, 304.042847f, -148.618073f, -506.3001f, 27.5812378f, 48.47113f); + bool3x4 r0 = bool3x4(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + float a1 = (104.883484f); + float3x4 b1 = float3x4(-488.685852f, -480.435181f, 421.936646f, 239.721069f, -101.018433f, -283.951477f, -55.24353f, -455.80484f, 131.107239f, -461.6988f, -388.482849f, -258.936035f); + bool3x4 r1 = bool3x4(false, false, true, true, false, false, false, false, true, false, false, false); + TestUtils.AreEqual(a1 <= b1, r1); + + float a2 = (-225.223541f); + float3x4 b2 = float3x4(-116.019989f, -442.595245f, 297.333374f, 36.6872559f, 485.097839f, 344.445679f, 237.592163f, 230.390869f, -413.9848f, -215.901672f, 39.5603638f, 22.947998f); + bool3x4 r2 = bool3x4(true, false, true, true, true, true, true, true, false, true, true, true); + TestUtils.AreEqual(a2 <= b2, r2); + + float a3 = (-162.060577f); + float3x4 b3 = float3x4(236.7337f, -253.951965f, -204.719086f, -161.616547f, -64.3859253f, -229.815643f, -484.825653f, -135.040436f, 351.694763f, 111.825378f, -249.982544f, 435.8073f); + bool3x4 r3 = bool3x4(true, false, false, true, true, false, false, true, true, true, false, true); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void float3x4_operator_greater_equal_wide_wide() + { + float3x4 a0 = float3x4(-386.5918f, -157.120789f, 391.015259f, -511.886871f, -5.42202759f, 287.645264f, -122.535187f, 7.48144531f, 152.946411f, 48.9862061f, 57.3381348f, 300.4649f); + float3x4 b0 = float3x4(153.443f, 49.8924561f, 78.02582f, 138.813721f, -225.51059f, -339.3561f, -373.302063f, 364.9359f, -322.7154f, 125.47821f, -25.77658f, 297.518921f); + bool3x4 r0 = bool3x4(false, false, true, false, true, true, true, false, true, false, true, true); + TestUtils.AreEqual(a0 >= b0, r0); + + float3x4 a1 = float3x4(349.25708f, 85.7496948f, -230.953308f, 418.711243f, -131.039917f, -126.512207f, -156.818481f, 422.3775f, -413.089325f, 219.442749f, 35.5911255f, 447.181519f); + float3x4 b1 = float3x4(73.22235f, 462.783752f, 393.191345f, -95.0014343f, 381.357056f, 93.03192f, 254.253235f, 90.67279f, 348.938171f, 161.337646f, 79.43561f, 420.243469f); + bool3x4 r1 = bool3x4(true, false, false, true, false, false, false, true, false, true, false, true); + TestUtils.AreEqual(a1 >= b1, r1); + + float3x4 a2 = float3x4(-223.492981f, 302.123f, 459.852722f, -347.128021f, 364.9781f, 212.635437f, 504.276062f, -142.232971f, -132.2218f, 303.683777f, 265.210144f, 9.754395f); + float3x4 b2 = float3x4(453.684875f, -154.011658f, -97.29007f, 151.184753f, 57.36029f, -194.207092f, -462.670624f, 113.3866f, -129.3533f, 8.107788f, 426.449524f, 410.693176f); + bool3x4 r2 = bool3x4(false, true, true, false, true, true, true, false, false, true, false, false); + TestUtils.AreEqual(a2 >= b2, r2); + + float3x4 a3 = float3x4(-233.0929f, 26.5675049f, 266.7807f, -250.072235f, 138.040833f, 174.276733f, -420.931641f, -42.8541565f, 216.485046f, 240.053833f, -470.382172f, 98.39673f); + float3x4 b3 = float3x4(470.313416f, 220.399963f, -372.872681f, -242.178558f, 177.506226f, -172.638153f, 60.72284f, 478.250183f, 234.30304f, 297.821228f, 104.584595f, -462.418732f); + bool3x4 r3 = bool3x4(false, false, true, false, false, true, false, false, false, false, false, true); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void float3x4_operator_greater_equal_wide_scalar() + { + float3x4 a0 = float3x4(495.4574f, -14.3451233f, -463.4748f, 217.517517f, -246.865723f, -377.6587f, 53.8151245f, -123.332947f, -221.505463f, 252.994324f, -116.440369f, -395.3633f); + float b0 = (189.205139f); + bool3x4 r0 = bool3x4(true, false, false, true, false, false, false, false, false, true, false, false); + TestUtils.AreEqual(a0 >= b0, r0); + + float3x4 a1 = float3x4(164.772583f, 355.837036f, 184.195557f, 273.012268f, -418.1424f, 249.3841f, 396.392151f, 332.6654f, 243.761414f, -335.12146f, -302.0869f, 254.442261f); + float b1 = (-287.007324f); + bool3x4 r1 = bool3x4(true, true, true, true, false, true, true, true, true, false, false, true); + TestUtils.AreEqual(a1 >= b1, r1); + + float3x4 a2 = float3x4(179.005066f, -331.271667f, 307.890564f, -388.578522f, 150.605774f, -219.892578f, -491.681f, 30.99707f, 199.232239f, -74.50003f, -343.386475f, 216.031555f); + float b2 = (71.1767f); + bool3x4 r2 = bool3x4(true, false, true, false, true, false, false, false, true, false, false, true); + TestUtils.AreEqual(a2 >= b2, r2); + + float3x4 a3 = float3x4(-420.403137f, -336.6411f, 317.0946f, -262.424927f, -228.411255f, 123.465454f, 264.102478f, 223.623352f, 440.5354f, -420.727f, 74.8443f, -177.077881f); + float b3 = (-78.38403f); + bool3x4 r3 = bool3x4(false, false, true, false, false, true, true, true, true, false, true, false); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void float3x4_operator_greater_equal_scalar_wide() + { + float a0 = (215.435364f); + float3x4 b0 = float3x4(204.802979f, -101.104034f, -122.055023f, -70.45615f, -239.62027f, -185.992737f, -455.612579f, 276.665833f, 79.39917f, 416.420532f, 379.2735f, -439.5147f); + bool3x4 r0 = bool3x4(true, true, true, true, true, true, true, false, true, false, false, true); + TestUtils.AreEqual(a0 >= b0, r0); + + float a1 = (67.14099f); + float3x4 b1 = float3x4(-74.56064f, -367.256348f, 494.950745f, -61.2355347f, -429.170258f, -213.824677f, -264.310181f, 243.11377f, -22.38388f, 304.862f, -323.686157f, 67.93805f); + bool3x4 r1 = bool3x4(true, true, false, true, true, true, true, false, true, false, true, false); + TestUtils.AreEqual(a1 >= b1, r1); + + float a2 = (125.303589f); + float3x4 b2 = float3x4(-400.47052f, -283.159637f, -42.31961f, -429.510376f, 499.395874f, -289.963074f, -136.008789f, -351.125244f, -381.8183f, 393.3009f, 18.02362f, -169.92392f); + bool3x4 r2 = bool3x4(true, true, true, true, false, true, true, true, true, false, true, true); + TestUtils.AreEqual(a2 >= b2, r2); + + float a3 = (-285.884949f); + float3x4 b3 = float3x4(163.7511f, 191.855347f, 114.0155f, -395.98584f, 189.366577f, 176.19812f, 61.7138062f, 507.548462f, 224.043823f, -422.9937f, -127.054993f, 95.5286255f); + bool3x4 r3 = bool3x4(false, false, false, true, false, false, false, false, false, true, false, false); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void float3x4_operator_add_wide_wide() + { + float3x4 a0 = float3x4(465.148376f, 278.9107f, -277.5299f, -65.1972046f, -473.324371f, -4.69555664f, -470.536774f, -109.9501f, -178.701447f, -420.033783f, 290.711121f, -446.529633f); + float3x4 b0 = float3x4(483.9944f, -204.07666f, -365.673553f, -509.920868f, -270.6975f, 486.763977f, 267.49176f, 251.642517f, 244.495117f, -78.67575f, 352.2055f, 82.7791748f); + float3x4 r0 = float3x4(949.142761f, 74.8340454f, -643.2035f, -575.118042f, -744.021851f, 482.06842f, -203.045013f, 141.692413f, 65.79367f, -498.709534f, 642.9166f, -363.750458f); + TestUtils.AreEqual(a0 + b0, r0); + + float3x4 a1 = float3x4(491.066467f, -261.1173f, -298.4069f, 502.4286f, 284.5943f, 401.128418f, -36.26349f, -102.949158f, 503.198181f, -384.4291f, -45.22821f, -198.67395f); + float3x4 b1 = float3x4(462.5473f, -405.492f, -428.498322f, -41.87259f, -269.9275f, 75.20447f, -141.913391f, -222.186768f, 41.3057251f, 148.339478f, -177.233124f, -176.51889f); + float3x4 r1 = float3x4(953.6138f, -666.6093f, -726.9052f, 460.556f, 14.6668091f, 476.3329f, -178.17688f, -325.135925f, 544.5039f, -236.08963f, -222.461334f, -375.192841f); + TestUtils.AreEqual(a1 + b1, r1); + + float3x4 a2 = float3x4(-62.8800049f, -79.5522461f, 413.098267f, -100.877594f, 418.524f, -183.143127f, 407.443726f, 300.486023f, -261.126129f, -309.830353f, 378.363342f, -224.094f); + float3x4 b2 = float3x4(492.692444f, 439.043823f, -511.742767f, -399.057129f, -315.868469f, -228.07724f, -171.7052f, 467.17395f, -474.822937f, 311.390747f, 326.8454f, 475.2119f); + float3x4 r2 = float3x4(429.812439f, 359.491577f, -98.6445f, -499.934723f, 102.655518f, -411.220367f, 235.738525f, 767.66f, -735.9491f, 1.56039429f, 705.20874f, 251.11792f); + TestUtils.AreEqual(a2 + b2, r2); + + float3x4 a3 = float3x4(-164.555725f, -69.87393f, 224.634644f, -383.9926f, 149.221252f, 169.388f, 163.053955f, 57.0291138f, 342.950073f, 168.680481f, -470.770264f, -117.630493f); + float3x4 b3 = float3x4(314.152954f, -262.594635f, -82.86911f, 156.299561f, 427.40155f, -279.099365f, -448.615234f, 284.3371f, 288.1856f, -232.39505f, -386.871918f, 162.903381f); + float3x4 r3 = float3x4(149.597229f, -332.468567f, 141.765533f, -227.693054f, 576.6228f, -109.711365f, -285.561279f, 341.3662f, 631.1357f, -63.71457f, -857.6422f, 45.27289f); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void float3x4_operator_add_wide_scalar() + { + float3x4 a0 = float3x4(459.898315f, -447.663361f, -94.43863f, 126.429871f, -36.254364f, -349.6413f, -2.79125977f, -478.4148f, 443.115234f, 268.092224f, 41.3210449f, -471.256073f); + float b0 = (500.997253f); + float3x4 r0 = float3x4(960.895569f, 53.3338928f, 406.558624f, 627.4271f, 464.7429f, 151.355957f, 498.206f, 22.5824585f, 944.1125f, 769.0895f, 542.3183f, 29.74118f); + TestUtils.AreEqual(a0 + b0, r0); + + float3x4 a1 = float3x4(-2.664978f, 202.14801f, 311.725464f, 10.3458252f, -151.244446f, 355.2328f, -197.800751f, 255.955261f, 244.1471f, -181.626556f, -2.45492554f, 300.900635f); + float b1 = (78.98584f); + float3x4 r1 = float3x4(76.32086f, 281.13385f, 390.7113f, 89.331665f, -72.258606f, 434.218628f, -118.814911f, 334.9411f, 323.132935f, -102.640717f, 76.5309143f, 379.886475f); + TestUtils.AreEqual(a1 + b1, r1); + + float3x4 a2 = float3x4(-236.491943f, -172.5422f, -242.9411f, 466.344116f, 237.987488f, 264.294f, 372.866821f, -198.837769f, -381.930969f, 402.160339f, -117.024841f, 497.373779f); + float b2 = (-160.5841f); + float3x4 r2 = float3x4(-397.07605f, -333.1263f, -403.5252f, 305.76f, 77.40338f, 103.7099f, 212.282715f, -359.421875f, -542.5151f, 241.576233f, -277.608948f, 336.789673f); + TestUtils.AreEqual(a2 + b2, r2); + + float3x4 a3 = float3x4(485.9093f, 77.81482f, -271.547974f, -133.2518f, 211.86676f, 253.1502f, -342.783173f, -185.248352f, -403.3855f, -358.848236f, 65.24756f, 127.201721f); + float b3 = (-47.75714f); + float3x4 r3 = float3x4(438.152161f, 30.0576782f, -319.3051f, -181.008942f, 164.109619f, 205.393066f, -390.5403f, -233.0055f, -451.142639f, -406.605377f, 17.4904175f, 79.44458f); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void float3x4_operator_add_scalar_wide() + { + float a0 = (-325.512756f); + float3x4 b0 = float3x4(-264.088135f, -106.009247f, -355.4473f, -447.3303f, -158.7002f, -199.4837f, 180.318115f, 337.579346f, -37.0550232f, 230.805f, -140.174347f, 18.02417f); + float3x4 r0 = float3x4(-589.6009f, -431.522f, -680.9601f, -772.843f, -484.212952f, -524.99646f, -145.194641f, 12.0665894f, -362.56778f, -94.70776f, -465.6871f, -307.4886f); + TestUtils.AreEqual(a0 + b0, r0); + + float a1 = (-138.614349f); + float3x4 b1 = float3x4(26.9041748f, -374.5376f, 154.46759f, 268.38385f, -190.963013f, 188.617249f, -504.916138f, 20.45404f, 197.945374f, 251.411926f, -421.0904f, 111.445374f); + float3x4 r1 = float3x4(-111.710175f, -513.152f, 15.853241f, 129.7695f, -329.577362f, 50.0029f, -643.5305f, -118.160309f, 59.3310242f, 112.797577f, -559.7047f, -27.1689758f); + TestUtils.AreEqual(a1 + b1, r1); + + float a2 = (-73.26889f); + float3x4 b2 = float3x4(480.884583f, 438.05304f, 66.8443f, -270.796021f, -44.02191f, 197.6947f, 19.1139526f, 349.2378f, 366.2345f, -413.4803f, -260.720184f, 77.54236f); + float3x4 r2 = float3x4(407.6157f, 364.784149f, -6.424591f, -344.0649f, -117.2908f, 124.425812f, -54.1549377f, 275.9689f, 292.9656f, -486.749176f, -333.989075f, 4.273468f); + TestUtils.AreEqual(a2 + b2, r2); + + float a3 = (183.9549f); + float3x4 b3 = float3x4(-51.4989929f, -472.497467f, 107.126892f, 349.0772f, 431.595947f, -314.110962f, 396.996643f, -167.308624f, -157.114532f, 287.7625f, -367.33905f, 96.23682f); + float3x4 r3 = float3x4(132.4559f, -288.542572f, 291.0818f, 533.0321f, 615.550842f, -130.156067f, 580.951538f, 16.64627f, 26.8403625f, 471.7174f, -183.384155f, 280.1917f); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void float3x4_operator_sub_wide_wide() + { + float3x4 a0 = float3x4(133.371033f, -131.832123f, -197.293152f, -485.28656f, -337.550323f, 471.6671f, 146.506592f, -130.585052f, 110.7771f, -235.5416f, 78.87933f, -347.686157f); + float3x4 b0 = float3x4(123.460266f, 359.56012f, -48.2484741f, 478.979065f, 207.158325f, 142.36731f, -125.6055f, -65.29901f, -477.876434f, 164.5f, 428.009583f, 72.62781f); + float3x4 r0 = float3x4(9.910767f, -491.392242f, -149.044678f, -964.2656f, -544.7086f, 329.2998f, 272.1121f, -65.28604f, 588.653564f, -400.0416f, -349.130249f, -420.313965f); + TestUtils.AreEqual(a0 - b0, r0); + + float3x4 a1 = float3x4(-470.820557f, -11.45929f, -167.9479f, 330.676758f, -508.350861f, -252.031891f, -427.9342f, 192.6576f, 168.429321f, 457.308777f, 470.058533f, -299.711884f); + float3x4 b1 = float3x4(-446.8805f, 432.091431f, -225.554657f, -112.451965f, -210.6128f, -172.925049f, -80.60748f, 270.046082f, -154.255585f, 148.475769f, 13.6611328f, 70.67108f); + float3x4 r1 = float3x4(-23.9400635f, -443.55072f, 57.60675f, 443.128723f, -297.738068f, -79.10684f, -347.326721f, -77.38849f, 322.6849f, 308.833f, 456.3974f, -370.382965f); + TestUtils.AreEqual(a1 - b1, r1); + + float3x4 a2 = float3x4(-308.939575f, 454.5334f, 26.1069336f, -482.711823f, -40.8535461f, 318.380676f, 475.210815f, 134.926941f, 388.481567f, 138.7182f, -385.5736f, -149.3648f); + float3x4 b2 = float3x4(-221.325439f, -9.25882f, 288.173828f, 217.36145f, 307.540039f, -262.412659f, -405.378021f, 400.004333f, 72.11908f, -154.880585f, -469.659973f, -320.615417f); + float3x4 r2 = float3x4(-87.6141357f, 463.7922f, -262.0669f, -700.073242f, -348.3936f, 580.793335f, 880.588867f, -265.0774f, 316.3625f, 293.5988f, 84.0863647f, 171.25061f); + TestUtils.AreEqual(a2 - b2, r2); + + float3x4 a3 = float3x4(-158.534058f, 508.070679f, 482.7008f, 114.569275f, 364.83136f, 229.031f, -168.088074f, 373.4411f, -239.90097f, 379.928467f, 113.011841f, 306.835266f); + float3x4 b3 = float3x4(6.41229248f, -278.865051f, 15.8380737f, 27.51831f, 429.869629f, -458.622467f, -172.064423f, -284.524719f, 42.60669f, -223.474243f, -56.92975f, 61.807312f); + float3x4 r3 = float3x4(-164.94635f, 786.9357f, 466.862732f, 87.0509644f, -65.03827f, 687.653442f, 3.97634888f, 657.9658f, -282.50766f, 603.4027f, 169.941589f, 245.027954f); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void float3x4_operator_sub_wide_scalar() + { + float3x4 a0 = float3x4(48.9367065f, 410.4516f, -364.4417f, 163.980591f, -460.067322f, 110.919434f, 204.358337f, 180.269714f, -377.9257f, -470.262054f, 400.5349f, 461.507568f); + float b0 = (-291.5904f); + float3x4 r0 = float3x4(340.5271f, 702.042f, -72.85132f, 455.570984f, -168.476929f, 402.509827f, 495.94873f, 471.8601f, -86.3353f, -178.671661f, 692.1253f, 753.097961f); + TestUtils.AreEqual(a0 - b0, r0); + + float3x4 a1 = float3x4(-246.287262f, 246.350708f, -121.427368f, -122.718414f, -122.938721f, 360.15094f, 342.874573f, 18.92981f, 164.602356f, 97.0437f, 485.914978f, -205.75766f); + float b1 = (21.6052856f); + float3x4 r1 = float3x4(-267.892548f, 224.745422f, -143.032654f, -144.3237f, -144.544f, 338.545654f, 321.2693f, -2.675476f, 142.99707f, 75.4384155f, 464.3097f, -227.362946f); + TestUtils.AreEqual(a1 - b1, r1); + + float3x4 a2 = float3x4(253.443237f, 187.998413f, -450.820282f, -248.073364f, -26.9960632f, 441.5526f, 449.910583f, 354.886047f, 98.82147f, -189.193237f, 269.074829f, -59.11856f); + float b2 = (-121.163055f); + float3x4 r2 = float3x4(374.6063f, 309.161469f, -329.657227f, -126.910309f, 94.16699f, 562.7157f, 571.0736f, 476.0491f, 219.984528f, -68.03018f, 390.237885f, 62.0444946f); + TestUtils.AreEqual(a2 - b2, r2); + + float3x4 a3 = float3x4(363.458374f, -46.1552124f, 109.913269f, 182.646912f, 229.015747f, -144.92868f, 469.2506f, -150.49231f, -192.3125f, -224.356842f, 285.876831f, -63.0108337f); + float b3 = (-73.7792053f); + float3x4 r3 = float3x4(437.237579f, 27.6239929f, 183.692474f, 256.426117f, 302.794952f, -71.1494751f, 543.0298f, -76.7131042f, -118.533295f, -150.577637f, 359.656036f, 10.7683716f); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void float3x4_operator_sub_scalar_wide() + { + float a0 = (294.5865f); + float3x4 b0 = float3x4(452.352539f, 256.9898f, -275.159882f, -89.02753f, 488.2284f, -333.2173f, -64.233f, -66.04172f, 341.204956f, -385.775055f, 75.3947754f, 354.943726f); + float3x4 r0 = float3x4(-157.766052f, 37.59668f, 569.746338f, 383.614f, -193.6419f, 627.8038f, 358.8195f, 360.6282f, -46.61847f, 680.3616f, 219.191711f, -60.35724f); + TestUtils.AreEqual(a0 - b0, r0); + + float a1 = (169.131409f); + float3x4 b1 = float3x4(88.21661f, 1.73498535f, 122.538025f, -264.945f, -50.83719f, -347.65033f, 4.06555176f, -79.09543f, 354.358337f, -292.4925f, -53.2089844f, -246.3476f); + float3x4 r1 = float3x4(80.9147949f, 167.396423f, 46.5933838f, 434.076416f, 219.9686f, 516.781738f, 165.065857f, 248.226837f, -185.226929f, 461.6239f, 222.3404f, 415.479f); + TestUtils.AreEqual(a1 - b1, r1); + + float a2 = (299.203369f); + float3x4 b2 = float3x4(432.1847f, -163.88f, 176.742554f, -104.98584f, -445.797638f, -28.8731689f, -169.588226f, -270.359253f, 68.04761f, -65.53128f, 440.380371f, 427.360657f); + float3x4 r2 = float3x4(-132.981323f, 463.083374f, 122.460815f, 404.1892f, 745.001f, 328.076538f, 468.7916f, 569.5626f, 231.155762f, 364.73465f, -141.177f, -128.157288f); + TestUtils.AreEqual(a2 - b2, r2); + + float a3 = (-81.47296f); + float3x4 b3 = float3x4(41.7131958f, 175.8208f, -214.949158f, -163.446869f, -218.829132f, 389.116882f, -74.10977f, -448.137238f, -410.375f, 363.211f, -263.5354f, 473.546021f); + float3x4 r3 = float3x4(-123.186157f, -257.293762f, 133.4762f, 81.97391f, 137.356171f, -470.589844f, -7.3631897f, 366.664276f, 328.902039f, -444.68396f, 182.062439f, -555.019f); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void float3x4_operator_mul_wide_wide() + { + float3x4 a0 = float3x4(-394.780548f, -412.3722f, -25.8745728f, -241.045959f, -93.6759949f, 244.159973f, 494.688477f, 53.5379639f, -239.4964f, 236.675842f, -211.8562f, -216.654816f); + float3x4 b0 = float3x4(-149.763977f, -345.04538f, -284.334045f, 267.979248f, -326.6485f, -150.689667f, 207.732422f, 366.192871f, 358.880737f, 214.853577f, 253.422791f, -307.7138f); + float3x4 r0 = float3x4(59123.9063f, 142287.125f, 7357.022f, -64595.3164f, 30599.123f, -36792.3867f, 102762.836f, 19605.22f, -85950.64f, 50850.6523f, -53689.19f, 66667.68f); + TestUtils.AreEqual(a0 * b0, r0); + + float3x4 a1 = float3x4(467.9583f, -178.021912f, -386.394257f, -422.4354f, 464.589539f, -251.315674f, -104.97879f, -66.93417f, -39.829895f, 401.5656f, 434.146179f, -336.4542f); + float3x4 b1 = float3x4(184.47113f, 426.436462f, -144.281433f, 459.4796f, -358.313354f, -201.3652f, 254.909973f, 168.520935f, 8.794556f, -194.846466f, -405.362671f, -180.732178f); + float3x4 r1 = float3x4(86324.8f, -75915.03f, 55749.5156f, -194100.453f, -166468.641f, 50606.23f, -26760.14f, -11279.81f, -350.286224f, -78243.64f, -175986.656f, 60808.0977f); + TestUtils.AreEqual(a1 * b1, r1); + + float3x4 a2 = float3x4(-83.11417f, 329.960266f, -316.972168f, 474.937927f, -445.109161f, -301.003723f, 405.687866f, 142.373474f, -416.213074f, -103.279205f, -52.9519043f, -40.82834f); + float3x4 b2 = float3x4(-189.746918f, -35.5184631f, 120.31665f, -136.203339f, 407.3416f, 301.6543f, -155.482391f, -461.394562f, 296.680359f, 341.001831f, -257.0968f, 17.5936279f); + float3x4 r2 = float3x4(15770.6572f, -11719.6816f, -38137.03f, -64688.1328f, -181311.484f, -90799.07f, -63077.32f, -65690.34f, -123482.242f, -35218.4f, 13613.7656f, -718.3186f); + TestUtils.AreEqual(a2 * b2, r2); + + float3x4 a3 = float3x4(-86.18509f, -257.316528f, 363.857239f, -229.860016f, 8.925293f, -2.44940186f, 37.7583f, 264.451782f, -321.251282f, -268.256042f, 43.9136963f, 274.833069f); + float3x4 b3 = float3x4(-443.845123f, 291.349243f, 490.19165f, 361.320984f, -509.289734f, 315.352661f, 125.083069f, -167.727112f, 396.8877f, -0.320404053f, 143.4115f, -396.3475f); + float3x4 r3 = float3x4(38252.832f, -74968.98f, 178359.781f, -83053.25f, -4545.56f, -772.4254f, 4722.92432f, -44355.7344f, -127500.68f, 85.950325f, 6297.729f, -108929.4f); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void float3x4_operator_mul_wide_scalar() + { + float3x4 a0 = float3x4(328.203f, -290.10672f, 236.995728f, 120.481384f, 357.903137f, 134.867249f, -477.3105f, -438.272919f, -46.729187f, -238.405f, 422.08252f, -48.83484f); + float b0 = (192.211182f); + float3x4 r0 = float3x4(63084.2852f, -55761.7539f, 45553.23f, 23157.87f, 68792.9844f, 25922.9941f, -91744.4141f, -84240.95f, -8981.872f, -45824.1055f, 81128.98f, -9386.603f); + TestUtils.AreEqual(a0 * b0, r0); + + float3x4 a1 = float3x4(355.30835f, -196.995819f, 98.23602f, -325.552155f, 53.9373169f, -87.45099f, -130.474121f, -222.594574f, 126.015015f, 293.361084f, 174.381958f, -327.120056f); + float b1 = (119.356628f); + float3x4 r1 = float3x4(42408.4063f, -23512.7559f, 11725.12f, -38856.81f, 6437.77637f, -10437.8555f, -15572.9512f, -26568.1387f, 15040.7275f, 35014.59f, 20813.6426f, -39043.9453f); + TestUtils.AreEqual(a1 * b1, r1); + + float3x4 a2 = float3x4(56.62915f, -475.6087f, -452.6919f, -49.22061f, 141.600952f, 431.5857f, 180.355164f, -40.9234619f, 279.543518f, 120.014465f, -59.508667f, 319.489868f); + float b2 = (257.541565f); + float3x4 r2 = float3x4(14584.36f, -122489.008f, -116586.977f, -12676.3535f, 36468.13f, 111151.258f, 46448.95f, -10539.4922f, 71994.08f, 30908.7129f, -15325.9551f, 82281.92f); + TestUtils.AreEqual(a2 * b2, r2); + + float3x4 a3 = float3x4(-403.523163f, -335.3932f, -364.242554f, 150.686157f, 391.87207f, 179.312439f, 354.5298f, 497.7614f, 418.436584f, -413.333374f, -329.520721f, -322.703064f); + float b3 = (-408.1931f); + float3x4 r3 = float3x4(164715.375f, 136905.188f, 148681.3f, -61509.05f, -159959.484f, -73194.1f, -144716.625f, -203182.781f, -170802.938f, 168719.844f, 134508.1f, 131725.172f); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void float3x4_operator_mul_scalar_wide() + { + float a0 = (-464.5347f); + float3x4 b0 = float3x4(329.360962f, -198.683441f, 184.0794f, 256.016174f, 266.226318f, -97.8947449f, 159.748108f, -351.8222f, 491.801575f, 49.90204f, 424.4626f, 160.1181f); + float3x4 r0 = float3x4(-152999.6f, 92295.35f, -85511.27f, -118928.4f, -123671.359f, 45475.5039f, -74208.54f, 163433.625f, -228458.891f, -23181.2285f, -197177.6f, -74380.4141f); + TestUtils.AreEqual(a0 * b0, r0); + + float a1 = (-395.9921f); + float3x4 b1 = float3x4(125.20166f, -265.0158f, 314.656128f, -292.712036f, -37.72989f, 165.362244f, 356.517761f, -188.813324f, 504.9157f, 40.5721436f, -206.775116f, -61.60269f); + float3x4 r1 = float3x4(-49578.8672f, 104944.164f, -124601.336f, 115911.656f, 14940.7373f, -65482.14f, -141178.219f, 74768.5859f, -199942.625f, -16066.248f, 81881.31f, 24394.18f); + TestUtils.AreEqual(a1 * b1, r1); + + float a2 = (118.971619f); + float3x4 b2 = float3x4(53.7483521f, -198.6694f, 96.236084f, -20.2418823f, -31.1239624f, 38.89044f, -13.1333008f, 507.871277f, 95.0179443f, 340.7486f, 438.986877f, -227.165955f); + float3x4 r2 = float3x4(6394.52832f, -23636.02f, 11449.3623f, -2408.20947f, -3702.86816f, 4626.859f, -1562.49011f, 60422.27f, 11304.4385f, 40539.41f, 52226.98f, -27026.3f); + TestUtils.AreEqual(a2 * b2, r2); + + float a3 = (452.573f); + float3x4 b3 = float3x4(144.014954f, -31.58603f, 42.29773f, -466.027161f, 287.453979f, 328.9969f, -164.243134f, -511.2683f, -9.594299f, 431.190125f, -132.141815f, -87.502655f); + float3x4 r3 = float3x4(65177.28f, -14294.9834f, 19142.81f, -210911.313f, 130093.906f, 148895.109f, -74332.01f, -231386.234f, -4342.12061f, 195145f, -59803.8164f, -39601.34f); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void float3x4_operator_div_wide_wide() + { + float3x4 a0 = float3x4(246.265747f, -269.85614f, -451.619537f, -7.388489f, -308.205566f, -373.3948f, 360.41864f, 25.8097534f, -274.050476f, 127.538574f, -447.671753f, -137.458588f); + float3x4 b0 = float3x4(172.119812f, -77.14111f, -325.8354f, -450.608673f, -261.262146f, -122.449493f, -93.2107849f, -442.005219f, 484.362732f, -390.7818f, 402.02533f, 316.6507f); + float3x4 r0 = float3x4(1.43078089f, 3.49821424f, 1.38603592f, 0.0163966864f, 1.17967939f, 3.04937816f, -3.86670542f, -0.0583924167f, -0.565795958f, -0.326367736f, -1.11354113f, -0.434101641f); + TestUtils.AreEqual(a0 / b0, r0); + + float3x4 a1 = float3x4(-136.133179f, 12.4376221f, 228.513f, 356.972351f, -24.7620544f, 411.6684f, -204.078888f, 11.3654175f, 82.15228f, 37.3894653f, 394.2658f, -429.912781f); + float3x4 b1 = float3x4(397.154419f, -303.2622f, -118.591248f, -81.6503f, -84.34686f, -488.419434f, 404.160522f, -136.728851f, -19.8327026f, -102.607239f, 166.116028f, -112.840179f); + float3x4 r1 = float3x4(-0.3427714f, -0.0410127677f, -1.926896f, -4.37196636f, 0.2935741f, -0.8428584f, -0.504945159f, -0.0831237659f, -4.14226341f, -0.364394039f, 2.37343621f, 3.80992651f); + TestUtils.AreEqual(a1 / b1, r1); + + float3x4 a2 = float3x4(315.37384f, -122.665985f, 447.526123f, -210.4815f, -202.42157f, -453.007935f, 173.72699f, -167.121674f, -106.234528f, 414.312561f, 7.12084961f, 274.073669f); + float3x4 b2 = float3x4(-218.209686f, 458.517517f, 119.587219f, 356.240417f, -74.50687f, -336.773926f, -216.126312f, 322.385681f, 220.2555f, -67.2345f, 2.229187f, -166.210968f); + float3x4 r2 = float3x4(-1.44527888f, -0.267527372f, 3.742257f, -0.5908412f, 2.71681762f, 1.34513962f, -0.803821564f, -0.5183905f, -0.482324064f, -6.16220236f, 3.19437075f, -1.64895058f); + TestUtils.AreEqual(a2 / b2, r2); + + float3x4 a3 = float3x4(-39.0026855f, 39.065918f, -147.364166f, 434.3849f, 315.0672f, -106.636017f, -507.925262f, -17.1764526f, -385.865356f, 226.002136f, 345.168457f, 201.544189f); + float3x4 b3 = float3x4(-247.732574f, 84.16095f, 477.148621f, 209.7508f, -386.7222f, -65.27734f, 410.454834f, 367.6507f, -456.572021f, 382.427979f, -163.860687f, -213.721375f); + float3x4 r3 = float3x4(0.157438666f, 0.464181036f, -0.3088433f, 2.07095718f, -0.814712f, 1.6335839f, -1.23746932f, -0.0467194878f, 0.8451358f, 0.5909665f, -2.106475f, -0.9430231f); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void float3x4_operator_div_wide_scalar() + { + float3x4 a0 = float3x4(-244.517456f, 69.1123047f, -333.023132f, 257.396851f, 403.2456f, 154.34436f, 131.526611f, -261.8864f, -348.9238f, -275.5387f, 210.557922f, 287.6424f); + float b0 = (-60.0243835f); + float3x4 r0 = float3x4(4.07363558f, -1.15140378f, 5.548131f, -4.28820467f, -6.71803f, -2.571361f, -2.19121981f, 4.36300039f, 5.813034f, 4.590446f, -3.507873f, -4.79209232f); + TestUtils.AreEqual(a0 / b0, r0); + + float3x4 a1 = float3x4(504.372253f, -26.6315918f, -253.236664f, 272.895142f, 178.096191f, -460.87558f, -502.646027f, -84.3248f, -174.690338f, 83.7963257f, 197.042053f, 317.168274f); + float b1 = (491.7871f); + float3x4 r1 = float3x4(1.02559066f, -0.0541526824f, -0.5149315f, 0.554905057f, 0.362140834f, -0.9371445f, -1.02208054f, -0.171466067f, -0.355215371f, 0.17039147f, 0.400665343f, 0.64493f); + TestUtils.AreEqual(a1 / b1, r1); + + float3x4 a2 = float3x4(403.387146f, 60.6068726f, -413.5605f, 207.341f, 358.562134f, 20.7490845f, -68.57712f, 310.702454f, 417.4049f, 147.866211f, 506.658875f, -435.778564f); + float b2 = (81.6464844f); + float3x4 r2 = float3x4(4.940655f, 0.742308438f, -5.06525755f, 2.539497f, 4.391642f, 0.254133224f, -0.8399274f, 3.80546021f, 5.112344f, 1.81105423f, 6.20551968f, -5.33738327f); + TestUtils.AreEqual(a2 / b2, r2); + + float3x4 a3 = float3x4(210.672913f, -19.1908569f, 416.511719f, 427.0136f, 417.1994f, -150.911835f, 488.985535f, -294.738739f, -357.298035f, 288.771667f, 453.429138f, 70.72443f); + float b3 = (-218.781464f); + float3x4 r3 = float3x4(-0.962937653f, 0.08771701f, -1.90377975f, -1.95178151f, -1.90692294f, 0.689783454f, -2.235041f, 1.34718335f, 1.63312757f, -1.31990921f, -2.07252073f, -0.323265165f); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void float3x4_operator_div_scalar_wide() + { + float a0 = (41.73767f); + float3x4 b0 = float3x4(-422.676147f, 248.129639f, 449.391357f, 245.858154f, -326.6206f, 163.715088f, 333.6645f, 38.2910767f, -472.979767f, 192.230164f, -200.296875f, -490.181519f); + float3x4 r0 = float3x4(-0.09874622f, 0.168209136f, 0.0928759947f, 0.169763222f, -0.1277864f, 0.2549409f, 0.125088736f, 1.0900104f, -0.0882440954f, 0.217123419f, -0.208379045f, -0.08514738f); + TestUtils.AreEqual(a0 / b0, r0); + + float a1 = (-211.10257f); + float3x4 b1 = float3x4(-322.852356f, -137.985291f, 84.32971f, 355.063477f, 276.427246f, -382.988037f, -488.647156f, 344.846f, 168.85498f, -44.1955872f, 420.55072f, -175.6152f); + float3x4 r1 = float3x4(0.6538672f, 1.52989185f, -2.5033f, -0.5945488f, -0.7636822f, 0.55119884f, 0.432014316f, -0.612164736f, -1.25020039f, 4.776553f, -0.501966953f, 1.20207453f); + TestUtils.AreEqual(a1 / b1, r1); + + float a2 = (-9.220581f); + float3x4 b2 = float3x4(-344.194275f, -449.0715f, 117.704895f, -337.0274f, 239.393433f, -389.355164f, 242.716064f, 496.2765f, 91.74579f, -490.492126f, 485.755432f, -317.572266f); + float3x4 r2 = float3x4(0.0267888848f, 0.0205325447f, -0.0783364251f, 0.02735855f, -0.038516432f, 0.0236816723f, -0.0379891656f, -0.018579524f, -0.100501411f, 0.0187986325f, -0.018981941f, 0.0290345922f); + TestUtils.AreEqual(a2 / b2, r2); + + float a3 = (-451.6248f); + float3x4 b3 = float3x4(394.018372f, -262.271423f, -314.246765f, 359.9159f, -101.615356f, 359.517273f, -424.9799f, -192.719574f, -169.749725f, -244.790009f, -187.14386f, -207.713654f); + float3x4 r3 = float3x4(-1.14620233f, 1.72197485f, 1.43716609f, -1.2548064f, 4.444454f, -1.25619769f, 1.06269681f, 2.3434298f, 2.66053319f, 1.84494781f, 2.41324925f, 2.17426634f); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void float3x4_operator_mod_wide_wide() + { + float3x4 a0 = float3x4(-442.309875f, 368.5005f, -1.09390259f, -364.673828f, -197.343933f, -34.0349121f, -101.348572f, 208.318542f, -140.770325f, 183.44696f, -463.368378f, 83.83911f); + float3x4 b0 = float3x4(-43.2450562f, -144.195862f, -62.6404724f, -336.828247f, -154.61026f, -154.029358f, 487.0462f, -469.8291f, -145.203766f, -203.384f, -22.52008f, 224.69f); + float3x4 r0 = float3x4(-9.859314f, 80.1087646f, -1.09390259f, -27.8455811f, -42.7336731f, -34.0349121f, -101.348572f, 208.318542f, -140.770325f, 183.44696f, -12.9667664f, 83.83911f); + TestUtils.AreEqual(a0 % b0, r0); + + float3x4 a1 = float3x4(-64.71405f, 295.066833f, 212.25708f, 349.6283f, 119.875916f, -37.8058167f, 142.41156f, 332.244263f, -464.194275f, -296.147827f, 225.175354f, -212.060272f); + float3x4 b1 = float3x4(-435.62674f, 12.0955811f, 40.3787842f, 345.784851f, -433.471252f, -355.649963f, 4.015442f, 66.65979f, -221.853638f, -355.056763f, 357.935974f, 71.3753052f); + float3x4 r1 = float3x4(-64.71405f, 4.772888f, 10.3631592f, 3.84344482f, 119.875916f, -37.8058167f, 1.87109375f, 65.6051f, -20.487f, -296.147827f, 225.175354f, -69.30966f); + TestUtils.AreEqual(a1 % b1, r1); + + float3x4 a2 = float3x4(156.985718f, 507.6183f, 270.830444f, 337.7343f, 384.915833f, 432.5182f, 154.292725f, -37.0853271f, 7.76147461f, 238.094727f, 12.8520508f, -100.240662f); + float3x4 b2 = float3x4(-131.4183f, -473.9876f, 76.2178345f, 92.2102051f, -368.189575f, -77.46716f, 135.230591f, 274.277283f, 132.180237f, -179.877319f, 51.9685669f, 367.214233f); + float3x4 r2 = float3x4(25.5674133f, 33.6306763f, 42.17694f, 61.1037f, 16.7262573f, 45.182373f, 19.0621338f, -37.0853271f, 7.76147461f, 58.2174072f, 12.8520508f, -100.240662f); + TestUtils.AreEqual(a2 % b2, r2); + + float3x4 a3 = float3x4(34.552002f, -251.189758f, -238.372253f, 511.514648f, 288.433533f, 367.109863f, 44.760437f, -437.0456f, -259.2056f, -228.565826f, 83.49725f, 424.367065f); + float3x4 b3 = float3x4(-395.2128f, 270.485229f, -73.104126f, 89.3499756f, -288.308533f, -168.324646f, 311.6159f, -468.341949f, 381.983948f, -1.39886475f, -102.288605f, -87.4248657f); + float3x4 r3 = float3x4(34.552002f, -251.189758f, -19.0598755f, 64.76477f, 0.125f, 30.4605713f, 44.760437f, -437.0456f, -259.2056f, -0.5508728f, 83.49725f, 74.6676f); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void float3x4_operator_mod_wide_scalar() + { + float3x4 a0 = float3x4(-433.417f, -5.51412964f, 393.3944f, 299.41156f, -120.80603f, -502.939026f, -450.807678f, 186.094788f, -84.47363f, -318.7815f, 433.4547f, -54.60019f); + float b0 = (-90.49924f); + float3x4 r0 = float3x4(-71.4200439f, -5.51412964f, 31.39746f, 27.9138489f, -30.3067932f, -50.44284f, -88.81073f, 5.09631348f, -84.47363f, -47.283783f, 71.45776f, -54.60019f); + TestUtils.AreEqual(a0 % b0, r0); + + float3x4 a1 = float3x4(-172.338867f, 222.361877f, 5.79638672f, 254.5108f, -433.0937f, -203.082611f, -75.3564148f, 252.289124f, -69.4039f, 5.337219f, -279.060425f, 483.5506f); + float b1 = (-429.714661f); + float3x4 r1 = float3x4(-172.338867f, 222.361877f, 5.79638672f, 254.5108f, -3.37902832f, -203.082611f, -75.3564148f, 252.289124f, -69.4039f, 5.337219f, -279.060425f, 53.8359375f); + TestUtils.AreEqual(a1 % b1, r1); + + float3x4 a2 = float3x4(-331.993347f, 67.8396f, -124.720764f, 38.1759033f, 271.287f, 405.773621f, -194.761444f, 235.724f, 465.984863f, -304.153168f, -295.520264f, 313.7224f); + float b2 = (336f); + float3x4 r2 = float3x4(-331.993347f, 67.8396f, -124.720764f, 38.1759033f, 271.287f, 69.77362f, -194.761444f, 235.724f, 129.984863f, -304.153168f, -295.520264f, 313.7224f); + TestUtils.AreEqual(a2 % b2, r2); + + float3x4 a3 = float3x4(-232.202637f, 244.096619f, 162.524231f, 390.016174f, 90.00452f, 155.933533f, 217.3377f, -306.819275f, 149.09375f, 503.828369f, -194.130127f, 214.863037f); + float b3 = (191.619751f); + float3x4 r3 = float3x4(-40.5828857f, 52.4768677f, 162.524231f, 6.77667236f, 90.00452f, 155.933533f, 25.7179565f, -115.199524f, 149.09375f, 120.588867f, -2.510376f, 23.2432861f); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void float3x4_operator_mod_scalar_wide() + { + float a0 = (-396.4224f); + float3x4 b0 = float3x4(-159.140259f, 230.17334f, 14.7793579f, -303.1565f, 399.635f, 206.6947f, 397.0448f, -393.890656f, -372.067078f, 201.012268f, -95.566864f, -258.951477f); + float3x4 r0 = float3x4(-78.14188f, -166.249054f, -12.1590881f, -93.2659f, -396.4224f, -189.727692f, -396.4224f, -2.53173828f, -24.3553162f, -195.410126f, -14.1549377f, -137.470917f); + TestUtils.AreEqual(a0 % b0, r0); + + float a1 = (106.983582f); + float3x4 b1 = float3x4(469.323547f, -34.80899f, 184.836548f, 374.79425f, -131.872711f, -120.092865f, 4.506653f, -111.401947f, 391.54248f, -218.668884f, 196.377441f, -511.032623f); + float3x4 r1 = float3x4(106.983582f, 2.55661f, 106.983582f, 106.983582f, 106.983582f, 106.983582f, 3.33056641f, 106.983582f, 106.983582f, 106.983582f, 106.983582f, 106.983582f); + TestUtils.AreEqual(a1 % b1, r1); + + float a2 = (499.9535f); + float3x4 b2 = float3x4(-433.523071f, -163.866852f, 177.004028f, 110.650146f, 17.68457f, -95.85297f, -432.440979f, 192.692078f, -268.131775f, 271.075134f, 423.7027f, -413.233246f); + float3x4 r2 = float3x4(66.43042f, 8.352936f, 145.945435f, 57.3529053f, 4.78552246f, 20.68866f, 67.51251f, 114.569336f, 231.821716f, 228.878357f, 76.25079f, 86.7202454f); + TestUtils.AreEqual(a2 % b2, r2); + + float a3 = (127.956238f); + float3x4 b3 = float3x4(-298.204681f, -352.4181f, -175.607727f, -152.899292f, 34.6194458f, -380.802948f, 0.352050781f, 485.900879f, 266.150818f, 483.82074f, 11.777832f, 274.135864f); + float3x4 r3 = float3x4(127.956238f, 127.956238f, 127.956238f, 127.956238f, 24.0979f, 127.956238f, 0.1618042f, 127.956238f, 127.956238f, 127.956238f, 10.1779175f, 127.956238f); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void float3x4_operator_plus() + { + float3x4 a0 = float3x4(271.670837f, -79.08023f, -330.985046f, 31.824707f, 315.449524f, 319.222168f, 190.324646f, -350.3086f, -320.518463f, 102.054382f, -107.00351f, -428.7762f); + float3x4 r0 = float3x4(271.670837f, -79.08023f, -330.985046f, 31.824707f, 315.449524f, 319.222168f, 190.324646f, -350.3086f, -320.518463f, 102.054382f, -107.00351f, -428.7762f); + TestUtils.AreEqual(+a0, r0); + + float3x4 a1 = float3x4(377.230164f, 34.28363f, 258.330383f, 465.355957f, 309.59314f, -316.937134f, -230.052673f, 301.7851f, 2.58575439f, 350.2464f, 60.8197632f, -472.4421f); + float3x4 r1 = float3x4(377.230164f, 34.28363f, 258.330383f, 465.355957f, 309.59314f, -316.937134f, -230.052673f, 301.7851f, 2.58575439f, 350.2464f, 60.8197632f, -472.4421f); + TestUtils.AreEqual(+a1, r1); + + float3x4 a2 = float3x4(-364.802551f, 473.803162f, 285.80896f, -273.2638f, -206.686371f, -113.362305f, -351.754883f, -116.536224f, -496.053284f, -330.005341f, -379.674255f, -339.673218f); + float3x4 r2 = float3x4(-364.802551f, 473.803162f, 285.80896f, -273.2638f, -206.686371f, -113.362305f, -351.754883f, -116.536224f, -496.053284f, -330.005341f, -379.674255f, -339.673218f); + TestUtils.AreEqual(+a2, r2); + + float3x4 a3 = float3x4(-29.0835266f, 485.926636f, 183.724854f, -258.392456f, 486.4469f, 245.9909f, 231.854675f, -216.48996f, -163.009186f, 175.325439f, 404.378f, 87.64923f); + float3x4 r3 = float3x4(-29.0835266f, 485.926636f, 183.724854f, -258.392456f, 486.4469f, 245.9909f, 231.854675f, -216.48996f, -163.009186f, 175.325439f, 404.378f, 87.64923f); + TestUtils.AreEqual(+a3, r3); + } + + [TestCompiler] + public static void float3x4_operator_neg() + { + float3x4 a0 = float3x4(420.227173f, -196.2575f, -335.426819f, 509.04364f, -33.0144043f, -498.575317f, -495.837952f, -270.859467f, 19.68689f, 268.2367f, -180.600525f, 223.381287f); + float3x4 r0 = float3x4(-420.227173f, 196.2575f, 335.426819f, -509.04364f, 33.0144043f, 498.575317f, 495.837952f, 270.859467f, -19.68689f, -268.2367f, 180.600525f, -223.381287f); + TestUtils.AreEqual(-a0, r0); + + float3x4 a1 = float3x4(-410.392059f, -349.149475f, -110.9393f, -238.2196f, 292.543518f, 469.2926f, 48.29071f, 88.7237549f, 66.1485f, 55.7080078f, 464.541382f, 499.2428f); + float3x4 r1 = float3x4(410.392059f, 349.149475f, 110.9393f, 238.2196f, -292.543518f, -469.2926f, -48.29071f, -88.7237549f, -66.1485f, -55.7080078f, -464.541382f, -499.2428f); + TestUtils.AreEqual(-a1, r1); + + float3x4 a2 = float3x4(175.015015f, -306.1656f, 149.660034f, 320.391724f, -359.8338f, 22.0384521f, -159.55426f, 419.822449f, 303.323425f, 363.716736f, 280.887878f, -270.6513f); + float3x4 r2 = float3x4(-175.015015f, 306.1656f, -149.660034f, -320.391724f, 359.8338f, -22.0384521f, 159.55426f, -419.822449f, -303.323425f, -363.716736f, -280.887878f, 270.6513f); + TestUtils.AreEqual(-a2, r2); + + float3x4 a3 = float3x4(-201.615753f, 95.48926f, 191.070251f, 371.973572f, 296.512573f, -164.169922f, -347.4581f, -237.404968f, -228.701965f, 61.0822754f, 128.331543f, 331.2558f); + float3x4 r3 = float3x4(201.615753f, -95.48926f, -191.070251f, -371.973572f, -296.512573f, 164.169922f, 347.4581f, 237.404968f, 228.701965f, -61.0822754f, -128.331543f, -331.2558f); + TestUtils.AreEqual(-a3, r3); + } + + [TestCompiler] + public static void float3x4_operator_prefix_inc() + { + float3x4 a0 = float3x4(-99.79556f, 458.741821f, 96.1790161f, -48.55246f, -315.728973f, -299.230164f, -323.614868f, -456.8903f, -76.50766f, -305.584778f, 64.0965f, 148.679321f); + float3x4 r0 = float3x4(-98.79556f, 459.741821f, 97.1790161f, -47.55246f, -314.728973f, -298.230164f, -322.614868f, -455.8903f, -75.50766f, -304.584778f, 65.0965f, 149.679321f); + TestUtils.AreEqual(++a0, r0); + + float3x4 a1 = float3x4(363.2849f, -326.8778f, -179.894653f, 339.8766f, -38.41043f, -153.373688f, 261.625549f, 155.030823f, -396.650238f, 301.3058f, -221.355408f, -429.698151f); + float3x4 r1 = float3x4(364.2849f, -325.8778f, -178.894653f, 340.8766f, -37.41043f, -152.373688f, 262.625549f, 156.030823f, -395.650238f, 302.3058f, -220.355408f, -428.698151f); + TestUtils.AreEqual(++a1, r1); + + float3x4 a2 = float3x4(-271.2893f, -377.5592f, 223.232422f, -71.076355f, -388.2279f, 131.283142f, 22.3049316f, -480.760468f, 200.951782f, 117.9541f, 139.525818f, 335.6897f); + float3x4 r2 = float3x4(-270.2893f, -376.5592f, 224.232422f, -70.076355f, -387.2279f, 132.283142f, 23.3049316f, -479.760468f, 201.951782f, 118.9541f, 140.525818f, 336.6897f); + TestUtils.AreEqual(++a2, r2); + + float3x4 a3 = float3x4(162.6615f, -254.7315f, -89.25604f, 314.36554f, 244.728149f, 34.01062f, -90.44528f, -472.63623f, -34.5667725f, -71.27185f, -396.4901f, -314.987457f); + float3x4 r3 = float3x4(163.6615f, -253.7315f, -88.25604f, 315.36554f, 245.728149f, 35.01062f, -89.44528f, -471.63623f, -33.5667725f, -70.27185f, -395.4901f, -313.987457f); + TestUtils.AreEqual(++a3, r3); + } + + [TestCompiler] + public static void float3x4_operator_postfix_inc() + { + float3x4 a0 = float3x4(322.943542f, 472.0525f, 203.48761f, -49.8545837f, -31.4205322f, 455.3366f, 271.454651f, 55.7368774f, 153.7503f, -174.173f, -427.401062f, 215.110229f); + float3x4 r0 = float3x4(322.943542f, 472.0525f, 203.48761f, -49.8545837f, -31.4205322f, 455.3366f, 271.454651f, 55.7368774f, 153.7503f, -174.173f, -427.401062f, 215.110229f); + TestUtils.AreEqual(a0++, r0); + + float3x4 a1 = float3x4(159.861023f, 241.4649f, 287.220459f, -170.104645f, -270.652466f, -162.86026f, 454.488831f, -449.9273f, 209.522644f, -311.435852f, 69.7314453f, -232.299652f); + float3x4 r1 = float3x4(159.861023f, 241.4649f, 287.220459f, -170.104645f, -270.652466f, -162.86026f, 454.488831f, -449.9273f, 209.522644f, -311.435852f, 69.7314453f, -232.299652f); + TestUtils.AreEqual(a1++, r1); + + float3x4 a2 = float3x4(-341.498535f, 417.7298f, 25.5656738f, -463.725647f, 504.448975f, -310.144958f, -117.398468f, 403.508728f, -111.279541f, 446.607666f, -12.35257f, -232.150116f); + float3x4 r2 = float3x4(-341.498535f, 417.7298f, 25.5656738f, -463.725647f, 504.448975f, -310.144958f, -117.398468f, 403.508728f, -111.279541f, 446.607666f, -12.35257f, -232.150116f); + TestUtils.AreEqual(a2++, r2); + + float3x4 a3 = float3x4(64.57703f, 193.584351f, 382.050354f, -462.064117f, -122.30658f, 428.7763f, 338.97876f, 227.544067f, -169.321228f, -95.7655945f, -169.855347f, 439.3f); + float3x4 r3 = float3x4(64.57703f, 193.584351f, 382.050354f, -462.064117f, -122.30658f, 428.7763f, 338.97876f, 227.544067f, -169.321228f, -95.7655945f, -169.855347f, 439.3f); + TestUtils.AreEqual(a3++, r3); + } + + [TestCompiler] + public static void float3x4_operator_prefix_dec() + { + float3x4 a0 = float3x4(-416.201233f, -96.63788f, -50.14566f, -207.316437f, 439.479065f, -304.400818f, 337.968933f, 246.088989f, 171.964539f, -227.44281f, 298.2848f, 326.5078f); + float3x4 r0 = float3x4(-417.201233f, -97.63788f, -51.14566f, -208.316437f, 438.479065f, -305.400818f, 336.968933f, 245.088989f, 170.964539f, -228.44281f, 297.2848f, 325.5078f); + TestUtils.AreEqual(--a0, r0); + + float3x4 a1 = float3x4(400.7209f, -326.452972f, -24.5845032f, 112.796875f, -341.9763f, -503.27417f, -79.6352539f, -131.00415f, 147.893677f, -15.7086487f, 188.758423f, 307.791931f); + float3x4 r1 = float3x4(399.7209f, -327.452972f, -25.5845032f, 111.796875f, -342.9763f, -504.27417f, -80.6352539f, -132.00415f, 146.893677f, -16.7086487f, 187.758423f, 306.791931f); + TestUtils.AreEqual(--a1, r1); + + float3x4 a2 = float3x4(-406.667725f, -188.69223f, -505.2157f, -372.241943f, -4.031769f, 83.76776f, -30.6314087f, -436.906555f, -51.668396f, 345.021545f, 4.73535156f, -68.65332f); + float3x4 r2 = float3x4(-407.667725f, -189.69223f, -506.2157f, -373.241943f, -5.031769f, 82.76776f, -31.6314087f, -437.906555f, -52.668396f, 344.021545f, 3.73535156f, -69.65332f); + TestUtils.AreEqual(--a2, r2); + + float3x4 a3 = float3x4(481.4961f, -357.673279f, 153.329651f, -233.624329f, -35.23831f, 340.619629f, 259.928833f, 335.354919f, 85.36487f, -1.39398193f, -407.4104f, -145.793427f); + float3x4 r3 = float3x4(480.4961f, -358.673279f, 152.329651f, -234.624329f, -36.23831f, 339.619629f, 258.928833f, 334.354919f, 84.36487f, -2.393982f, -408.4104f, -146.793427f); + TestUtils.AreEqual(--a3, r3); + } + + [TestCompiler] + public static void float3x4_operator_postfix_dec() + { + float3x4 a0 = float3x4(-376.5924f, 16.9697266f, -0.2506714f, -202.323273f, 409.557556f, 47.85663f, -281.1117f, -262.0626f, -182.405731f, 450.1281f, -129.232666f, -332.154968f); + float3x4 r0 = float3x4(-376.5924f, 16.9697266f, -0.2506714f, -202.323273f, 409.557556f, 47.85663f, -281.1117f, -262.0626f, -182.405731f, 450.1281f, -129.232666f, -332.154968f); + TestUtils.AreEqual(a0--, r0); + + float3x4 a1 = float3x4(-261.0089f, -230.227783f, -483.066528f, 378.641235f, 487.344849f, -192.177856f, -357.0542f, -396.302063f, 279.424255f, 115.867737f, -20.8232117f, 323.4054f); + float3x4 r1 = float3x4(-261.0089f, -230.227783f, -483.066528f, 378.641235f, 487.344849f, -192.177856f, -357.0542f, -396.302063f, 279.424255f, 115.867737f, -20.8232117f, 323.4054f); + TestUtils.AreEqual(a1--, r1); + + float3x4 a2 = float3x4(379.156128f, 409.222473f, -428.2567f, -425.2884f, -194.6413f, -258.848358f, -208.985779f, -313.4259f, 178.3125f, 176.78949f, -370.7863f, 64.90387f); + float3x4 r2 = float3x4(379.156128f, 409.222473f, -428.2567f, -425.2884f, -194.6413f, -258.848358f, -208.985779f, -313.4259f, 178.3125f, 176.78949f, -370.7863f, 64.90387f); + TestUtils.AreEqual(a2--, r2); + + float3x4 a3 = float3x4(449.637756f, -203.437408f, 417.137329f, -197.347351f, 446.023376f, 239.974548f, 350.618042f, -264.747253f, 186.44165f, 353.759521f, 68.23419f, -240.610687f); + float3x4 r3 = float3x4(449.637756f, -203.437408f, 417.137329f, -197.347351f, 446.023376f, 239.974548f, 350.618042f, -264.747253f, 186.44165f, 353.759521f, 68.23419f, -240.610687f); + TestUtils.AreEqual(a3--, r3); + } + + + } +} diff --git a/package/Tests/Tests/Shared/TestFloat3x4.gen.cs.meta b/package/Tests/Tests/Shared/TestFloat3x4.gen.cs.meta new file mode 100755 index 000000000..fd7a21fed --- /dev/null +++ b/package/Tests/Tests/Shared/TestFloat3x4.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f8e09d2585c55f8498cd3e3221744e39 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/package/Tests/Tests/Shared/TestFloat4.gen.cs b/package/Tests/Tests/Shared/TestFloat4.gen.cs new file mode 100755 index 000000000..6637e0a07 --- /dev/null +++ b/package/Tests/Tests/Shared/TestFloat4.gen.cs @@ -0,0 +1,1069 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using NUnit.Framework; +using static Unity.Mathematics.math; +using Burst.Compiler.IL.Tests; + +namespace Unity.Mathematics.Tests +{ + [TestFixture] + public class TestFloat4 + { + [TestCompiler] + public static void float4_zero() + { + TestUtils.AreEqual(float4.zero.x, 0.0f); + TestUtils.AreEqual(float4.zero.y, 0.0f); + TestUtils.AreEqual(float4.zero.z, 0.0f); + TestUtils.AreEqual(float4.zero.w, 0.0f); + } + + [TestCompiler] + public static void float4_constructor() + { + float4 a = new float4(1, 2, 3, 4); + TestUtils.AreEqual(a.x, 1); + TestUtils.AreEqual(a.y, 2); + TestUtils.AreEqual(a.z, 3); + TestUtils.AreEqual(a.w, 4); + } + + [TestCompiler] + public static void float4_scalar_constructor() + { + float4 a = new float4(17.0f); + TestUtils.AreEqual(a.x, 17.0f); + TestUtils.AreEqual(a.y, 17.0f); + TestUtils.AreEqual(a.z, 17.0f); + TestUtils.AreEqual(a.w, 17.0f); + } + + [TestCompiler] + public static void float4_static_constructor() + { + float4 a = float4(1, 2, 3, 4); + TestUtils.AreEqual(a.x, 1); + TestUtils.AreEqual(a.y, 2); + TestUtils.AreEqual(a.z, 3); + TestUtils.AreEqual(a.w, 4); + } + + [TestCompiler] + public static void float4_static_scalar_constructor() + { + float4 a = float4(17.0f); + TestUtils.AreEqual(a.x, 17.0f); + TestUtils.AreEqual(a.y, 17.0f); + TestUtils.AreEqual(a.z, 17.0f); + TestUtils.AreEqual(a.w, 17.0f); + } + + [TestCompiler] + public static void float4_operator_equal_wide_wide() + { + float4 a0 = float4(-135.18924f, -49.0941162f, 169.129822f, 240.8053f); + float4 b0 = float4(-220.014648f, 66.98004f, 499.2016f, -371.1131f); + bool4 r0 = bool4(false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + float4 a1 = float4(314.7392f, 442.393f, 177.924438f, 335.5334f); + float4 b1 = float4(208.448669f, 390.8037f, -72.44382f, 362.97644f); + bool4 r1 = bool4(false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + float4 a2 = float4(168.15448f, 350.729553f, 367.178467f, 46.9414673f); + float4 b2 = float4(194.678345f, 471.644836f, -404.044678f, -144.696747f); + bool4 r2 = bool4(false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + float4 a3 = float4(188.76416f, -97.2113953f, -293.320984f, -234.822937f); + float4 b3 = float4(-494.446655f, -252.970367f, 234.417114f, 398.724f); + bool4 r3 = bool4(false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void float4_operator_equal_wide_scalar() + { + float4 a0 = float4(65.6712f, 404.415527f, -269.730164f, 83.6306152f); + float b0 = (-155.815765f); + bool4 r0 = bool4(false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + float4 a1 = float4(152.9945f, 314.671265f, 386.365173f, 290.04895f); + float b1 = (-155.868286f); + bool4 r1 = bool4(false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + float4 a2 = float4(-132.6352f, -69.68326f, -191.190765f, 186.845215f); + float b2 = (-65.66748f); + bool4 r2 = bool4(false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + float4 a3 = float4(-232.895691f, -49.70108f, -300.8819f, 333.396851f); + float b3 = (-319.144043f); + bool4 r3 = bool4(false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void float4_operator_equal_scalar_wide() + { + float a0 = (36.38391f); + float4 b0 = float4(-400.4892f, -71.2868347f, 156.978088f, -225.238739f); + bool4 r0 = bool4(false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + float a1 = (499.141785f); + float4 b1 = float4(-211.979919f, 428.311951f, -489.501343f, -5.691559f); + bool4 r1 = bool4(false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + float a2 = (-30.8659363f); + float4 b2 = float4(-362.9831f, 184.503174f, -160.470612f, 316.668823f); + bool4 r2 = bool4(false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + float a3 = (390.369263f); + float4 b3 = float4(505.1051f, -294.6487f, 443.1991f, 96.5592651f); + bool4 r3 = bool4(false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void float4_operator_not_equal_wide_wide() + { + float4 a0 = float4(279.994141f, -43.34201f, -465.724731f, 317.466553f); + float4 b0 = float4(-460.9121f, -476.009033f, 468.1364f, -341.012543f); + bool4 r0 = bool4(true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + float4 a1 = float4(85.7149658f, 360.8905f, 366.081543f, 154.542847f); + float4 b1 = float4(-62.65805f, -458.801666f, -457.730225f, -59.5232544f); + bool4 r1 = bool4(true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + float4 a2 = float4(332.4262f, 397.11322f, -431.374969f, 489.0108f); + float4 b2 = float4(3.024231f, 155.812744f, -19.8399048f, -6.01693726f); + bool4 r2 = bool4(true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + float4 a3 = float4(398.4336f, -489.817932f, 171.4049f, -67.82968f); + float4 b3 = float4(-406.207916f, -102.420715f, -40.362915f, 452.6754f); + bool4 r3 = bool4(true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void float4_operator_not_equal_wide_scalar() + { + float4 a0 = float4(-155.4411f, -19.4266052f, 174.633057f, 507.920715f); + float b0 = (-393.413544f); + bool4 r0 = bool4(true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + float4 a1 = float4(59.177063f, -58.92328f, -398.176849f, 492.20105f); + float b1 = (171.151489f); + bool4 r1 = bool4(true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + float4 a2 = float4(-165.241516f, -380.243256f, 501.899048f, -134.345459f); + float b2 = (270.341f); + bool4 r2 = bool4(true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + float4 a3 = float4(458.400452f, 161.459961f, 261.514221f, -145.6124f); + float b3 = (46.7709961f); + bool4 r3 = bool4(true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void float4_operator_not_equal_scalar_wide() + { + float a0 = (478.353149f); + float4 b0 = float4(459.553223f, 436.453247f, -488.714172f, 392.767944f); + bool4 r0 = bool4(true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + float a1 = (-266.736633f); + float4 b1 = float4(338.557861f, -338.100128f, -152.314545f, -452.820679f); + bool4 r1 = bool4(true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + float a2 = (209.439331f); + float4 b2 = float4(50.10797f, 372.4344f, -488.0213f, 489.740784f); + bool4 r2 = bool4(true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + float a3 = (270.4001f); + float4 b3 = float4(-472.846771f, -286.850464f, -384.691864f, 443.423523f); + bool4 r3 = bool4(true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void float4_operator_less_wide_wide() + { + float4 a0 = float4(51.7102661f, -313.85556f, 283.047668f, 235.021912f); + float4 b0 = float4(-261.835236f, -19.81073f, -149.25882f, 205.99823f); + bool4 r0 = bool4(false, true, false, false); + TestUtils.AreEqual(a0 < b0, r0); + + float4 a1 = float4(44.07837f, -207.255676f, 3.38293457f, -144.301331f); + float4 b1 = float4(-306.024384f, 102.121704f, 231.906311f, 179.49884f); + bool4 r1 = bool4(false, true, true, true); + TestUtils.AreEqual(a1 < b1, r1); + + float4 a2 = float4(-69.3696f, -135.667969f, -194.787354f, -33.473877f); + float4 b2 = float4(473.2249f, 15.8916626f, 270.049927f, 490.914f); + bool4 r2 = bool4(true, true, true, true); + TestUtils.AreEqual(a2 < b2, r2); + + float4 a3 = float4(-19.67508f, 423.237976f, -71.6983f, -501.886f); + float4 b3 = float4(-185.734131f, 76.4331055f, 97.75232f, 419.300781f); + bool4 r3 = bool4(false, false, true, true); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void float4_operator_less_wide_scalar() + { + float4 a0 = float4(-221.869781f, -121.546478f, -97.5239258f, 479.8811f); + float b0 = (199.0675f); + bool4 r0 = bool4(true, true, true, false); + TestUtils.AreEqual(a0 < b0, r0); + + float4 a1 = float4(67.11902f, 282.9666f, 258.2791f, -111.413147f); + float b1 = (137.3288f); + bool4 r1 = bool4(true, false, false, true); + TestUtils.AreEqual(a1 < b1, r1); + + float4 a2 = float4(-288.081116f, -361.6429f, -68.0881958f, 12.7880249f); + float b2 = (82.6654053f); + bool4 r2 = bool4(true, true, true, true); + TestUtils.AreEqual(a2 < b2, r2); + + float4 a3 = float4(-66.703064f, 25.7277222f, 101.37085f, -330.442657f); + float b3 = (-78.76297f); + bool4 r3 = bool4(false, false, false, true); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void float4_operator_less_scalar_wide() + { + float a0 = (-250.484924f); + float4 b0 = float4(-377.196533f, -505.147552f, 375.9267f, 110.17395f); + bool4 r0 = bool4(false, false, true, true); + TestUtils.AreEqual(a0 < b0, r0); + + float a1 = (-118.097565f); + float4 b1 = float4(-40.4508972f, -299.744324f, 31.4371338f, -458.904541f); + bool4 r1 = bool4(true, false, true, false); + TestUtils.AreEqual(a1 < b1, r1); + + float a2 = (13.6846924f); + float4 b2 = float4(-458.5069f, 248.276489f, 389.231445f, 488.745544f); + bool4 r2 = bool4(false, true, true, true); + TestUtils.AreEqual(a2 < b2, r2); + + float a3 = (-221.637878f); + float4 b3 = float4(-424.2672f, 249.059021f, -22.1361389f, -442.247742f); + bool4 r3 = bool4(false, true, true, false); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void float4_operator_greater_wide_wide() + { + float4 a0 = float4(-229.29068f, 505.536621f, -73.80707f, 100.292053f); + float4 b0 = float4(-445.845032f, -420.035278f, 299.0244f, -13.8809814f); + bool4 r0 = bool4(true, true, false, true); + TestUtils.AreEqual(a0 > b0, r0); + + float4 a1 = float4(-419.214783f, -159.559753f, -396.770355f, 127.037415f); + float4 b1 = float4(151.5617f, -163.50943f, -391.096039f, 479.283752f); + bool4 r1 = bool4(false, true, false, false); + TestUtils.AreEqual(a1 > b1, r1); + + float4 a2 = float4(489.1399f, 51.9188843f, 155.384766f, -135.631653f); + float4 b2 = float4(-77.6748657f, -46.584198f, -415.377f, 71.46698f); + bool4 r2 = bool4(true, true, true, false); + TestUtils.AreEqual(a2 > b2, r2); + + float4 a3 = float4(-425.978149f, -228.430511f, 383.03833f, 136.533569f); + float4 b3 = float4(-206.061035f, 360.8363f, 236.968811f, 14.550354f); + bool4 r3 = bool4(false, false, true, true); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void float4_operator_greater_wide_scalar() + { + float4 a0 = float4(11.156311f, -411.023224f, 385.885559f, -485.103058f); + float b0 = (-302.816956f); + bool4 r0 = bool4(true, false, true, false); + TestUtils.AreEqual(a0 > b0, r0); + + float4 a1 = float4(-491.180023f, 173.575073f, 69.26929f, 501.306824f); + float b1 = (405.175354f); + bool4 r1 = bool4(false, false, false, true); + TestUtils.AreEqual(a1 > b1, r1); + + float4 a2 = float4(-367.027771f, -489.090576f, -172.518158f, -18.1496277f); + float b2 = (-86.12451f); + bool4 r2 = bool4(false, false, false, true); + TestUtils.AreEqual(a2 > b2, r2); + + float4 a3 = float4(-236.414948f, -27.2391357f, 471.779358f, 240.164551f); + float b3 = (-238.8945f); + bool4 r3 = bool4(true, true, true, true); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void float4_operator_greater_scalar_wide() + { + float a0 = (453.546082f); + float4 b0 = float4(-226.2044f, -423.465f, 409.405518f, 453.877075f); + bool4 r0 = bool4(true, true, true, false); + TestUtils.AreEqual(a0 > b0, r0); + + float a1 = (87.47571f); + float4 b1 = float4(113.795593f, 176.409241f, -140.440033f, -182.48288f); + bool4 r1 = bool4(false, false, true, true); + TestUtils.AreEqual(a1 > b1, r1); + + float a2 = (-158.2933f); + float4 b2 = float4(-162.685333f, -193.328674f, 230.181274f, -102.58783f); + bool4 r2 = bool4(true, true, false, false); + TestUtils.AreEqual(a2 > b2, r2); + + float a3 = (392.520569f); + float4 b3 = float4(-177.478668f, -10.2950134f, -24.04895f, 172.448669f); + bool4 r3 = bool4(true, true, true, true); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void float4_operator_less_equal_wide_wide() + { + float4 a0 = float4(240.090515f, 462.213135f, 293.08252f, -427.870667f); + float4 b0 = float4(-81.20383f, 493.637451f, -411.4721f, 99.16443f); + bool4 r0 = bool4(false, true, false, true); + TestUtils.AreEqual(a0 <= b0, r0); + + float4 a1 = float4(-405.5227f, 204.591919f, 294.6701f, -327.564453f); + float4 b1 = float4(-295.6677f, -480.462555f, 74.41406f, 260.916138f); + bool4 r1 = bool4(true, false, false, true); + TestUtils.AreEqual(a1 <= b1, r1); + + float4 a2 = float4(-456.12326f, 282.30127f, 421.881165f, -311.71283f); + float4 b2 = float4(306.173279f, 139.564819f, -505.752472f, -489.6268f); + bool4 r2 = bool4(true, false, false, false); + TestUtils.AreEqual(a2 <= b2, r2); + + float4 a3 = float4(84.5675049f, 447.244629f, -154.494354f, -424.364746f); + float4 b3 = float4(-280.0326f, 303.1599f, 511.1902f, -104.659729f); + bool4 r3 = bool4(false, false, true, true); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void float4_operator_less_equal_wide_scalar() + { + float4 a0 = float4(309.192444f, 69.67377f, -101.724182f, -315.9724f); + float b0 = (292.924255f); + bool4 r0 = bool4(false, true, true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + float4 a1 = float4(-346.011047f, -410.870056f, -483.902649f, 183.821167f); + float b1 = (424.15387f); + bool4 r1 = bool4(true, true, true, true); + TestUtils.AreEqual(a1 <= b1, r1); + + float4 a2 = float4(320.4425f, -386.801758f, -182.938812f, 349.250122f); + float b2 = (-257.870056f); + bool4 r2 = bool4(false, true, false, false); + TestUtils.AreEqual(a2 <= b2, r2); + + float4 a3 = float4(485.311584f, 259.1515f, 450.130066f, -128.525543f); + float b3 = (373.5691f); + bool4 r3 = bool4(false, true, false, true); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void float4_operator_less_equal_scalar_wide() + { + float a0 = (-511.152374f); + float4 b0 = float4(51.1589966f, 340.443665f, 312.81427f, 354.1925f); + bool4 r0 = bool4(true, true, true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + float a1 = (136.396729f); + float4 b1 = float4(-94.76788f, 288.5443f, 304.042847f, -148.618073f); + bool4 r1 = bool4(false, true, true, false); + TestUtils.AreEqual(a1 <= b1, r1); + + float a2 = (-506.3001f); + float4 b2 = float4(27.5812378f, 48.47113f, 104.883484f, -488.685852f); + bool4 r2 = bool4(true, true, true, true); + TestUtils.AreEqual(a2 <= b2, r2); + + float a3 = (-480.435181f); + float4 b3 = float4(421.936646f, 239.721069f, -101.018433f, -283.951477f); + bool4 r3 = bool4(true, true, true, true); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void float4_operator_greater_equal_wide_wide() + { + float4 a0 = float4(-386.5918f, -157.120789f, 391.015259f, -511.886871f); + float4 b0 = float4(153.443f, 49.8924561f, 78.02582f, 138.813721f); + bool4 r0 = bool4(false, false, true, false); + TestUtils.AreEqual(a0 >= b0, r0); + + float4 a1 = float4(-5.42202759f, 287.645264f, -122.535187f, 7.48144531f); + float4 b1 = float4(-225.51059f, -339.3561f, -373.302063f, 364.9359f); + bool4 r1 = bool4(true, true, true, false); + TestUtils.AreEqual(a1 >= b1, r1); + + float4 a2 = float4(152.946411f, 48.9862061f, 57.3381348f, 300.4649f); + float4 b2 = float4(-322.7154f, 125.47821f, -25.77658f, 297.518921f); + bool4 r2 = bool4(true, false, true, true); + TestUtils.AreEqual(a2 >= b2, r2); + + float4 a3 = float4(349.25708f, 85.7496948f, -230.953308f, 418.711243f); + float4 b3 = float4(73.22235f, 462.783752f, 393.191345f, -95.0014343f); + bool4 r3 = bool4(true, false, false, true); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void float4_operator_greater_equal_wide_scalar() + { + float4 a0 = float4(495.4574f, -14.3451233f, -463.4748f, 217.517517f); + float b0 = (189.205139f); + bool4 r0 = bool4(true, false, false, true); + TestUtils.AreEqual(a0 >= b0, r0); + + float4 a1 = float4(-246.865723f, 53.8151245f, -123.332947f, -221.505463f); + float b1 = (-377.6587f); + bool4 r1 = bool4(true, true, true, true); + TestUtils.AreEqual(a1 >= b1, r1); + + float4 a2 = float4(252.994324f, -395.3633f, 164.772583f, -287.007324f); + float b2 = (-116.440369f); + bool4 r2 = bool4(true, false, true, false); + TestUtils.AreEqual(a2 >= b2, r2); + + float4 a3 = float4(355.837036f, 273.012268f, -418.1424f, 249.3841f); + float b3 = (184.195557f); + bool4 r3 = bool4(true, true, false, true); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void float4_operator_greater_equal_scalar_wide() + { + float a0 = (215.435364f); + float4 b0 = float4(204.802979f, -101.104034f, -122.055023f, -70.45615f); + bool4 r0 = bool4(true, true, true, true); + TestUtils.AreEqual(a0 >= b0, r0); + + float a1 = (-239.62027f); + float4 b1 = float4(-185.992737f, -455.612579f, 276.665833f, 79.39917f); + bool4 r1 = bool4(false, true, false, false); + TestUtils.AreEqual(a1 >= b1, r1); + + float a2 = (416.420532f); + float4 b2 = float4(379.2735f, -439.5147f, 67.14099f, -74.56064f); + bool4 r2 = bool4(true, true, true, true); + TestUtils.AreEqual(a2 >= b2, r2); + + float a3 = (-367.256348f); + float4 b3 = float4(494.950745f, -61.2355347f, -429.170258f, -213.824677f); + bool4 r3 = bool4(false, false, true, false); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void float4_operator_add_wide_wide() + { + float4 a0 = float4(465.148376f, 278.9107f, -277.5299f, -65.1972046f); + float4 b0 = float4(483.9944f, -204.07666f, -365.673553f, -509.920868f); + float4 r0 = float4(949.142761f, 74.8340454f, -643.2035f, -575.118042f); + TestUtils.AreEqual(a0 + b0, r0); + + float4 a1 = float4(-473.324371f, -4.69555664f, -470.536774f, -109.9501f); + float4 b1 = float4(-270.6975f, 486.763977f, 267.49176f, 251.642517f); + float4 r1 = float4(-744.021851f, 482.06842f, -203.045013f, 141.692413f); + TestUtils.AreEqual(a1 + b1, r1); + + float4 a2 = float4(-178.701447f, -420.033783f, 290.711121f, -446.529633f); + float4 b2 = float4(244.495117f, -78.67575f, 352.2055f, 82.7791748f); + float4 r2 = float4(65.79367f, -498.709534f, 642.9166f, -363.750458f); + TestUtils.AreEqual(a2 + b2, r2); + + float4 a3 = float4(491.066467f, -261.1173f, -298.4069f, 502.4286f); + float4 b3 = float4(462.5473f, -405.492f, -428.498322f, -41.87259f); + float4 r3 = float4(953.6138f, -666.6093f, -726.9052f, 460.556f); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void float4_operator_add_wide_scalar() + { + float4 a0 = float4(459.898315f, -447.663361f, -94.43863f, 126.429871f); + float b0 = (500.997253f); + float4 r0 = float4(960.895569f, 53.3338928f, 406.558624f, 627.4271f); + TestUtils.AreEqual(a0 + b0, r0); + + float4 a1 = float4(-36.254364f, -2.79125977f, -478.4148f, 443.115234f); + float b1 = (-349.6413f); + float4 r1 = float4(-385.89566f, -352.432556f, -828.0561f, 93.47394f); + TestUtils.AreEqual(a1 + b1, r1); + + float4 a2 = float4(268.092224f, -471.256073f, -2.664978f, 78.98584f); + float b2 = (41.3210449f); + float4 r2 = float4(309.413269f, -429.935028f, 38.6560669f, 120.306885f); + TestUtils.AreEqual(a2 + b2, r2); + + float4 a3 = float4(202.14801f, 10.3458252f, -151.244446f, 355.2328f); + float b3 = (311.725464f); + float4 r3 = float4(513.8735f, 322.0713f, 160.481018f, 666.958252f); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void float4_operator_add_scalar_wide() + { + float a0 = (-325.512756f); + float4 b0 = float4(-264.088135f, -106.009247f, -355.4473f, -447.3303f); + float4 r0 = float4(-589.6009f, -431.522f, -680.9601f, -772.843f); + TestUtils.AreEqual(a0 + b0, r0); + + float a1 = (-158.7002f); + float4 b1 = float4(-199.4837f, 180.318115f, 337.579346f, -37.0550232f); + float4 r1 = float4(-358.1839f, 21.61792f, 178.87915f, -195.755219f); + TestUtils.AreEqual(a1 + b1, r1); + + float a2 = (230.805f); + float4 b2 = float4(-140.174347f, 18.02417f, -138.614349f, 26.9041748f); + float4 r2 = float4(90.6306458f, 248.829163f, 92.19064f, 257.709167f); + TestUtils.AreEqual(a2 + b2, r2); + + float a3 = (-374.5376f); + float4 b3 = float4(154.46759f, 268.38385f, -190.963013f, 188.617249f); + float4 r3 = float4(-220.07f, -106.153748f, -565.5006f, -185.920349f); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void float4_operator_sub_wide_wide() + { + float4 a0 = float4(133.371033f, -131.832123f, -197.293152f, -485.28656f); + float4 b0 = float4(123.460266f, 359.56012f, -48.2484741f, 478.979065f); + float4 r0 = float4(9.910767f, -491.392242f, -149.044678f, -964.2656f); + TestUtils.AreEqual(a0 - b0, r0); + + float4 a1 = float4(-337.550323f, 471.6671f, 146.506592f, -130.585052f); + float4 b1 = float4(207.158325f, 142.36731f, -125.6055f, -65.29901f); + float4 r1 = float4(-544.7086f, 329.2998f, 272.1121f, -65.28604f); + TestUtils.AreEqual(a1 - b1, r1); + + float4 a2 = float4(110.7771f, -235.5416f, 78.87933f, -347.686157f); + float4 b2 = float4(-477.876434f, 164.5f, 428.009583f, 72.62781f); + float4 r2 = float4(588.653564f, -400.0416f, -349.130249f, -420.313965f); + TestUtils.AreEqual(a2 - b2, r2); + + float4 a3 = float4(-470.820557f, -11.45929f, -167.9479f, 330.676758f); + float4 b3 = float4(-446.8805f, 432.091431f, -225.554657f, -112.451965f); + float4 r3 = float4(-23.9400635f, -443.55072f, 57.60675f, 443.128723f); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void float4_operator_sub_wide_scalar() + { + float4 a0 = float4(48.9367065f, 410.4516f, -364.4417f, 163.980591f); + float b0 = (-291.5904f); + float4 r0 = float4(340.5271f, 702.042f, -72.85132f, 455.570984f); + TestUtils.AreEqual(a0 - b0, r0); + + float4 a1 = float4(-460.067322f, 204.358337f, 180.269714f, -377.9257f); + float b1 = (110.919434f); + float4 r1 = float4(-570.986755f, 93.4389f, 69.35028f, -488.845123f); + TestUtils.AreEqual(a1 - b1, r1); + + float4 a2 = float4(-470.262054f, 461.507568f, -246.287262f, 21.6052856f); + float b2 = (400.5349f); + float4 r2 = float4(-870.797f, 60.9726563f, -646.822144f, -378.929626f); + TestUtils.AreEqual(a2 - b2, r2); + + float4 a3 = float4(246.350708f, -122.718414f, -122.938721f, 360.15094f); + float b3 = (-121.427368f); + float4 r3 = float4(367.778076f, -1.29104614f, -1.51135254f, 481.5783f); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void float4_operator_sub_scalar_wide() + { + float a0 = (294.5865f); + float4 b0 = float4(452.352539f, 256.9898f, -275.159882f, -89.02753f); + float4 r0 = float4(-157.766052f, 37.59668f, 569.746338f, 383.614f); + TestUtils.AreEqual(a0 - b0, r0); + + float a1 = (488.2284f); + float4 b1 = float4(-333.2173f, -64.233f, -66.04172f, 341.204956f); + float4 r1 = float4(821.4457f, 552.4614f, 554.270142f, 147.023438f); + TestUtils.AreEqual(a1 - b1, r1); + + float a2 = (-385.775055f); + float4 b2 = float4(75.3947754f, 354.943726f, 169.131409f, 88.21661f); + float4 r2 = float4(-461.16983f, -740.71875f, -554.9065f, -473.991669f); + TestUtils.AreEqual(a2 - b2, r2); + + float a3 = (1.73498535f); + float4 b3 = float4(122.538025f, -264.945f, -50.83719f, -347.65033f); + float4 r3 = float4(-120.80304f, 266.68f, 52.5721741f, 349.3853f); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void float4_operator_mul_wide_wide() + { + float4 a0 = float4(-394.780548f, -412.3722f, -25.8745728f, -241.045959f); + float4 b0 = float4(-149.763977f, -345.04538f, -284.334045f, 267.979248f); + float4 r0 = float4(59123.9063f, 142287.125f, 7357.022f, -64595.3164f); + TestUtils.AreEqual(a0 * b0, r0); + + float4 a1 = float4(-93.6759949f, 244.159973f, 494.688477f, 53.5379639f); + float4 b1 = float4(-326.6485f, -150.689667f, 207.732422f, 366.192871f); + float4 r1 = float4(30599.123f, -36792.3867f, 102762.836f, 19605.22f); + TestUtils.AreEqual(a1 * b1, r1); + + float4 a2 = float4(-239.4964f, 236.675842f, -211.8562f, -216.654816f); + float4 b2 = float4(358.880737f, 214.853577f, 253.422791f, -307.7138f); + float4 r2 = float4(-85950.64f, 50850.6523f, -53689.19f, 66667.68f); + TestUtils.AreEqual(a2 * b2, r2); + + float4 a3 = float4(467.9583f, -178.021912f, -386.394257f, -422.4354f); + float4 b3 = float4(184.47113f, 426.436462f, -144.281433f, 459.4796f); + float4 r3 = float4(86324.8f, -75915.03f, 55749.5156f, -194100.453f); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void float4_operator_mul_wide_scalar() + { + float4 a0 = float4(328.203f, -290.10672f, 236.995728f, 120.481384f); + float b0 = (192.211182f); + float4 r0 = float4(63084.2852f, -55761.7539f, 45553.23f, 23157.87f); + TestUtils.AreEqual(a0 * b0, r0); + + float4 a1 = float4(357.903137f, -477.3105f, -438.272919f, -46.729187f); + float b1 = (134.867249f); + float4 r1 = float4(48269.41f, -64373.55f, -59108.6641f, -6302.237f); + TestUtils.AreEqual(a1 * b1, r1); + + float4 a2 = float4(-238.405f, -48.83484f, 355.30835f, 119.356628f); + float b2 = (422.08252f); + float4 r2 = float4(-100626.586f, -20612.332f, 149969.438f, 50378.3477f); + TestUtils.AreEqual(a2 * b2, r2); + + float4 a3 = float4(-196.995819f, -325.552155f, 53.9373169f, -87.45099f); + float b3 = (98.23602f); + float4 r3 = float4(-19352.0859f, -31980.95f, 5298.5874f, -8590.837f); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void float4_operator_mul_scalar_wide() + { + float a0 = (-464.5347f); + float4 b0 = float4(329.360962f, -198.683441f, 184.0794f, 256.016174f); + float4 r0 = float4(-152999.6f, 92295.35f, -85511.27f, -118928.4f); + TestUtils.AreEqual(a0 * b0, r0); + + float a1 = (266.226318f); + float4 b1 = float4(-97.8947449f, 159.748108f, -351.8222f, 491.801575f); + float4 r1 = float4(-26062.1582f, 42529.1523f, -93664.33f, 130930.523f); + TestUtils.AreEqual(a1 * b1, r1); + + float a2 = (49.90204f); + float4 b2 = float4(424.4626f, 160.1181f, -395.9921f, 125.20166f); + float4 r2 = float4(21181.5488f, 7990.21973f, -19760.8125f, 6247.818f); + TestUtils.AreEqual(a2 * b2, r2); + + float a3 = (-265.0158f); + float4 b3 = float4(314.656128f, -292.712036f, -37.72989f, 165.362244f); + float4 r3 = float4(-83388.85f, 77573.32f, 9999.017f, -43823.61f); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void float4_operator_div_wide_wide() + { + float4 a0 = float4(246.265747f, -269.85614f, -451.619537f, -7.388489f); + float4 b0 = float4(172.119812f, -77.14111f, -325.8354f, -450.608673f); + float4 r0 = float4(1.43078089f, 3.49821424f, 1.38603592f, 0.0163966864f); + TestUtils.AreEqual(a0 / b0, r0); + + float4 a1 = float4(-308.205566f, -373.3948f, 360.41864f, 25.8097534f); + float4 b1 = float4(-261.262146f, -122.449493f, -93.2107849f, -442.005219f); + float4 r1 = float4(1.17967939f, 3.04937816f, -3.86670542f, -0.0583924167f); + TestUtils.AreEqual(a1 / b1, r1); + + float4 a2 = float4(-274.050476f, 127.538574f, -447.671753f, -137.458588f); + float4 b2 = float4(484.362732f, -390.7818f, 402.02533f, 316.6507f); + float4 r2 = float4(-0.565795958f, -0.326367736f, -1.11354113f, -0.434101641f); + TestUtils.AreEqual(a2 / b2, r2); + + float4 a3 = float4(-136.133179f, 12.4376221f, 228.513f, 356.972351f); + float4 b3 = float4(397.154419f, -303.2622f, -118.591248f, -81.6503f); + float4 r3 = float4(-0.3427714f, -0.0410127677f, -1.926896f, -4.37196636f); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void float4_operator_div_wide_scalar() + { + float4 a0 = float4(-244.517456f, 69.1123047f, -333.023132f, 257.396851f); + float b0 = (-60.0243835f); + float4 r0 = float4(4.07363558f, -1.15140378f, 5.548131f, -4.28820467f); + TestUtils.AreEqual(a0 / b0, r0); + + float4 a1 = float4(403.2456f, 131.526611f, -261.8864f, -348.9238f); + float b1 = (154.34436f); + float4 r1 = float4(2.61263585f, 0.8521634f, -1.696767f, -2.26068377f); + TestUtils.AreEqual(a1 / b1, r1); + + float4 a2 = float4(-275.5387f, 287.6424f, 504.372253f, 491.7871f); + float b2 = (210.557922f); + float4 r2 = float4(-1.30861235f, 1.36609626f, 2.39540863f, 2.335638f); + TestUtils.AreEqual(a2 / b2, r2); + + float4 a3 = float4(-26.6315918f, 272.895142f, 178.096191f, -460.87558f); + float b3 = (-253.236664f); + float4 r3 = float4(0.105164833f, -1.07762885f, -0.7032797f, 1.81994021f); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void float4_operator_div_scalar_wide() + { + float a0 = (41.73767f); + float4 b0 = float4(-422.676147f, 248.129639f, 449.391357f, 245.858154f); + float4 r0 = float4(-0.09874622f, 0.168209136f, 0.0928759947f, 0.169763222f); + TestUtils.AreEqual(a0 / b0, r0); + + float a1 = (-326.6206f); + float4 b1 = float4(163.715088f, 333.6645f, 38.2910767f, -472.979767f); + float4 r1 = float4(-1.995055f, -0.978889346f, -8.529941f, 0.6905594f); + TestUtils.AreEqual(a1 / b1, r1); + + float a2 = (192.230164f); + float4 b2 = float4(-200.296875f, -490.181519f, -211.10257f, -322.852356f); + float4 r2 = float4(-0.9597262f, -0.3921612f, -0.9106008f, -0.595412f); + TestUtils.AreEqual(a2 / b2, r2); + + float a3 = (-137.985291f); + float4 b3 = float4(84.32971f, 355.063477f, 276.427246f, -382.988037f); + float4 r3 = float4(-1.63625944f, -0.388621479f, -0.499174f, 0.360286176f); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void float4_operator_mod_wide_wide() + { + float4 a0 = float4(-442.309875f, 368.5005f, -1.09390259f, -364.673828f); + float4 b0 = float4(-43.2450562f, -144.195862f, -62.6404724f, -336.828247f); + float4 r0 = float4(-9.859314f, 80.1087646f, -1.09390259f, -27.8455811f); + TestUtils.AreEqual(a0 % b0, r0); + + float4 a1 = float4(-197.343933f, -34.0349121f, -101.348572f, 208.318542f); + float4 b1 = float4(-154.61026f, -154.029358f, 487.0462f, -469.8291f); + float4 r1 = float4(-42.7336731f, -34.0349121f, -101.348572f, 208.318542f); + TestUtils.AreEqual(a1 % b1, r1); + + float4 a2 = float4(-140.770325f, 183.44696f, -463.368378f, 83.83911f); + float4 b2 = float4(-145.203766f, -203.384f, -22.52008f, 224.69f); + float4 r2 = float4(-140.770325f, 183.44696f, -12.9667664f, 83.83911f); + TestUtils.AreEqual(a2 % b2, r2); + + float4 a3 = float4(-64.71405f, 295.066833f, 212.25708f, 349.6283f); + float4 b3 = float4(-435.62674f, 12.0955811f, 40.3787842f, 345.784851f); + float4 r3 = float4(-64.71405f, 4.772888f, 10.3631592f, 3.84344482f); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void float4_operator_mod_wide_scalar() + { + float4 a0 = float4(-433.417f, -5.51412964f, 393.3944f, 299.41156f); + float b0 = (-90.49924f); + float4 r0 = float4(-71.4200439f, -5.51412964f, 31.39746f, 27.9138489f); + TestUtils.AreEqual(a0 % b0, r0); + + float4 a1 = float4(-120.80603f, -450.807678f, 186.094788f, -84.47363f); + float b1 = (-502.939026f); + float4 r1 = float4(-120.80603f, -450.807678f, 186.094788f, -84.47363f); + TestUtils.AreEqual(a1 % b1, r1); + + float4 a2 = float4(-318.7815f, -54.60019f, -172.338867f, -429.714661f); + float b2 = (433.4547f); + float4 r2 = float4(-318.7815f, -54.60019f, -172.338867f, -429.714661f); + TestUtils.AreEqual(a2 % b2, r2); + + float4 a3 = float4(222.361877f, 254.5108f, -433.0937f, -203.082611f); + float b3 = (5.79638672f); + float4 r3 = float4(2.09918213f, 5.26617432f, -4.161072f, -0.209075928f); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void float4_operator_mod_scalar_wide() + { + float a0 = (-396.4224f); + float4 b0 = float4(-159.140259f, 230.17334f, 14.7793579f, -303.1565f); + float4 r0 = float4(-78.14188f, -166.249054f, -12.1590881f, -93.2659f); + TestUtils.AreEqual(a0 % b0, r0); + + float a1 = (399.635f); + float4 b1 = float4(206.6947f, 397.0448f, -393.890656f, -372.067078f); + float4 r1 = float4(192.9403f, 2.59021f, 5.74435425f, 27.5679321f); + TestUtils.AreEqual(a1 % b1, r1); + + float a2 = (201.012268f); + float4 b2 = float4(-95.566864f, -258.951477f, 106.983582f, 469.323547f); + float4 r2 = float4(9.87854f, 201.012268f, 94.02869f, 201.012268f); + TestUtils.AreEqual(a2 % b2, r2); + + float a3 = (-34.80899f); + float4 b3 = float4(184.836548f, 374.79425f, -131.872711f, -120.092865f); + float4 r3 = float4(-34.80899f, -34.80899f, -34.80899f, -34.80899f); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void float4_operator_plus() + { + float4 a0 = float4(271.670837f, -79.08023f, -330.985046f, 31.824707f); + float4 r0 = float4(271.670837f, -79.08023f, -330.985046f, 31.824707f); + TestUtils.AreEqual(+a0, r0); + + float4 a1 = float4(315.449524f, 190.324646f, -350.3086f, -320.518463f); + float4 r1 = float4(315.449524f, 190.324646f, -350.3086f, -320.518463f); + TestUtils.AreEqual(+a1, r1); + + float4 a2 = float4(102.054382f, -428.7762f, 377.230164f, 234.773926f); + float4 r2 = float4(102.054382f, -428.7762f, 377.230164f, 234.773926f); + TestUtils.AreEqual(+a2, r2); + + float4 a3 = float4(34.28363f, 465.355957f, 309.59314f, -316.937134f); + float4 r3 = float4(34.28363f, 465.355957f, 309.59314f, -316.937134f); + TestUtils.AreEqual(+a3, r3); + } + + [TestCompiler] + public static void float4_operator_neg() + { + float4 a0 = float4(420.227173f, -196.2575f, -335.426819f, 509.04364f); + float4 r0 = float4(-420.227173f, 196.2575f, 335.426819f, -509.04364f); + TestUtils.AreEqual(-a0, r0); + + float4 a1 = float4(-33.0144043f, -495.837952f, -270.859467f, 19.68689f); + float4 r1 = float4(33.0144043f, 495.837952f, 270.859467f, -19.68689f); + TestUtils.AreEqual(-a1, r1); + + float4 a2 = float4(268.2367f, 223.381287f, -410.392059f, -395.681549f); + float4 r2 = float4(-268.2367f, -223.381287f, 410.392059f, 395.681549f); + TestUtils.AreEqual(-a2, r2); + + float4 a3 = float4(-349.149475f, -238.2196f, 292.543518f, 469.2926f); + float4 r3 = float4(349.149475f, 238.2196f, -292.543518f, -469.2926f); + TestUtils.AreEqual(-a3, r3); + } + + [TestCompiler] + public static void float4_operator_prefix_inc() + { + float4 a0 = float4(-99.79556f, 458.741821f, 96.1790161f, -48.55246f); + float4 r0 = float4(-98.79556f, 459.741821f, 97.1790161f, -47.55246f); + TestUtils.AreEqual(++a0, r0); + + float4 a1 = float4(-315.728973f, -323.614868f, -456.8903f, -76.50766f); + float4 r1 = float4(-314.728973f, -322.614868f, -455.8903f, -75.50766f); + TestUtils.AreEqual(++a1, r1); + + float4 a2 = float4(-305.584778f, 148.679321f, 363.2849f, -115.559235f); + float4 r2 = float4(-304.584778f, 149.679321f, 364.2849f, -114.559235f); + TestUtils.AreEqual(++a2, r2); + + float4 a3 = float4(-326.8778f, 339.8766f, -38.41043f, -153.373688f); + float4 r3 = float4(-325.8778f, 340.8766f, -37.41043f, -152.373688f); + TestUtils.AreEqual(++a3, r3); + } + + [TestCompiler] + public static void float4_operator_postfix_inc() + { + float4 a0 = float4(322.943542f, 472.0525f, 203.48761f, -49.8545837f); + float4 r0 = float4(322.943542f, 472.0525f, 203.48761f, -49.8545837f); + TestUtils.AreEqual(a0++, r0); + + float4 a1 = float4(-31.4205322f, 271.454651f, 55.7368774f, 153.7503f); + float4 r1 = float4(-31.4205322f, 271.454651f, 55.7368774f, 153.7503f); + TestUtils.AreEqual(a1++, r1); + + float4 a2 = float4(-174.173f, 215.110229f, 159.861023f, -333.050446f); + float4 r2 = float4(-174.173f, 215.110229f, 159.861023f, -333.050446f); + TestUtils.AreEqual(a2++, r2); + + float4 a3 = float4(241.4649f, -170.104645f, -270.652466f, -162.86026f); + float4 r3 = float4(241.4649f, -170.104645f, -270.652466f, -162.86026f); + TestUtils.AreEqual(a3++, r3); + } + + [TestCompiler] + public static void float4_operator_prefix_dec() + { + float4 a0 = float4(-416.201233f, -96.63788f, -50.14566f, -207.316437f); + float4 r0 = float4(-417.201233f, -97.63788f, -51.14566f, -208.316437f); + TestUtils.AreEqual(--a0, r0); + + float4 a1 = float4(439.479065f, 337.968933f, 246.088989f, 171.964539f); + float4 r1 = float4(438.479065f, 336.968933f, 245.088989f, 170.964539f); + TestUtils.AreEqual(--a1, r1); + + float4 a2 = float4(-227.44281f, 326.5078f, 400.7209f, -478.031372f); + float4 r2 = float4(-228.44281f, 325.5078f, 399.7209f, -479.031372f); + TestUtils.AreEqual(--a2, r2); + + float4 a3 = float4(-326.452972f, 112.796875f, -341.9763f, -503.27417f); + float4 r3 = float4(-327.452972f, 111.796875f, -342.9763f, -504.27417f); + TestUtils.AreEqual(--a3, r3); + } + + [TestCompiler] + public static void float4_operator_postfix_dec() + { + float4 a0 = float4(-376.5924f, 16.9697266f, -0.2506714f, -202.323273f); + float4 r0 = float4(-376.5924f, 16.9697266f, -0.2506714f, -202.323273f); + TestUtils.AreEqual(a0--, r0); + + float4 a1 = float4(409.557556f, -281.1117f, -262.0626f, -182.405731f); + float4 r1 = float4(409.557556f, -281.1117f, -262.0626f, -182.405731f); + TestUtils.AreEqual(a1--, r1); + + float4 a2 = float4(450.1281f, -332.154968f, -261.0089f, 205.461121f); + float4 r2 = float4(450.1281f, -332.154968f, -261.0089f, 205.461121f); + TestUtils.AreEqual(a2--, r2); + + float4 a3 = float4(-230.227783f, 378.641235f, 487.344849f, -192.177856f); + float4 r3 = float4(-230.227783f, 378.641235f, 487.344849f, -192.177856f); + TestUtils.AreEqual(a3--, r3); + } + + [TestCompiler] + public static void float4_shuffle_result_1() + { + float4 a = float4(0, 1, 2, 3); + float4 b = float4(4, 5, 6, 7); + + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftX), (0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftY), (1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftZ), (2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftW), (3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX), (4)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY), (5)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ), (6)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightW), (7)); + } + + [TestCompiler] + public static void float4_shuffle_result_2() + { + float4 a = float4(0, 1, 2, 3); + float4 b = float4(4, 5, 6, 7); + + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.RightZ), float2(5, 6)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ, ShuffleComponent.RightX), float2(6, 4)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftY, ShuffleComponent.RightX), float2(1, 4)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightW, ShuffleComponent.LeftW), float2(7, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightW, ShuffleComponent.LeftZ), float2(7, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftZ, ShuffleComponent.LeftW), float2(2, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.LeftW), float2(5, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightW, ShuffleComponent.LeftX), float2(7, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ, ShuffleComponent.RightW), float2(6, 7)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.LeftZ), float2(5, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ, ShuffleComponent.RightZ), float2(6, 6)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightW, ShuffleComponent.LeftX), float2(7, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.RightX), float2(5, 4)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightW, ShuffleComponent.RightY), float2(7, 5)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.LeftX), float2(4, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftY, ShuffleComponent.LeftW), float2(1, 3)); + } + + [TestCompiler] + public static void float4_shuffle_result_3() + { + float4 a = float4(0, 1, 2, 3); + float4 b = float4(4, 5, 6, 7); + + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftZ, ShuffleComponent.RightW, ShuffleComponent.RightY), float3(2, 7, 5)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ, ShuffleComponent.LeftX, ShuffleComponent.LeftW), float3(6, 0, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftZ, ShuffleComponent.RightW, ShuffleComponent.RightX), float3(2, 7, 4)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.LeftX, ShuffleComponent.LeftZ), float3(5, 0, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightW, ShuffleComponent.RightZ, ShuffleComponent.LeftZ), float3(7, 6, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftW, ShuffleComponent.LeftY, ShuffleComponent.LeftY), float3(3, 1, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftW, ShuffleComponent.RightY, ShuffleComponent.RightX), float3(3, 5, 4)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftW, ShuffleComponent.LeftY, ShuffleComponent.RightW), float3(3, 1, 7)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ, ShuffleComponent.RightY, ShuffleComponent.RightZ), float3(6, 5, 6)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.RightX, ShuffleComponent.LeftY), float3(5, 4, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightW, ShuffleComponent.RightW, ShuffleComponent.LeftX), float3(7, 7, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ, ShuffleComponent.LeftY, ShuffleComponent.RightY), float3(6, 1, 5)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ, ShuffleComponent.LeftY, ShuffleComponent.RightW), float3(6, 1, 7)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftW, ShuffleComponent.RightY, ShuffleComponent.RightY), float3(3, 5, 5)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ, ShuffleComponent.LeftX, ShuffleComponent.RightY), float3(6, 0, 5)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.LeftY, ShuffleComponent.RightW), float3(5, 1, 7)); + } + + [TestCompiler] + public static void float4_shuffle_result_4() + { + float4 a = float4(0, 1, 2, 3); + float4 b = float4(4, 5, 6, 7); + + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftY, ShuffleComponent.LeftW, ShuffleComponent.RightX, ShuffleComponent.LeftZ), float4(1, 3, 4, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.LeftW, ShuffleComponent.RightZ, ShuffleComponent.RightZ), float4(5, 3, 6, 6)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ, ShuffleComponent.RightZ, ShuffleComponent.RightW, ShuffleComponent.LeftZ), float4(6, 6, 7, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.RightY, ShuffleComponent.LeftZ, ShuffleComponent.LeftZ), float4(4, 5, 2, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ, ShuffleComponent.LeftY, ShuffleComponent.LeftY, ShuffleComponent.LeftX), float4(6, 1, 1, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.RightY, ShuffleComponent.RightY, ShuffleComponent.RightW), float4(4, 5, 5, 7)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftY, ShuffleComponent.RightW, ShuffleComponent.LeftX, ShuffleComponent.RightW), float4(1, 7, 0, 7)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.LeftX, ShuffleComponent.LeftY, ShuffleComponent.LeftX), float4(5, 0, 1, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.RightW, ShuffleComponent.LeftW, ShuffleComponent.LeftY), float4(4, 7, 3, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.RightX, ShuffleComponent.LeftY, ShuffleComponent.RightX), float4(5, 4, 1, 4)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftX, ShuffleComponent.LeftZ, ShuffleComponent.RightZ, ShuffleComponent.LeftX), float4(0, 2, 6, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftZ, ShuffleComponent.RightY, ShuffleComponent.RightW, ShuffleComponent.RightW), float4(2, 5, 7, 7)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftW, ShuffleComponent.RightX, ShuffleComponent.LeftZ, ShuffleComponent.RightX), float4(3, 4, 2, 4)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.LeftX, ShuffleComponent.LeftZ, ShuffleComponent.LeftW), float4(4, 0, 2, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ, ShuffleComponent.RightX, ShuffleComponent.LeftX, ShuffleComponent.RightY), float4(6, 4, 0, 5)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftW, ShuffleComponent.RightW, ShuffleComponent.LeftY, ShuffleComponent.RightY), float4(3, 7, 1, 5)); + } + + + } +} diff --git a/package/Tests/Tests/Shared/TestFloat4.gen.cs.meta b/package/Tests/Tests/Shared/TestFloat4.gen.cs.meta new file mode 100755 index 000000000..3784a8b25 --- /dev/null +++ b/package/Tests/Tests/Shared/TestFloat4.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f415d23fdfcb53742837bd44ef1b7825 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/package/Tests/Tests/Shared/TestFloat4x2.gen.cs b/package/Tests/Tests/Shared/TestFloat4x2.gen.cs new file mode 100755 index 000000000..0dcb4d117 --- /dev/null +++ b/package/Tests/Tests/Shared/TestFloat4x2.gen.cs @@ -0,0 +1,945 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using NUnit.Framework; +using static Unity.Mathematics.math; +using Burst.Compiler.IL.Tests; + +namespace Unity.Mathematics.Tests +{ + [TestFixture] + public class TestFloat4x2 + { + [TestCompiler] + public static void float4x2_zero() + { + TestUtils.AreEqual(float4x2.zero.c0.x, 0.0f); + TestUtils.AreEqual(float4x2.zero.c0.y, 0.0f); + TestUtils.AreEqual(float4x2.zero.c0.z, 0.0f); + TestUtils.AreEqual(float4x2.zero.c0.w, 0.0f); + TestUtils.AreEqual(float4x2.zero.c1.x, 0.0f); + TestUtils.AreEqual(float4x2.zero.c1.y, 0.0f); + TestUtils.AreEqual(float4x2.zero.c1.z, 0.0f); + TestUtils.AreEqual(float4x2.zero.c1.w, 0.0f); + } + + [TestCompiler] + public static void float4x2_operator_equal_wide_wide() + { + float4x2 a0 = float4x2(-135.18924f, -49.0941162f, 169.129822f, 240.8053f, 314.7392f, 442.393f, 177.924438f, 335.5334f); + float4x2 b0 = float4x2(-220.014648f, 66.98004f, 499.2016f, -371.1131f, 208.448669f, 390.8037f, -72.44382f, 362.97644f); + bool4x2 r0 = bool4x2(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + float4x2 a1 = float4x2(168.15448f, 350.729553f, 367.178467f, 46.9414673f, 188.76416f, -97.2113953f, -293.320984f, -234.822937f); + float4x2 b1 = float4x2(194.678345f, 471.644836f, -404.044678f, -144.696747f, -494.446655f, -252.970367f, 234.417114f, 398.724f); + bool4x2 r1 = bool4x2(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + float4x2 a2 = float4x2(417.0337f, 26.3864136f, 269.245728f, 29.4741821f, 479.485229f, -237.230957f, -221.9837f, -506.672546f); + float4x2 b2 = float4x2(260.4287f, 370.144226f, 89.579834f, -434.816833f, -109.845337f, 336.973022f, -409.154968f, 500.387573f); + bool4x2 r2 = bool4x2(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + float4x2 a3 = float4x2(-22.98944f, 487.260864f, -419.731964f, 337.2033f, 245.043884f, 390.215881f, 84.4129639f, 434.2079f); + float4x2 b3 = float4x2(-174.081818f, 395.101135f, 350.3393f, -243.144592f, -416.397369f, 151.576477f, -18.2243347f, -431.677917f); + bool4x2 r3 = bool4x2(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void float4x2_operator_equal_wide_scalar() + { + float4x2 a0 = float4x2(65.6712f, 404.415527f, -269.730164f, 83.6306152f, 152.9945f, -155.868286f, 314.671265f, 386.365173f); + float b0 = (-155.815765f); + bool4x2 r0 = bool4x2(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + float4x2 a1 = float4x2(290.04895f, -65.66748f, -69.68326f, -191.190765f, 186.845215f, -232.895691f, -319.144043f, -49.70108f); + float b1 = (-132.6352f); + bool4x2 r1 = bool4x2(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + float4x2 a2 = float4x2(-300.8819f, 386.3775f, -296.7019f, -309.1172f, 141.542358f, -227.323334f, 83.87286f, -410.91687f); + float b2 = (333.396851f); + bool4x2 r2 = bool4x2(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + float4x2 a3 = float4x2(110.501282f, 36.57434f, -427.541443f, -268.170837f, 175.8117f, -193.47995f, 291.051941f, 423.97168f); + float b3 = (-390.103577f); + bool4x2 r3 = bool4x2(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void float4x2_operator_equal_scalar_wide() + { + float a0 = (36.38391f); + float4x2 b0 = float4x2(-400.4892f, -71.2868347f, 156.978088f, -225.238739f, 499.141785f, -211.979919f, 428.311951f, -489.501343f); + bool4x2 r0 = bool4x2(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + float a1 = (-5.691559f); + float4x2 b1 = float4x2(-30.8659363f, -362.9831f, 184.503174f, -160.470612f, 316.668823f, 390.369263f, 505.1051f, -294.6487f); + bool4x2 r1 = bool4x2(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + float a2 = (443.1991f); + float4x2 b2 = float4x2(96.5592651f, -257.012939f, -245.054962f, 326.464844f, -23.9599f, -168.694885f, 386.2486f, -227.090637f); + bool4x2 r2 = bool4x2(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + float a3 = (-336.612427f); + float4x2 b3 = float4x2(365.108154f, -405.390839f, -473.995483f, 298.435364f, -149.86322f, 450.0664f, 153.47644f, 56.28778f); + bool4x2 r3 = bool4x2(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void float4x2_operator_not_equal_wide_wide() + { + float4x2 a0 = float4x2(279.994141f, -43.34201f, -465.724731f, 317.466553f, 85.7149658f, 360.8905f, 366.081543f, 154.542847f); + float4x2 b0 = float4x2(-460.9121f, -476.009033f, 468.1364f, -341.012543f, -62.65805f, -458.801666f, -457.730225f, -59.5232544f); + bool4x2 r0 = bool4x2(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + float4x2 a1 = float4x2(332.4262f, 397.11322f, -431.374969f, 489.0108f, 398.4336f, -489.817932f, 171.4049f, -67.82968f); + float4x2 b1 = float4x2(3.024231f, 155.812744f, -19.8399048f, -6.01693726f, -406.207916f, -102.420715f, -40.362915f, 452.6754f); + bool4x2 r1 = bool4x2(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + float4x2 a2 = float4x2(-192.278717f, 227.84082f, 62.1381836f, 262.186462f, -404.0531f, 34.449585f, -204.795776f, -285.4118f); + float4x2 b2 = float4x2(93.25757f, -258.378052f, -184.0498f, -379.2353f, -370.687317f, -255.947235f, 29.0557861f, 322.407654f); + bool4x2 r2 = bool4x2(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + float4x2 a3 = float4x2(-72.20682f, 444.749268f, 238.81781f, 365.1801f, -437.9229f, -362.442627f, 445.954346f, -0.417480469f); + float4x2 b3 = float4x2(415.071716f, -467.726135f, -433.784668f, -212.165924f, 474.674927f, 452.483215f, -92.11273f, -385.9221f); + bool4x2 r3 = bool4x2(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void float4x2_operator_not_equal_wide_scalar() + { + float4x2 a0 = float4x2(-155.4411f, -19.4266052f, 174.633057f, 507.920715f, 59.177063f, 171.151489f, -58.92328f, -398.176849f); + float b0 = (-393.413544f); + bool4x2 r0 = bool4x2(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + float4x2 a1 = float4x2(492.20105f, 270.341f, -380.243256f, 501.899048f, -134.345459f, 458.400452f, 46.7709961f, 161.459961f); + float b1 = (-165.241516f); + bool4x2 r1 = bool4x2(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + float4x2 a2 = float4x2(261.514221f, -0.449920654f, 350.461426f, 202.221008f, 242.664f, 382.677063f, -468.967957f, -497.459473f); + float b2 = (-145.6124f); + bool4x2 r2 = bool4x2(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + float4x2 a3 = float4x2(-80.93225f, -506.490326f, 449.348145f, 210.771f, 249.181824f, -338.468536f, 229.670654f, -76.5433044f); + float b3 = (-328.587769f); + bool4x2 r3 = bool4x2(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void float4x2_operator_not_equal_scalar_wide() + { + float a0 = (478.353149f); + float4x2 b0 = float4x2(459.553223f, 436.453247f, -488.714172f, 392.767944f, -266.736633f, 338.557861f, -338.100128f, -152.314545f); + bool4x2 r0 = bool4x2(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + float a1 = (-452.820679f); + float4x2 b1 = float4x2(209.439331f, 50.10797f, 372.4344f, -488.0213f, 489.740784f, 270.4001f, -472.846771f, -286.850464f); + bool4x2 r1 = bool4x2(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + float a2 = (-384.691864f); + float4x2 b2 = float4x2(443.423523f, 358.7472f, -15.4140625f, -342.179169f, 468.967529f, -130.568085f, 401.785828f, -268.352264f); + bool4x2 r2 = bool4x2(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + float a3 = (-239.231018f); + float4x2 b3 = float4x2(411.386536f, 139.769348f, 334.522034f, -223.629242f, -12.4884644f, 113.468872f, -189.652252f, -212.846558f); + bool4x2 r3 = bool4x2(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void float4x2_operator_less_wide_wide() + { + float4x2 a0 = float4x2(51.7102661f, -313.85556f, 283.047668f, 235.021912f, 44.07837f, -207.255676f, 3.38293457f, -144.301331f); + float4x2 b0 = float4x2(-261.835236f, -19.81073f, -149.25882f, 205.99823f, -306.024384f, 102.121704f, 231.906311f, 179.49884f); + bool4x2 r0 = bool4x2(false, true, false, false, false, true, true, true); + TestUtils.AreEqual(a0 < b0, r0); + + float4x2 a1 = float4x2(-69.3696f, -135.667969f, -194.787354f, -33.473877f, -19.67508f, 423.237976f, -71.6983f, -501.886f); + float4x2 b1 = float4x2(473.2249f, 15.8916626f, 270.049927f, 490.914f, -185.734131f, 76.4331055f, 97.75232f, 419.300781f); + bool4x2 r1 = bool4x2(true, true, true, true, false, false, true, true); + TestUtils.AreEqual(a1 < b1, r1); + + float4x2 a2 = float4x2(7.64386f, 302.262878f, -140.5505f, -436.5867f, -351.4417f, 364.970825f, 301.8941f, 407.550964f); + float4x2 b2 = float4x2(73.953186f, 481.032349f, 7.00744629f, -7.32409668f, -413.075745f, -154.1189f, 449.202881f, 502.014282f); + bool4x2 r2 = bool4x2(true, true, true, true, false, false, true, true); + TestUtils.AreEqual(a2 < b2, r2); + + float4x2 a3 = float4x2(269.1078f, 462.98822f, 223.884155f, -287.18924f, 283.6386f, 511.864319f, -60.4967957f, -234.303467f); + float4x2 b3 = float4x2(-382.315857f, 251.535156f, 143.17395f, 293.660339f, -292.769562f, -43.2182f, -353.4112f, 458.32605f); + bool4x2 r3 = bool4x2(false, false, false, true, false, false, false, true); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void float4x2_operator_less_wide_scalar() + { + float4x2 a0 = float4x2(-221.869781f, -121.546478f, -97.5239258f, 479.8811f, 67.11902f, 137.3288f, 282.9666f, 258.2791f); + float b0 = (199.0675f); + bool4x2 r0 = bool4x2(true, true, true, false, true, true, false, false); + TestUtils.AreEqual(a0 < b0, r0); + + float4x2 a1 = float4x2(-111.413147f, 82.6654053f, -361.6429f, -68.0881958f, 12.7880249f, -66.703064f, -78.76297f, 25.7277222f); + float b1 = (-288.081116f); + bool4x2 r1 = bool4x2(false, false, true, false, false, false, false, false); + TestUtils.AreEqual(a1 < b1, r1); + + float4x2 a2 = float4x2(101.37085f, -48.9205322f, 359.604431f, -8.150085f, 241.2768f, -183.437775f, 423.027161f, -334.622742f); + float b2 = (-330.442657f); + bool4x2 r2 = bool4x2(false, false, false, false, false, false, false, true); + TestUtils.AreEqual(a2 < b2, r2); + + float4x2 a3 = float4x2(-98.31558f, 297.925232f, -492.108154f, -395.807251f, 95.78882f, -220.62146f, -455.37558f, 360.291565f); + float b3 = (300.410156f); + bool4x2 r3 = bool4x2(true, true, true, true, true, true, true, false); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void float4x2_operator_less_scalar_wide() + { + float a0 = (-250.484924f); + float4x2 b0 = float4x2(-377.196533f, -505.147552f, 375.9267f, 110.17395f, -118.097565f, -40.4508972f, -299.744324f, 31.4371338f); + bool4x2 r0 = bool4x2(false, false, true, true, true, true, false, true); + TestUtils.AreEqual(a0 < b0, r0); + + float a1 = (-458.904541f); + float4x2 b1 = float4x2(13.6846924f, -458.5069f, 248.276489f, 389.231445f, 488.745544f, -221.637878f, -424.2672f, 249.059021f); + bool4x2 r1 = bool4x2(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 < b1, r1); + + float a2 = (-22.1361389f); + float4x2 b2 = float4x2(-442.247742f, -340.857544f, -95.1117249f, 15.4094238f, 87.29248f, 495.067627f, 316.0185f, -125.568115f); + bool4x2 r2 = bool4x2(false, false, false, true, true, true, true, false); + TestUtils.AreEqual(a2 < b2, r2); + + float a3 = (122.164795f); + float4x2 b3 = float4x2(96.75537f, -228.906342f, -143.9527f, -230.238281f, -327.6126f, 103.39801f, 434.488831f, -157.4502f); + bool4x2 r3 = bool4x2(false, false, false, false, false, false, true, false); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void float4x2_operator_greater_wide_wide() + { + float4x2 a0 = float4x2(-229.29068f, 505.536621f, -73.80707f, 100.292053f, -419.214783f, -159.559753f, -396.770355f, 127.037415f); + float4x2 b0 = float4x2(-445.845032f, -420.035278f, 299.0244f, -13.8809814f, 151.5617f, -163.50943f, -391.096039f, 479.283752f); + bool4x2 r0 = bool4x2(true, true, false, true, false, true, false, false); + TestUtils.AreEqual(a0 > b0, r0); + + float4x2 a1 = float4x2(489.1399f, 51.9188843f, 155.384766f, -135.631653f, -425.978149f, -228.430511f, 383.03833f, 136.533569f); + float4x2 b1 = float4x2(-77.6748657f, -46.584198f, -415.377f, 71.46698f, -206.061035f, 360.8363f, 236.968811f, 14.550354f); + bool4x2 r1 = bool4x2(true, true, true, false, false, false, true, true); + TestUtils.AreEqual(a1 > b1, r1); + + float4x2 a2 = float4x2(8.602417f, -251.324371f, -345.954926f, -170.565918f, -293.2544f, 139.125f, 214.3031f, 238.7699f); + float4x2 b2 = float4x2(364.735168f, -159.06131f, 226.631165f, 182.796021f, 341.839355f, -79.13046f, -247.296814f, 164.589111f); + bool4x2 r2 = bool4x2(false, false, false, false, false, true, true, true); + TestUtils.AreEqual(a2 > b2, r2); + + float4x2 a3 = float4x2(105.535217f, -170.9253f, 26.9802246f, -188.928314f, 201.786621f, -506.057159f, 15.454895f, 115.080688f); + float4x2 b3 = float4x2(-352.1598f, 9.822632f, 186.721619f, -325.913635f, -77.93036f, -379.746033f, 251.45575f, -144.183563f); + bool4x2 r3 = bool4x2(true, false, false, true, true, false, false, true); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void float4x2_operator_greater_wide_scalar() + { + float4x2 a0 = float4x2(11.156311f, -411.023224f, 385.885559f, -485.103058f, -491.180023f, 405.175354f, 173.575073f, 69.26929f); + float b0 = (-302.816956f); + bool4x2 r0 = bool4x2(true, false, true, false, false, true, true, true); + TestUtils.AreEqual(a0 > b0, r0); + + float4x2 a1 = float4x2(501.306824f, -86.12451f, -489.090576f, -172.518158f, -18.1496277f, -236.414948f, -238.8945f, -27.2391357f); + float b1 = (-367.027771f); + bool4x2 r1 = bool4x2(true, true, false, true, true, true, true, true); + TestUtils.AreEqual(a1 > b1, r1); + + float4x2 a2 = float4x2(471.779358f, -481.4781f, 185.59436f, 33.29474f, -510.228149f, -183.2862f, -386.127655f, -13.6382141f); + float b2 = (240.164551f); + bool4x2 r2 = bool4x2(true, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 > b2, r2); + + float4x2 a3 = float4x2(-7.34790039f, 52.24951f, 16.3232422f, -410.5101f, -262.2675f, -458.255981f, -218.866119f, -34.6923523f); + float b3 = (-261.865967f); + bool4x2 r3 = bool4x2(true, true, true, false, false, false, true, true); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void float4x2_operator_greater_scalar_wide() + { + float a0 = (453.546082f); + float4x2 b0 = float4x2(-226.2044f, -423.465f, 409.405518f, 453.877075f, 87.47571f, 113.795593f, 176.409241f, -140.440033f); + bool4x2 r0 = bool4x2(true, true, true, false, true, true, true, true); + TestUtils.AreEqual(a0 > b0, r0); + + float a1 = (-182.48288f); + float4x2 b1 = float4x2(-158.2933f, -162.685333f, -193.328674f, 230.181274f, -102.58783f, 392.520569f, -177.478668f, -10.2950134f); + bool4x2 r1 = bool4x2(false, false, true, false, false, false, false, false); + TestUtils.AreEqual(a1 > b1, r1); + + float a2 = (-24.04895f); + float4x2 b2 = float4x2(172.448669f, 374.048035f, -368.99762f, -210.195282f, 149.470215f, -281.343262f, -100.469177f, 304.864441f); + bool4x2 r2 = bool4x2(false, false, true, true, false, true, true, false); + TestUtils.AreEqual(a2 > b2, r2); + + float a3 = (-361.524841f); + float4x2 b3 = float4x2(-372.452362f, -33.9095459f, -69.5952759f, -460.4324f, -309.341675f, 486.131531f, 471.920959f, 479.361572f); + bool4x2 r3 = bool4x2(true, false, false, true, false, false, false, false); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void float4x2_operator_less_equal_wide_wide() + { + float4x2 a0 = float4x2(240.090515f, 462.213135f, 293.08252f, -427.870667f, -405.5227f, 204.591919f, 294.6701f, -327.564453f); + float4x2 b0 = float4x2(-81.20383f, 493.637451f, -411.4721f, 99.16443f, -295.6677f, -480.462555f, 74.41406f, 260.916138f); + bool4x2 r0 = bool4x2(false, true, false, true, true, false, false, true); + TestUtils.AreEqual(a0 <= b0, r0); + + float4x2 a1 = float4x2(-456.12326f, 282.30127f, 421.881165f, -311.71283f, 84.5675049f, 447.244629f, -154.494354f, -424.364746f); + float4x2 b1 = float4x2(306.173279f, 139.564819f, -505.752472f, -489.6268f, -280.0326f, 303.1599f, 511.1902f, -104.659729f); + bool4x2 r1 = bool4x2(true, false, false, false, false, false, true, true); + TestUtils.AreEqual(a1 <= b1, r1); + + float4x2 a2 = float4x2(36.68451f, 267.0703f, 307.893921f, -351.760132f, -157.360352f, 152.709045f, 372.267151f, 202.368286f); + float4x2 b2 = float4x2(95.14661f, -125.636353f, 376.2398f, -415.774719f, -47.48105f, 117.722107f, 469.378357f, -263.042358f); + bool4x2 r2 = bool4x2(true, false, true, false, true, false, true, false); + TestUtils.AreEqual(a2 <= b2, r2); + + float4x2 a3 = float4x2(-77.04346f, 438.1848f, 260.282349f, 386.034058f, -281.491f, -102.930054f, -346.716736f, -258.3412f); + float4x2 b3 = float4x2(-216.002319f, 66.73425f, 99.21863f, 233.843018f, 439.839966f, 61.1151123f, -219.030579f, -404.7129f); + bool4x2 r3 = bool4x2(false, false, false, false, true, true, true, false); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void float4x2_operator_less_equal_wide_scalar() + { + float4x2 a0 = float4x2(309.192444f, 69.67377f, -101.724182f, -315.9724f, -346.011047f, 424.15387f, -410.870056f, -483.902649f); + float b0 = (292.924255f); + bool4x2 r0 = bool4x2(false, true, true, true, true, false, true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + float4x2 a1 = float4x2(183.821167f, -257.870056f, -386.801758f, -182.938812f, 349.250122f, 485.311584f, 373.5691f, 259.1515f); + float b1 = (320.4425f); + bool4x2 r1 = bool4x2(true, true, true, true, false, false, false, true); + TestUtils.AreEqual(a1 <= b1, r1); + + float4x2 a2 = float4x2(450.130066f, -43.8748779f, 457.385742f, -77.6383057f, 479.451843f, -499.516449f, -398.132935f, 402.484863f); + float b2 = (-128.525543f); + bool4x2 r2 = bool4x2(false, false, false, false, false, true, true, false); + TestUtils.AreEqual(a2 <= b2, r2); + + float4x2 a3 = float4x2(87.91608f, 125.950806f, -54.49362f, 250.667419f, 97.94293f, 228.021545f, -213.378662f, 42.2608032f); + float b3 = (-502.1736f); + bool4x2 r3 = bool4x2(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void float4x2_operator_less_equal_scalar_wide() + { + float a0 = (-511.152374f); + float4x2 b0 = float4x2(51.1589966f, 340.443665f, 312.81427f, 354.1925f, 136.396729f, -94.76788f, 288.5443f, 304.042847f); + bool4x2 r0 = bool4x2(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + float a1 = (-148.618073f); + float4x2 b1 = float4x2(-506.3001f, 27.5812378f, 48.47113f, 104.883484f, -488.685852f, -480.435181f, 421.936646f, 239.721069f); + bool4x2 r1 = bool4x2(false, true, true, true, false, false, true, true); + TestUtils.AreEqual(a1 <= b1, r1); + + float a2 = (-101.018433f); + float4x2 b2 = float4x2(-283.951477f, -55.24353f, -455.80484f, 131.107239f, -461.6988f, -388.482849f, -258.936035f, -225.223541f); + bool4x2 r2 = bool4x2(false, true, false, true, false, false, false, false); + TestUtils.AreEqual(a2 <= b2, r2); + + float a3 = (-116.019989f); + float4x2 b3 = float4x2(-442.595245f, 297.333374f, 36.6872559f, 485.097839f, 344.445679f, 237.592163f, 230.390869f, -413.9848f); + bool4x2 r3 = bool4x2(false, true, true, true, true, true, true, false); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void float4x2_operator_greater_equal_wide_wide() + { + float4x2 a0 = float4x2(-386.5918f, -157.120789f, 391.015259f, -511.886871f, -5.42202759f, 287.645264f, -122.535187f, 7.48144531f); + float4x2 b0 = float4x2(153.443f, 49.8924561f, 78.02582f, 138.813721f, -225.51059f, -339.3561f, -373.302063f, 364.9359f); + bool4x2 r0 = bool4x2(false, false, true, false, true, true, true, false); + TestUtils.AreEqual(a0 >= b0, r0); + + float4x2 a1 = float4x2(152.946411f, 48.9862061f, 57.3381348f, 300.4649f, 349.25708f, 85.7496948f, -230.953308f, 418.711243f); + float4x2 b1 = float4x2(-322.7154f, 125.47821f, -25.77658f, 297.518921f, 73.22235f, 462.783752f, 393.191345f, -95.0014343f); + bool4x2 r1 = bool4x2(true, false, true, true, true, false, false, true); + TestUtils.AreEqual(a1 >= b1, r1); + + float4x2 a2 = float4x2(-131.039917f, -126.512207f, -156.818481f, 422.3775f, -413.089325f, 219.442749f, 35.5911255f, 447.181519f); + float4x2 b2 = float4x2(381.357056f, 93.03192f, 254.253235f, 90.67279f, 348.938171f, 161.337646f, 79.43561f, 420.243469f); + bool4x2 r2 = bool4x2(false, false, false, true, false, true, false, true); + TestUtils.AreEqual(a2 >= b2, r2); + + float4x2 a3 = float4x2(-223.492981f, 302.123f, 459.852722f, -347.128021f, 364.9781f, 212.635437f, 504.276062f, -142.232971f); + float4x2 b3 = float4x2(453.684875f, -154.011658f, -97.29007f, 151.184753f, 57.36029f, -194.207092f, -462.670624f, 113.3866f); + bool4x2 r3 = bool4x2(false, true, true, false, true, true, true, false); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void float4x2_operator_greater_equal_wide_scalar() + { + float4x2 a0 = float4x2(495.4574f, -14.3451233f, -463.4748f, 217.517517f, -246.865723f, -377.6587f, 53.8151245f, -123.332947f); + float b0 = (189.205139f); + bool4x2 r0 = bool4x2(true, false, false, true, false, false, false, false); + TestUtils.AreEqual(a0 >= b0, r0); + + float4x2 a1 = float4x2(-221.505463f, -116.440369f, -395.3633f, 164.772583f, -287.007324f, 355.837036f, 184.195557f, 273.012268f); + float b1 = (252.994324f); + bool4x2 r1 = bool4x2(false, false, false, false, false, true, false, true); + TestUtils.AreEqual(a1 >= b1, r1); + + float4x2 a2 = float4x2(-418.1424f, 396.392151f, 332.6654f, 243.761414f, -335.12146f, -302.0869f, 254.442261f, 179.005066f); + float b2 = (249.3841f); + bool4x2 r2 = bool4x2(false, true, true, false, false, false, true, false); + TestUtils.AreEqual(a2 >= b2, r2); + + float4x2 a3 = float4x2(71.1767f, 307.890564f, -388.578522f, 150.605774f, -219.892578f, -491.681f, 30.99707f, 199.232239f); + float b3 = (-331.271667f); + bool4x2 r3 = bool4x2(true, true, false, true, true, false, true, true); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void float4x2_operator_greater_equal_scalar_wide() + { + float a0 = (215.435364f); + float4x2 b0 = float4x2(204.802979f, -101.104034f, -122.055023f, -70.45615f, -239.62027f, -185.992737f, -455.612579f, 276.665833f); + bool4x2 r0 = bool4x2(true, true, true, true, true, true, true, false); + TestUtils.AreEqual(a0 >= b0, r0); + + float a1 = (79.39917f); + float4x2 b1 = float4x2(416.420532f, 379.2735f, -439.5147f, 67.14099f, -74.56064f, -367.256348f, 494.950745f, -61.2355347f); + bool4x2 r1 = bool4x2(false, false, true, true, true, true, false, true); + TestUtils.AreEqual(a1 >= b1, r1); + + float a2 = (-429.170258f); + float4x2 b2 = float4x2(-213.824677f, -264.310181f, 243.11377f, -22.38388f, 304.862f, -323.686157f, 67.93805f, 125.303589f); + bool4x2 r2 = bool4x2(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 >= b2, r2); + + float a3 = (-400.47052f); + float4x2 b3 = float4x2(-283.159637f, -42.31961f, -429.510376f, 499.395874f, -289.963074f, -136.008789f, -351.125244f, -381.8183f); + bool4x2 r3 = bool4x2(false, false, true, false, false, false, false, false); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void float4x2_operator_add_wide_wide() + { + float4x2 a0 = float4x2(465.148376f, 278.9107f, -277.5299f, -65.1972046f, -473.324371f, -4.69555664f, -470.536774f, -109.9501f); + float4x2 b0 = float4x2(483.9944f, -204.07666f, -365.673553f, -509.920868f, -270.6975f, 486.763977f, 267.49176f, 251.642517f); + float4x2 r0 = float4x2(949.142761f, 74.8340454f, -643.2035f, -575.118042f, -744.021851f, 482.06842f, -203.045013f, 141.692413f); + TestUtils.AreEqual(a0 + b0, r0); + + float4x2 a1 = float4x2(-178.701447f, -420.033783f, 290.711121f, -446.529633f, 491.066467f, -261.1173f, -298.4069f, 502.4286f); + float4x2 b1 = float4x2(244.495117f, -78.67575f, 352.2055f, 82.7791748f, 462.5473f, -405.492f, -428.498322f, -41.87259f); + float4x2 r1 = float4x2(65.79367f, -498.709534f, 642.9166f, -363.750458f, 953.6138f, -666.6093f, -726.9052f, 460.556f); + TestUtils.AreEqual(a1 + b1, r1); + + float4x2 a2 = float4x2(284.5943f, 401.128418f, -36.26349f, -102.949158f, 503.198181f, -384.4291f, -45.22821f, -198.67395f); + float4x2 b2 = float4x2(-269.9275f, 75.20447f, -141.913391f, -222.186768f, 41.3057251f, 148.339478f, -177.233124f, -176.51889f); + float4x2 r2 = float4x2(14.6668091f, 476.3329f, -178.17688f, -325.135925f, 544.5039f, -236.08963f, -222.461334f, -375.192841f); + TestUtils.AreEqual(a2 + b2, r2); + + float4x2 a3 = float4x2(-62.8800049f, -79.5522461f, 413.098267f, -100.877594f, 418.524f, -183.143127f, 407.443726f, 300.486023f); + float4x2 b3 = float4x2(492.692444f, 439.043823f, -511.742767f, -399.057129f, -315.868469f, -228.07724f, -171.7052f, 467.17395f); + float4x2 r3 = float4x2(429.812439f, 359.491577f, -98.6445f, -499.934723f, 102.655518f, -411.220367f, 235.738525f, 767.66f); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void float4x2_operator_add_wide_scalar() + { + float4x2 a0 = float4x2(459.898315f, -447.663361f, -94.43863f, 126.429871f, -36.254364f, -349.6413f, -2.79125977f, -478.4148f); + float b0 = (500.997253f); + float4x2 r0 = float4x2(960.895569f, 53.3338928f, 406.558624f, 627.4271f, 464.7429f, 151.355957f, 498.206f, 22.5824585f); + TestUtils.AreEqual(a0 + b0, r0); + + float4x2 a1 = float4x2(443.115234f, 41.3210449f, -471.256073f, -2.664978f, 78.98584f, 202.14801f, 311.725464f, 10.3458252f); + float b1 = (268.092224f); + float4x2 r1 = float4x2(711.207458f, 309.413269f, -203.163849f, 265.427246f, 347.078064f, 470.240234f, 579.8177f, 278.438049f); + TestUtils.AreEqual(a1 + b1, r1); + + float4x2 a2 = float4x2(-151.244446f, -197.800751f, 255.955261f, 244.1471f, -181.626556f, -2.45492554f, 300.900635f, -236.491943f); + float b2 = (355.2328f); + float4x2 r2 = float4x2(203.988342f, 157.432037f, 611.188049f, 599.3799f, 173.606232f, 352.777863f, 656.1334f, 118.740845f); + TestUtils.AreEqual(a2 + b2, r2); + + float4x2 a3 = float4x2(-160.5841f, -242.9411f, 466.344116f, 237.987488f, 264.294f, 372.866821f, -198.837769f, -381.930969f); + float b3 = (-172.5422f); + float4x2 r3 = float4x2(-333.1263f, -415.4833f, 293.8019f, 65.44528f, 91.7518f, 200.324615f, -371.379974f, -554.473145f); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void float4x2_operator_add_scalar_wide() + { + float a0 = (-325.512756f); + float4x2 b0 = float4x2(-264.088135f, -106.009247f, -355.4473f, -447.3303f, -158.7002f, -199.4837f, 180.318115f, 337.579346f); + float4x2 r0 = float4x2(-589.6009f, -431.522f, -680.9601f, -772.843f, -484.212952f, -524.99646f, -145.194641f, 12.0665894f); + TestUtils.AreEqual(a0 + b0, r0); + + float a1 = (-37.0550232f); + float4x2 b1 = float4x2(230.805f, -140.174347f, 18.02417f, -138.614349f, 26.9041748f, -374.5376f, 154.46759f, 268.38385f); + float4x2 r1 = float4x2(193.749969f, -177.22937f, -19.0308533f, -175.669373f, -10.1508484f, -411.592621f, 117.412567f, 231.328827f); + TestUtils.AreEqual(a1 + b1, r1); + + float a2 = (-190.963013f); + float4x2 b2 = float4x2(188.617249f, -504.916138f, 20.45404f, 197.945374f, 251.411926f, -421.0904f, 111.445374f, -73.26889f); + float4x2 r2 = float4x2(-2.34576416f, -695.87915f, -170.508972f, 6.982361f, 60.4489136f, -612.0534f, -79.51764f, -264.2319f); + TestUtils.AreEqual(a2 + b2, r2); + + float a3 = (480.884583f); + float4x2 b3 = float4x2(438.05304f, 66.8443f, -270.796021f, -44.02191f, 197.6947f, 19.1139526f, 349.2378f, 366.2345f); + float4x2 r3 = float4x2(918.9376f, 547.7289f, 210.088562f, 436.862671f, 678.5793f, 499.998535f, 830.1224f, 847.1191f); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void float4x2_operator_sub_wide_wide() + { + float4x2 a0 = float4x2(133.371033f, -131.832123f, -197.293152f, -485.28656f, -337.550323f, 471.6671f, 146.506592f, -130.585052f); + float4x2 b0 = float4x2(123.460266f, 359.56012f, -48.2484741f, 478.979065f, 207.158325f, 142.36731f, -125.6055f, -65.29901f); + float4x2 r0 = float4x2(9.910767f, -491.392242f, -149.044678f, -964.2656f, -544.7086f, 329.2998f, 272.1121f, -65.28604f); + TestUtils.AreEqual(a0 - b0, r0); + + float4x2 a1 = float4x2(110.7771f, -235.5416f, 78.87933f, -347.686157f, -470.820557f, -11.45929f, -167.9479f, 330.676758f); + float4x2 b1 = float4x2(-477.876434f, 164.5f, 428.009583f, 72.62781f, -446.8805f, 432.091431f, -225.554657f, -112.451965f); + float4x2 r1 = float4x2(588.653564f, -400.0416f, -349.130249f, -420.313965f, -23.9400635f, -443.55072f, 57.60675f, 443.128723f); + TestUtils.AreEqual(a1 - b1, r1); + + float4x2 a2 = float4x2(-508.350861f, -252.031891f, -427.9342f, 192.6576f, 168.429321f, 457.308777f, 470.058533f, -299.711884f); + float4x2 b2 = float4x2(-210.6128f, -172.925049f, -80.60748f, 270.046082f, -154.255585f, 148.475769f, 13.6611328f, 70.67108f); + float4x2 r2 = float4x2(-297.738068f, -79.10684f, -347.326721f, -77.38849f, 322.6849f, 308.833f, 456.3974f, -370.382965f); + TestUtils.AreEqual(a2 - b2, r2); + + float4x2 a3 = float4x2(-308.939575f, 454.5334f, 26.1069336f, -482.711823f, -40.8535461f, 318.380676f, 475.210815f, 134.926941f); + float4x2 b3 = float4x2(-221.325439f, -9.25882f, 288.173828f, 217.36145f, 307.540039f, -262.412659f, -405.378021f, 400.004333f); + float4x2 r3 = float4x2(-87.6141357f, 463.7922f, -262.0669f, -700.073242f, -348.3936f, 580.793335f, 880.588867f, -265.0774f); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void float4x2_operator_sub_wide_scalar() + { + float4x2 a0 = float4x2(48.9367065f, 410.4516f, -364.4417f, 163.980591f, -460.067322f, 110.919434f, 204.358337f, 180.269714f); + float b0 = (-291.5904f); + float4x2 r0 = float4x2(340.5271f, 702.042f, -72.85132f, 455.570984f, -168.476929f, 402.509827f, 495.94873f, 471.8601f); + TestUtils.AreEqual(a0 - b0, r0); + + float4x2 a1 = float4x2(-377.9257f, 400.5349f, 461.507568f, -246.287262f, 21.6052856f, 246.350708f, -121.427368f, -122.718414f); + float b1 = (-470.262054f); + float4x2 r1 = float4x2(92.3363647f, 870.797f, 931.769653f, 223.9748f, 491.86734f, 716.6128f, 348.8347f, 347.54364f); + TestUtils.AreEqual(a1 - b1, r1); + + float4x2 a2 = float4x2(-122.938721f, 342.874573f, 18.92981f, 164.602356f, 97.0437f, 485.914978f, -205.75766f, 253.443237f); + float b2 = (360.15094f); + float4x2 r2 = float4x2(-483.089661f, -17.2763672f, -341.22113f, -195.548584f, -263.107239f, 125.764038f, -565.908569f, -106.7077f); + TestUtils.AreEqual(a2 - b2, r2); + + float4x2 a3 = float4x2(-121.163055f, -450.820282f, -248.073364f, -26.9960632f, 441.5526f, 449.910583f, 354.886047f, 98.82147f); + float b3 = (187.998413f); + float4x2 r3 = float4x2(-309.161469f, -638.8187f, -436.071777f, -214.994476f, 253.5542f, 261.91217f, 166.887634f, -89.17694f); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void float4x2_operator_sub_scalar_wide() + { + float a0 = (294.5865f); + float4x2 b0 = float4x2(452.352539f, 256.9898f, -275.159882f, -89.02753f, 488.2284f, -333.2173f, -64.233f, -66.04172f); + float4x2 r0 = float4x2(-157.766052f, 37.59668f, 569.746338f, 383.614f, -193.6419f, 627.8038f, 358.8195f, 360.6282f); + TestUtils.AreEqual(a0 - b0, r0); + + float a1 = (341.204956f); + float4x2 b1 = float4x2(-385.775055f, 75.3947754f, 354.943726f, 169.131409f, 88.21661f, 1.73498535f, 122.538025f, -264.945f); + float4x2 r1 = float4x2(726.98f, 265.810181f, -13.73877f, 172.073547f, 252.988342f, 339.469971f, 218.666931f, 606.149963f); + TestUtils.AreEqual(a1 - b1, r1); + + float a2 = (-50.83719f); + float4x2 b2 = float4x2(-347.65033f, 4.06555176f, -79.09543f, 354.358337f, -292.4925f, -53.2089844f, -246.3476f, 299.203369f); + float4x2 r2 = float4x2(296.813141f, -54.90274f, 28.25824f, -405.195526f, 241.6553f, 2.37179565f, 195.5104f, -350.040558f); + TestUtils.AreEqual(a2 - b2, r2); + + float a3 = (432.1847f); + float4x2 b3 = float4x2(-163.88f, 176.742554f, -104.98584f, -445.797638f, -28.8731689f, -169.588226f, -270.359253f, 68.04761f); + float4x2 r3 = float4x2(596.0647f, 255.442139f, 537.170532f, 877.9823f, 461.057861f, 601.772949f, 702.543945f, 364.1371f); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void float4x2_operator_mul_wide_wide() + { + float4x2 a0 = float4x2(-394.780548f, -412.3722f, -25.8745728f, -241.045959f, -93.6759949f, 244.159973f, 494.688477f, 53.5379639f); + float4x2 b0 = float4x2(-149.763977f, -345.04538f, -284.334045f, 267.979248f, -326.6485f, -150.689667f, 207.732422f, 366.192871f); + float4x2 r0 = float4x2(59123.9063f, 142287.125f, 7357.022f, -64595.3164f, 30599.123f, -36792.3867f, 102762.836f, 19605.22f); + TestUtils.AreEqual(a0 * b0, r0); + + float4x2 a1 = float4x2(-239.4964f, 236.675842f, -211.8562f, -216.654816f, 467.9583f, -178.021912f, -386.394257f, -422.4354f); + float4x2 b1 = float4x2(358.880737f, 214.853577f, 253.422791f, -307.7138f, 184.47113f, 426.436462f, -144.281433f, 459.4796f); + float4x2 r1 = float4x2(-85950.64f, 50850.6523f, -53689.19f, 66667.68f, 86324.8f, -75915.03f, 55749.5156f, -194100.453f); + TestUtils.AreEqual(a1 * b1, r1); + + float4x2 a2 = float4x2(464.589539f, -251.315674f, -104.97879f, -66.93417f, -39.829895f, 401.5656f, 434.146179f, -336.4542f); + float4x2 b2 = float4x2(-358.313354f, -201.3652f, 254.909973f, 168.520935f, 8.794556f, -194.846466f, -405.362671f, -180.732178f); + float4x2 r2 = float4x2(-166468.641f, 50606.23f, -26760.14f, -11279.81f, -350.286224f, -78243.64f, -175986.656f, 60808.0977f); + TestUtils.AreEqual(a2 * b2, r2); + + float4x2 a3 = float4x2(-83.11417f, 329.960266f, -316.972168f, 474.937927f, -445.109161f, -301.003723f, 405.687866f, 142.373474f); + float4x2 b3 = float4x2(-189.746918f, -35.5184631f, 120.31665f, -136.203339f, 407.3416f, 301.6543f, -155.482391f, -461.394562f); + float4x2 r3 = float4x2(15770.6572f, -11719.6816f, -38137.03f, -64688.1328f, -181311.484f, -90799.07f, -63077.32f, -65690.34f); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void float4x2_operator_mul_wide_scalar() + { + float4x2 a0 = float4x2(328.203f, -290.10672f, 236.995728f, 120.481384f, 357.903137f, 134.867249f, -477.3105f, -438.272919f); + float b0 = (192.211182f); + float4x2 r0 = float4x2(63084.2852f, -55761.7539f, 45553.23f, 23157.87f, 68792.9844f, 25922.9941f, -91744.4141f, -84240.95f); + TestUtils.AreEqual(a0 * b0, r0); + + float4x2 a1 = float4x2(-46.729187f, 422.08252f, -48.83484f, 355.30835f, 119.356628f, -196.995819f, 98.23602f, -325.552155f); + float b1 = (-238.405f); + float4x2 r1 = float4x2(11140.4717f, -100626.586f, 11642.47f, -84707.29f, -28455.2168f, 46964.79f, -23419.959f, 77613.26f); + TestUtils.AreEqual(a1 * b1, r1); + + float4x2 a2 = float4x2(53.9373169f, -130.474121f, -222.594574f, 126.015015f, 293.361084f, 174.381958f, -327.120056f, 56.62915f); + float b2 = (-87.45099f); + float4x2 r2 = float4x2(-4716.87158f, 11410.0908f, 19466.1152f, -11020.1377f, -25654.7168f, -15249.875f, 28606.9727f, -4952.27539f); + TestUtils.AreEqual(a2 * b2, r2); + + float4x2 a3 = float4x2(257.541565f, -452.6919f, -49.22061f, 141.600952f, 431.5857f, 180.355164f, -40.9234619f, 279.543518f); + float b3 = (-475.6087f); + float4x2 r3 = float4x2(-122489.008f, 215304.2f, 23409.752f, -67346.65f, -205265.9f, -85778.4844f, 19463.5547f, -132953.328f); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void float4x2_operator_mul_scalar_wide() + { + float a0 = (-464.5347f); + float4x2 b0 = float4x2(329.360962f, -198.683441f, 184.0794f, 256.016174f, 266.226318f, -97.8947449f, 159.748108f, -351.8222f); + float4x2 r0 = float4x2(-152999.6f, 92295.35f, -85511.27f, -118928.4f, -123671.359f, 45475.5039f, -74208.54f, 163433.625f); + TestUtils.AreEqual(a0 * b0, r0); + + float a1 = (491.801575f); + float4x2 b1 = float4x2(49.90204f, 424.4626f, 160.1181f, -395.9921f, 125.20166f, -265.0158f, 314.656128f, -292.712036f); + float4x2 r1 = float4x2(24541.9f, 208751.375f, 78746.3359f, -194749.531f, 61574.375f, -130335.195f, 154748.375f, -143956.234f); + TestUtils.AreEqual(a1 * b1, r1); + + float a2 = (-37.72989f); + float4x2 b2 = float4x2(165.362244f, 356.517761f, -188.813324f, 504.9157f, 40.5721436f, -206.775116f, -61.60269f, 118.971619f); + float4x2 r2 = float4x2(-6239.099f, -13451.376f, 7123.906f, -19050.4141f, -1530.78247f, 7801.602f, 2324.2627f, -4488.786f); + TestUtils.AreEqual(a2 * b2, r2); + + float a3 = (53.7483521f); + float4x2 b3 = float4x2(-198.6694f, 96.236084f, -20.2418823f, -31.1239624f, 38.89044f, -13.1333008f, 507.871277f, 95.0179443f); + float4x2 r3 = float4x2(-10678.1533f, 5172.531f, -1087.96777f, -1672.86169f, 2090.297f, -705.89325f, 27297.2441f, 5107.058f); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void float4x2_operator_div_wide_wide() + { + float4x2 a0 = float4x2(246.265747f, -269.85614f, -451.619537f, -7.388489f, -308.205566f, -373.3948f, 360.41864f, 25.8097534f); + float4x2 b0 = float4x2(172.119812f, -77.14111f, -325.8354f, -450.608673f, -261.262146f, -122.449493f, -93.2107849f, -442.005219f); + float4x2 r0 = float4x2(1.43078089f, 3.49821424f, 1.38603592f, 0.0163966864f, 1.17967939f, 3.04937816f, -3.86670542f, -0.0583924167f); + TestUtils.AreEqual(a0 / b0, r0); + + float4x2 a1 = float4x2(-274.050476f, 127.538574f, -447.671753f, -137.458588f, -136.133179f, 12.4376221f, 228.513f, 356.972351f); + float4x2 b1 = float4x2(484.362732f, -390.7818f, 402.02533f, 316.6507f, 397.154419f, -303.2622f, -118.591248f, -81.6503f); + float4x2 r1 = float4x2(-0.565795958f, -0.326367736f, -1.11354113f, -0.434101641f, -0.3427714f, -0.0410127677f, -1.926896f, -4.37196636f); + TestUtils.AreEqual(a1 / b1, r1); + + float4x2 a2 = float4x2(-24.7620544f, 411.6684f, -204.078888f, 11.3654175f, 82.15228f, 37.3894653f, 394.2658f, -429.912781f); + float4x2 b2 = float4x2(-84.34686f, -488.419434f, 404.160522f, -136.728851f, -19.8327026f, -102.607239f, 166.116028f, -112.840179f); + float4x2 r2 = float4x2(0.2935741f, -0.8428584f, -0.504945159f, -0.0831237659f, -4.14226341f, -0.364394039f, 2.37343621f, 3.80992651f); + TestUtils.AreEqual(a2 / b2, r2); + + float4x2 a3 = float4x2(315.37384f, -122.665985f, 447.526123f, -210.4815f, -202.42157f, -453.007935f, 173.72699f, -167.121674f); + float4x2 b3 = float4x2(-218.209686f, 458.517517f, 119.587219f, 356.240417f, -74.50687f, -336.773926f, -216.126312f, 322.385681f); + float4x2 r3 = float4x2(-1.44527888f, -0.267527372f, 3.742257f, -0.5908412f, 2.71681762f, 1.34513962f, -0.803821564f, -0.5183905f); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void float4x2_operator_div_wide_scalar() + { + float4x2 a0 = float4x2(-244.517456f, 69.1123047f, -333.023132f, 257.396851f, 403.2456f, 154.34436f, 131.526611f, -261.8864f); + float b0 = (-60.0243835f); + float4x2 r0 = float4x2(4.07363558f, -1.15140378f, 5.548131f, -4.28820467f, -6.71803f, -2.571361f, -2.19121981f, 4.36300039f); + TestUtils.AreEqual(a0 / b0, r0); + + float4x2 a1 = float4x2(-348.9238f, 210.557922f, 287.6424f, 504.372253f, 491.7871f, -26.6315918f, -253.236664f, 272.895142f); + float b1 = (-275.5387f); + float4x2 r1 = float4x2(1.26633322f, -0.764168262f, -1.04392743f, -1.83049512f, -1.78482044f, 0.09665282f, 0.91906023f, -0.990405858f); + TestUtils.AreEqual(a1 / b1, r1); + + float4x2 a2 = float4x2(178.096191f, -502.646027f, -84.3248f, -174.690338f, 83.7963257f, 197.042053f, 317.168274f, 403.387146f); + float b2 = (-460.87558f); + float4x2 r2 = float4x2(-0.386430085f, 1.0906328f, 0.182966515f, 0.379040122f, -0.181819841f, -0.427538484f, -0.688186347f, -0.875262558f); + TestUtils.AreEqual(a2 / b2, r2); + + float4x2 a3 = float4x2(81.6464844f, -413.5605f, 207.341f, 358.562134f, 20.7490845f, -68.57712f, 310.702454f, 417.4049f); + float b3 = (60.6068726f); + float4x2 r3 = float4x2(1.3471489f, -6.82365656f, 3.42108083f, 5.916196f, 0.3423553f, -1.13150728f, 5.12652159f, 6.887089f); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void float4x2_operator_div_scalar_wide() + { + float a0 = (41.73767f); + float4x2 b0 = float4x2(-422.676147f, 248.129639f, 449.391357f, 245.858154f, -326.6206f, 163.715088f, 333.6645f, 38.2910767f); + float4x2 r0 = float4x2(-0.09874622f, 0.168209136f, 0.0928759947f, 0.169763222f, -0.1277864f, 0.2549409f, 0.125088736f, 1.0900104f); + TestUtils.AreEqual(a0 / b0, r0); + + float a1 = (-472.979767f); + float4x2 b1 = float4x2(192.230164f, -200.296875f, -490.181519f, -211.10257f, -322.852356f, -137.985291f, 84.32971f, 355.063477f); + float4x2 r1 = float4x2(-2.46048665f, 2.36139369f, 0.9649074f, 2.24052119f, 1.46500325f, 3.42775488f, -5.60869646f, -1.3320992f); + TestUtils.AreEqual(a1 / b1, r1); + + float a2 = (276.427246f); + float4x2 b2 = float4x2(-382.988037f, -488.647156f, 344.846f, 168.85498f, -44.1955872f, 420.55072f, -175.6152f, -9.220581f); + float4x2 r2 = float4x2(-0.7217647f, -0.5656991f, 0.801596165f, 1.637069f, -6.25463438f, 0.6572982f, -1.57405078f, -29.9793739f); + TestUtils.AreEqual(a2 / b2, r2); + + float a3 = (-344.194275f); + float4x2 b3 = float4x2(-449.0715f, 117.704895f, -337.0274f, 239.393433f, -389.355164f, 242.716064f, 496.2765f, 91.74579f); + float4x2 r3 = float4x2(0.7664576f, -2.924214f, 1.02126491f, -1.43777657f, 0.8840111f, -1.41809428f, -0.693553448f, -3.75160837f); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void float4x2_operator_mod_wide_wide() + { + float4x2 a0 = float4x2(-442.309875f, 368.5005f, -1.09390259f, -364.673828f, -197.343933f, -34.0349121f, -101.348572f, 208.318542f); + float4x2 b0 = float4x2(-43.2450562f, -144.195862f, -62.6404724f, -336.828247f, -154.61026f, -154.029358f, 487.0462f, -469.8291f); + float4x2 r0 = float4x2(-9.859314f, 80.1087646f, -1.09390259f, -27.8455811f, -42.7336731f, -34.0349121f, -101.348572f, 208.318542f); + TestUtils.AreEqual(a0 % b0, r0); + + float4x2 a1 = float4x2(-140.770325f, 183.44696f, -463.368378f, 83.83911f, -64.71405f, 295.066833f, 212.25708f, 349.6283f); + float4x2 b1 = float4x2(-145.203766f, -203.384f, -22.52008f, 224.69f, -435.62674f, 12.0955811f, 40.3787842f, 345.784851f); + float4x2 r1 = float4x2(-140.770325f, 183.44696f, -12.9667664f, 83.83911f, -64.71405f, 4.772888f, 10.3631592f, 3.84344482f); + TestUtils.AreEqual(a1 % b1, r1); + + float4x2 a2 = float4x2(119.875916f, -37.8058167f, 142.41156f, 332.244263f, -464.194275f, -296.147827f, 225.175354f, -212.060272f); + float4x2 b2 = float4x2(-433.471252f, -355.649963f, 4.015442f, 66.65979f, -221.853638f, -355.056763f, 357.935974f, 71.3753052f); + float4x2 r2 = float4x2(119.875916f, -37.8058167f, 1.87109375f, 65.6051f, -20.487f, -296.147827f, 225.175354f, -69.30966f); + TestUtils.AreEqual(a2 % b2, r2); + + float4x2 a3 = float4x2(156.985718f, 507.6183f, 270.830444f, 337.7343f, 384.915833f, 432.5182f, 154.292725f, -37.0853271f); + float4x2 b3 = float4x2(-131.4183f, -473.9876f, 76.2178345f, 92.2102051f, -368.189575f, -77.46716f, 135.230591f, 274.277283f); + float4x2 r3 = float4x2(25.5674133f, 33.6306763f, 42.17694f, 61.1037f, 16.7262573f, 45.182373f, 19.0621338f, -37.0853271f); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void float4x2_operator_mod_wide_scalar() + { + float4x2 a0 = float4x2(-433.417f, -5.51412964f, 393.3944f, 299.41156f, -120.80603f, -502.939026f, -450.807678f, 186.094788f); + float b0 = (-90.49924f); + float4x2 r0 = float4x2(-71.4200439f, -5.51412964f, 31.39746f, 27.9138489f, -30.3067932f, -50.44284f, -88.81073f, 5.09631348f); + TestUtils.AreEqual(a0 % b0, r0); + + float4x2 a1 = float4x2(-84.47363f, 433.4547f, -54.60019f, -172.338867f, -429.714661f, 222.361877f, 5.79638672f, 254.5108f); + float b1 = (-318.7815f); + float4x2 r1 = float4x2(-84.47363f, 114.673218f, -54.60019f, -172.338867f, -110.933167f, 222.361877f, 5.79638672f, 254.5108f); + TestUtils.AreEqual(a1 % b1, r1); + + float4x2 a2 = float4x2(-433.0937f, -75.3564148f, 252.289124f, -69.4039f, 5.337219f, -279.060425f, 483.5506f, -331.993347f); + float b2 = (-203.082611f); + float4x2 r2 = float4x2(-26.9284668f, -75.3564148f, 49.2065125f, -69.4039f, 5.337219f, -75.97781f, 77.385376f, -128.910736f); + TestUtils.AreEqual(a2 % b2, r2); + + float4x2 a3 = float4x2(336f, -124.720764f, 38.1759033f, 271.287f, 405.773621f, -194.761444f, 235.724f, 465.984863f); + float b3 = (67.8396f); + float4x2 r3 = float4x2(64.6416f, -56.8811646f, 38.1759033f, 67.76819f, 66.57562f, -59.0822449f, 32.2052f, 58.9472656f); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void float4x2_operator_mod_scalar_wide() + { + float a0 = (-396.4224f); + float4x2 b0 = float4x2(-159.140259f, 230.17334f, 14.7793579f, -303.1565f, 399.635f, 206.6947f, 397.0448f, -393.890656f); + float4x2 r0 = float4x2(-78.14188f, -166.249054f, -12.1590881f, -93.2659f, -396.4224f, -189.727692f, -396.4224f, -2.53173828f); + TestUtils.AreEqual(a0 % b0, r0); + + float a1 = (-372.067078f); + float4x2 b1 = float4x2(201.012268f, -95.566864f, -258.951477f, 106.983582f, 469.323547f, -34.80899f, 184.836548f, 374.79425f); + float4x2 r1 = float4x2(-171.05481f, -85.3664856f, -113.1156f, -51.116333f, -372.067078f, -23.9771729f, -2.393982f, -372.067078f); + TestUtils.AreEqual(a1 % b1, r1); + + float a2 = (-131.872711f); + float4x2 b2 = float4x2(-120.092865f, 4.506653f, -111.401947f, 391.54248f, -218.668884f, 196.377441f, -511.032623f, 499.9535f); + float4x2 r2 = float4x2(-11.7798462f, -1.179779f, -20.4707642f, -131.872711f, -131.872711f, -131.872711f, -131.872711f, -131.872711f); + TestUtils.AreEqual(a2 % b2, r2); + + float a3 = (-433.523071f); + float4x2 b3 = float4x2(-163.866852f, 177.004028f, 110.650146f, 17.68457f, -95.85297f, -432.440979f, 192.692078f, -268.131775f); + float4x2 r3 = float4x2(-105.789368f, -79.5150146f, -101.572632f, -9.093384f, -50.1112061f, -1.08209229f, -48.138916f, -165.3913f); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void float4x2_operator_plus() + { + float4x2 a0 = float4x2(271.670837f, -79.08023f, -330.985046f, 31.824707f, 315.449524f, 319.222168f, 190.324646f, -350.3086f); + float4x2 r0 = float4x2(271.670837f, -79.08023f, -330.985046f, 31.824707f, 315.449524f, 319.222168f, 190.324646f, -350.3086f); + TestUtils.AreEqual(+a0, r0); + + float4x2 a1 = float4x2(-320.518463f, -107.00351f, -428.7762f, 377.230164f, 234.773926f, 34.28363f, 258.330383f, 465.355957f); + float4x2 r1 = float4x2(-320.518463f, -107.00351f, -428.7762f, 377.230164f, 234.773926f, 34.28363f, 258.330383f, 465.355957f); + TestUtils.AreEqual(+a1, r1); + + float4x2 a2 = float4x2(309.59314f, -230.052673f, 301.7851f, 2.58575439f, 350.2464f, 60.8197632f, -472.4421f, -364.802551f); + float4x2 r2 = float4x2(309.59314f, -230.052673f, 301.7851f, 2.58575439f, 350.2464f, 60.8197632f, -472.4421f, -364.802551f); + TestUtils.AreEqual(+a2, r2); + + float4x2 a3 = float4x2(239.152344f, 285.80896f, -273.2638f, -206.686371f, -113.362305f, -351.754883f, -116.536224f, -496.053284f); + float4x2 r3 = float4x2(239.152344f, 285.80896f, -273.2638f, -206.686371f, -113.362305f, -351.754883f, -116.536224f, -496.053284f); + TestUtils.AreEqual(+a3, r3); + } + + [TestCompiler] + public static void float4x2_operator_neg() + { + float4x2 a0 = float4x2(420.227173f, -196.2575f, -335.426819f, 509.04364f, -33.0144043f, -498.575317f, -495.837952f, -270.859467f); + float4x2 r0 = float4x2(-420.227173f, 196.2575f, 335.426819f, -509.04364f, 33.0144043f, 498.575317f, 495.837952f, 270.859467f); + TestUtils.AreEqual(-a0, r0); + + float4x2 a1 = float4x2(19.68689f, -180.600525f, 223.381287f, -410.392059f, -395.681549f, -349.149475f, -110.9393f, -238.2196f); + float4x2 r1 = float4x2(-19.68689f, 180.600525f, -223.381287f, 410.392059f, 395.681549f, 349.149475f, 110.9393f, 238.2196f); + TestUtils.AreEqual(-a1, r1); + + float4x2 a2 = float4x2(292.543518f, 48.29071f, 88.7237549f, 66.1485f, 55.7080078f, 464.541382f, 499.2428f, 175.015015f); + float4x2 r2 = float4x2(-292.543518f, -48.29071f, -88.7237549f, -66.1485f, -55.7080078f, -464.541382f, -499.2428f, -175.015015f); + TestUtils.AreEqual(-a2, r2); + + float4x2 a3 = float4x2(196.387573f, 149.660034f, 320.391724f, -359.8338f, 22.0384521f, -159.55426f, 419.822449f, 303.323425f); + float4x2 r3 = float4x2(-196.387573f, -149.660034f, -320.391724f, 359.8338f, -22.0384521f, 159.55426f, -419.822449f, -303.323425f); + TestUtils.AreEqual(-a3, r3); + } + + [TestCompiler] + public static void float4x2_operator_prefix_inc() + { + float4x2 a0 = float4x2(-99.79556f, 458.741821f, 96.1790161f, -48.55246f, -315.728973f, -299.230164f, -323.614868f, -456.8903f); + float4x2 r0 = float4x2(-98.79556f, 459.741821f, 97.1790161f, -47.55246f, -314.728973f, -298.230164f, -322.614868f, -455.8903f); + TestUtils.AreEqual(++a0, r0); + + float4x2 a1 = float4x2(-76.50766f, 64.0965f, 148.679321f, 363.2849f, -115.559235f, -326.8778f, -179.894653f, 339.8766f); + float4x2 r1 = float4x2(-75.50766f, 65.0965f, 149.679321f, 364.2849f, -114.559235f, -325.8778f, -178.894653f, 340.8766f); + TestUtils.AreEqual(++a1, r1); + + float4x2 a2 = float4x2(-38.41043f, 261.625549f, 155.030823f, -396.650238f, 301.3058f, -221.355408f, -429.698151f, -271.2893f); + float4x2 r2 = float4x2(-37.41043f, 262.625549f, 156.030823f, -395.650238f, 302.3058f, -220.355408f, -428.698151f, -270.2893f); + TestUtils.AreEqual(++a2, r2); + + float4x2 a3 = float4x2(-264.380066f, 223.232422f, -71.076355f, -388.2279f, 131.283142f, 22.3049316f, -480.760468f, 200.951782f); + float4x2 r3 = float4x2(-263.380066f, 224.232422f, -70.076355f, -387.2279f, 132.283142f, 23.3049316f, -479.760468f, 201.951782f); + TestUtils.AreEqual(++a3, r3); + } + + [TestCompiler] + public static void float4x2_operator_postfix_inc() + { + float4x2 a0 = float4x2(322.943542f, 472.0525f, 203.48761f, -49.8545837f, -31.4205322f, 455.3366f, 271.454651f, 55.7368774f); + float4x2 r0 = float4x2(322.943542f, 472.0525f, 203.48761f, -49.8545837f, -31.4205322f, 455.3366f, 271.454651f, 55.7368774f); + TestUtils.AreEqual(a0++, r0); + + float4x2 a1 = float4x2(153.7503f, -427.401062f, 215.110229f, 159.861023f, -333.050446f, 241.4649f, 287.220459f, -170.104645f); + float4x2 r1 = float4x2(153.7503f, -427.401062f, 215.110229f, 159.861023f, -333.050446f, 241.4649f, 287.220459f, -170.104645f); + TestUtils.AreEqual(a1++, r1); + + float4x2 a2 = float4x2(-270.652466f, 454.488831f, -449.9273f, 209.522644f, -311.435852f, 69.7314453f, -232.299652f, -341.498535f); + float4x2 r2 = float4x2(-270.652466f, 454.488831f, -449.9273f, 209.522644f, -311.435852f, 69.7314453f, -232.299652f, -341.498535f); + TestUtils.AreEqual(a2++, r2); + + float4x2 a3 = float4x2(188.006592f, 25.5656738f, -463.725647f, 504.448975f, -310.144958f, -117.398468f, 403.508728f, -111.279541f); + float4x2 r3 = float4x2(188.006592f, 25.5656738f, -463.725647f, 504.448975f, -310.144958f, -117.398468f, 403.508728f, -111.279541f); + TestUtils.AreEqual(a3++, r3); + } + + [TestCompiler] + public static void float4x2_operator_prefix_dec() + { + float4x2 a0 = float4x2(-416.201233f, -96.63788f, -50.14566f, -207.316437f, 439.479065f, -304.400818f, 337.968933f, 246.088989f); + float4x2 r0 = float4x2(-417.201233f, -97.63788f, -51.14566f, -208.316437f, 438.479065f, -305.400818f, 336.968933f, 245.088989f); + TestUtils.AreEqual(--a0, r0); + + float4x2 a1 = float4x2(171.964539f, 298.2848f, 326.5078f, 400.7209f, -478.031372f, -326.452972f, -24.5845032f, 112.796875f); + float4x2 r1 = float4x2(170.964539f, 297.2848f, 325.5078f, 399.7209f, -479.031372f, -327.452972f, -25.5845032f, 111.796875f); + TestUtils.AreEqual(--a1, r1); + + float4x2 a2 = float4x2(-341.9763f, -79.6352539f, -131.00415f, 147.893677f, -15.7086487f, 188.758423f, 307.791931f, -406.667725f); + float4x2 r2 = float4x2(-342.9763f, -80.6352539f, -132.00415f, 146.893677f, -16.7086487f, 187.758423f, 306.791931f, -407.667725f); + TestUtils.AreEqual(--a2, r2); + + float4x2 a3 = float4x2(181.4751f, -505.2157f, -372.241943f, -4.031769f, 83.76776f, -30.6314087f, -436.906555f, -51.668396f); + float4x2 r3 = float4x2(180.4751f, -506.2157f, -373.241943f, -5.031769f, 82.76776f, -31.6314087f, -437.906555f, -52.668396f); + TestUtils.AreEqual(--a3, r3); + } + + [TestCompiler] + public static void float4x2_operator_postfix_dec() + { + float4x2 a0 = float4x2(-376.5924f, 16.9697266f, -0.2506714f, -202.323273f, 409.557556f, 47.85663f, -281.1117f, -262.0626f); + float4x2 r0 = float4x2(-376.5924f, 16.9697266f, -0.2506714f, -202.323273f, 409.557556f, 47.85663f, -281.1117f, -262.0626f); + TestUtils.AreEqual(a0--, r0); + + float4x2 a1 = float4x2(-182.405731f, -129.232666f, -332.154968f, -261.0089f, 205.461121f, -230.227783f, -483.066528f, 378.641235f); + float4x2 r1 = float4x2(-182.405731f, -129.232666f, -332.154968f, -261.0089f, 205.461121f, -230.227783f, -483.066528f, 378.641235f); + TestUtils.AreEqual(a1--, r1); + + float4x2 a2 = float4x2(487.344849f, -357.0542f, -396.302063f, 279.424255f, 115.867737f, -20.8232117f, 323.4054f, 379.156128f); + float4x2 r2 = float4x2(487.344849f, -357.0542f, -396.302063f, 279.424255f, 115.867737f, -20.8232117f, 323.4054f, 379.156128f); + TestUtils.AreEqual(a2--, r2); + + float4x2 a3 = float4x2(311.299f, -428.2567f, -425.2884f, -194.6413f, -258.848358f, -208.985779f, -313.4259f, 178.3125f); + float4x2 r3 = float4x2(311.299f, -428.2567f, -425.2884f, -194.6413f, -258.848358f, -208.985779f, -313.4259f, 178.3125f); + TestUtils.AreEqual(a3--, r3); + } + + + } +} diff --git a/package/Tests/Tests/Shared/TestFloat4x2.gen.cs.meta b/package/Tests/Tests/Shared/TestFloat4x2.gen.cs.meta new file mode 100755 index 000000000..bc296688f --- /dev/null +++ b/package/Tests/Tests/Shared/TestFloat4x2.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 24d6c72f4a165e342afb784bad62cab5 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/package/Tests/Tests/Shared/TestFloat4x3.gen.cs b/package/Tests/Tests/Shared/TestFloat4x3.gen.cs new file mode 100755 index 000000000..1c9dfc57c --- /dev/null +++ b/package/Tests/Tests/Shared/TestFloat4x3.gen.cs @@ -0,0 +1,949 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using NUnit.Framework; +using static Unity.Mathematics.math; +using Burst.Compiler.IL.Tests; + +namespace Unity.Mathematics.Tests +{ + [TestFixture] + public class TestFloat4x3 + { + [TestCompiler] + public static void float4x3_zero() + { + TestUtils.AreEqual(float4x3.zero.c0.x, 0.0f); + TestUtils.AreEqual(float4x3.zero.c0.y, 0.0f); + TestUtils.AreEqual(float4x3.zero.c0.z, 0.0f); + TestUtils.AreEqual(float4x3.zero.c0.w, 0.0f); + TestUtils.AreEqual(float4x3.zero.c1.x, 0.0f); + TestUtils.AreEqual(float4x3.zero.c1.y, 0.0f); + TestUtils.AreEqual(float4x3.zero.c1.z, 0.0f); + TestUtils.AreEqual(float4x3.zero.c1.w, 0.0f); + TestUtils.AreEqual(float4x3.zero.c2.x, 0.0f); + TestUtils.AreEqual(float4x3.zero.c2.y, 0.0f); + TestUtils.AreEqual(float4x3.zero.c2.z, 0.0f); + TestUtils.AreEqual(float4x3.zero.c2.w, 0.0f); + } + + [TestCompiler] + public static void float4x3_operator_equal_wide_wide() + { + float4x3 a0 = float4x3(-135.18924f, -49.0941162f, 169.129822f, 240.8053f, 314.7392f, 442.393f, 177.924438f, 335.5334f, 168.15448f, 350.729553f, 367.178467f, 46.9414673f); + float4x3 b0 = float4x3(-220.014648f, 66.98004f, 499.2016f, -371.1131f, 208.448669f, 390.8037f, -72.44382f, 362.97644f, 194.678345f, 471.644836f, -404.044678f, -144.696747f); + bool4x3 r0 = bool4x3(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + float4x3 a1 = float4x3(188.76416f, -97.2113953f, -293.320984f, -234.822937f, 417.0337f, 26.3864136f, 269.245728f, 29.4741821f, 479.485229f, -237.230957f, -221.9837f, -506.672546f); + float4x3 b1 = float4x3(-494.446655f, -252.970367f, 234.417114f, 398.724f, 260.4287f, 370.144226f, 89.579834f, -434.816833f, -109.845337f, 336.973022f, -409.154968f, 500.387573f); + bool4x3 r1 = bool4x3(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + float4x3 a2 = float4x3(-22.98944f, 487.260864f, -419.731964f, 337.2033f, 245.043884f, 390.215881f, 84.4129639f, 434.2079f, -68.7284241f, 485.769958f, 413.169739f, -418.2693f); + float4x3 b2 = float4x3(-174.081818f, 395.101135f, 350.3393f, -243.144592f, -416.397369f, 151.576477f, -18.2243347f, -431.677917f, -468.330963f, 429.495728f, 477.389221f, -433.4254f); + bool4x3 r2 = bool4x3(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + float4x3 a3 = float4x3(-346.795868f, 504.159668f, 345.186279f, -434.713043f, -499.7741f, 282.019043f, 259.15625f, 306.455933f, 435.2254f, -386.8997f, 211.364014f, -7.229828f); + float4x3 b3 = float4x3(273.5464f, -34.9762268f, 221.968445f, 85.91913f, -85.59894f, 392.7608f, -117.924072f, -445.3056f, -242.468964f, 173.643066f, 389.897766f, -14.2904663f); + bool4x3 r3 = bool4x3(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void float4x3_operator_equal_wide_scalar() + { + float4x3 a0 = float4x3(65.6712f, 404.415527f, -269.730164f, 83.6306152f, 152.9945f, -155.868286f, 314.671265f, 386.365173f, 290.04895f, -132.6352f, -65.66748f, -69.68326f); + float b0 = (-155.815765f); + bool4x3 r0 = bool4x3(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + float4x3 a1 = float4x3(-191.190765f, -232.895691f, -319.144043f, -49.70108f, -300.8819f, 333.396851f, 386.3775f, -296.7019f, -309.1172f, 141.542358f, -227.323334f, 83.87286f); + float b1 = (186.845215f); + bool4x3 r1 = bool4x3(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + float4x3 a2 = float4x3(-410.91687f, -390.103577f, 36.57434f, -427.541443f, -268.170837f, 175.8117f, -193.47995f, 291.051941f, 423.97168f, -429.8739f, -275.156952f, -56.3323669f); + float b2 = (110.501282f); + bool4x3 r2 = bool4x3(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + float4x3 a3 = float4x3(-95.83597f, 253.006165f, -300.509521f, 314.866516f, 195.616211f, -26.1289063f, -284.7747f, -242.672058f, 140.3606f, 505.644348f, 506.537964f, -502.3698f); + float b3 = (-124.865326f); + bool4x3 r3 = bool4x3(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void float4x3_operator_equal_scalar_wide() + { + float a0 = (36.38391f); + float4x3 b0 = float4x3(-400.4892f, -71.2868347f, 156.978088f, -225.238739f, 499.141785f, -211.979919f, 428.311951f, -489.501343f, -5.691559f, -30.8659363f, -362.9831f, 184.503174f); + bool4x3 r0 = bool4x3(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + float a1 = (-160.470612f); + float4x3 b1 = float4x3(316.668823f, 390.369263f, 505.1051f, -294.6487f, 443.1991f, 96.5592651f, -257.012939f, -245.054962f, 326.464844f, -23.9599f, -168.694885f, 386.2486f); + bool4x3 r1 = bool4x3(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + float a2 = (-227.090637f); + float4x3 b2 = float4x3(-336.612427f, 365.108154f, -405.390839f, -473.995483f, 298.435364f, -149.86322f, 450.0664f, 153.47644f, 56.28778f, 39.3421021f, -350.403717f, -482.717224f); + bool4x3 r2 = bool4x3(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + float a3 = (239.9654f); + float4x3 b3 = float4x3(-3.40603638f, -1.49484253f, 105.960449f, 151.537537f, 63.2832031f, -289.693176f, 137.553772f, -247.666473f, -339.420563f, 23.2382813f, 21.1778564f, 477.03656f); + bool4x3 r3 = bool4x3(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void float4x3_operator_not_equal_wide_wide() + { + float4x3 a0 = float4x3(279.994141f, -43.34201f, -465.724731f, 317.466553f, 85.7149658f, 360.8905f, 366.081543f, 154.542847f, 332.4262f, 397.11322f, -431.374969f, 489.0108f); + float4x3 b0 = float4x3(-460.9121f, -476.009033f, 468.1364f, -341.012543f, -62.65805f, -458.801666f, -457.730225f, -59.5232544f, 3.024231f, 155.812744f, -19.8399048f, -6.01693726f); + bool4x3 r0 = bool4x3(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + float4x3 a1 = float4x3(398.4336f, -489.817932f, 171.4049f, -67.82968f, -192.278717f, 227.84082f, 62.1381836f, 262.186462f, -404.0531f, 34.449585f, -204.795776f, -285.4118f); + float4x3 b1 = float4x3(-406.207916f, -102.420715f, -40.362915f, 452.6754f, 93.25757f, -258.378052f, -184.0498f, -379.2353f, -370.687317f, -255.947235f, 29.0557861f, 322.407654f); + bool4x3 r1 = bool4x3(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + float4x3 a2 = float4x3(-72.20682f, 444.749268f, 238.81781f, 365.1801f, -437.9229f, -362.442627f, 445.954346f, -0.417480469f, -506.828369f, 245.477051f, -173.571045f, 390.338562f); + float4x3 b2 = float4x3(415.071716f, -467.726135f, -433.784668f, -212.165924f, 474.674927f, 452.483215f, -92.11273f, -385.9221f, 420.2151f, -239.176056f, -99.0791f, 4.476013f); + bool4x3 r2 = bool4x3(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + float4x3 a3 = float4x3(252.837769f, 47.8658447f, 457.7105f, -313.22113f, 391.203857f, 481.786133f, 26.8878174f, -298.1424f, 240.077454f, -332.455139f, -333.607178f, -313.1897f); + float4x3 b3 = float4x3(264.348572f, 451.312317f, 232.958008f, -142.6222f, -300.2256f, 268.333252f, -112.103546f, -270.494019f, -71.9932251f, 99.46326f, 321.7033f, 200.059631f); + bool4x3 r3 = bool4x3(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void float4x3_operator_not_equal_wide_scalar() + { + float4x3 a0 = float4x3(-155.4411f, -19.4266052f, 174.633057f, 507.920715f, 59.177063f, 171.151489f, -58.92328f, -398.176849f, 492.20105f, -165.241516f, 270.341f, -380.243256f); + float b0 = (-393.413544f); + bool4x3 r0 = bool4x3(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + float4x3 a1 = float4x3(501.899048f, 458.400452f, 46.7709961f, 161.459961f, 261.514221f, -145.6124f, -0.449920654f, 350.461426f, 202.221008f, 242.664f, 382.677063f, -468.967957f); + float b1 = (-134.345459f); + bool4x3 r1 = bool4x3(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + float4x3 a2 = float4x3(-497.459473f, -328.587769f, -506.490326f, 449.348145f, 210.771f, 249.181824f, -338.468536f, 229.670654f, -76.5433044f, 317.286072f, 401.939575f, 210.984863f); + float b2 = (-80.93225f); + bool4x3 r2 = bool4x3(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + float4x3 a3 = float4x3(-147.096313f, 207.731384f, 284.3921f, -509.0853f, 414.307617f, -52.2944641f, -140.437927f, -316.787781f, -358.696838f, 312.31897f, 270.629456f, -140.016724f); + float b3 = (-193.399048f); + bool4x3 r3 = bool4x3(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void float4x3_operator_not_equal_scalar_wide() + { + float a0 = (478.353149f); + float4x3 b0 = float4x3(459.553223f, 436.453247f, -488.714172f, 392.767944f, -266.736633f, 338.557861f, -338.100128f, -152.314545f, -452.820679f, 209.439331f, 50.10797f, 372.4344f); + bool4x3 r0 = bool4x3(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + float a1 = (-488.0213f); + float4x3 b1 = float4x3(489.740784f, 270.4001f, -472.846771f, -286.850464f, -384.691864f, 443.423523f, 358.7472f, -15.4140625f, -342.179169f, 468.967529f, -130.568085f, 401.785828f); + bool4x3 r1 = bool4x3(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + float a2 = (-268.352264f); + float4x3 b2 = float4x3(-239.231018f, 411.386536f, 139.769348f, 334.522034f, -223.629242f, -12.4884644f, 113.468872f, -189.652252f, -212.846558f, 306.1256f, -178.330383f, 382.141968f); + bool4x3 r2 = bool4x3(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + float a3 = (-340.8656f); + float4x3 b3 = float4x3(-17.58023f, -409.874847f, -349.70166f, 275.8543f, -229.371948f, -127.505737f, 90.75342f, -422.087128f, -2.44754028f, -280.5517f, -484.374359f, -33.7634277f); + bool4x3 r3 = bool4x3(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void float4x3_operator_less_wide_wide() + { + float4x3 a0 = float4x3(51.7102661f, -313.85556f, 283.047668f, 235.021912f, 44.07837f, -207.255676f, 3.38293457f, -144.301331f, -69.3696f, -135.667969f, -194.787354f, -33.473877f); + float4x3 b0 = float4x3(-261.835236f, -19.81073f, -149.25882f, 205.99823f, -306.024384f, 102.121704f, 231.906311f, 179.49884f, 473.2249f, 15.8916626f, 270.049927f, 490.914f); + bool4x3 r0 = bool4x3(false, true, false, false, false, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 < b0, r0); + + float4x3 a1 = float4x3(-19.67508f, 423.237976f, -71.6983f, -501.886f, 7.64386f, 302.262878f, -140.5505f, -436.5867f, -351.4417f, 364.970825f, 301.8941f, 407.550964f); + float4x3 b1 = float4x3(-185.734131f, 76.4331055f, 97.75232f, 419.300781f, 73.953186f, 481.032349f, 7.00744629f, -7.32409668f, -413.075745f, -154.1189f, 449.202881f, 502.014282f); + bool4x3 r1 = bool4x3(false, false, true, true, true, true, true, true, false, false, true, true); + TestUtils.AreEqual(a1 < b1, r1); + + float4x3 a2 = float4x3(269.1078f, 462.98822f, 223.884155f, -287.18924f, 283.6386f, 511.864319f, -60.4967957f, -234.303467f, -316.1384f, -417.522156f, 441.643433f, -191.950623f); + float4x3 b2 = float4x3(-382.315857f, 251.535156f, 143.17395f, 293.660339f, -292.769562f, -43.2182f, -353.4112f, 458.32605f, -114.556458f, 441.429749f, -113.333679f, 435.622925f); + bool4x3 r2 = bool4x3(false, false, false, true, false, false, false, true, true, true, false, true); + TestUtils.AreEqual(a2 < b2, r2); + + float4x3 a3 = float4x3(397.811584f, -144.666626f, 417.079041f, -322.980133f, -81.2850952f, 319.325317f, 146.764038f, -316.583374f, -150.857544f, -314.606323f, 7.14312744f, -458.8273f); + float4x3 b3 = float4x3(383.656128f, -293.7116f, -391.35498f, 43.12201f, 433.223633f, -201.382446f, -241.421173f, 376.469849f, -503.39743f, -359.780945f, 118.631531f, -510.030518f); + bool4x3 r3 = bool4x3(false, false, false, true, true, false, false, true, false, false, true, false); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void float4x3_operator_less_wide_scalar() + { + float4x3 a0 = float4x3(-221.869781f, -121.546478f, -97.5239258f, 479.8811f, 67.11902f, 137.3288f, 282.9666f, 258.2791f, -111.413147f, -288.081116f, 82.6654053f, -361.6429f); + float b0 = (199.0675f); + bool4x3 r0 = bool4x3(true, true, true, false, true, true, false, false, true, true, true, true); + TestUtils.AreEqual(a0 < b0, r0); + + float4x3 a1 = float4x3(-68.0881958f, -66.703064f, -78.76297f, 25.7277222f, 101.37085f, -330.442657f, -48.9205322f, 359.604431f, -8.150085f, 241.2768f, -183.437775f, 423.027161f); + float b1 = (12.7880249f); + bool4x3 r1 = bool4x3(true, true, true, false, false, true, true, false, true, false, true, false); + TestUtils.AreEqual(a1 < b1, r1); + + float4x3 a2 = float4x3(-334.622742f, 300.410156f, 297.925232f, -492.108154f, -395.807251f, 95.78882f, -220.62146f, -455.37558f, 360.291565f, -296.372131f, 272.488342f, 360.207947f); + float b2 = (-98.31558f); + bool4x3 r2 = bool4x3(true, false, false, true, true, false, true, true, false, true, false, false); + TestUtils.AreEqual(a2 < b2, r2); + + float4x3 a3 = float4x3(389.727417f, -400.615234f, -85.46912f, -467.702148f, -51.38788f, 201.764648f, -47.8412781f, -180.740051f, -409.0157f, 229.699036f, 176.197876f, -410.45517f); + float b3 = (68.7366943f); + bool4x3 r3 = bool4x3(false, true, true, true, true, false, true, true, true, false, false, true); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void float4x3_operator_less_scalar_wide() + { + float a0 = (-250.484924f); + float4x3 b0 = float4x3(-377.196533f, -505.147552f, 375.9267f, 110.17395f, -118.097565f, -40.4508972f, -299.744324f, 31.4371338f, -458.904541f, 13.6846924f, -458.5069f, 248.276489f); + bool4x3 r0 = bool4x3(false, false, true, true, true, true, false, true, false, true, false, true); + TestUtils.AreEqual(a0 < b0, r0); + + float a1 = (389.231445f); + float4x3 b1 = float4x3(488.745544f, -221.637878f, -424.2672f, 249.059021f, -22.1361389f, -442.247742f, -340.857544f, -95.1117249f, 15.4094238f, 87.29248f, 495.067627f, 316.0185f); + bool4x3 r1 = bool4x3(true, false, false, false, false, false, false, false, false, false, true, false); + TestUtils.AreEqual(a1 < b1, r1); + + float a2 = (-125.568115f); + float4x3 b2 = float4x3(122.164795f, 96.75537f, -228.906342f, -143.9527f, -230.238281f, -327.6126f, 103.39801f, 434.488831f, -157.4502f, 190.572144f, 108.2583f, 132.550781f); + bool4x3 r2 = bool4x3(true, true, false, false, false, false, true, true, false, true, true, true); + TestUtils.AreEqual(a2 < b2, r2); + + float a3 = (-431.515228f); + float4x3 b3 = float4x3(-192.203522f, -431.835f, -85.58124f, 328.670532f, 273.577881f, -178.669067f, 352.6363f, -82.6058044f, 238.908875f, 291.335327f, 183.357361f, -185.0326f); + bool4x3 r3 = bool4x3(true, false, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void float4x3_operator_greater_wide_wide() + { + float4x3 a0 = float4x3(-229.29068f, 505.536621f, -73.80707f, 100.292053f, -419.214783f, -159.559753f, -396.770355f, 127.037415f, 489.1399f, 51.9188843f, 155.384766f, -135.631653f); + float4x3 b0 = float4x3(-445.845032f, -420.035278f, 299.0244f, -13.8809814f, 151.5617f, -163.50943f, -391.096039f, 479.283752f, -77.6748657f, -46.584198f, -415.377f, 71.46698f); + bool4x3 r0 = bool4x3(true, true, false, true, false, true, false, false, true, true, true, false); + TestUtils.AreEqual(a0 > b0, r0); + + float4x3 a1 = float4x3(-425.978149f, -228.430511f, 383.03833f, 136.533569f, 8.602417f, -251.324371f, -345.954926f, -170.565918f, -293.2544f, 139.125f, 214.3031f, 238.7699f); + float4x3 b1 = float4x3(-206.061035f, 360.8363f, 236.968811f, 14.550354f, 364.735168f, -159.06131f, 226.631165f, 182.796021f, 341.839355f, -79.13046f, -247.296814f, 164.589111f); + bool4x3 r1 = bool4x3(false, false, true, true, false, false, false, false, false, true, true, true); + TestUtils.AreEqual(a1 > b1, r1); + + float4x3 a2 = float4x3(105.535217f, -170.9253f, 26.9802246f, -188.928314f, 201.786621f, -506.057159f, 15.454895f, 115.080688f, -496.971832f, 339.888123f, 372.228333f, 313.2387f); + float4x3 b2 = float4x3(-352.1598f, 9.822632f, 186.721619f, -325.913635f, -77.93036f, -379.746033f, 251.45575f, -144.183563f, 337.8899f, -249.505554f, -225.9013f, -249.491272f); + bool4x3 r2 = bool4x3(true, false, false, true, true, false, false, true, false, true, true, true); + TestUtils.AreEqual(a2 > b2, r2); + + float4x3 a3 = float4x3(-419.108948f, -265.329773f, -42.5019836f, 369.163879f, 67.16907f, -256.6989f, -104.105927f, 499.570129f, 41.6635132f, 151.1521f, 220.688354f, -344.658875f); + float4x3 b3 = float4x3(381.122864f, 325.5454f, 455.49884f, 333.318665f, 118.980347f, 223.19812f, -385.289063f, 333.8808f, -437.4107f, 243.975464f, -302.8199f, -32.7101746f); + bool4x3 r3 = bool4x3(false, false, false, true, false, false, true, true, true, false, true, false); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void float4x3_operator_greater_wide_scalar() + { + float4x3 a0 = float4x3(11.156311f, -411.023224f, 385.885559f, -485.103058f, -491.180023f, 405.175354f, 173.575073f, 69.26929f, 501.306824f, -367.027771f, -86.12451f, -489.090576f); + float b0 = (-302.816956f); + bool4x3 r0 = bool4x3(true, false, true, false, false, true, true, true, true, false, true, false); + TestUtils.AreEqual(a0 > b0, r0); + + float4x3 a1 = float4x3(-172.518158f, -236.414948f, -238.8945f, -27.2391357f, 471.779358f, 240.164551f, -481.4781f, 185.59436f, 33.29474f, -510.228149f, -183.2862f, -386.127655f); + float b1 = (-18.1496277f); + bool4x3 r1 = bool4x3(false, false, false, false, true, true, false, true, true, false, false, false); + TestUtils.AreEqual(a1 > b1, r1); + + float4x3 a2 = float4x3(-13.6382141f, -261.865967f, 52.24951f, 16.3232422f, -410.5101f, -262.2675f, -458.255981f, -218.866119f, -34.6923523f, 290.573059f, 180.2633f, -482.863953f); + float b2 = (-7.34790039f); + bool4x3 r2 = bool4x3(false, false, true, true, false, false, false, false, false, true, true, false); + TestUtils.AreEqual(a2 > b2, r2); + + float4x3 a3 = float4x3(100.7063f, 501.319763f, -289.280975f, -25.8497f, 455.1624f, -63.3173523f, -17.4467773f, 53.01776f, 88.81958f, 182.357971f, -428.927216f, 408.336853f); + float b3 = (180.672546f); + bool4x3 r3 = bool4x3(false, true, false, false, true, false, false, false, false, true, false, true); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void float4x3_operator_greater_scalar_wide() + { + float a0 = (453.546082f); + float4x3 b0 = float4x3(-226.2044f, -423.465f, 409.405518f, 453.877075f, 87.47571f, 113.795593f, 176.409241f, -140.440033f, -182.48288f, -158.2933f, -162.685333f, -193.328674f); + bool4x3 r0 = bool4x3(true, true, true, false, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 > b0, r0); + + float a1 = (230.181274f); + float4x3 b1 = float4x3(-102.58783f, 392.520569f, -177.478668f, -10.2950134f, -24.04895f, 172.448669f, 374.048035f, -368.99762f, -210.195282f, 149.470215f, -281.343262f, -100.469177f); + bool4x3 r1 = bool4x3(true, false, true, true, true, true, false, true, true, true, true, true); + TestUtils.AreEqual(a1 > b1, r1); + + float a2 = (304.864441f); + float4x3 b2 = float4x3(-361.524841f, -372.452362f, -33.9095459f, -69.5952759f, -460.4324f, -309.341675f, 486.131531f, 471.920959f, 479.361572f, -107.004181f, 331.636536f, -340.840149f); + bool4x3 r2 = bool4x3(true, true, true, true, true, true, false, false, false, true, false, true); + TestUtils.AreEqual(a2 > b2, r2); + + float a3 = (-384.2146f); + float4x3 b3 = float4x3(-451.726563f, 467.97876f, -236.569122f, 44.6547241f, -285.797852f, 42.730957f, 338.18512f, 274.017029f, -108.60437f, -211.37326f, -19.00415f, 194.114685f); + bool4x3 r3 = bool4x3(true, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void float4x3_operator_less_equal_wide_wide() + { + float4x3 a0 = float4x3(240.090515f, 462.213135f, 293.08252f, -427.870667f, -405.5227f, 204.591919f, 294.6701f, -327.564453f, -456.12326f, 282.30127f, 421.881165f, -311.71283f); + float4x3 b0 = float4x3(-81.20383f, 493.637451f, -411.4721f, 99.16443f, -295.6677f, -480.462555f, 74.41406f, 260.916138f, 306.173279f, 139.564819f, -505.752472f, -489.6268f); + bool4x3 r0 = bool4x3(false, true, false, true, true, false, false, true, true, false, false, false); + TestUtils.AreEqual(a0 <= b0, r0); + + float4x3 a1 = float4x3(84.5675049f, 447.244629f, -154.494354f, -424.364746f, 36.68451f, 267.0703f, 307.893921f, -351.760132f, -157.360352f, 152.709045f, 372.267151f, 202.368286f); + float4x3 b1 = float4x3(-280.0326f, 303.1599f, 511.1902f, -104.659729f, 95.14661f, -125.636353f, 376.2398f, -415.774719f, -47.48105f, 117.722107f, 469.378357f, -263.042358f); + bool4x3 r1 = bool4x3(false, false, true, true, true, false, true, false, true, false, true, false); + TestUtils.AreEqual(a1 <= b1, r1); + + float4x3 a2 = float4x3(-77.04346f, 438.1848f, 260.282349f, 386.034058f, -281.491f, -102.930054f, -346.716736f, -258.3412f, -383.302948f, -5.14703369f, 319.34375f, 465.022217f); + float4x3 b2 = float4x3(-216.002319f, 66.73425f, 99.21863f, 233.843018f, 439.839966f, 61.1151123f, -219.030579f, -404.7129f, -202.748352f, -312.476471f, 310.0719f, -320.363037f); + bool4x3 r2 = bool4x3(false, false, false, false, true, true, true, false, true, false, false, false); + TestUtils.AreEqual(a2 <= b2, r2); + + float4x3 a3 = float4x3(145.933472f, -215.074829f, -146.461517f, -349.893982f, 29.5991211f, -131.796631f, -438.9947f, 147.057922f, 221.112488f, -356.145355f, -32.83017f, 442.942017f); + float4x3 b3 = float4x3(186.075989f, -42.6377869f, 82.56506f, 127.189087f, 198.286987f, -450.492035f, 20.901001f, 449.465881f, -478.7727f, 380.053955f, 99.1247559f, -450.329773f); + bool4x3 r3 = bool4x3(true, true, true, true, true, false, true, true, false, true, true, false); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void float4x3_operator_less_equal_wide_scalar() + { + float4x3 a0 = float4x3(309.192444f, 69.67377f, -101.724182f, -315.9724f, -346.011047f, 424.15387f, -410.870056f, -483.902649f, 183.821167f, 320.4425f, -257.870056f, -386.801758f); + float b0 = (292.924255f); + bool4x3 r0 = bool4x3(false, true, true, true, true, false, true, true, true, false, true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + float4x3 a1 = float4x3(-182.938812f, 485.311584f, 373.5691f, 259.1515f, 450.130066f, -128.525543f, -43.8748779f, 457.385742f, -77.6383057f, 479.451843f, -499.516449f, -398.132935f); + float b1 = (349.250122f); + bool4x3 r1 = bool4x3(true, false, false, true, false, true, true, false, true, false, true, true); + TestUtils.AreEqual(a1 <= b1, r1); + + float4x3 a2 = float4x3(402.484863f, -502.1736f, 125.950806f, -54.49362f, 250.667419f, 97.94293f, 228.021545f, -213.378662f, 42.2608032f, -24.8275757f, -451.0416f, 429.577576f); + float b2 = (87.91608f); + bool4x3 r2 = bool4x3(false, true, false, true, false, false, false, true, true, true, true, false); + TestUtils.AreEqual(a2 <= b2, r2); + + float4x3 a3 = float4x3(-308.4343f, -279.4071f, 181.672241f, -290.148743f, -184.844086f, 447.6939f, 168.8866f, 26.3789673f, 392.558533f, 255.604858f, 162.163452f, 195.496277f); + float b3 = (355.160339f); + bool4x3 r3 = bool4x3(true, true, true, true, true, false, true, true, false, true, true, true); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void float4x3_operator_less_equal_scalar_wide() + { + float a0 = (-511.152374f); + float4x3 b0 = float4x3(51.1589966f, 340.443665f, 312.81427f, 354.1925f, 136.396729f, -94.76788f, 288.5443f, 304.042847f, -148.618073f, -506.3001f, 27.5812378f, 48.47113f); + bool4x3 r0 = bool4x3(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + float a1 = (104.883484f); + float4x3 b1 = float4x3(-488.685852f, -480.435181f, 421.936646f, 239.721069f, -101.018433f, -283.951477f, -55.24353f, -455.80484f, 131.107239f, -461.6988f, -388.482849f, -258.936035f); + bool4x3 r1 = bool4x3(false, false, true, true, false, false, false, false, true, false, false, false); + TestUtils.AreEqual(a1 <= b1, r1); + + float a2 = (-225.223541f); + float4x3 b2 = float4x3(-116.019989f, -442.595245f, 297.333374f, 36.6872559f, 485.097839f, 344.445679f, 237.592163f, 230.390869f, -413.9848f, -215.901672f, 39.5603638f, 22.947998f); + bool4x3 r2 = bool4x3(true, false, true, true, true, true, true, true, false, true, true, true); + TestUtils.AreEqual(a2 <= b2, r2); + + float a3 = (-162.060577f); + float4x3 b3 = float4x3(236.7337f, -253.951965f, -204.719086f, -161.616547f, -64.3859253f, -229.815643f, -484.825653f, -135.040436f, 351.694763f, 111.825378f, -249.982544f, 435.8073f); + bool4x3 r3 = bool4x3(true, false, false, true, true, false, false, true, true, true, false, true); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void float4x3_operator_greater_equal_wide_wide() + { + float4x3 a0 = float4x3(-386.5918f, -157.120789f, 391.015259f, -511.886871f, -5.42202759f, 287.645264f, -122.535187f, 7.48144531f, 152.946411f, 48.9862061f, 57.3381348f, 300.4649f); + float4x3 b0 = float4x3(153.443f, 49.8924561f, 78.02582f, 138.813721f, -225.51059f, -339.3561f, -373.302063f, 364.9359f, -322.7154f, 125.47821f, -25.77658f, 297.518921f); + bool4x3 r0 = bool4x3(false, false, true, false, true, true, true, false, true, false, true, true); + TestUtils.AreEqual(a0 >= b0, r0); + + float4x3 a1 = float4x3(349.25708f, 85.7496948f, -230.953308f, 418.711243f, -131.039917f, -126.512207f, -156.818481f, 422.3775f, -413.089325f, 219.442749f, 35.5911255f, 447.181519f); + float4x3 b1 = float4x3(73.22235f, 462.783752f, 393.191345f, -95.0014343f, 381.357056f, 93.03192f, 254.253235f, 90.67279f, 348.938171f, 161.337646f, 79.43561f, 420.243469f); + bool4x3 r1 = bool4x3(true, false, false, true, false, false, false, true, false, true, false, true); + TestUtils.AreEqual(a1 >= b1, r1); + + float4x3 a2 = float4x3(-223.492981f, 302.123f, 459.852722f, -347.128021f, 364.9781f, 212.635437f, 504.276062f, -142.232971f, -132.2218f, 303.683777f, 265.210144f, 9.754395f); + float4x3 b2 = float4x3(453.684875f, -154.011658f, -97.29007f, 151.184753f, 57.36029f, -194.207092f, -462.670624f, 113.3866f, -129.3533f, 8.107788f, 426.449524f, 410.693176f); + bool4x3 r2 = bool4x3(false, true, true, false, true, true, true, false, false, true, false, false); + TestUtils.AreEqual(a2 >= b2, r2); + + float4x3 a3 = float4x3(-233.0929f, 26.5675049f, 266.7807f, -250.072235f, 138.040833f, 174.276733f, -420.931641f, -42.8541565f, 216.485046f, 240.053833f, -470.382172f, 98.39673f); + float4x3 b3 = float4x3(470.313416f, 220.399963f, -372.872681f, -242.178558f, 177.506226f, -172.638153f, 60.72284f, 478.250183f, 234.30304f, 297.821228f, 104.584595f, -462.418732f); + bool4x3 r3 = bool4x3(false, false, true, false, false, true, false, false, false, false, false, true); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void float4x3_operator_greater_equal_wide_scalar() + { + float4x3 a0 = float4x3(495.4574f, -14.3451233f, -463.4748f, 217.517517f, -246.865723f, -377.6587f, 53.8151245f, -123.332947f, -221.505463f, 252.994324f, -116.440369f, -395.3633f); + float b0 = (189.205139f); + bool4x3 r0 = bool4x3(true, false, false, true, false, false, false, false, false, true, false, false); + TestUtils.AreEqual(a0 >= b0, r0); + + float4x3 a1 = float4x3(164.772583f, 355.837036f, 184.195557f, 273.012268f, -418.1424f, 249.3841f, 396.392151f, 332.6654f, 243.761414f, -335.12146f, -302.0869f, 254.442261f); + float b1 = (-287.007324f); + bool4x3 r1 = bool4x3(true, true, true, true, false, true, true, true, true, false, false, true); + TestUtils.AreEqual(a1 >= b1, r1); + + float4x3 a2 = float4x3(179.005066f, -331.271667f, 307.890564f, -388.578522f, 150.605774f, -219.892578f, -491.681f, 30.99707f, 199.232239f, -74.50003f, -343.386475f, 216.031555f); + float b2 = (71.1767f); + bool4x3 r2 = bool4x3(true, false, true, false, true, false, false, false, true, false, false, true); + TestUtils.AreEqual(a2 >= b2, r2); + + float4x3 a3 = float4x3(-420.403137f, -336.6411f, 317.0946f, -262.424927f, -228.411255f, 123.465454f, 264.102478f, 223.623352f, 440.5354f, -420.727f, 74.8443f, -177.077881f); + float b3 = (-78.38403f); + bool4x3 r3 = bool4x3(false, false, true, false, false, true, true, true, true, false, true, false); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void float4x3_operator_greater_equal_scalar_wide() + { + float a0 = (215.435364f); + float4x3 b0 = float4x3(204.802979f, -101.104034f, -122.055023f, -70.45615f, -239.62027f, -185.992737f, -455.612579f, 276.665833f, 79.39917f, 416.420532f, 379.2735f, -439.5147f); + bool4x3 r0 = bool4x3(true, true, true, true, true, true, true, false, true, false, false, true); + TestUtils.AreEqual(a0 >= b0, r0); + + float a1 = (67.14099f); + float4x3 b1 = float4x3(-74.56064f, -367.256348f, 494.950745f, -61.2355347f, -429.170258f, -213.824677f, -264.310181f, 243.11377f, -22.38388f, 304.862f, -323.686157f, 67.93805f); + bool4x3 r1 = bool4x3(true, true, false, true, true, true, true, false, true, false, true, false); + TestUtils.AreEqual(a1 >= b1, r1); + + float a2 = (125.303589f); + float4x3 b2 = float4x3(-400.47052f, -283.159637f, -42.31961f, -429.510376f, 499.395874f, -289.963074f, -136.008789f, -351.125244f, -381.8183f, 393.3009f, 18.02362f, -169.92392f); + bool4x3 r2 = bool4x3(true, true, true, true, false, true, true, true, true, false, true, true); + TestUtils.AreEqual(a2 >= b2, r2); + + float a3 = (-285.884949f); + float4x3 b3 = float4x3(163.7511f, 191.855347f, 114.0155f, -395.98584f, 189.366577f, 176.19812f, 61.7138062f, 507.548462f, 224.043823f, -422.9937f, -127.054993f, 95.5286255f); + bool4x3 r3 = bool4x3(false, false, false, true, false, false, false, false, false, true, false, false); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void float4x3_operator_add_wide_wide() + { + float4x3 a0 = float4x3(465.148376f, 278.9107f, -277.5299f, -65.1972046f, -473.324371f, -4.69555664f, -470.536774f, -109.9501f, -178.701447f, -420.033783f, 290.711121f, -446.529633f); + float4x3 b0 = float4x3(483.9944f, -204.07666f, -365.673553f, -509.920868f, -270.6975f, 486.763977f, 267.49176f, 251.642517f, 244.495117f, -78.67575f, 352.2055f, 82.7791748f); + float4x3 r0 = float4x3(949.142761f, 74.8340454f, -643.2035f, -575.118042f, -744.021851f, 482.06842f, -203.045013f, 141.692413f, 65.79367f, -498.709534f, 642.9166f, -363.750458f); + TestUtils.AreEqual(a0 + b0, r0); + + float4x3 a1 = float4x3(491.066467f, -261.1173f, -298.4069f, 502.4286f, 284.5943f, 401.128418f, -36.26349f, -102.949158f, 503.198181f, -384.4291f, -45.22821f, -198.67395f); + float4x3 b1 = float4x3(462.5473f, -405.492f, -428.498322f, -41.87259f, -269.9275f, 75.20447f, -141.913391f, -222.186768f, 41.3057251f, 148.339478f, -177.233124f, -176.51889f); + float4x3 r1 = float4x3(953.6138f, -666.6093f, -726.9052f, 460.556f, 14.6668091f, 476.3329f, -178.17688f, -325.135925f, 544.5039f, -236.08963f, -222.461334f, -375.192841f); + TestUtils.AreEqual(a1 + b1, r1); + + float4x3 a2 = float4x3(-62.8800049f, -79.5522461f, 413.098267f, -100.877594f, 418.524f, -183.143127f, 407.443726f, 300.486023f, -261.126129f, -309.830353f, 378.363342f, -224.094f); + float4x3 b2 = float4x3(492.692444f, 439.043823f, -511.742767f, -399.057129f, -315.868469f, -228.07724f, -171.7052f, 467.17395f, -474.822937f, 311.390747f, 326.8454f, 475.2119f); + float4x3 r2 = float4x3(429.812439f, 359.491577f, -98.6445f, -499.934723f, 102.655518f, -411.220367f, 235.738525f, 767.66f, -735.9491f, 1.56039429f, 705.20874f, 251.11792f); + TestUtils.AreEqual(a2 + b2, r2); + + float4x3 a3 = float4x3(-164.555725f, -69.87393f, 224.634644f, -383.9926f, 149.221252f, 169.388f, 163.053955f, 57.0291138f, 342.950073f, 168.680481f, -470.770264f, -117.630493f); + float4x3 b3 = float4x3(314.152954f, -262.594635f, -82.86911f, 156.299561f, 427.40155f, -279.099365f, -448.615234f, 284.3371f, 288.1856f, -232.39505f, -386.871918f, 162.903381f); + float4x3 r3 = float4x3(149.597229f, -332.468567f, 141.765533f, -227.693054f, 576.6228f, -109.711365f, -285.561279f, 341.3662f, 631.1357f, -63.71457f, -857.6422f, 45.27289f); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void float4x3_operator_add_wide_scalar() + { + float4x3 a0 = float4x3(459.898315f, -447.663361f, -94.43863f, 126.429871f, -36.254364f, -349.6413f, -2.79125977f, -478.4148f, 443.115234f, 268.092224f, 41.3210449f, -471.256073f); + float b0 = (500.997253f); + float4x3 r0 = float4x3(960.895569f, 53.3338928f, 406.558624f, 627.4271f, 464.7429f, 151.355957f, 498.206f, 22.5824585f, 944.1125f, 769.0895f, 542.3183f, 29.74118f); + TestUtils.AreEqual(a0 + b0, r0); + + float4x3 a1 = float4x3(-2.664978f, 202.14801f, 311.725464f, 10.3458252f, -151.244446f, 355.2328f, -197.800751f, 255.955261f, 244.1471f, -181.626556f, -2.45492554f, 300.900635f); + float b1 = (78.98584f); + float4x3 r1 = float4x3(76.32086f, 281.13385f, 390.7113f, 89.331665f, -72.258606f, 434.218628f, -118.814911f, 334.9411f, 323.132935f, -102.640717f, 76.5309143f, 379.886475f); + TestUtils.AreEqual(a1 + b1, r1); + + float4x3 a2 = float4x3(-236.491943f, -172.5422f, -242.9411f, 466.344116f, 237.987488f, 264.294f, 372.866821f, -198.837769f, -381.930969f, 402.160339f, -117.024841f, 497.373779f); + float b2 = (-160.5841f); + float4x3 r2 = float4x3(-397.07605f, -333.1263f, -403.5252f, 305.76f, 77.40338f, 103.7099f, 212.282715f, -359.421875f, -542.5151f, 241.576233f, -277.608948f, 336.789673f); + TestUtils.AreEqual(a2 + b2, r2); + + float4x3 a3 = float4x3(485.9093f, 77.81482f, -271.547974f, -133.2518f, 211.86676f, 253.1502f, -342.783173f, -185.248352f, -403.3855f, -358.848236f, 65.24756f, 127.201721f); + float b3 = (-47.75714f); + float4x3 r3 = float4x3(438.152161f, 30.0576782f, -319.3051f, -181.008942f, 164.109619f, 205.393066f, -390.5403f, -233.0055f, -451.142639f, -406.605377f, 17.4904175f, 79.44458f); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void float4x3_operator_add_scalar_wide() + { + float a0 = (-325.512756f); + float4x3 b0 = float4x3(-264.088135f, -106.009247f, -355.4473f, -447.3303f, -158.7002f, -199.4837f, 180.318115f, 337.579346f, -37.0550232f, 230.805f, -140.174347f, 18.02417f); + float4x3 r0 = float4x3(-589.6009f, -431.522f, -680.9601f, -772.843f, -484.212952f, -524.99646f, -145.194641f, 12.0665894f, -362.56778f, -94.70776f, -465.6871f, -307.4886f); + TestUtils.AreEqual(a0 + b0, r0); + + float a1 = (-138.614349f); + float4x3 b1 = float4x3(26.9041748f, -374.5376f, 154.46759f, 268.38385f, -190.963013f, 188.617249f, -504.916138f, 20.45404f, 197.945374f, 251.411926f, -421.0904f, 111.445374f); + float4x3 r1 = float4x3(-111.710175f, -513.152f, 15.853241f, 129.7695f, -329.577362f, 50.0029f, -643.5305f, -118.160309f, 59.3310242f, 112.797577f, -559.7047f, -27.1689758f); + TestUtils.AreEqual(a1 + b1, r1); + + float a2 = (-73.26889f); + float4x3 b2 = float4x3(480.884583f, 438.05304f, 66.8443f, -270.796021f, -44.02191f, 197.6947f, 19.1139526f, 349.2378f, 366.2345f, -413.4803f, -260.720184f, 77.54236f); + float4x3 r2 = float4x3(407.6157f, 364.784149f, -6.424591f, -344.0649f, -117.2908f, 124.425812f, -54.1549377f, 275.9689f, 292.9656f, -486.749176f, -333.989075f, 4.273468f); + TestUtils.AreEqual(a2 + b2, r2); + + float a3 = (183.9549f); + float4x3 b3 = float4x3(-51.4989929f, -472.497467f, 107.126892f, 349.0772f, 431.595947f, -314.110962f, 396.996643f, -167.308624f, -157.114532f, 287.7625f, -367.33905f, 96.23682f); + float4x3 r3 = float4x3(132.4559f, -288.542572f, 291.0818f, 533.0321f, 615.550842f, -130.156067f, 580.951538f, 16.64627f, 26.8403625f, 471.7174f, -183.384155f, 280.1917f); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void float4x3_operator_sub_wide_wide() + { + float4x3 a0 = float4x3(133.371033f, -131.832123f, -197.293152f, -485.28656f, -337.550323f, 471.6671f, 146.506592f, -130.585052f, 110.7771f, -235.5416f, 78.87933f, -347.686157f); + float4x3 b0 = float4x3(123.460266f, 359.56012f, -48.2484741f, 478.979065f, 207.158325f, 142.36731f, -125.6055f, -65.29901f, -477.876434f, 164.5f, 428.009583f, 72.62781f); + float4x3 r0 = float4x3(9.910767f, -491.392242f, -149.044678f, -964.2656f, -544.7086f, 329.2998f, 272.1121f, -65.28604f, 588.653564f, -400.0416f, -349.130249f, -420.313965f); + TestUtils.AreEqual(a0 - b0, r0); + + float4x3 a1 = float4x3(-470.820557f, -11.45929f, -167.9479f, 330.676758f, -508.350861f, -252.031891f, -427.9342f, 192.6576f, 168.429321f, 457.308777f, 470.058533f, -299.711884f); + float4x3 b1 = float4x3(-446.8805f, 432.091431f, -225.554657f, -112.451965f, -210.6128f, -172.925049f, -80.60748f, 270.046082f, -154.255585f, 148.475769f, 13.6611328f, 70.67108f); + float4x3 r1 = float4x3(-23.9400635f, -443.55072f, 57.60675f, 443.128723f, -297.738068f, -79.10684f, -347.326721f, -77.38849f, 322.6849f, 308.833f, 456.3974f, -370.382965f); + TestUtils.AreEqual(a1 - b1, r1); + + float4x3 a2 = float4x3(-308.939575f, 454.5334f, 26.1069336f, -482.711823f, -40.8535461f, 318.380676f, 475.210815f, 134.926941f, 388.481567f, 138.7182f, -385.5736f, -149.3648f); + float4x3 b2 = float4x3(-221.325439f, -9.25882f, 288.173828f, 217.36145f, 307.540039f, -262.412659f, -405.378021f, 400.004333f, 72.11908f, -154.880585f, -469.659973f, -320.615417f); + float4x3 r2 = float4x3(-87.6141357f, 463.7922f, -262.0669f, -700.073242f, -348.3936f, 580.793335f, 880.588867f, -265.0774f, 316.3625f, 293.5988f, 84.0863647f, 171.25061f); + TestUtils.AreEqual(a2 - b2, r2); + + float4x3 a3 = float4x3(-158.534058f, 508.070679f, 482.7008f, 114.569275f, 364.83136f, 229.031f, -168.088074f, 373.4411f, -239.90097f, 379.928467f, 113.011841f, 306.835266f); + float4x3 b3 = float4x3(6.41229248f, -278.865051f, 15.8380737f, 27.51831f, 429.869629f, -458.622467f, -172.064423f, -284.524719f, 42.60669f, -223.474243f, -56.92975f, 61.807312f); + float4x3 r3 = float4x3(-164.94635f, 786.9357f, 466.862732f, 87.0509644f, -65.03827f, 687.653442f, 3.97634888f, 657.9658f, -282.50766f, 603.4027f, 169.941589f, 245.027954f); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void float4x3_operator_sub_wide_scalar() + { + float4x3 a0 = float4x3(48.9367065f, 410.4516f, -364.4417f, 163.980591f, -460.067322f, 110.919434f, 204.358337f, 180.269714f, -377.9257f, -470.262054f, 400.5349f, 461.507568f); + float b0 = (-291.5904f); + float4x3 r0 = float4x3(340.5271f, 702.042f, -72.85132f, 455.570984f, -168.476929f, 402.509827f, 495.94873f, 471.8601f, -86.3353f, -178.671661f, 692.1253f, 753.097961f); + TestUtils.AreEqual(a0 - b0, r0); + + float4x3 a1 = float4x3(-246.287262f, 246.350708f, -121.427368f, -122.718414f, -122.938721f, 360.15094f, 342.874573f, 18.92981f, 164.602356f, 97.0437f, 485.914978f, -205.75766f); + float b1 = (21.6052856f); + float4x3 r1 = float4x3(-267.892548f, 224.745422f, -143.032654f, -144.3237f, -144.544f, 338.545654f, 321.2693f, -2.675476f, 142.99707f, 75.4384155f, 464.3097f, -227.362946f); + TestUtils.AreEqual(a1 - b1, r1); + + float4x3 a2 = float4x3(253.443237f, 187.998413f, -450.820282f, -248.073364f, -26.9960632f, 441.5526f, 449.910583f, 354.886047f, 98.82147f, -189.193237f, 269.074829f, -59.11856f); + float b2 = (-121.163055f); + float4x3 r2 = float4x3(374.6063f, 309.161469f, -329.657227f, -126.910309f, 94.16699f, 562.7157f, 571.0736f, 476.0491f, 219.984528f, -68.03018f, 390.237885f, 62.0444946f); + TestUtils.AreEqual(a2 - b2, r2); + + float4x3 a3 = float4x3(363.458374f, -46.1552124f, 109.913269f, 182.646912f, 229.015747f, -144.92868f, 469.2506f, -150.49231f, -192.3125f, -224.356842f, 285.876831f, -63.0108337f); + float b3 = (-73.7792053f); + float4x3 r3 = float4x3(437.237579f, 27.6239929f, 183.692474f, 256.426117f, 302.794952f, -71.1494751f, 543.0298f, -76.7131042f, -118.533295f, -150.577637f, 359.656036f, 10.7683716f); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void float4x3_operator_sub_scalar_wide() + { + float a0 = (294.5865f); + float4x3 b0 = float4x3(452.352539f, 256.9898f, -275.159882f, -89.02753f, 488.2284f, -333.2173f, -64.233f, -66.04172f, 341.204956f, -385.775055f, 75.3947754f, 354.943726f); + float4x3 r0 = float4x3(-157.766052f, 37.59668f, 569.746338f, 383.614f, -193.6419f, 627.8038f, 358.8195f, 360.6282f, -46.61847f, 680.3616f, 219.191711f, -60.35724f); + TestUtils.AreEqual(a0 - b0, r0); + + float a1 = (169.131409f); + float4x3 b1 = float4x3(88.21661f, 1.73498535f, 122.538025f, -264.945f, -50.83719f, -347.65033f, 4.06555176f, -79.09543f, 354.358337f, -292.4925f, -53.2089844f, -246.3476f); + float4x3 r1 = float4x3(80.9147949f, 167.396423f, 46.5933838f, 434.076416f, 219.9686f, 516.781738f, 165.065857f, 248.226837f, -185.226929f, 461.6239f, 222.3404f, 415.479f); + TestUtils.AreEqual(a1 - b1, r1); + + float a2 = (299.203369f); + float4x3 b2 = float4x3(432.1847f, -163.88f, 176.742554f, -104.98584f, -445.797638f, -28.8731689f, -169.588226f, -270.359253f, 68.04761f, -65.53128f, 440.380371f, 427.360657f); + float4x3 r2 = float4x3(-132.981323f, 463.083374f, 122.460815f, 404.1892f, 745.001f, 328.076538f, 468.7916f, 569.5626f, 231.155762f, 364.73465f, -141.177f, -128.157288f); + TestUtils.AreEqual(a2 - b2, r2); + + float a3 = (-81.47296f); + float4x3 b3 = float4x3(41.7131958f, 175.8208f, -214.949158f, -163.446869f, -218.829132f, 389.116882f, -74.10977f, -448.137238f, -410.375f, 363.211f, -263.5354f, 473.546021f); + float4x3 r3 = float4x3(-123.186157f, -257.293762f, 133.4762f, 81.97391f, 137.356171f, -470.589844f, -7.3631897f, 366.664276f, 328.902039f, -444.68396f, 182.062439f, -555.019f); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void float4x3_operator_mul_wide_wide() + { + float4x3 a0 = float4x3(-394.780548f, -412.3722f, -25.8745728f, -241.045959f, -93.6759949f, 244.159973f, 494.688477f, 53.5379639f, -239.4964f, 236.675842f, -211.8562f, -216.654816f); + float4x3 b0 = float4x3(-149.763977f, -345.04538f, -284.334045f, 267.979248f, -326.6485f, -150.689667f, 207.732422f, 366.192871f, 358.880737f, 214.853577f, 253.422791f, -307.7138f); + float4x3 r0 = float4x3(59123.9063f, 142287.125f, 7357.022f, -64595.3164f, 30599.123f, -36792.3867f, 102762.836f, 19605.22f, -85950.64f, 50850.6523f, -53689.19f, 66667.68f); + TestUtils.AreEqual(a0 * b0, r0); + + float4x3 a1 = float4x3(467.9583f, -178.021912f, -386.394257f, -422.4354f, 464.589539f, -251.315674f, -104.97879f, -66.93417f, -39.829895f, 401.5656f, 434.146179f, -336.4542f); + float4x3 b1 = float4x3(184.47113f, 426.436462f, -144.281433f, 459.4796f, -358.313354f, -201.3652f, 254.909973f, 168.520935f, 8.794556f, -194.846466f, -405.362671f, -180.732178f); + float4x3 r1 = float4x3(86324.8f, -75915.03f, 55749.5156f, -194100.453f, -166468.641f, 50606.23f, -26760.14f, -11279.81f, -350.286224f, -78243.64f, -175986.656f, 60808.0977f); + TestUtils.AreEqual(a1 * b1, r1); + + float4x3 a2 = float4x3(-83.11417f, 329.960266f, -316.972168f, 474.937927f, -445.109161f, -301.003723f, 405.687866f, 142.373474f, -416.213074f, -103.279205f, -52.9519043f, -40.82834f); + float4x3 b2 = float4x3(-189.746918f, -35.5184631f, 120.31665f, -136.203339f, 407.3416f, 301.6543f, -155.482391f, -461.394562f, 296.680359f, 341.001831f, -257.0968f, 17.5936279f); + float4x3 r2 = float4x3(15770.6572f, -11719.6816f, -38137.03f, -64688.1328f, -181311.484f, -90799.07f, -63077.32f, -65690.34f, -123482.242f, -35218.4f, 13613.7656f, -718.3186f); + TestUtils.AreEqual(a2 * b2, r2); + + float4x3 a3 = float4x3(-86.18509f, -257.316528f, 363.857239f, -229.860016f, 8.925293f, -2.44940186f, 37.7583f, 264.451782f, -321.251282f, -268.256042f, 43.9136963f, 274.833069f); + float4x3 b3 = float4x3(-443.845123f, 291.349243f, 490.19165f, 361.320984f, -509.289734f, 315.352661f, 125.083069f, -167.727112f, 396.8877f, -0.320404053f, 143.4115f, -396.3475f); + float4x3 r3 = float4x3(38252.832f, -74968.98f, 178359.781f, -83053.25f, -4545.56f, -772.4254f, 4722.92432f, -44355.7344f, -127500.68f, 85.950325f, 6297.729f, -108929.4f); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void float4x3_operator_mul_wide_scalar() + { + float4x3 a0 = float4x3(328.203f, -290.10672f, 236.995728f, 120.481384f, 357.903137f, 134.867249f, -477.3105f, -438.272919f, -46.729187f, -238.405f, 422.08252f, -48.83484f); + float b0 = (192.211182f); + float4x3 r0 = float4x3(63084.2852f, -55761.7539f, 45553.23f, 23157.87f, 68792.9844f, 25922.9941f, -91744.4141f, -84240.95f, -8981.872f, -45824.1055f, 81128.98f, -9386.603f); + TestUtils.AreEqual(a0 * b0, r0); + + float4x3 a1 = float4x3(355.30835f, -196.995819f, 98.23602f, -325.552155f, 53.9373169f, -87.45099f, -130.474121f, -222.594574f, 126.015015f, 293.361084f, 174.381958f, -327.120056f); + float b1 = (119.356628f); + float4x3 r1 = float4x3(42408.4063f, -23512.7559f, 11725.12f, -38856.81f, 6437.77637f, -10437.8555f, -15572.9512f, -26568.1387f, 15040.7275f, 35014.59f, 20813.6426f, -39043.9453f); + TestUtils.AreEqual(a1 * b1, r1); + + float4x3 a2 = float4x3(56.62915f, -475.6087f, -452.6919f, -49.22061f, 141.600952f, 431.5857f, 180.355164f, -40.9234619f, 279.543518f, 120.014465f, -59.508667f, 319.489868f); + float b2 = (257.541565f); + float4x3 r2 = float4x3(14584.36f, -122489.008f, -116586.977f, -12676.3535f, 36468.13f, 111151.258f, 46448.95f, -10539.4922f, 71994.08f, 30908.7129f, -15325.9551f, 82281.92f); + TestUtils.AreEqual(a2 * b2, r2); + + float4x3 a3 = float4x3(-403.523163f, -335.3932f, -364.242554f, 150.686157f, 391.87207f, 179.312439f, 354.5298f, 497.7614f, 418.436584f, -413.333374f, -329.520721f, -322.703064f); + float b3 = (-408.1931f); + float4x3 r3 = float4x3(164715.375f, 136905.188f, 148681.3f, -61509.05f, -159959.484f, -73194.1f, -144716.625f, -203182.781f, -170802.938f, 168719.844f, 134508.1f, 131725.172f); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void float4x3_operator_mul_scalar_wide() + { + float a0 = (-464.5347f); + float4x3 b0 = float4x3(329.360962f, -198.683441f, 184.0794f, 256.016174f, 266.226318f, -97.8947449f, 159.748108f, -351.8222f, 491.801575f, 49.90204f, 424.4626f, 160.1181f); + float4x3 r0 = float4x3(-152999.6f, 92295.35f, -85511.27f, -118928.4f, -123671.359f, 45475.5039f, -74208.54f, 163433.625f, -228458.891f, -23181.2285f, -197177.6f, -74380.4141f); + TestUtils.AreEqual(a0 * b0, r0); + + float a1 = (-395.9921f); + float4x3 b1 = float4x3(125.20166f, -265.0158f, 314.656128f, -292.712036f, -37.72989f, 165.362244f, 356.517761f, -188.813324f, 504.9157f, 40.5721436f, -206.775116f, -61.60269f); + float4x3 r1 = float4x3(-49578.8672f, 104944.164f, -124601.336f, 115911.656f, 14940.7373f, -65482.14f, -141178.219f, 74768.5859f, -199942.625f, -16066.248f, 81881.31f, 24394.18f); + TestUtils.AreEqual(a1 * b1, r1); + + float a2 = (118.971619f); + float4x3 b2 = float4x3(53.7483521f, -198.6694f, 96.236084f, -20.2418823f, -31.1239624f, 38.89044f, -13.1333008f, 507.871277f, 95.0179443f, 340.7486f, 438.986877f, -227.165955f); + float4x3 r2 = float4x3(6394.52832f, -23636.02f, 11449.3623f, -2408.20947f, -3702.86816f, 4626.859f, -1562.49011f, 60422.27f, 11304.4385f, 40539.41f, 52226.98f, -27026.3f); + TestUtils.AreEqual(a2 * b2, r2); + + float a3 = (452.573f); + float4x3 b3 = float4x3(144.014954f, -31.58603f, 42.29773f, -466.027161f, 287.453979f, 328.9969f, -164.243134f, -511.2683f, -9.594299f, 431.190125f, -132.141815f, -87.502655f); + float4x3 r3 = float4x3(65177.28f, -14294.9834f, 19142.81f, -210911.313f, 130093.906f, 148895.109f, -74332.01f, -231386.234f, -4342.12061f, 195145f, -59803.8164f, -39601.34f); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void float4x3_operator_div_wide_wide() + { + float4x3 a0 = float4x3(246.265747f, -269.85614f, -451.619537f, -7.388489f, -308.205566f, -373.3948f, 360.41864f, 25.8097534f, -274.050476f, 127.538574f, -447.671753f, -137.458588f); + float4x3 b0 = float4x3(172.119812f, -77.14111f, -325.8354f, -450.608673f, -261.262146f, -122.449493f, -93.2107849f, -442.005219f, 484.362732f, -390.7818f, 402.02533f, 316.6507f); + float4x3 r0 = float4x3(1.43078089f, 3.49821424f, 1.38603592f, 0.0163966864f, 1.17967939f, 3.04937816f, -3.86670542f, -0.0583924167f, -0.565795958f, -0.326367736f, -1.11354113f, -0.434101641f); + TestUtils.AreEqual(a0 / b0, r0); + + float4x3 a1 = float4x3(-136.133179f, 12.4376221f, 228.513f, 356.972351f, -24.7620544f, 411.6684f, -204.078888f, 11.3654175f, 82.15228f, 37.3894653f, 394.2658f, -429.912781f); + float4x3 b1 = float4x3(397.154419f, -303.2622f, -118.591248f, -81.6503f, -84.34686f, -488.419434f, 404.160522f, -136.728851f, -19.8327026f, -102.607239f, 166.116028f, -112.840179f); + float4x3 r1 = float4x3(-0.3427714f, -0.0410127677f, -1.926896f, -4.37196636f, 0.2935741f, -0.8428584f, -0.504945159f, -0.0831237659f, -4.14226341f, -0.364394039f, 2.37343621f, 3.80992651f); + TestUtils.AreEqual(a1 / b1, r1); + + float4x3 a2 = float4x3(315.37384f, -122.665985f, 447.526123f, -210.4815f, -202.42157f, -453.007935f, 173.72699f, -167.121674f, -106.234528f, 414.312561f, 7.12084961f, 274.073669f); + float4x3 b2 = float4x3(-218.209686f, 458.517517f, 119.587219f, 356.240417f, -74.50687f, -336.773926f, -216.126312f, 322.385681f, 220.2555f, -67.2345f, 2.229187f, -166.210968f); + float4x3 r2 = float4x3(-1.44527888f, -0.267527372f, 3.742257f, -0.5908412f, 2.71681762f, 1.34513962f, -0.803821564f, -0.5183905f, -0.482324064f, -6.16220236f, 3.19437075f, -1.64895058f); + TestUtils.AreEqual(a2 / b2, r2); + + float4x3 a3 = float4x3(-39.0026855f, 39.065918f, -147.364166f, 434.3849f, 315.0672f, -106.636017f, -507.925262f, -17.1764526f, -385.865356f, 226.002136f, 345.168457f, 201.544189f); + float4x3 b3 = float4x3(-247.732574f, 84.16095f, 477.148621f, 209.7508f, -386.7222f, -65.27734f, 410.454834f, 367.6507f, -456.572021f, 382.427979f, -163.860687f, -213.721375f); + float4x3 r3 = float4x3(0.157438666f, 0.464181036f, -0.3088433f, 2.07095718f, -0.814712f, 1.6335839f, -1.23746932f, -0.0467194878f, 0.8451358f, 0.5909665f, -2.106475f, -0.9430231f); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void float4x3_operator_div_wide_scalar() + { + float4x3 a0 = float4x3(-244.517456f, 69.1123047f, -333.023132f, 257.396851f, 403.2456f, 154.34436f, 131.526611f, -261.8864f, -348.9238f, -275.5387f, 210.557922f, 287.6424f); + float b0 = (-60.0243835f); + float4x3 r0 = float4x3(4.07363558f, -1.15140378f, 5.548131f, -4.28820467f, -6.71803f, -2.571361f, -2.19121981f, 4.36300039f, 5.813034f, 4.590446f, -3.507873f, -4.79209232f); + TestUtils.AreEqual(a0 / b0, r0); + + float4x3 a1 = float4x3(504.372253f, -26.6315918f, -253.236664f, 272.895142f, 178.096191f, -460.87558f, -502.646027f, -84.3248f, -174.690338f, 83.7963257f, 197.042053f, 317.168274f); + float b1 = (491.7871f); + float4x3 r1 = float4x3(1.02559066f, -0.0541526824f, -0.5149315f, 0.554905057f, 0.362140834f, -0.9371445f, -1.02208054f, -0.171466067f, -0.355215371f, 0.17039147f, 0.400665343f, 0.64493f); + TestUtils.AreEqual(a1 / b1, r1); + + float4x3 a2 = float4x3(403.387146f, 60.6068726f, -413.5605f, 207.341f, 358.562134f, 20.7490845f, -68.57712f, 310.702454f, 417.4049f, 147.866211f, 506.658875f, -435.778564f); + float b2 = (81.6464844f); + float4x3 r2 = float4x3(4.940655f, 0.742308438f, -5.06525755f, 2.539497f, 4.391642f, 0.254133224f, -0.8399274f, 3.80546021f, 5.112344f, 1.81105423f, 6.20551968f, -5.33738327f); + TestUtils.AreEqual(a2 / b2, r2); + + float4x3 a3 = float4x3(210.672913f, -19.1908569f, 416.511719f, 427.0136f, 417.1994f, -150.911835f, 488.985535f, -294.738739f, -357.298035f, 288.771667f, 453.429138f, 70.72443f); + float b3 = (-218.781464f); + float4x3 r3 = float4x3(-0.962937653f, 0.08771701f, -1.90377975f, -1.95178151f, -1.90692294f, 0.689783454f, -2.235041f, 1.34718335f, 1.63312757f, -1.31990921f, -2.07252073f, -0.323265165f); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void float4x3_operator_div_scalar_wide() + { + float a0 = (41.73767f); + float4x3 b0 = float4x3(-422.676147f, 248.129639f, 449.391357f, 245.858154f, -326.6206f, 163.715088f, 333.6645f, 38.2910767f, -472.979767f, 192.230164f, -200.296875f, -490.181519f); + float4x3 r0 = float4x3(-0.09874622f, 0.168209136f, 0.0928759947f, 0.169763222f, -0.1277864f, 0.2549409f, 0.125088736f, 1.0900104f, -0.0882440954f, 0.217123419f, -0.208379045f, -0.08514738f); + TestUtils.AreEqual(a0 / b0, r0); + + float a1 = (-211.10257f); + float4x3 b1 = float4x3(-322.852356f, -137.985291f, 84.32971f, 355.063477f, 276.427246f, -382.988037f, -488.647156f, 344.846f, 168.85498f, -44.1955872f, 420.55072f, -175.6152f); + float4x3 r1 = float4x3(0.6538672f, 1.52989185f, -2.5033f, -0.5945488f, -0.7636822f, 0.55119884f, 0.432014316f, -0.612164736f, -1.25020039f, 4.776553f, -0.501966953f, 1.20207453f); + TestUtils.AreEqual(a1 / b1, r1); + + float a2 = (-9.220581f); + float4x3 b2 = float4x3(-344.194275f, -449.0715f, 117.704895f, -337.0274f, 239.393433f, -389.355164f, 242.716064f, 496.2765f, 91.74579f, -490.492126f, 485.755432f, -317.572266f); + float4x3 r2 = float4x3(0.0267888848f, 0.0205325447f, -0.0783364251f, 0.02735855f, -0.038516432f, 0.0236816723f, -0.0379891656f, -0.018579524f, -0.100501411f, 0.0187986325f, -0.018981941f, 0.0290345922f); + TestUtils.AreEqual(a2 / b2, r2); + + float a3 = (-451.6248f); + float4x3 b3 = float4x3(394.018372f, -262.271423f, -314.246765f, 359.9159f, -101.615356f, 359.517273f, -424.9799f, -192.719574f, -169.749725f, -244.790009f, -187.14386f, -207.713654f); + float4x3 r3 = float4x3(-1.14620233f, 1.72197485f, 1.43716609f, -1.2548064f, 4.444454f, -1.25619769f, 1.06269681f, 2.3434298f, 2.66053319f, 1.84494781f, 2.41324925f, 2.17426634f); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void float4x3_operator_mod_wide_wide() + { + float4x3 a0 = float4x3(-442.309875f, 368.5005f, -1.09390259f, -364.673828f, -197.343933f, -34.0349121f, -101.348572f, 208.318542f, -140.770325f, 183.44696f, -463.368378f, 83.83911f); + float4x3 b0 = float4x3(-43.2450562f, -144.195862f, -62.6404724f, -336.828247f, -154.61026f, -154.029358f, 487.0462f, -469.8291f, -145.203766f, -203.384f, -22.52008f, 224.69f); + float4x3 r0 = float4x3(-9.859314f, 80.1087646f, -1.09390259f, -27.8455811f, -42.7336731f, -34.0349121f, -101.348572f, 208.318542f, -140.770325f, 183.44696f, -12.9667664f, 83.83911f); + TestUtils.AreEqual(a0 % b0, r0); + + float4x3 a1 = float4x3(-64.71405f, 295.066833f, 212.25708f, 349.6283f, 119.875916f, -37.8058167f, 142.41156f, 332.244263f, -464.194275f, -296.147827f, 225.175354f, -212.060272f); + float4x3 b1 = float4x3(-435.62674f, 12.0955811f, 40.3787842f, 345.784851f, -433.471252f, -355.649963f, 4.015442f, 66.65979f, -221.853638f, -355.056763f, 357.935974f, 71.3753052f); + float4x3 r1 = float4x3(-64.71405f, 4.772888f, 10.3631592f, 3.84344482f, 119.875916f, -37.8058167f, 1.87109375f, 65.6051f, -20.487f, -296.147827f, 225.175354f, -69.30966f); + TestUtils.AreEqual(a1 % b1, r1); + + float4x3 a2 = float4x3(156.985718f, 507.6183f, 270.830444f, 337.7343f, 384.915833f, 432.5182f, 154.292725f, -37.0853271f, 7.76147461f, 238.094727f, 12.8520508f, -100.240662f); + float4x3 b2 = float4x3(-131.4183f, -473.9876f, 76.2178345f, 92.2102051f, -368.189575f, -77.46716f, 135.230591f, 274.277283f, 132.180237f, -179.877319f, 51.9685669f, 367.214233f); + float4x3 r2 = float4x3(25.5674133f, 33.6306763f, 42.17694f, 61.1037f, 16.7262573f, 45.182373f, 19.0621338f, -37.0853271f, 7.76147461f, 58.2174072f, 12.8520508f, -100.240662f); + TestUtils.AreEqual(a2 % b2, r2); + + float4x3 a3 = float4x3(34.552002f, -251.189758f, -238.372253f, 511.514648f, 288.433533f, 367.109863f, 44.760437f, -437.0456f, -259.2056f, -228.565826f, 83.49725f, 424.367065f); + float4x3 b3 = float4x3(-395.2128f, 270.485229f, -73.104126f, 89.3499756f, -288.308533f, -168.324646f, 311.6159f, -468.341949f, 381.983948f, -1.39886475f, -102.288605f, -87.4248657f); + float4x3 r3 = float4x3(34.552002f, -251.189758f, -19.0598755f, 64.76477f, 0.125f, 30.4605713f, 44.760437f, -437.0456f, -259.2056f, -0.5508728f, 83.49725f, 74.6676f); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void float4x3_operator_mod_wide_scalar() + { + float4x3 a0 = float4x3(-433.417f, -5.51412964f, 393.3944f, 299.41156f, -120.80603f, -502.939026f, -450.807678f, 186.094788f, -84.47363f, -318.7815f, 433.4547f, -54.60019f); + float b0 = (-90.49924f); + float4x3 r0 = float4x3(-71.4200439f, -5.51412964f, 31.39746f, 27.9138489f, -30.3067932f, -50.44284f, -88.81073f, 5.09631348f, -84.47363f, -47.283783f, 71.45776f, -54.60019f); + TestUtils.AreEqual(a0 % b0, r0); + + float4x3 a1 = float4x3(-172.338867f, 222.361877f, 5.79638672f, 254.5108f, -433.0937f, -203.082611f, -75.3564148f, 252.289124f, -69.4039f, 5.337219f, -279.060425f, 483.5506f); + float b1 = (-429.714661f); + float4x3 r1 = float4x3(-172.338867f, 222.361877f, 5.79638672f, 254.5108f, -3.37902832f, -203.082611f, -75.3564148f, 252.289124f, -69.4039f, 5.337219f, -279.060425f, 53.8359375f); + TestUtils.AreEqual(a1 % b1, r1); + + float4x3 a2 = float4x3(-331.993347f, 67.8396f, -124.720764f, 38.1759033f, 271.287f, 405.773621f, -194.761444f, 235.724f, 465.984863f, -304.153168f, -295.520264f, 313.7224f); + float b2 = (336f); + float4x3 r2 = float4x3(-331.993347f, 67.8396f, -124.720764f, 38.1759033f, 271.287f, 69.77362f, -194.761444f, 235.724f, 129.984863f, -304.153168f, -295.520264f, 313.7224f); + TestUtils.AreEqual(a2 % b2, r2); + + float4x3 a3 = float4x3(-232.202637f, 244.096619f, 162.524231f, 390.016174f, 90.00452f, 155.933533f, 217.3377f, -306.819275f, 149.09375f, 503.828369f, -194.130127f, 214.863037f); + float b3 = (191.619751f); + float4x3 r3 = float4x3(-40.5828857f, 52.4768677f, 162.524231f, 6.77667236f, 90.00452f, 155.933533f, 25.7179565f, -115.199524f, 149.09375f, 120.588867f, -2.510376f, 23.2432861f); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void float4x3_operator_mod_scalar_wide() + { + float a0 = (-396.4224f); + float4x3 b0 = float4x3(-159.140259f, 230.17334f, 14.7793579f, -303.1565f, 399.635f, 206.6947f, 397.0448f, -393.890656f, -372.067078f, 201.012268f, -95.566864f, -258.951477f); + float4x3 r0 = float4x3(-78.14188f, -166.249054f, -12.1590881f, -93.2659f, -396.4224f, -189.727692f, -396.4224f, -2.53173828f, -24.3553162f, -195.410126f, -14.1549377f, -137.470917f); + TestUtils.AreEqual(a0 % b0, r0); + + float a1 = (106.983582f); + float4x3 b1 = float4x3(469.323547f, -34.80899f, 184.836548f, 374.79425f, -131.872711f, -120.092865f, 4.506653f, -111.401947f, 391.54248f, -218.668884f, 196.377441f, -511.032623f); + float4x3 r1 = float4x3(106.983582f, 2.55661f, 106.983582f, 106.983582f, 106.983582f, 106.983582f, 3.33056641f, 106.983582f, 106.983582f, 106.983582f, 106.983582f, 106.983582f); + TestUtils.AreEqual(a1 % b1, r1); + + float a2 = (499.9535f); + float4x3 b2 = float4x3(-433.523071f, -163.866852f, 177.004028f, 110.650146f, 17.68457f, -95.85297f, -432.440979f, 192.692078f, -268.131775f, 271.075134f, 423.7027f, -413.233246f); + float4x3 r2 = float4x3(66.43042f, 8.352936f, 145.945435f, 57.3529053f, 4.78552246f, 20.68866f, 67.51251f, 114.569336f, 231.821716f, 228.878357f, 76.25079f, 86.7202454f); + TestUtils.AreEqual(a2 % b2, r2); + + float a3 = (127.956238f); + float4x3 b3 = float4x3(-298.204681f, -352.4181f, -175.607727f, -152.899292f, 34.6194458f, -380.802948f, 0.352050781f, 485.900879f, 266.150818f, 483.82074f, 11.777832f, 274.135864f); + float4x3 r3 = float4x3(127.956238f, 127.956238f, 127.956238f, 127.956238f, 24.0979f, 127.956238f, 0.1618042f, 127.956238f, 127.956238f, 127.956238f, 10.1779175f, 127.956238f); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void float4x3_operator_plus() + { + float4x3 a0 = float4x3(271.670837f, -79.08023f, -330.985046f, 31.824707f, 315.449524f, 319.222168f, 190.324646f, -350.3086f, -320.518463f, 102.054382f, -107.00351f, -428.7762f); + float4x3 r0 = float4x3(271.670837f, -79.08023f, -330.985046f, 31.824707f, 315.449524f, 319.222168f, 190.324646f, -350.3086f, -320.518463f, 102.054382f, -107.00351f, -428.7762f); + TestUtils.AreEqual(+a0, r0); + + float4x3 a1 = float4x3(377.230164f, 34.28363f, 258.330383f, 465.355957f, 309.59314f, -316.937134f, -230.052673f, 301.7851f, 2.58575439f, 350.2464f, 60.8197632f, -472.4421f); + float4x3 r1 = float4x3(377.230164f, 34.28363f, 258.330383f, 465.355957f, 309.59314f, -316.937134f, -230.052673f, 301.7851f, 2.58575439f, 350.2464f, 60.8197632f, -472.4421f); + TestUtils.AreEqual(+a1, r1); + + float4x3 a2 = float4x3(-364.802551f, 473.803162f, 285.80896f, -273.2638f, -206.686371f, -113.362305f, -351.754883f, -116.536224f, -496.053284f, -330.005341f, -379.674255f, -339.673218f); + float4x3 r2 = float4x3(-364.802551f, 473.803162f, 285.80896f, -273.2638f, -206.686371f, -113.362305f, -351.754883f, -116.536224f, -496.053284f, -330.005341f, -379.674255f, -339.673218f); + TestUtils.AreEqual(+a2, r2); + + float4x3 a3 = float4x3(-29.0835266f, 485.926636f, 183.724854f, -258.392456f, 486.4469f, 245.9909f, 231.854675f, -216.48996f, -163.009186f, 175.325439f, 404.378f, 87.64923f); + float4x3 r3 = float4x3(-29.0835266f, 485.926636f, 183.724854f, -258.392456f, 486.4469f, 245.9909f, 231.854675f, -216.48996f, -163.009186f, 175.325439f, 404.378f, 87.64923f); + TestUtils.AreEqual(+a3, r3); + } + + [TestCompiler] + public static void float4x3_operator_neg() + { + float4x3 a0 = float4x3(420.227173f, -196.2575f, -335.426819f, 509.04364f, -33.0144043f, -498.575317f, -495.837952f, -270.859467f, 19.68689f, 268.2367f, -180.600525f, 223.381287f); + float4x3 r0 = float4x3(-420.227173f, 196.2575f, 335.426819f, -509.04364f, 33.0144043f, 498.575317f, 495.837952f, 270.859467f, -19.68689f, -268.2367f, 180.600525f, -223.381287f); + TestUtils.AreEqual(-a0, r0); + + float4x3 a1 = float4x3(-410.392059f, -349.149475f, -110.9393f, -238.2196f, 292.543518f, 469.2926f, 48.29071f, 88.7237549f, 66.1485f, 55.7080078f, 464.541382f, 499.2428f); + float4x3 r1 = float4x3(410.392059f, 349.149475f, 110.9393f, 238.2196f, -292.543518f, -469.2926f, -48.29071f, -88.7237549f, -66.1485f, -55.7080078f, -464.541382f, -499.2428f); + TestUtils.AreEqual(-a1, r1); + + float4x3 a2 = float4x3(175.015015f, -306.1656f, 149.660034f, 320.391724f, -359.8338f, 22.0384521f, -159.55426f, 419.822449f, 303.323425f, 363.716736f, 280.887878f, -270.6513f); + float4x3 r2 = float4x3(-175.015015f, 306.1656f, -149.660034f, -320.391724f, 359.8338f, -22.0384521f, 159.55426f, -419.822449f, -303.323425f, -363.716736f, -280.887878f, 270.6513f); + TestUtils.AreEqual(-a2, r2); + + float4x3 a3 = float4x3(-201.615753f, 95.48926f, 191.070251f, 371.973572f, 296.512573f, -164.169922f, -347.4581f, -237.404968f, -228.701965f, 61.0822754f, 128.331543f, 331.2558f); + float4x3 r3 = float4x3(201.615753f, -95.48926f, -191.070251f, -371.973572f, -296.512573f, 164.169922f, 347.4581f, 237.404968f, 228.701965f, -61.0822754f, -128.331543f, -331.2558f); + TestUtils.AreEqual(-a3, r3); + } + + [TestCompiler] + public static void float4x3_operator_prefix_inc() + { + float4x3 a0 = float4x3(-99.79556f, 458.741821f, 96.1790161f, -48.55246f, -315.728973f, -299.230164f, -323.614868f, -456.8903f, -76.50766f, -305.584778f, 64.0965f, 148.679321f); + float4x3 r0 = float4x3(-98.79556f, 459.741821f, 97.1790161f, -47.55246f, -314.728973f, -298.230164f, -322.614868f, -455.8903f, -75.50766f, -304.584778f, 65.0965f, 149.679321f); + TestUtils.AreEqual(++a0, r0); + + float4x3 a1 = float4x3(363.2849f, -326.8778f, -179.894653f, 339.8766f, -38.41043f, -153.373688f, 261.625549f, 155.030823f, -396.650238f, 301.3058f, -221.355408f, -429.698151f); + float4x3 r1 = float4x3(364.2849f, -325.8778f, -178.894653f, 340.8766f, -37.41043f, -152.373688f, 262.625549f, 156.030823f, -395.650238f, 302.3058f, -220.355408f, -428.698151f); + TestUtils.AreEqual(++a1, r1); + + float4x3 a2 = float4x3(-271.2893f, -377.5592f, 223.232422f, -71.076355f, -388.2279f, 131.283142f, 22.3049316f, -480.760468f, 200.951782f, 117.9541f, 139.525818f, 335.6897f); + float4x3 r2 = float4x3(-270.2893f, -376.5592f, 224.232422f, -70.076355f, -387.2279f, 132.283142f, 23.3049316f, -479.760468f, 201.951782f, 118.9541f, 140.525818f, 336.6897f); + TestUtils.AreEqual(++a2, r2); + + float4x3 a3 = float4x3(162.6615f, -254.7315f, -89.25604f, 314.36554f, 244.728149f, 34.01062f, -90.44528f, -472.63623f, -34.5667725f, -71.27185f, -396.4901f, -314.987457f); + float4x3 r3 = float4x3(163.6615f, -253.7315f, -88.25604f, 315.36554f, 245.728149f, 35.01062f, -89.44528f, -471.63623f, -33.5667725f, -70.27185f, -395.4901f, -313.987457f); + TestUtils.AreEqual(++a3, r3); + } + + [TestCompiler] + public static void float4x3_operator_postfix_inc() + { + float4x3 a0 = float4x3(322.943542f, 472.0525f, 203.48761f, -49.8545837f, -31.4205322f, 455.3366f, 271.454651f, 55.7368774f, 153.7503f, -174.173f, -427.401062f, 215.110229f); + float4x3 r0 = float4x3(322.943542f, 472.0525f, 203.48761f, -49.8545837f, -31.4205322f, 455.3366f, 271.454651f, 55.7368774f, 153.7503f, -174.173f, -427.401062f, 215.110229f); + TestUtils.AreEqual(a0++, r0); + + float4x3 a1 = float4x3(159.861023f, 241.4649f, 287.220459f, -170.104645f, -270.652466f, -162.86026f, 454.488831f, -449.9273f, 209.522644f, -311.435852f, 69.7314453f, -232.299652f); + float4x3 r1 = float4x3(159.861023f, 241.4649f, 287.220459f, -170.104645f, -270.652466f, -162.86026f, 454.488831f, -449.9273f, 209.522644f, -311.435852f, 69.7314453f, -232.299652f); + TestUtils.AreEqual(a1++, r1); + + float4x3 a2 = float4x3(-341.498535f, 417.7298f, 25.5656738f, -463.725647f, 504.448975f, -310.144958f, -117.398468f, 403.508728f, -111.279541f, 446.607666f, -12.35257f, -232.150116f); + float4x3 r2 = float4x3(-341.498535f, 417.7298f, 25.5656738f, -463.725647f, 504.448975f, -310.144958f, -117.398468f, 403.508728f, -111.279541f, 446.607666f, -12.35257f, -232.150116f); + TestUtils.AreEqual(a2++, r2); + + float4x3 a3 = float4x3(64.57703f, 193.584351f, 382.050354f, -462.064117f, -122.30658f, 428.7763f, 338.97876f, 227.544067f, -169.321228f, -95.7655945f, -169.855347f, 439.3f); + float4x3 r3 = float4x3(64.57703f, 193.584351f, 382.050354f, -462.064117f, -122.30658f, 428.7763f, 338.97876f, 227.544067f, -169.321228f, -95.7655945f, -169.855347f, 439.3f); + TestUtils.AreEqual(a3++, r3); + } + + [TestCompiler] + public static void float4x3_operator_prefix_dec() + { + float4x3 a0 = float4x3(-416.201233f, -96.63788f, -50.14566f, -207.316437f, 439.479065f, -304.400818f, 337.968933f, 246.088989f, 171.964539f, -227.44281f, 298.2848f, 326.5078f); + float4x3 r0 = float4x3(-417.201233f, -97.63788f, -51.14566f, -208.316437f, 438.479065f, -305.400818f, 336.968933f, 245.088989f, 170.964539f, -228.44281f, 297.2848f, 325.5078f); + TestUtils.AreEqual(--a0, r0); + + float4x3 a1 = float4x3(400.7209f, -326.452972f, -24.5845032f, 112.796875f, -341.9763f, -503.27417f, -79.6352539f, -131.00415f, 147.893677f, -15.7086487f, 188.758423f, 307.791931f); + float4x3 r1 = float4x3(399.7209f, -327.452972f, -25.5845032f, 111.796875f, -342.9763f, -504.27417f, -80.6352539f, -132.00415f, 146.893677f, -16.7086487f, 187.758423f, 306.791931f); + TestUtils.AreEqual(--a1, r1); + + float4x3 a2 = float4x3(-406.667725f, -188.69223f, -505.2157f, -372.241943f, -4.031769f, 83.76776f, -30.6314087f, -436.906555f, -51.668396f, 345.021545f, 4.73535156f, -68.65332f); + float4x3 r2 = float4x3(-407.667725f, -189.69223f, -506.2157f, -373.241943f, -5.031769f, 82.76776f, -31.6314087f, -437.906555f, -52.668396f, 344.021545f, 3.73535156f, -69.65332f); + TestUtils.AreEqual(--a2, r2); + + float4x3 a3 = float4x3(481.4961f, -357.673279f, 153.329651f, -233.624329f, -35.23831f, 340.619629f, 259.928833f, 335.354919f, 85.36487f, -1.39398193f, -407.4104f, -145.793427f); + float4x3 r3 = float4x3(480.4961f, -358.673279f, 152.329651f, -234.624329f, -36.23831f, 339.619629f, 258.928833f, 334.354919f, 84.36487f, -2.393982f, -408.4104f, -146.793427f); + TestUtils.AreEqual(--a3, r3); + } + + [TestCompiler] + public static void float4x3_operator_postfix_dec() + { + float4x3 a0 = float4x3(-376.5924f, 16.9697266f, -0.2506714f, -202.323273f, 409.557556f, 47.85663f, -281.1117f, -262.0626f, -182.405731f, 450.1281f, -129.232666f, -332.154968f); + float4x3 r0 = float4x3(-376.5924f, 16.9697266f, -0.2506714f, -202.323273f, 409.557556f, 47.85663f, -281.1117f, -262.0626f, -182.405731f, 450.1281f, -129.232666f, -332.154968f); + TestUtils.AreEqual(a0--, r0); + + float4x3 a1 = float4x3(-261.0089f, -230.227783f, -483.066528f, 378.641235f, 487.344849f, -192.177856f, -357.0542f, -396.302063f, 279.424255f, 115.867737f, -20.8232117f, 323.4054f); + float4x3 r1 = float4x3(-261.0089f, -230.227783f, -483.066528f, 378.641235f, 487.344849f, -192.177856f, -357.0542f, -396.302063f, 279.424255f, 115.867737f, -20.8232117f, 323.4054f); + TestUtils.AreEqual(a1--, r1); + + float4x3 a2 = float4x3(379.156128f, 409.222473f, -428.2567f, -425.2884f, -194.6413f, -258.848358f, -208.985779f, -313.4259f, 178.3125f, 176.78949f, -370.7863f, 64.90387f); + float4x3 r2 = float4x3(379.156128f, 409.222473f, -428.2567f, -425.2884f, -194.6413f, -258.848358f, -208.985779f, -313.4259f, 178.3125f, 176.78949f, -370.7863f, 64.90387f); + TestUtils.AreEqual(a2--, r2); + + float4x3 a3 = float4x3(449.637756f, -203.437408f, 417.137329f, -197.347351f, 446.023376f, 239.974548f, 350.618042f, -264.747253f, 186.44165f, 353.759521f, 68.23419f, -240.610687f); + float4x3 r3 = float4x3(449.637756f, -203.437408f, 417.137329f, -197.347351f, 446.023376f, 239.974548f, 350.618042f, -264.747253f, 186.44165f, 353.759521f, 68.23419f, -240.610687f); + TestUtils.AreEqual(a3--, r3); + } + + + } +} diff --git a/package/Tests/Tests/Shared/TestFloat4x3.gen.cs.meta b/package/Tests/Tests/Shared/TestFloat4x3.gen.cs.meta new file mode 100755 index 000000000..60f175469 --- /dev/null +++ b/package/Tests/Tests/Shared/TestFloat4x3.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d5d74a51bcf6045408a569332921009f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/package/Tests/Tests/Shared/TestFloat4x4.gen.cs b/package/Tests/Tests/Shared/TestFloat4x4.gen.cs new file mode 100755 index 000000000..0429fa0fc --- /dev/null +++ b/package/Tests/Tests/Shared/TestFloat4x4.gen.cs @@ -0,0 +1,974 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using NUnit.Framework; +using static Unity.Mathematics.math; +using Burst.Compiler.IL.Tests; + +namespace Unity.Mathematics.Tests +{ + [TestFixture] + public class TestFloat4x4 + { + [TestCompiler] + public static void float4x4_zero() + { + TestUtils.AreEqual(float4x4.zero.c0.x, 0.0f); + TestUtils.AreEqual(float4x4.zero.c0.y, 0.0f); + TestUtils.AreEqual(float4x4.zero.c0.z, 0.0f); + TestUtils.AreEqual(float4x4.zero.c0.w, 0.0f); + TestUtils.AreEqual(float4x4.zero.c1.x, 0.0f); + TestUtils.AreEqual(float4x4.zero.c1.y, 0.0f); + TestUtils.AreEqual(float4x4.zero.c1.z, 0.0f); + TestUtils.AreEqual(float4x4.zero.c1.w, 0.0f); + TestUtils.AreEqual(float4x4.zero.c2.x, 0.0f); + TestUtils.AreEqual(float4x4.zero.c2.y, 0.0f); + TestUtils.AreEqual(float4x4.zero.c2.z, 0.0f); + TestUtils.AreEqual(float4x4.zero.c2.w, 0.0f); + TestUtils.AreEqual(float4x4.zero.c3.x, 0.0f); + TestUtils.AreEqual(float4x4.zero.c3.y, 0.0f); + TestUtils.AreEqual(float4x4.zero.c3.z, 0.0f); + TestUtils.AreEqual(float4x4.zero.c3.w, 0.0f); + } + + [TestCompiler] + public static void float4x4_identity() + { + TestUtils.AreEqual(float4x4.identity.c0.x, 1.0f); + TestUtils.AreEqual(float4x4.identity.c0.y, 0.0f); + TestUtils.AreEqual(float4x4.identity.c0.z, 0.0f); + TestUtils.AreEqual(float4x4.identity.c0.w, 0.0f); + TestUtils.AreEqual(float4x4.identity.c1.x, 0.0f); + TestUtils.AreEqual(float4x4.identity.c1.y, 1.0f); + TestUtils.AreEqual(float4x4.identity.c1.z, 0.0f); + TestUtils.AreEqual(float4x4.identity.c1.w, 0.0f); + TestUtils.AreEqual(float4x4.identity.c2.x, 0.0f); + TestUtils.AreEqual(float4x4.identity.c2.y, 0.0f); + TestUtils.AreEqual(float4x4.identity.c2.z, 1.0f); + TestUtils.AreEqual(float4x4.identity.c2.w, 0.0f); + TestUtils.AreEqual(float4x4.identity.c3.x, 0.0f); + TestUtils.AreEqual(float4x4.identity.c3.y, 0.0f); + TestUtils.AreEqual(float4x4.identity.c3.z, 0.0f); + TestUtils.AreEqual(float4x4.identity.c3.w, 1.0f); + } + + [TestCompiler] + public static void float4x4_operator_equal_wide_wide() + { + float4x4 a0 = float4x4(-135.18924f, -49.0941162f, 169.129822f, 240.8053f, 314.7392f, 442.393f, 177.924438f, 335.5334f, 168.15448f, 350.729553f, 367.178467f, 46.9414673f, 188.76416f, -97.2113953f, -293.320984f, -234.822937f); + float4x4 b0 = float4x4(-220.014648f, 66.98004f, 499.2016f, -371.1131f, 208.448669f, 390.8037f, -72.44382f, 362.97644f, 194.678345f, 471.644836f, -404.044678f, -144.696747f, -494.446655f, -252.970367f, 234.417114f, 398.724f); + bool4x4 r0 = bool4x4(false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + float4x4 a1 = float4x4(417.0337f, 26.3864136f, 269.245728f, 29.4741821f, 479.485229f, -237.230957f, -221.9837f, -506.672546f, -22.98944f, 487.260864f, -419.731964f, 337.2033f, 245.043884f, 390.215881f, 84.4129639f, 434.2079f); + float4x4 b1 = float4x4(260.4287f, 370.144226f, 89.579834f, -434.816833f, -109.845337f, 336.973022f, -409.154968f, 500.387573f, -174.081818f, 395.101135f, 350.3393f, -243.144592f, -416.397369f, 151.576477f, -18.2243347f, -431.677917f); + bool4x4 r1 = bool4x4(false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + float4x4 a2 = float4x4(-68.7284241f, 485.769958f, 413.169739f, -418.2693f, -346.795868f, 504.159668f, 345.186279f, -434.713043f, -499.7741f, 282.019043f, 259.15625f, 306.455933f, 435.2254f, -386.8997f, 211.364014f, -7.229828f); + float4x4 b2 = float4x4(-468.330963f, 429.495728f, 477.389221f, -433.4254f, 273.5464f, -34.9762268f, 221.968445f, 85.91913f, -85.59894f, 392.7608f, -117.924072f, -445.3056f, -242.468964f, 173.643066f, 389.897766f, -14.2904663f); + bool4x4 r2 = bool4x4(false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + float4x4 a3 = float4x4(-32.0532227f, -106.298553f, -382.924957f, -424.7822f, -267.8125f, 229.897034f, 358.1797f, -76.33087f, -493.684326f, 139.350586f, 211.756653f, -178.8342f, -262.786865f, 506.270325f, 352.288879f, -132.7894f); + float4x4 b3 = float4x4(-317.55304f, -265.652771f, -424.168274f, 11.6213379f, 408.686218f, -181.278351f, -139.8205f, -488.924561f, -207.703278f, -341.9881f, -470.552917f, -462.804352f, 419.075562f, 143.638733f, -79.912384f, -224.6936f); + bool4x4 r3 = bool4x4(false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void float4x4_operator_equal_wide_scalar() + { + float4x4 a0 = float4x4(65.6712f, 404.415527f, -269.730164f, 83.6306152f, 152.9945f, -155.868286f, 314.671265f, 386.365173f, 290.04895f, -132.6352f, -65.66748f, -69.68326f, -191.190765f, 186.845215f, -232.895691f, -319.144043f); + float b0 = (-155.815765f); + bool4x4 r0 = bool4x4(false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + float4x4 a1 = float4x4(-49.70108f, 333.396851f, 386.3775f, -296.7019f, -309.1172f, 141.542358f, -227.323334f, 83.87286f, -410.91687f, 110.501282f, -390.103577f, 36.57434f, -427.541443f, -268.170837f, 175.8117f, -193.47995f); + float b1 = (-300.8819f); + bool4x4 r1 = bool4x4(false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + float4x4 a2 = float4x4(291.051941f, -429.8739f, -275.156952f, -56.3323669f, -95.83597f, -124.865326f, 253.006165f, -300.509521f, 314.866516f, 195.616211f, -26.1289063f, -284.7747f, -242.672058f, 140.3606f, 505.644348f, 506.537964f); + float b2 = (423.97168f); + bool4x4 r2 = bool4x4(false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + float4x4 a3 = float4x4(-502.3698f, 87.36731f, -433.136383f, -149.626923f, -358.698547f, -249.126862f, 469.5932f, 511.757751f, 51.911377f, 245.630432f, 192.774841f, -162.209167f, 205.5904f, -376.464355f, 270.5208f, -388.2033f); + float b3 = (-249.517639f); + bool4x4 r3 = bool4x4(false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void float4x4_operator_equal_scalar_wide() + { + float a0 = (36.38391f); + float4x4 b0 = float4x4(-400.4892f, -71.2868347f, 156.978088f, -225.238739f, 499.141785f, -211.979919f, 428.311951f, -489.501343f, -5.691559f, -30.8659363f, -362.9831f, 184.503174f, -160.470612f, 316.668823f, 390.369263f, 505.1051f); + bool4x4 r0 = bool4x4(false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + float a1 = (-294.6487f); + float4x4 b1 = float4x4(443.1991f, 96.5592651f, -257.012939f, -245.054962f, 326.464844f, -23.9599f, -168.694885f, 386.2486f, -227.090637f, -336.612427f, 365.108154f, -405.390839f, -473.995483f, 298.435364f, -149.86322f, 450.0664f); + bool4x4 r1 = bool4x4(false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + float a2 = (153.47644f); + float4x4 b2 = float4x4(56.28778f, 39.3421021f, -350.403717f, -482.717224f, 239.9654f, -3.40603638f, -1.49484253f, 105.960449f, 151.537537f, 63.2832031f, -289.693176f, 137.553772f, -247.666473f, -339.420563f, 23.2382813f, 21.1778564f); + bool4x4 r2 = bool4x4(false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + float a3 = (477.03656f); + float4x4 b3 = float4x4(-411.318146f, 122.397095f, -401.49884f, -230.5611f, -214.954041f, 464.6731f, -186.327f, -99.4873352f, 214.232483f, -387.3675f, -448.7962f, 427.889526f, -43.6960449f, 182.698669f, 298.880127f, 246.436829f); + bool4x4 r3 = bool4x4(false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void float4x4_operator_not_equal_wide_wide() + { + float4x4 a0 = float4x4(279.994141f, -43.34201f, -465.724731f, 317.466553f, 85.7149658f, 360.8905f, 366.081543f, 154.542847f, 332.4262f, 397.11322f, -431.374969f, 489.0108f, 398.4336f, -489.817932f, 171.4049f, -67.82968f); + float4x4 b0 = float4x4(-460.9121f, -476.009033f, 468.1364f, -341.012543f, -62.65805f, -458.801666f, -457.730225f, -59.5232544f, 3.024231f, 155.812744f, -19.8399048f, -6.01693726f, -406.207916f, -102.420715f, -40.362915f, 452.6754f); + bool4x4 r0 = bool4x4(true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + float4x4 a1 = float4x4(-192.278717f, 227.84082f, 62.1381836f, 262.186462f, -404.0531f, 34.449585f, -204.795776f, -285.4118f, -72.20682f, 444.749268f, 238.81781f, 365.1801f, -437.9229f, -362.442627f, 445.954346f, -0.417480469f); + float4x4 b1 = float4x4(93.25757f, -258.378052f, -184.0498f, -379.2353f, -370.687317f, -255.947235f, 29.0557861f, 322.407654f, 415.071716f, -467.726135f, -433.784668f, -212.165924f, 474.674927f, 452.483215f, -92.11273f, -385.9221f); + bool4x4 r1 = bool4x4(true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + float4x4 a2 = float4x4(-506.828369f, 245.477051f, -173.571045f, 390.338562f, 252.837769f, 47.8658447f, 457.7105f, -313.22113f, 391.203857f, 481.786133f, 26.8878174f, -298.1424f, 240.077454f, -332.455139f, -333.607178f, -313.1897f); + float4x4 b2 = float4x4(420.2151f, -239.176056f, -99.0791f, 4.476013f, 264.348572f, 451.312317f, 232.958008f, -142.6222f, -300.2256f, 268.333252f, -112.103546f, -270.494019f, -71.9932251f, 99.46326f, 321.7033f, 200.059631f); + bool4x4 r2 = bool4x4(true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + float4x4 a3 = float4x4(141.730164f, -261.118866f, 295.578735f, -16.0213013f, -487.266846f, -208.563873f, 30.3494873f, -157.876465f, 275.896057f, -450.7207f, -61.8988647f, 99.19006f, 206.357483f, 32.74652f, -278.623962f, -173.916809f); + float4x4 b3 = float4x4(-91.62833f, -113.010864f, 465.764221f, -485.127716f, -71.7267761f, 486.469238f, 425.8678f, -158.880951f, 292.179565f, 234.179932f, 243.249329f, 117.275146f, 3.97106934f, 410.42218f, -221.124725f, 443.13446f); + bool4x4 r3 = bool4x4(true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void float4x4_operator_not_equal_wide_scalar() + { + float4x4 a0 = float4x4(-155.4411f, -19.4266052f, 174.633057f, 507.920715f, 59.177063f, 171.151489f, -58.92328f, -398.176849f, 492.20105f, -165.241516f, 270.341f, -380.243256f, 501.899048f, -134.345459f, 458.400452f, 46.7709961f); + float b0 = (-393.413544f); + bool4x4 r0 = bool4x4(true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + float4x4 a1 = float4x4(161.459961f, -145.6124f, -0.449920654f, 350.461426f, 202.221008f, 242.664f, 382.677063f, -468.967957f, -497.459473f, -80.93225f, -328.587769f, -506.490326f, 449.348145f, 210.771f, 249.181824f, -338.468536f); + float b1 = (261.514221f); + bool4x4 r1 = bool4x4(true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + float4x4 a2 = float4x4(229.670654f, 317.286072f, 401.939575f, 210.984863f, -147.096313f, -193.399048f, 207.731384f, 284.3921f, -509.0853f, 414.307617f, -52.2944641f, -140.437927f, -316.787781f, -358.696838f, 312.31897f, 270.629456f); + float b2 = (-76.5433044f); + bool4x4 r2 = bool4x4(true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + float4x4 a3 = float4x4(-140.016724f, 113.137207f, 479.6996f, 6.097473f, -83.63458f, 249.909363f, 303.956f, 464.888672f, 44.6365356f, -259.91626f, -242.33551f, -403.686523f, -469.1471f, 135.987488f, -490.840759f, 470.225281f); + float b3 = (108.910645f); + bool4x4 r3 = bool4x4(true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void float4x4_operator_not_equal_scalar_wide() + { + float a0 = (478.353149f); + float4x4 b0 = float4x4(459.553223f, 436.453247f, -488.714172f, 392.767944f, -266.736633f, 338.557861f, -338.100128f, -152.314545f, -452.820679f, 209.439331f, 50.10797f, 372.4344f, -488.0213f, 489.740784f, 270.4001f, -472.846771f); + bool4x4 r0 = bool4x4(true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + float a1 = (-286.850464f); + float4x4 b1 = float4x4(-384.691864f, 443.423523f, 358.7472f, -15.4140625f, -342.179169f, 468.967529f, -130.568085f, 401.785828f, -268.352264f, -239.231018f, 411.386536f, 139.769348f, 334.522034f, -223.629242f, -12.4884644f, 113.468872f); + bool4x4 r1 = bool4x4(true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + float a2 = (-189.652252f); + float4x4 b2 = float4x4(-212.846558f, 306.1256f, -178.330383f, 382.141968f, -340.8656f, -17.58023f, -409.874847f, -349.70166f, 275.8543f, -229.371948f, -127.505737f, 90.75342f, -422.087128f, -2.44754028f, -280.5517f, -484.374359f); + bool4x4 r2 = bool4x4(true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + float a3 = (-33.7634277f); + float4x4 b3 = float4x4(374.593872f, 437.092346f, 286.22583f, -18.2327881f, 289.732361f, 479.485718f, 153.853943f, 502.982117f, -510.3844f, 65.78888f, -237.4867f, 219.916138f, -275.342743f, -78.93146f, -449.403564f, -253.034515f); + bool4x4 r3 = bool4x4(true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void float4x4_operator_less_wide_wide() + { + float4x4 a0 = float4x4(51.7102661f, -313.85556f, 283.047668f, 235.021912f, 44.07837f, -207.255676f, 3.38293457f, -144.301331f, -69.3696f, -135.667969f, -194.787354f, -33.473877f, -19.67508f, 423.237976f, -71.6983f, -501.886f); + float4x4 b0 = float4x4(-261.835236f, -19.81073f, -149.25882f, 205.99823f, -306.024384f, 102.121704f, 231.906311f, 179.49884f, 473.2249f, 15.8916626f, 270.049927f, 490.914f, -185.734131f, 76.4331055f, 97.75232f, 419.300781f); + bool4x4 r0 = bool4x4(false, true, false, false, false, true, true, true, true, true, true, true, false, false, true, true); + TestUtils.AreEqual(a0 < b0, r0); + + float4x4 a1 = float4x4(7.64386f, 302.262878f, -140.5505f, -436.5867f, -351.4417f, 364.970825f, 301.8941f, 407.550964f, 269.1078f, 462.98822f, 223.884155f, -287.18924f, 283.6386f, 511.864319f, -60.4967957f, -234.303467f); + float4x4 b1 = float4x4(73.953186f, 481.032349f, 7.00744629f, -7.32409668f, -413.075745f, -154.1189f, 449.202881f, 502.014282f, -382.315857f, 251.535156f, 143.17395f, 293.660339f, -292.769562f, -43.2182f, -353.4112f, 458.32605f); + bool4x4 r1 = bool4x4(true, true, true, true, false, false, true, true, false, false, false, true, false, false, false, true); + TestUtils.AreEqual(a1 < b1, r1); + + float4x4 a2 = float4x4(-316.1384f, -417.522156f, 441.643433f, -191.950623f, 397.811584f, -144.666626f, 417.079041f, -322.980133f, -81.2850952f, 319.325317f, 146.764038f, -316.583374f, -150.857544f, -314.606323f, 7.14312744f, -458.8273f); + float4x4 b2 = float4x4(-114.556458f, 441.429749f, -113.333679f, 435.622925f, 383.656128f, -293.7116f, -391.35498f, 43.12201f, 433.223633f, -201.382446f, -241.421173f, 376.469849f, -503.39743f, -359.780945f, 118.631531f, -510.030518f); + bool4x4 r2 = bool4x4(true, true, false, true, false, false, false, true, true, false, false, true, false, false, true, false); + TestUtils.AreEqual(a2 < b2, r2); + + float4x4 a3 = float4x4(333.227722f, -349.9805f, 354.725037f, -451.62915f, 321.634766f, 365.723572f, -224.1594f, 388.5813f, -481.789429f, -473.9331f, -160.736511f, -200.438019f, -309.973083f, 80.28729f, -310.727356f, -83.5202f); + float4x4 b3 = float4x4(418.644775f, -95.54941f, 478.121216f, -129.558563f, -484.634674f, 352.228027f, -505.477631f, 162.993591f, -43.25766f, 18.279541f, 479.078979f, 437.282776f, -281.992035f, 433.0409f, -344.169678f, -232.819916f); + bool4x4 r3 = bool4x4(true, true, true, true, false, false, false, false, true, true, true, true, true, true, false, false); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void float4x4_operator_less_wide_scalar() + { + float4x4 a0 = float4x4(-221.869781f, -121.546478f, -97.5239258f, 479.8811f, 67.11902f, 137.3288f, 282.9666f, 258.2791f, -111.413147f, -288.081116f, 82.6654053f, -361.6429f, -68.0881958f, 12.7880249f, -66.703064f, -78.76297f); + float b0 = (199.0675f); + bool4x4 r0 = bool4x4(true, true, true, false, true, true, false, false, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 < b0, r0); + + float4x4 a1 = float4x4(25.7277222f, -330.442657f, -48.9205322f, 359.604431f, -8.150085f, 241.2768f, -183.437775f, 423.027161f, -334.622742f, -98.31558f, 300.410156f, 297.925232f, -492.108154f, -395.807251f, 95.78882f, -220.62146f); + float b1 = (101.37085f); + bool4x4 r1 = bool4x4(true, true, true, false, true, false, true, false, true, true, false, false, true, true, true, true); + TestUtils.AreEqual(a1 < b1, r1); + + float4x4 a2 = float4x4(-455.37558f, -296.372131f, 272.488342f, 360.207947f, 389.727417f, 68.7366943f, -400.615234f, -85.46912f, -467.702148f, -51.38788f, 201.764648f, -47.8412781f, -180.740051f, -409.0157f, 229.699036f, 176.197876f); + float b2 = (360.291565f); + bool4x4 r2 = bool4x4(true, true, true, true, false, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 < b2, r2); + + float4x4 a3 = float4x4(-410.45517f, -20.24649f, 150.797852f, -69.47418f, -304.7824f, 149.1767f, -426.086151f, -455.146057f, -110.2583f, -276.355621f, 494.5564f, 472.353882f, -131.305f, -404.2739f, 498.876648f, 370.978516f); + float b3 = (-264.4348f); + bool4x4 r3 = bool4x4(true, false, false, false, true, false, true, true, false, true, false, false, false, true, false, false); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void float4x4_operator_less_scalar_wide() + { + float a0 = (-250.484924f); + float4x4 b0 = float4x4(-377.196533f, -505.147552f, 375.9267f, 110.17395f, -118.097565f, -40.4508972f, -299.744324f, 31.4371338f, -458.904541f, 13.6846924f, -458.5069f, 248.276489f, 389.231445f, 488.745544f, -221.637878f, -424.2672f); + bool4x4 r0 = bool4x4(false, false, true, true, true, true, false, true, false, true, false, true, true, true, true, false); + TestUtils.AreEqual(a0 < b0, r0); + + float a1 = (249.059021f); + float4x4 b1 = float4x4(-22.1361389f, -442.247742f, -340.857544f, -95.1117249f, 15.4094238f, 87.29248f, 495.067627f, 316.0185f, -125.568115f, 122.164795f, 96.75537f, -228.906342f, -143.9527f, -230.238281f, -327.6126f, 103.39801f); + bool4x4 r1 = bool4x4(false, false, false, false, false, false, true, true, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 < b1, r1); + + float a2 = (434.488831f); + float4x4 b2 = float4x4(-157.4502f, 190.572144f, 108.2583f, 132.550781f, -431.515228f, -192.203522f, -431.835f, -85.58124f, 328.670532f, 273.577881f, -178.669067f, 352.6363f, -82.6058044f, 238.908875f, 291.335327f, 183.357361f); + bool4x4 r2 = bool4x4(false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 < b2, r2); + + float a3 = (-185.0326f); + float4x4 b3 = float4x4(-179.355042f, -331.5387f, 59.2844238f, 356.62677f, 119.394043f, -80.44003f, 392.85907f, 306.155457f, -504.529449f, 349.384338f, 115.500305f, -251.656525f, 197.048157f, -268.077026f, 381.1057f, -367.121582f); + bool4x4 r3 = bool4x4(true, false, true, true, true, true, true, true, false, true, true, false, true, false, true, false); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void float4x4_operator_greater_wide_wide() + { + float4x4 a0 = float4x4(-229.29068f, 505.536621f, -73.80707f, 100.292053f, -419.214783f, -159.559753f, -396.770355f, 127.037415f, 489.1399f, 51.9188843f, 155.384766f, -135.631653f, -425.978149f, -228.430511f, 383.03833f, 136.533569f); + float4x4 b0 = float4x4(-445.845032f, -420.035278f, 299.0244f, -13.8809814f, 151.5617f, -163.50943f, -391.096039f, 479.283752f, -77.6748657f, -46.584198f, -415.377f, 71.46698f, -206.061035f, 360.8363f, 236.968811f, 14.550354f); + bool4x4 r0 = bool4x4(true, true, false, true, false, true, false, false, true, true, true, false, false, false, true, true); + TestUtils.AreEqual(a0 > b0, r0); + + float4x4 a1 = float4x4(8.602417f, -251.324371f, -345.954926f, -170.565918f, -293.2544f, 139.125f, 214.3031f, 238.7699f, 105.535217f, -170.9253f, 26.9802246f, -188.928314f, 201.786621f, -506.057159f, 15.454895f, 115.080688f); + float4x4 b1 = float4x4(364.735168f, -159.06131f, 226.631165f, 182.796021f, 341.839355f, -79.13046f, -247.296814f, 164.589111f, -352.1598f, 9.822632f, 186.721619f, -325.913635f, -77.93036f, -379.746033f, 251.45575f, -144.183563f); + bool4x4 r1 = bool4x4(false, false, false, false, false, true, true, true, true, false, false, true, true, false, false, true); + TestUtils.AreEqual(a1 > b1, r1); + + float4x4 a2 = float4x4(-496.971832f, 339.888123f, 372.228333f, 313.2387f, -419.108948f, -265.329773f, -42.5019836f, 369.163879f, 67.16907f, -256.6989f, -104.105927f, 499.570129f, 41.6635132f, 151.1521f, 220.688354f, -344.658875f); + float4x4 b2 = float4x4(337.8899f, -249.505554f, -225.9013f, -249.491272f, 381.122864f, 325.5454f, 455.49884f, 333.318665f, 118.980347f, 223.19812f, -385.289063f, 333.8808f, -437.4107f, 243.975464f, -302.8199f, -32.7101746f); + bool4x4 r2 = bool4x4(false, true, true, true, false, false, false, true, false, false, true, true, true, false, true, false); + TestUtils.AreEqual(a2 > b2, r2); + + float4x4 a3 = float4x4(-285.2413f, -94.15863f, -75.18497f, 304.360779f, -153.398468f, -83.06839f, -59.9485779f, 228.588379f, 64.9057f, 65.0849f, -3.845337f, 471.922363f, 350.319824f, 220.831f, 134.9466f, 41.8203735f); + float4x4 b3 = float4x4(-228.691467f, 388.413147f, -23.7245483f, -180.5635f, -433.434021f, 157.857361f, -2.47369385f, 258.287842f, -327.375854f, 408.474548f, 403.882568f, 400.3172f, -505.992645f, 297.639038f, -442.736755f, 395.710938f); + bool4x4 r3 = bool4x4(false, false, false, true, true, false, false, false, true, false, false, true, true, false, true, false); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void float4x4_operator_greater_wide_scalar() + { + float4x4 a0 = float4x4(11.156311f, -411.023224f, 385.885559f, -485.103058f, -491.180023f, 405.175354f, 173.575073f, 69.26929f, 501.306824f, -367.027771f, -86.12451f, -489.090576f, -172.518158f, -18.1496277f, -236.414948f, -238.8945f); + float b0 = (-302.816956f); + bool4x4 r0 = bool4x4(true, false, true, false, false, true, true, true, true, false, true, false, true, true, true, true); + TestUtils.AreEqual(a0 > b0, r0); + + float4x4 a1 = float4x4(-27.2391357f, 240.164551f, -481.4781f, 185.59436f, 33.29474f, -510.228149f, -183.2862f, -386.127655f, -13.6382141f, -7.34790039f, -261.865967f, 52.24951f, 16.3232422f, -410.5101f, -262.2675f, -458.255981f); + float b1 = (471.779358f); + bool4x4 r1 = bool4x4(false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 > b1, r1); + + float4x4 a2 = float4x4(-218.866119f, 290.573059f, 180.2633f, -482.863953f, 100.7063f, 180.672546f, 501.319763f, -289.280975f, -25.8497f, 455.1624f, -63.3173523f, -17.4467773f, 53.01776f, 88.81958f, 182.357971f, -428.927216f); + float b2 = (-34.6923523f); + bool4x4 r2 = bool4x4(false, true, true, false, true, true, true, false, true, true, false, true, true, true, true, false); + TestUtils.AreEqual(a2 > b2, r2); + + float4x4 a3 = float4x4(408.336853f, 495.172668f, 345.030029f, 337.561951f, 175.888367f, -412.795074f, 57.1717529f, 413.0246f, 34.45819f, -99.4767761f, -76.55893f, -494.980225f, -27.0163879f, -468.51767f, -335.857025f, 481.1654f); + float b3 = (-460.198639f); + bool4x4 r3 = bool4x4(true, true, true, true, true, true, true, true, true, true, true, false, true, false, true, true); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void float4x4_operator_greater_scalar_wide() + { + float a0 = (453.546082f); + float4x4 b0 = float4x4(-226.2044f, -423.465f, 409.405518f, 453.877075f, 87.47571f, 113.795593f, 176.409241f, -140.440033f, -182.48288f, -158.2933f, -162.685333f, -193.328674f, 230.181274f, -102.58783f, 392.520569f, -177.478668f); + bool4x4 r0 = bool4x4(true, true, true, false, true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 > b0, r0); + + float a1 = (-10.2950134f); + float4x4 b1 = float4x4(-24.04895f, 172.448669f, 374.048035f, -368.99762f, -210.195282f, 149.470215f, -281.343262f, -100.469177f, 304.864441f, -361.524841f, -372.452362f, -33.9095459f, -69.5952759f, -460.4324f, -309.341675f, 486.131531f); + bool4x4 r1 = bool4x4(true, false, false, true, true, false, true, true, false, true, true, true, true, true, true, false); + TestUtils.AreEqual(a1 > b1, r1); + + float a2 = (471.920959f); + float4x4 b2 = float4x4(479.361572f, -107.004181f, 331.636536f, -340.840149f, -384.2146f, -451.726563f, 467.97876f, -236.569122f, 44.6547241f, -285.797852f, 42.730957f, 338.18512f, 274.017029f, -108.60437f, -211.37326f, -19.00415f); + bool4x4 r2 = bool4x4(false, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 > b2, r2); + + float a3 = (194.114685f); + float4x4 b3 = float4x4(395.7599f, -320.206238f, -384.86615f, 310.543762f, 495.990845f, -60.93524f, 178.748779f, 42.3462524f, 294.611267f, -36.6795654f, 36.8616333f, 405.469543f, 399.112427f, -209.86087f, -365.343658f, -167.460236f); + bool4x4 r3 = bool4x4(false, true, true, false, false, true, true, true, false, true, true, false, false, true, true, true); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void float4x4_operator_less_equal_wide_wide() + { + float4x4 a0 = float4x4(240.090515f, 462.213135f, 293.08252f, -427.870667f, -405.5227f, 204.591919f, 294.6701f, -327.564453f, -456.12326f, 282.30127f, 421.881165f, -311.71283f, 84.5675049f, 447.244629f, -154.494354f, -424.364746f); + float4x4 b0 = float4x4(-81.20383f, 493.637451f, -411.4721f, 99.16443f, -295.6677f, -480.462555f, 74.41406f, 260.916138f, 306.173279f, 139.564819f, -505.752472f, -489.6268f, -280.0326f, 303.1599f, 511.1902f, -104.659729f); + bool4x4 r0 = bool4x4(false, true, false, true, true, false, false, true, true, false, false, false, false, false, true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + float4x4 a1 = float4x4(36.68451f, 267.0703f, 307.893921f, -351.760132f, -157.360352f, 152.709045f, 372.267151f, 202.368286f, -77.04346f, 438.1848f, 260.282349f, 386.034058f, -281.491f, -102.930054f, -346.716736f, -258.3412f); + float4x4 b1 = float4x4(95.14661f, -125.636353f, 376.2398f, -415.774719f, -47.48105f, 117.722107f, 469.378357f, -263.042358f, -216.002319f, 66.73425f, 99.21863f, 233.843018f, 439.839966f, 61.1151123f, -219.030579f, -404.7129f); + bool4x4 r1 = bool4x4(true, false, true, false, true, false, true, false, false, false, false, false, true, true, true, false); + TestUtils.AreEqual(a1 <= b1, r1); + + float4x4 a2 = float4x4(-383.302948f, -5.14703369f, 319.34375f, 465.022217f, 145.933472f, -215.074829f, -146.461517f, -349.893982f, 29.5991211f, -131.796631f, -438.9947f, 147.057922f, 221.112488f, -356.145355f, -32.83017f, 442.942017f); + float4x4 b2 = float4x4(-202.748352f, -312.476471f, 310.0719f, -320.363037f, 186.075989f, -42.6377869f, 82.56506f, 127.189087f, 198.286987f, -450.492035f, 20.901001f, 449.465881f, -478.7727f, 380.053955f, 99.1247559f, -450.329773f); + bool4x4 r2 = bool4x4(true, false, false, false, true, true, true, true, true, false, true, true, false, true, true, false); + TestUtils.AreEqual(a2 <= b2, r2); + + float4x4 a3 = float4x4(-301.139832f, -10.9749451f, -37.47458f, -70.38611f, -169.0245f, 432.800781f, -197.706573f, -131.6955f, 277.733948f, -480.483978f, 424.766052f, -477.7182f, 162.193726f, -21.5889587f, 154.217224f, 224.467163f); + float4x4 b3 = float4x4(45.421936f, 63.0155029f, 2.8447876f, 124.884644f, 246.547852f, -437.79364f, -83.328125f, 147.94397f, 281.880859f, -33.0036926f, -319.849152f, 107.796021f, 57.387085f, 286.116455f, -427.031738f, -465.191284f); + bool4x4 r3 = bool4x4(true, true, true, true, true, false, true, true, true, true, false, true, false, true, false, false); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void float4x4_operator_less_equal_wide_scalar() + { + float4x4 a0 = float4x4(309.192444f, 69.67377f, -101.724182f, -315.9724f, -346.011047f, 424.15387f, -410.870056f, -483.902649f, 183.821167f, 320.4425f, -257.870056f, -386.801758f, -182.938812f, 349.250122f, 485.311584f, 373.5691f); + float b0 = (292.924255f); + bool4x4 r0 = bool4x4(false, true, true, true, true, false, true, true, true, false, true, true, true, false, false, false); + TestUtils.AreEqual(a0 <= b0, r0); + + float4x4 a1 = float4x4(259.1515f, -128.525543f, -43.8748779f, 457.385742f, -77.6383057f, 479.451843f, -499.516449f, -398.132935f, 402.484863f, 87.91608f, -502.1736f, 125.950806f, -54.49362f, 250.667419f, 97.94293f, 228.021545f); + float b1 = (450.130066f); + bool4x4 r1 = bool4x4(true, true, true, false, true, false, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 <= b1, r1); + + float4x4 a2 = float4x4(-213.378662f, -24.8275757f, -451.0416f, 429.577576f, -308.4343f, 355.160339f, -279.4071f, 181.672241f, -290.148743f, -184.844086f, 447.6939f, 168.8866f, 26.3789673f, 392.558533f, 255.604858f, 162.163452f); + float b2 = (42.2608032f); + bool4x4 r2 = bool4x4(true, true, true, false, true, false, true, false, true, true, false, false, true, false, false, false); + TestUtils.AreEqual(a2 <= b2, r2); + + float4x4 a3 = float4x4(195.496277f, 357.5598f, 145.561829f, 363.8067f, -141.437439f, 102.221924f, -114.207733f, -429.839478f, -236.495941f, -175.762238f, -420.696442f, -97.8534546f, -273.685242f, -442.2249f, 156.187012f, -102.823273f); + float b3 = (463.248779f); + bool4x4 r3 = bool4x4(true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void float4x4_operator_less_equal_scalar_wide() + { + float a0 = (-511.152374f); + float4x4 b0 = float4x4(51.1589966f, 340.443665f, 312.81427f, 354.1925f, 136.396729f, -94.76788f, 288.5443f, 304.042847f, -148.618073f, -506.3001f, 27.5812378f, 48.47113f, 104.883484f, -488.685852f, -480.435181f, 421.936646f); + bool4x4 r0 = bool4x4(true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + float a1 = (239.721069f); + float4x4 b1 = float4x4(-101.018433f, -283.951477f, -55.24353f, -455.80484f, 131.107239f, -461.6988f, -388.482849f, -258.936035f, -225.223541f, -116.019989f, -442.595245f, 297.333374f, 36.6872559f, 485.097839f, 344.445679f, 237.592163f); + bool4x4 r1 = bool4x4(false, false, false, false, false, false, false, false, false, false, false, true, false, true, true, false); + TestUtils.AreEqual(a1 <= b1, r1); + + float a2 = (230.390869f); + float4x4 b2 = float4x4(-413.9848f, -215.901672f, 39.5603638f, 22.947998f, -162.060577f, 236.7337f, -253.951965f, -204.719086f, -161.616547f, -64.3859253f, -229.815643f, -484.825653f, -135.040436f, 351.694763f, 111.825378f, -249.982544f); + bool4x4 r2 = bool4x4(false, false, false, false, false, true, false, false, false, false, false, false, false, true, false, false); + TestUtils.AreEqual(a2 <= b2, r2); + + float a3 = (435.8073f); + float4x4 b3 = float4x4(2.89263916f, -338.669983f, 381.346619f, 456.652466f, 432.051819f, 290.142456f, 189.297119f, 101.1286f, -150.379761f, -490.7479f, 219.139587f, -505.290527f, 326.6947f, -479.397919f, 195.13562f, 322.878967f); + bool4x4 r3 = bool4x4(false, false, false, true, false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void float4x4_operator_greater_equal_wide_wide() + { + float4x4 a0 = float4x4(-386.5918f, -157.120789f, 391.015259f, -511.886871f, -5.42202759f, 287.645264f, -122.535187f, 7.48144531f, 152.946411f, 48.9862061f, 57.3381348f, 300.4649f, 349.25708f, 85.7496948f, -230.953308f, 418.711243f); + float4x4 b0 = float4x4(153.443f, 49.8924561f, 78.02582f, 138.813721f, -225.51059f, -339.3561f, -373.302063f, 364.9359f, -322.7154f, 125.47821f, -25.77658f, 297.518921f, 73.22235f, 462.783752f, 393.191345f, -95.0014343f); + bool4x4 r0 = bool4x4(false, false, true, false, true, true, true, false, true, false, true, true, true, false, false, true); + TestUtils.AreEqual(a0 >= b0, r0); + + float4x4 a1 = float4x4(-131.039917f, -126.512207f, -156.818481f, 422.3775f, -413.089325f, 219.442749f, 35.5911255f, 447.181519f, -223.492981f, 302.123f, 459.852722f, -347.128021f, 364.9781f, 212.635437f, 504.276062f, -142.232971f); + float4x4 b1 = float4x4(381.357056f, 93.03192f, 254.253235f, 90.67279f, 348.938171f, 161.337646f, 79.43561f, 420.243469f, 453.684875f, -154.011658f, -97.29007f, 151.184753f, 57.36029f, -194.207092f, -462.670624f, 113.3866f); + bool4x4 r1 = bool4x4(false, false, false, true, false, true, false, true, false, true, true, false, true, true, true, false); + TestUtils.AreEqual(a1 >= b1, r1); + + float4x4 a2 = float4x4(-132.2218f, 303.683777f, 265.210144f, 9.754395f, -233.0929f, 26.5675049f, 266.7807f, -250.072235f, 138.040833f, 174.276733f, -420.931641f, -42.8541565f, 216.485046f, 240.053833f, -470.382172f, 98.39673f); + float4x4 b2 = float4x4(-129.3533f, 8.107788f, 426.449524f, 410.693176f, 470.313416f, 220.399963f, -372.872681f, -242.178558f, 177.506226f, -172.638153f, 60.72284f, 478.250183f, 234.30304f, 297.821228f, 104.584595f, -462.418732f); + bool4x4 r2 = bool4x4(false, true, false, false, false, false, true, false, false, true, false, false, false, false, false, true); + TestUtils.AreEqual(a2 >= b2, r2); + + float4x4 a3 = float4x4(-20.8288574f, -218.440582f, 287.751831f, -356.966675f, -68.06952f, -432.918762f, 388.1424f, 396.4041f, -204.567474f, 179.752075f, -124.947357f, 22.3182373f, 425.500854f, 303.622742f, -325.6043f, 369.075317f); + float4x4 b3 = float4x4(-405.943878f, -347.055573f, -72.92624f, -137.9425f, 403.4298f, 501.5393f, -55.5280151f, 225.850769f, -57.1860046f, -185.230133f, -481.5948f, 319.055359f, 337.433655f, -481.092865f, 223.933167f, 174.322571f); + bool4x4 r3 = bool4x4(true, true, true, false, false, false, true, true, false, true, true, false, true, true, false, true); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void float4x4_operator_greater_equal_wide_scalar() + { + float4x4 a0 = float4x4(495.4574f, -14.3451233f, -463.4748f, 217.517517f, -246.865723f, -377.6587f, 53.8151245f, -123.332947f, -221.505463f, 252.994324f, -116.440369f, -395.3633f, 164.772583f, -287.007324f, 355.837036f, 184.195557f); + float b0 = (189.205139f); + bool4x4 r0 = bool4x4(true, false, false, true, false, false, false, false, false, true, false, false, false, false, true, false); + TestUtils.AreEqual(a0 >= b0, r0); + + float4x4 a1 = float4x4(273.012268f, 249.3841f, 396.392151f, 332.6654f, 243.761414f, -335.12146f, -302.0869f, 254.442261f, 179.005066f, 71.1767f, -331.271667f, 307.890564f, -388.578522f, 150.605774f, -219.892578f, -491.681f); + float b1 = (-418.1424f); + bool4x4 r1 = bool4x4(true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, false); + TestUtils.AreEqual(a1 >= b1, r1); + + float4x4 a2 = float4x4(30.99707f, -74.50003f, -343.386475f, 216.031555f, -420.403137f, -78.38403f, -336.6411f, 317.0946f, -262.424927f, -228.411255f, 123.465454f, 264.102478f, 223.623352f, 440.5354f, -420.727f, 74.8443f); + float b2 = (199.232239f); + bool4x4 r2 = bool4x4(false, false, false, true, false, false, false, true, false, false, false, true, true, true, false, false); + TestUtils.AreEqual(a2 >= b2, r2); + + float4x4 a3 = float4x4(-177.077881f, -28.5963745f, 165.287537f, -349.208f, 457.443726f, -191.223633f, 350.612122f, 475.075256f, 86.12921f, 63.16461f, -126.913239f, 80.77649f, -344.926941f, -409.61142f, -408.5478f, -415.6823f); + float b3 = (482.7102f); + bool4x4 r3 = bool4x4(false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void float4x4_operator_greater_equal_scalar_wide() + { + float a0 = (215.435364f); + float4x4 b0 = float4x4(204.802979f, -101.104034f, -122.055023f, -70.45615f, -239.62027f, -185.992737f, -455.612579f, 276.665833f, 79.39917f, 416.420532f, 379.2735f, -439.5147f, 67.14099f, -74.56064f, -367.256348f, 494.950745f); + bool4x4 r0 = bool4x4(true, true, true, true, true, true, true, false, true, false, false, true, true, true, true, false); + TestUtils.AreEqual(a0 >= b0, r0); + + float a1 = (-61.2355347f); + float4x4 b1 = float4x4(-429.170258f, -213.824677f, -264.310181f, 243.11377f, -22.38388f, 304.862f, -323.686157f, 67.93805f, 125.303589f, -400.47052f, -283.159637f, -42.31961f, -429.510376f, 499.395874f, -289.963074f, -136.008789f); + bool4x4 r1 = bool4x4(true, true, true, false, false, false, true, false, false, true, true, false, true, false, true, true); + TestUtils.AreEqual(a1 >= b1, r1); + + float a2 = (-351.125244f); + float4x4 b2 = float4x4(-381.8183f, 393.3009f, 18.02362f, -169.92392f, -285.884949f, 163.7511f, 191.855347f, 114.0155f, -395.98584f, 189.366577f, 176.19812f, 61.7138062f, 507.548462f, 224.043823f, -422.9937f, -127.054993f); + bool4x4 r2 = bool4x4(true, false, false, false, false, false, false, false, true, false, false, false, false, false, true, false); + TestUtils.AreEqual(a2 >= b2, r2); + + float a3 = (95.5286255f); + float4x4 b3 = float4x4(362.568176f, -501.040436f, 314.6682f, 484.321533f, -284.813171f, 106.034f, -310.3689f, 373.605835f, 147.076172f, -297.522217f, 339.547058f, -193.014587f, -3.09042358f, 429.024658f, 157.236572f, 208.49408f); + bool4x4 r3 = bool4x4(false, true, false, false, true, false, true, false, false, true, false, true, true, false, false, false); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void float4x4_operator_add_wide_wide() + { + float4x4 a0 = float4x4(465.148376f, 278.9107f, -277.5299f, -65.1972046f, -473.324371f, -4.69555664f, -470.536774f, -109.9501f, -178.701447f, -420.033783f, 290.711121f, -446.529633f, 491.066467f, -261.1173f, -298.4069f, 502.4286f); + float4x4 b0 = float4x4(483.9944f, -204.07666f, -365.673553f, -509.920868f, -270.6975f, 486.763977f, 267.49176f, 251.642517f, 244.495117f, -78.67575f, 352.2055f, 82.7791748f, 462.5473f, -405.492f, -428.498322f, -41.87259f); + float4x4 r0 = float4x4(949.142761f, 74.8340454f, -643.2035f, -575.118042f, -744.021851f, 482.06842f, -203.045013f, 141.692413f, 65.79367f, -498.709534f, 642.9166f, -363.750458f, 953.6138f, -666.6093f, -726.9052f, 460.556f); + TestUtils.AreEqual(a0 + b0, r0); + + float4x4 a1 = float4x4(284.5943f, 401.128418f, -36.26349f, -102.949158f, 503.198181f, -384.4291f, -45.22821f, -198.67395f, -62.8800049f, -79.5522461f, 413.098267f, -100.877594f, 418.524f, -183.143127f, 407.443726f, 300.486023f); + float4x4 b1 = float4x4(-269.9275f, 75.20447f, -141.913391f, -222.186768f, 41.3057251f, 148.339478f, -177.233124f, -176.51889f, 492.692444f, 439.043823f, -511.742767f, -399.057129f, -315.868469f, -228.07724f, -171.7052f, 467.17395f); + float4x4 r1 = float4x4(14.6668091f, 476.3329f, -178.17688f, -325.135925f, 544.5039f, -236.08963f, -222.461334f, -375.192841f, 429.812439f, 359.491577f, -98.6445f, -499.934723f, 102.655518f, -411.220367f, 235.738525f, 767.66f); + TestUtils.AreEqual(a1 + b1, r1); + + float4x4 a2 = float4x4(-261.126129f, -309.830353f, 378.363342f, -224.094f, -164.555725f, -69.87393f, 224.634644f, -383.9926f, 149.221252f, 169.388f, 163.053955f, 57.0291138f, 342.950073f, 168.680481f, -470.770264f, -117.630493f); + float4x4 b2 = float4x4(-474.822937f, 311.390747f, 326.8454f, 475.2119f, 314.152954f, -262.594635f, -82.86911f, 156.299561f, 427.40155f, -279.099365f, -448.615234f, 284.3371f, 288.1856f, -232.39505f, -386.871918f, 162.903381f); + float4x4 r2 = float4x4(-735.9491f, 1.56039429f, 705.20874f, 251.11792f, 149.597229f, -332.468567f, 141.765533f, -227.693054f, 576.6228f, -109.711365f, -285.561279f, 341.3662f, 631.1357f, -63.71457f, -857.6422f, 45.27289f); + TestUtils.AreEqual(a2 + b2, r2); + + float4x4 a3 = float4x4(252.8197f, -102.534393f, -379.402771f, -42.8822021f, 204.786438f, 91.59955f, 70.1311646f, -111.691772f, -443.875854f, 134.701477f, 170.9068f, -207.879974f, -19.8520813f, 480.440674f, -353.835052f, 433.982178f); + float4x4 b3 = float4x4(-339.6031f, -82.40527f, 1.93530273f, 122.2746f, -42.76419f, -413.0547f, -350.282959f, -10.6069031f, 172.557312f, 492.042175f, 67.58539f, -324.510925f, -82.16745f, -421.822266f, -503.698944f, -289.683838f); + float4x4 r3 = float4x4(-86.78339f, -184.939667f, -377.467468f, 79.392395f, 162.022247f, -321.455139f, -280.1518f, -122.298676f, -271.318542f, 626.743652f, 238.492188f, -532.390869f, -102.019531f, 58.61841f, -857.534f, 144.29834f); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void float4x4_operator_add_wide_scalar() + { + float4x4 a0 = float4x4(459.898315f, -447.663361f, -94.43863f, 126.429871f, -36.254364f, -349.6413f, -2.79125977f, -478.4148f, 443.115234f, 268.092224f, 41.3210449f, -471.256073f, -2.664978f, 78.98584f, 202.14801f, 311.725464f); + float b0 = (500.997253f); + float4x4 r0 = float4x4(960.895569f, 53.3338928f, 406.558624f, 627.4271f, 464.7429f, 151.355957f, 498.206f, 22.5824585f, 944.1125f, 769.0895f, 542.3183f, 29.74118f, 498.332275f, 579.9831f, 703.145264f, 812.7227f); + TestUtils.AreEqual(a0 + b0, r0); + + float4x4 a1 = float4x4(10.3458252f, 355.2328f, -197.800751f, 255.955261f, 244.1471f, -181.626556f, -2.45492554f, 300.900635f, -236.491943f, -160.5841f, -172.5422f, -242.9411f, 466.344116f, 237.987488f, 264.294f, 372.866821f); + float b1 = (-151.244446f); + float4x4 r1 = float4x4(-140.898621f, 203.988342f, -349.0452f, 104.710815f, 92.90265f, -332.871f, -153.699371f, 149.656189f, -387.7364f, -311.828552f, -323.786652f, -394.185547f, 315.09967f, 86.74304f, 113.049561f, 221.622375f); + TestUtils.AreEqual(a1 + b1, r1); + + float4x4 a2 = float4x4(-198.837769f, 402.160339f, -117.024841f, 497.373779f, 485.9093f, -47.75714f, 77.81482f, -271.547974f, -133.2518f, 211.86676f, 253.1502f, -342.783173f, -185.248352f, -403.3855f, -358.848236f, 65.24756f); + float b2 = (-381.930969f); + float4x4 r2 = float4x4(-580.768738f, 20.22937f, -498.9558f, 115.44281f, 103.978333f, -429.6881f, -304.11615f, -653.478943f, -515.182739f, -170.064209f, -128.780762f, -724.7141f, -567.1793f, -785.316467f, -740.7792f, -316.6834f); + TestUtils.AreEqual(a2 + b2, r2); + + float4x4 a3 = float4x4(127.201721f, 432.121155f, 436.088928f, -308.056946f, -255.149841f, 245.9632f, 420.0163f, 337.529236f, -311.7624f, 322.9428f, -342.249023f, 276.5263f, 488.771179f, -481.895233f, 289.026978f, -332.122925f); + float b3 = (-112.139862f); + float4x4 r3 = float4x4(15.0618591f, 319.9813f, 323.949066f, -420.1968f, -367.2897f, 133.823334f, 307.876434f, 225.389374f, -423.902252f, 210.802948f, -454.3889f, 164.386444f, 376.631317f, -594.0351f, 176.887115f, -444.2628f); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void float4x4_operator_add_scalar_wide() + { + float a0 = (-325.512756f); + float4x4 b0 = float4x4(-264.088135f, -106.009247f, -355.4473f, -447.3303f, -158.7002f, -199.4837f, 180.318115f, 337.579346f, -37.0550232f, 230.805f, -140.174347f, 18.02417f, -138.614349f, 26.9041748f, -374.5376f, 154.46759f); + float4x4 r0 = float4x4(-589.6009f, -431.522f, -680.9601f, -772.843f, -484.212952f, -524.99646f, -145.194641f, 12.0665894f, -362.56778f, -94.70776f, -465.6871f, -307.4886f, -464.1271f, -298.608582f, -700.050354f, -171.045166f); + TestUtils.AreEqual(a0 + b0, r0); + + float a1 = (268.38385f); + float4x4 b1 = float4x4(-190.963013f, 188.617249f, -504.916138f, 20.45404f, 197.945374f, 251.411926f, -421.0904f, 111.445374f, -73.26889f, 480.884583f, 438.05304f, 66.8443f, -270.796021f, -44.02191f, 197.6947f, 19.1139526f); + float4x4 r1 = float4x4(77.42084f, 457.0011f, -236.532288f, 288.8379f, 466.329224f, 519.7958f, -152.706543f, 379.829224f, 195.11496f, 749.268433f, 706.4369f, 335.228149f, -2.41217041f, 224.361938f, 466.078552f, 287.4978f); + TestUtils.AreEqual(a1 + b1, r1); + + float a2 = (349.2378f); + float4x4 b2 = float4x4(366.2345f, -413.4803f, -260.720184f, 77.54236f, 183.9549f, -51.4989929f, -472.497467f, 107.126892f, 349.0772f, 431.595947f, -314.110962f, 396.996643f, -167.308624f, -157.114532f, 287.7625f, -367.33905f); + float4x4 r2 = float4x4(715.4723f, -64.24249f, 88.51761f, 426.780151f, 533.1927f, 297.7388f, -123.259674f, 456.3647f, 698.315f, 780.83374f, 35.12683f, 746.234436f, 181.929169f, 192.12326f, 637.0003f, -18.1012573f); + TestUtils.AreEqual(a2 + b2, r2); + + float a3 = (96.23682f); + float4x4 b3 = float4x4(212.023132f, -400.693481f, 26.3428345f, 166.0332f, 49.9665527f, 154.5788f, -446.356934f, -46.7756958f, 426.568665f, -168.368256f, 254.265076f, -241.264923f, -278.259033f, -237.1731f, 174.13092f, 510.910278f); + float4x4 r3 = float4x4(308.259949f, -304.456665f, 122.579651f, 262.27002f, 146.203369f, 250.815613f, -350.120117f, 49.46112f, 522.8055f, -72.13144f, 350.5019f, -145.0281f, -182.022217f, -140.936279f, 270.367737f, 607.1471f); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void float4x4_operator_sub_wide_wide() + { + float4x4 a0 = float4x4(133.371033f, -131.832123f, -197.293152f, -485.28656f, -337.550323f, 471.6671f, 146.506592f, -130.585052f, 110.7771f, -235.5416f, 78.87933f, -347.686157f, -470.820557f, -11.45929f, -167.9479f, 330.676758f); + float4x4 b0 = float4x4(123.460266f, 359.56012f, -48.2484741f, 478.979065f, 207.158325f, 142.36731f, -125.6055f, -65.29901f, -477.876434f, 164.5f, 428.009583f, 72.62781f, -446.8805f, 432.091431f, -225.554657f, -112.451965f); + float4x4 r0 = float4x4(9.910767f, -491.392242f, -149.044678f, -964.2656f, -544.7086f, 329.2998f, 272.1121f, -65.28604f, 588.653564f, -400.0416f, -349.130249f, -420.313965f, -23.9400635f, -443.55072f, 57.60675f, 443.128723f); + TestUtils.AreEqual(a0 - b0, r0); + + float4x4 a1 = float4x4(-508.350861f, -252.031891f, -427.9342f, 192.6576f, 168.429321f, 457.308777f, 470.058533f, -299.711884f, -308.939575f, 454.5334f, 26.1069336f, -482.711823f, -40.8535461f, 318.380676f, 475.210815f, 134.926941f); + float4x4 b1 = float4x4(-210.6128f, -172.925049f, -80.60748f, 270.046082f, -154.255585f, 148.475769f, 13.6611328f, 70.67108f, -221.325439f, -9.25882f, 288.173828f, 217.36145f, 307.540039f, -262.412659f, -405.378021f, 400.004333f); + float4x4 r1 = float4x4(-297.738068f, -79.10684f, -347.326721f, -77.38849f, 322.6849f, 308.833f, 456.3974f, -370.382965f, -87.6141357f, 463.7922f, -262.0669f, -700.073242f, -348.3936f, 580.793335f, 880.588867f, -265.0774f); + TestUtils.AreEqual(a1 - b1, r1); + + float4x4 a2 = float4x4(388.481567f, 138.7182f, -385.5736f, -149.3648f, -158.534058f, 508.070679f, 482.7008f, 114.569275f, 364.83136f, 229.031f, -168.088074f, 373.4411f, -239.90097f, 379.928467f, 113.011841f, 306.835266f); + float4x4 b2 = float4x4(72.11908f, -154.880585f, -469.659973f, -320.615417f, 6.41229248f, -278.865051f, 15.8380737f, 27.51831f, 429.869629f, -458.622467f, -172.064423f, -284.524719f, 42.60669f, -223.474243f, -56.92975f, 61.807312f); + float4x4 r2 = float4x4(316.3625f, 293.5988f, 84.0863647f, 171.25061f, -164.94635f, 786.9357f, 466.862732f, 87.0509644f, -65.03827f, 687.653442f, 3.97634888f, 657.9658f, -282.50766f, 603.4027f, 169.941589f, 245.027954f); + TestUtils.AreEqual(a2 - b2, r2); + + float4x4 a3 = float4x4(222.817444f, 271.9942f, 386.942932f, -55.75531f, 440.039368f, -362.724762f, 292.103149f, 246.660645f, -319.029236f, -115.244019f, -122.409058f, 56.0924072f, 210.677979f, -426.9796f, -337.58847f, 78.37268f); + float4x4 b3 = float4x4(-454.695526f, -114.060547f, 367.1687f, -351.2796f, 263.148865f, -492.305359f, 308.153259f, 455.3084f, -221.137665f, -466.658783f, 81.54944f, 48.54596f, -88.75711f, 83.8197f, -437.890564f, 410.3957f); + float4x4 r3 = float4x4(677.512939f, 386.054749f, 19.774231f, 295.5243f, 176.8905f, 129.5806f, -16.05011f, -208.647766f, -97.89157f, 351.414764f, -203.9585f, 7.54644775f, 299.4351f, -510.799316f, 100.302094f, -332.023f); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void float4x4_operator_sub_wide_scalar() + { + float4x4 a0 = float4x4(48.9367065f, 410.4516f, -364.4417f, 163.980591f, -460.067322f, 110.919434f, 204.358337f, 180.269714f, -377.9257f, -470.262054f, 400.5349f, 461.507568f, -246.287262f, 21.6052856f, 246.350708f, -121.427368f); + float b0 = (-291.5904f); + float4x4 r0 = float4x4(340.5271f, 702.042f, -72.85132f, 455.570984f, -168.476929f, 402.509827f, 495.94873f, 471.8601f, -86.3353f, -178.671661f, 692.1253f, 753.097961f, 45.30313f, 313.195679f, 537.9411f, 170.163025f); + TestUtils.AreEqual(a0 - b0, r0); + + float4x4 a1 = float4x4(-122.718414f, 360.15094f, 342.874573f, 18.92981f, 164.602356f, 97.0437f, 485.914978f, -205.75766f, 253.443237f, -121.163055f, 187.998413f, -450.820282f, -248.073364f, -26.9960632f, 441.5526f, 449.910583f); + float b1 = (-122.938721f); + float4x4 r1 = float4x4(0.2203064f, 483.089661f, 465.8133f, 141.86853f, 287.541077f, 219.982422f, 608.8537f, -82.81894f, 376.381958f, 1.77566528f, 310.937134f, -327.881561f, -125.134644f, 95.94266f, 564.491333f, 572.8493f); + TestUtils.AreEqual(a1 - b1, r1); + + float4x4 a2 = float4x4(354.886047f, -189.193237f, 269.074829f, -59.11856f, 363.458374f, -73.7792053f, -46.1552124f, 109.913269f, 182.646912f, 229.015747f, -144.92868f, 469.2506f, -150.49231f, -192.3125f, -224.356842f, 285.876831f); + float b2 = (98.82147f); + float4x4 r2 = float4x4(256.064575f, -288.0147f, 170.253357f, -157.940033f, 264.6369f, -172.600677f, -144.976685f, 11.0917969f, 83.82544f, 130.194275f, -243.750153f, 370.429138f, -249.313782f, -291.133972f, -323.1783f, 187.055359f); + TestUtils.AreEqual(a2 - b2, r2); + + float4x4 a3 = float4x4(-63.0108337f, 152.83313f, 92.32092f, -481.9931f, 55.80725f, -198.5921f, -338.3567f, -142.261749f, -201.510559f, -279.917542f, -495.640045f, 119.089966f, 382.1477f, 68.73401f, 470.9823f, -500.403046f); + float b3 = (499.9112f); + float4x4 r3 = float4x4(-562.922f, -347.078064f, -407.590271f, -981.9043f, -444.103943f, -698.5033f, -838.2679f, -642.173f, -701.421753f, -779.828735f, -995.5513f, -380.821228f, -117.763489f, -431.1772f, -28.928894f, -1000.31421f); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void float4x4_operator_sub_scalar_wide() + { + float a0 = (294.5865f); + float4x4 b0 = float4x4(452.352539f, 256.9898f, -275.159882f, -89.02753f, 488.2284f, -333.2173f, -64.233f, -66.04172f, 341.204956f, -385.775055f, 75.3947754f, 354.943726f, 169.131409f, 88.21661f, 1.73498535f, 122.538025f); + float4x4 r0 = float4x4(-157.766052f, 37.59668f, 569.746338f, 383.614f, -193.6419f, 627.8038f, 358.8195f, 360.6282f, -46.61847f, 680.3616f, 219.191711f, -60.35724f, 125.455078f, 206.369873f, 292.8515f, 172.048462f); + TestUtils.AreEqual(a0 - b0, r0); + + float a1 = (-264.945f); + float4x4 b1 = float4x4(-50.83719f, -347.65033f, 4.06555176f, -79.09543f, 354.358337f, -292.4925f, -53.2089844f, -246.3476f, 299.203369f, 432.1847f, -163.88f, 176.742554f, -104.98584f, -445.797638f, -28.8731689f, -169.588226f); + float4x4 r1 = float4x4(-214.107819f, 82.70532f, -269.010559f, -185.849579f, -619.303345f, 27.5474854f, -211.736023f, -18.5974121f, -564.1484f, -697.1297f, -101.065f, -441.687561f, -159.959167f, 180.852631f, -236.071838f, -95.35678f); + TestUtils.AreEqual(a1 - b1, r1); + + float a2 = (-270.359253f); + float4x4 b2 = float4x4(68.04761f, -65.53128f, 440.380371f, 427.360657f, -81.47296f, 41.7131958f, 175.8208f, -214.949158f, -163.446869f, -218.829132f, 389.116882f, -74.10977f, -448.137238f, -410.375f, 363.211f, -263.5354f); + float4x4 r2 = float4x4(-338.40686f, -204.827972f, -710.7396f, -697.7199f, -188.886292f, -312.072449f, -446.180054f, -55.4100952f, -106.912384f, -51.53012f, -659.476135f, -196.249481f, 177.777985f, 140.015747f, -633.570251f, -6.82385254f); + TestUtils.AreEqual(a2 - b2, r2); + + float a3 = (473.546021f); + float4x4 b3 = float4x4(433.4333f, 241.469421f, -446.7562f, -138.318115f, -414.005829f, 37.4823f, 290.049072f, -354.679932f, -322.974976f, -253.401947f, -412.353f, 269.2157f, -65.8092346f, -451.977417f, -407.732117f, 12.5319214f); + float4x4 r3 = float4x4(40.1127319f, 232.0766f, 920.302246f, 611.864136f, 887.5519f, 436.063721f, 183.496948f, 828.225952f, 796.521f, 726.948f, 885.899048f, 204.330322f, 539.3552f, 925.523438f, 881.278137f, 461.0141f); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void float4x4_operator_mul_wide_wide() + { + float4x4 a0 = float4x4(-394.780548f, -412.3722f, -25.8745728f, -241.045959f, -93.6759949f, 244.159973f, 494.688477f, 53.5379639f, -239.4964f, 236.675842f, -211.8562f, -216.654816f, 467.9583f, -178.021912f, -386.394257f, -422.4354f); + float4x4 b0 = float4x4(-149.763977f, -345.04538f, -284.334045f, 267.979248f, -326.6485f, -150.689667f, 207.732422f, 366.192871f, 358.880737f, 214.853577f, 253.422791f, -307.7138f, 184.47113f, 426.436462f, -144.281433f, 459.4796f); + float4x4 r0 = float4x4(59123.9063f, 142287.125f, 7357.022f, -64595.3164f, 30599.123f, -36792.3867f, 102762.836f, 19605.22f, -85950.64f, 50850.6523f, -53689.19f, 66667.68f, 86324.8f, -75915.03f, 55749.5156f, -194100.453f); + TestUtils.AreEqual(a0 * b0, r0); + + float4x4 a1 = float4x4(464.589539f, -251.315674f, -104.97879f, -66.93417f, -39.829895f, 401.5656f, 434.146179f, -336.4542f, -83.11417f, 329.960266f, -316.972168f, 474.937927f, -445.109161f, -301.003723f, 405.687866f, 142.373474f); + float4x4 b1 = float4x4(-358.313354f, -201.3652f, 254.909973f, 168.520935f, 8.794556f, -194.846466f, -405.362671f, -180.732178f, -189.746918f, -35.5184631f, 120.31665f, -136.203339f, 407.3416f, 301.6543f, -155.482391f, -461.394562f); + float4x4 r1 = float4x4(-166468.641f, 50606.23f, -26760.14f, -11279.81f, -350.286224f, -78243.64f, -175986.656f, 60808.0977f, 15770.6572f, -11719.6816f, -38137.03f, -64688.1328f, -181311.484f, -90799.07f, -63077.32f, -65690.34f); + TestUtils.AreEqual(a1 * b1, r1); + + float4x4 a2 = float4x4(-416.213074f, -103.279205f, -52.9519043f, -40.82834f, -86.18509f, -257.316528f, 363.857239f, -229.860016f, 8.925293f, -2.44940186f, 37.7583f, 264.451782f, -321.251282f, -268.256042f, 43.9136963f, 274.833069f); + float4x4 b2 = float4x4(296.680359f, 341.001831f, -257.0968f, 17.5936279f, -443.845123f, 291.349243f, 490.19165f, 361.320984f, -509.289734f, 315.352661f, 125.083069f, -167.727112f, 396.8877f, -0.320404053f, 143.4115f, -396.3475f); + float4x4 r2 = float4x4(-123482.242f, -35218.4f, 13613.7656f, -718.3186f, 38252.832f, -74968.98f, 178359.781f, -83053.25f, -4545.56f, -772.4254f, 4722.92432f, -44355.7344f, -127500.68f, 85.950325f, 6297.729f, -108929.4f); + TestUtils.AreEqual(a2 * b2, r2); + + float4x4 a3 = float4x4(378.421082f, -290.6334f, 209.916565f, 384.219727f, 363.081421f, -461.333374f, -134.366852f, 11.9394531f, 125.20166f, -219.271f, 358.96698f, 12.847168f, -479.7714f, 150.253113f, -500.840759f, 485.679932f); + float4x4 b3 = float4x4(350.960144f, -374.53418f, -165.456024f, -338.017334f, -199.633331f, -385.127f, -328.411316f, -423.3008f, -150.3247f, 402.9776f, 339.0208f, -29.2961426f, -447.5521f, 62.1604f, 471.492065f, 282.403381f); + float4x4 r3 = float4x4(132810.719f, 108852.141f, -34731.96f, -129872.93f, -72483.16f, 177671.938f, 44127.5938f, -5053.98f, -18820.9023f, -88361.3f, 121697.281f, -376.372467f, 214722.688f, 9339.794f, -236142.438f, 137157.656f); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void float4x4_operator_mul_wide_scalar() + { + float4x4 a0 = float4x4(328.203f, -290.10672f, 236.995728f, 120.481384f, 357.903137f, 134.867249f, -477.3105f, -438.272919f, -46.729187f, -238.405f, 422.08252f, -48.83484f, 355.30835f, 119.356628f, -196.995819f, 98.23602f); + float b0 = (192.211182f); + float4x4 r0 = float4x4(63084.2852f, -55761.7539f, 45553.23f, 23157.87f, 68792.9844f, 25922.9941f, -91744.4141f, -84240.95f, -8981.872f, -45824.1055f, 81128.98f, -9386.603f, 68294.2344f, 22941.6777f, -37864.8f, 18882.0625f); + TestUtils.AreEqual(a0 * b0, r0); + + float4x4 a1 = float4x4(-325.552155f, -87.45099f, -130.474121f, -222.594574f, 126.015015f, 293.361084f, 174.381958f, -327.120056f, 56.62915f, 257.541565f, -475.6087f, -452.6919f, -49.22061f, 141.600952f, 431.5857f, 180.355164f); + float b1 = (53.9373169f); + float4x4 r1 = float4x4(-17559.41f, -4716.87158f, -7037.424f, -12006.1543f, 6796.91162f, 15823.1094f, 9405.695f, -17643.9785f, 3054.42432f, 13891.1006f, -25653.0566f, -24416.9863f, -2654.82764f, 7637.575f, 23278.5742f, 9727.874f); + TestUtils.AreEqual(a1 * b1, r1); + + float4x4 a2 = float4x4(-40.9234619f, 120.014465f, -59.508667f, 319.489868f, -403.523163f, -408.1931f, -335.3932f, -364.242554f, 150.686157f, 391.87207f, 179.312439f, 354.5298f, 497.7614f, 418.436584f, -413.333374f, -329.520721f); + float b2 = (279.543518f); + float4x4 r2 = float4x4(-11439.8887f, 33549.2656f, -16635.2617f, 89311.32f, -112802.281f, -114107.742f, -93756.99f, -101821.648f, 42123.34f, 109545.3f, 50125.63f, 99106.5f, 139145.984f, 116971.234f, -115544.664f, -92115.38f); + TestUtils.AreEqual(a2 * b2, r2); + + float4x4 a3 = float4x4(-322.703064f, -344.131165f, 209.612732f, 38.7976074f, -445.803833f, -71.467804f, -449.38623f, -64.39856f, -210.725952f, 389.325684f, 510.298218f, -497.581024f, -509.508575f, 131.99408f, 502.496826f, 282.81f); + float b3 = (-285.631226f); + float4x4 r3 = float4x4(92174.07f, 98294.61f, -59871.94f, -11081.8086f, 127335.492f, 20413.4355f, 128358.742f, 18394.24f, 60189.91f, -111203.57f, -145757.109f, 142124.672f, 145531.563f, -37701.63f, -143528.781f, -80779.37f); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void float4x4_operator_mul_scalar_wide() + { + float a0 = (-464.5347f); + float4x4 b0 = float4x4(329.360962f, -198.683441f, 184.0794f, 256.016174f, 266.226318f, -97.8947449f, 159.748108f, -351.8222f, 491.801575f, 49.90204f, 424.4626f, 160.1181f, -395.9921f, 125.20166f, -265.0158f, 314.656128f); + float4x4 r0 = float4x4(-152999.6f, 92295.35f, -85511.27f, -118928.4f, -123671.359f, 45475.5039f, -74208.54f, 163433.625f, -228458.891f, -23181.2285f, -197177.6f, -74380.4141f, 183952.063f, -58160.5156f, 123109.039f, -146168.688f); + TestUtils.AreEqual(a0 * b0, r0); + + float a1 = (-292.712036f); + float4x4 b1 = float4x4(-37.72989f, 165.362244f, 356.517761f, -188.813324f, 504.9157f, 40.5721436f, -206.775116f, -61.60269f, 118.971619f, 53.7483521f, -198.6694f, 96.236084f, -20.2418823f, -31.1239624f, 38.89044f, -13.1333008f); + float4x4 r1 = float4x4(11043.9922f, -48403.52f, -104357.039f, 55267.9336f, -147794.9f, -11875.9551f, 60525.5664f, 18031.85f, -34824.4258f, -15732.79f, 58152.9258f, -28169.46f, 5925.04248f, 9110.358f, -11383.7f, 3844.27515f); + TestUtils.AreEqual(a1 * b1, r1); + + float a2 = (507.871277f); + float4x4 b2 = float4x4(95.0179443f, 340.7486f, 438.986877f, -227.165955f, 452.573f, 144.014954f, -31.58603f, 42.29773f, -466.027161f, 287.453979f, 328.9969f, -164.243134f, -511.2683f, -9.594299f, 431.190125f, -132.141815f); + float4x4 r2 = float4x4(48256.8828f, 173056.422f, 222948.828f, -115371.063f, 229848.828f, 73141.0547f, -16041.6367f, 21481.8027f, -236681.813f, 145989.625f, 167088.063f, -83414.37f, -259658.484f, -4872.669f, 218989.078f, -67111.03f); + TestUtils.AreEqual(a2 * b2, r2); + + float a3 = (-87.502655f); + float4x4 b3 = float4x4(384.618652f, 385.83905f, -384.623077f, 236.278625f, 336.4452f, 272.744446f, -121.145477f, -194.381134f, -364.7453f, 360.356934f, -153.582489f, 63.94165f, 0.04345703f, -430.974f, -126.427887f, -338.7486f); + float4x4 r3 = float4x4(-33655.1523f, -33761.94f, 33655.54f, -20675.0078f, -29439.8477f, -23865.8633f, 10600.5508f, 17008.8652f, 31916.1816f, -31532.1875f, 13438.876f, -5595.064f, -3.80260563f, 37711.37f, 11062.7754f, 29641.4023f); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void float4x4_operator_div_wide_wide() + { + float4x4 a0 = float4x4(246.265747f, -269.85614f, -451.619537f, -7.388489f, -308.205566f, -373.3948f, 360.41864f, 25.8097534f, -274.050476f, 127.538574f, -447.671753f, -137.458588f, -136.133179f, 12.4376221f, 228.513f, 356.972351f); + float4x4 b0 = float4x4(172.119812f, -77.14111f, -325.8354f, -450.608673f, -261.262146f, -122.449493f, -93.2107849f, -442.005219f, 484.362732f, -390.7818f, 402.02533f, 316.6507f, 397.154419f, -303.2622f, -118.591248f, -81.6503f); + float4x4 r0 = float4x4(1.43078089f, 3.49821424f, 1.38603592f, 0.0163966864f, 1.17967939f, 3.04937816f, -3.86670542f, -0.0583924167f, -0.565795958f, -0.326367736f, -1.11354113f, -0.434101641f, -0.3427714f, -0.0410127677f, -1.926896f, -4.37196636f); + TestUtils.AreEqual(a0 / b0, r0); + + float4x4 a1 = float4x4(-24.7620544f, 411.6684f, -204.078888f, 11.3654175f, 82.15228f, 37.3894653f, 394.2658f, -429.912781f, 315.37384f, -122.665985f, 447.526123f, -210.4815f, -202.42157f, -453.007935f, 173.72699f, -167.121674f); + float4x4 b1 = float4x4(-84.34686f, -488.419434f, 404.160522f, -136.728851f, -19.8327026f, -102.607239f, 166.116028f, -112.840179f, -218.209686f, 458.517517f, 119.587219f, 356.240417f, -74.50687f, -336.773926f, -216.126312f, 322.385681f); + float4x4 r1 = float4x4(0.2935741f, -0.8428584f, -0.504945159f, -0.0831237659f, -4.14226341f, -0.364394039f, 2.37343621f, 3.80992651f, -1.44527888f, -0.267527372f, 3.742257f, -0.5908412f, 2.71681762f, 1.34513962f, -0.803821564f, -0.5183905f); + TestUtils.AreEqual(a1 / b1, r1); + + float4x4 a2 = float4x4(-106.234528f, 414.312561f, 7.12084961f, 274.073669f, -39.0026855f, 39.065918f, -147.364166f, 434.3849f, 315.0672f, -106.636017f, -507.925262f, -17.1764526f, -385.865356f, 226.002136f, 345.168457f, 201.544189f); + float4x4 b2 = float4x4(220.2555f, -67.2345f, 2.229187f, -166.210968f, -247.732574f, 84.16095f, 477.148621f, 209.7508f, -386.7222f, -65.27734f, 410.454834f, 367.6507f, -456.572021f, 382.427979f, -163.860687f, -213.721375f); + float4x4 r2 = float4x4(-0.482324064f, -6.16220236f, 3.19437075f, -1.64895058f, 0.157438666f, 0.464181036f, -0.3088433f, 2.07095718f, -0.814712f, 1.6335839f, -1.23746932f, -0.0467194878f, 0.8451358f, 0.5909665f, -2.106475f, -0.9430231f); + TestUtils.AreEqual(a2 / b2, r2); + + float4x4 a3 = float4x4(-364.71106f, -508.3727f, 263.803528f, 392.039f, 19.7166138f, -14.4797668f, -431.478668f, -8.395416f, 3.10827637f, -139.841125f, 402.5097f, 318.3109f, -274.568054f, -193.369141f, 288.227f, 0.620605469f); + float4x4 b3 = float4x4(227.003845f, -337.9897f, 149.321716f, -198.855316f, -468.455017f, 183.258728f, 217.357544f, -167.570221f, -150.7587f, 48.44922f, 410.15564f, -4.68936157f, -465.338165f, -48.30713f, 403.645752f, -387.142f); + float4x4 r3 = float4x4(-1.60662949f, 1.50410724f, 1.76667893f, -1.97147858f, -0.0420885943f, -0.0790127f, -1.98511016f, 0.0501008853f, -0.02061756f, -2.88634419f, 0.981358469f, -67.87937f, 0.590039849f, 4.002911f, 0.7140593f, -0.00160304352f); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void float4x4_operator_div_wide_scalar() + { + float4x4 a0 = float4x4(-244.517456f, 69.1123047f, -333.023132f, 257.396851f, 403.2456f, 154.34436f, 131.526611f, -261.8864f, -348.9238f, -275.5387f, 210.557922f, 287.6424f, 504.372253f, 491.7871f, -26.6315918f, -253.236664f); + float b0 = (-60.0243835f); + float4x4 r0 = float4x4(4.07363558f, -1.15140378f, 5.548131f, -4.28820467f, -6.71803f, -2.571361f, -2.19121981f, 4.36300039f, 5.813034f, 4.590446f, -3.507873f, -4.79209232f, -8.402789f, -8.193122f, 0.443679541f, 4.21889639f); + TestUtils.AreEqual(a0 / b0, r0); + + float4x4 a1 = float4x4(272.895142f, -460.87558f, -502.646027f, -84.3248f, -174.690338f, 83.7963257f, 197.042053f, 317.168274f, 403.387146f, 81.6464844f, 60.6068726f, -413.5605f, 207.341f, 358.562134f, 20.7490845f, -68.57712f); + float b1 = (178.096191f); + float4x4 r1 = float4x4(1.5322907f, -2.58779025f, -2.82232881f, -0.473478943f, -0.9808763f, 0.470511615f, 1.10638f, 1.78088188f, 2.26499581f, 0.458440363f, 0.340304136f, -2.32211876f, 1.16420794f, 2.013306f, 0.11650493f, -0.3850566f); + TestUtils.AreEqual(a1 / b1, r1); + + float4x4 a2 = float4x4(310.702454f, 147.866211f, 506.658875f, -435.778564f, 210.672913f, -218.781464f, -19.1908569f, 416.511719f, 427.0136f, 417.1994f, -150.911835f, 488.985535f, -294.738739f, -357.298035f, 288.771667f, 453.429138f); + float b2 = (417.4049f); + float4x4 r2 = float4x4(0.744367063f, 0.354251266f, 1.21383071f, -1.04401875f, 0.504720747f, -0.524146855f, -0.0459765978f, 0.997860134f, 1.02302015f, 0.999507666f, -0.361547828f, 1.17148972f, -0.706121862f, -0.855998635f, 0.6918262f, 1.08630526f); + TestUtils.AreEqual(a2 / b2, r2); + + float4x4 a3 = float4x4(70.72443f, 425.5282f, 109.519714f, 351.8073f, -397.334045f, 497.315979f, -18.0651855f, 452.228577f, 511.858521f, -439.3021f, -441.080261f, -360.325928f, -44.2648f, -122.1008f, -322.191162f, -155.780457f); + float b3 = (-235.7775f); + float4x4 r3 = float4x4(-0.29996258f, -1.80478716f, -0.46450454f, -1.49211574f, 1.68520772f, -2.10925984f, 0.07661963f, -1.9180311f, -2.17093873f, 1.86320615f, 1.87074792f, 1.52824557f, 0.187739715f, 0.5178645f, 1.36650515f, 0.6607096f); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void float4x4_operator_div_scalar_wide() + { + float a0 = (41.73767f); + float4x4 b0 = float4x4(-422.676147f, 248.129639f, 449.391357f, 245.858154f, -326.6206f, 163.715088f, 333.6645f, 38.2910767f, -472.979767f, 192.230164f, -200.296875f, -490.181519f, -211.10257f, -322.852356f, -137.985291f, 84.32971f); + float4x4 r0 = float4x4(-0.09874622f, 0.168209136f, 0.0928759947f, 0.169763222f, -0.1277864f, 0.2549409f, 0.125088736f, 1.0900104f, -0.0882440954f, 0.217123419f, -0.208379045f, -0.08514738f, -0.197712749f, -0.129277885f, -0.302479118f, 0.49493435f); + TestUtils.AreEqual(a0 / b0, r0); + + float a1 = (355.063477f); + float4x4 b1 = float4x4(276.427246f, -382.988037f, -488.647156f, 344.846f, 168.85498f, -44.1955872f, 420.55072f, -175.6152f, -9.220581f, -344.194275f, -449.0715f, 117.704895f, -337.0274f, 239.393433f, -389.355164f, 242.716064f); + float4x4 r1 = float4x4(1.28447354f, -0.927087665f, -0.7266255f, 1.02962911f, 2.10277176f, -8.033913f, 0.84428215f, -2.02182651f, -38.5077133f, -1.03157866f, -0.790661335f, 3.0165565f, -1.0535152f, 1.48317969f, -0.911927f, 1.46287584f); + TestUtils.AreEqual(a1 / b1, r1); + + float a2 = (496.2765f); + float4x4 b2 = float4x4(91.74579f, -490.492126f, 485.755432f, -317.572266f, -451.6248f, 394.018372f, -262.271423f, -314.246765f, 359.9159f, -101.615356f, 359.517273f, -424.9799f, -192.719574f, -169.749725f, -244.790009f, -187.14386f); + float4x4 r2 = float4x4(5.40925646f, -1.011793f, 1.02165914f, -1.56271982f, -1.09886909f, 1.25952625f, -1.89222479f, -1.57925725f, 1.378868f, -4.883873f, 1.38039684f, -1.16776466f, -2.57512236f, -2.92357755f, -2.027356f, -2.651845f); + TestUtils.AreEqual(a2 / b2, r2); + + float a3 = (-207.713654f); + float4x4 b3 = float4x4(-370.154053f, 58.67694f, -123.147f, 208.8916f, -79.53113f, -219.674774f, -483.159332f, -90.52664f, 194.599976f, -4.09060669f, 270.735962f, 432.586182f, 376.047668f, 464.836731f, -322.9417f, -220.897583f); + float4x4 r3 = float4x4(0.5611546f, -3.53995371f, 1.686713f, -0.994361f, 2.61172771f, 0.9455508f, 0.429907143f, 2.294503f, -1.06738782f, 50.7782021f, -0.76721853f, -0.4801671f, -0.5523599f, -0.446852922f, 0.6431924f, 0.940316558f); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void float4x4_operator_mod_wide_wide() + { + float4x4 a0 = float4x4(-442.309875f, 368.5005f, -1.09390259f, -364.673828f, -197.343933f, -34.0349121f, -101.348572f, 208.318542f, -140.770325f, 183.44696f, -463.368378f, 83.83911f, -64.71405f, 295.066833f, 212.25708f, 349.6283f); + float4x4 b0 = float4x4(-43.2450562f, -144.195862f, -62.6404724f, -336.828247f, -154.61026f, -154.029358f, 487.0462f, -469.8291f, -145.203766f, -203.384f, -22.52008f, 224.69f, -435.62674f, 12.0955811f, 40.3787842f, 345.784851f); + float4x4 r0 = float4x4(-9.859314f, 80.1087646f, -1.09390259f, -27.8455811f, -42.7336731f, -34.0349121f, -101.348572f, 208.318542f, -140.770325f, 183.44696f, -12.9667664f, 83.83911f, -64.71405f, 4.772888f, 10.3631592f, 3.84344482f); + TestUtils.AreEqual(a0 % b0, r0); + + float4x4 a1 = float4x4(119.875916f, -37.8058167f, 142.41156f, 332.244263f, -464.194275f, -296.147827f, 225.175354f, -212.060272f, 156.985718f, 507.6183f, 270.830444f, 337.7343f, 384.915833f, 432.5182f, 154.292725f, -37.0853271f); + float4x4 b1 = float4x4(-433.471252f, -355.649963f, 4.015442f, 66.65979f, -221.853638f, -355.056763f, 357.935974f, 71.3753052f, -131.4183f, -473.9876f, 76.2178345f, 92.2102051f, -368.189575f, -77.46716f, 135.230591f, 274.277283f); + float4x4 r1 = float4x4(119.875916f, -37.8058167f, 1.87109375f, 65.6051f, -20.487f, -296.147827f, 225.175354f, -69.30966f, 25.5674133f, 33.6306763f, 42.17694f, 61.1037f, 16.7262573f, 45.182373f, 19.0621338f, -37.0853271f); + TestUtils.AreEqual(a1 % b1, r1); + + float4x4 a2 = float4x4(7.76147461f, 238.094727f, 12.8520508f, -100.240662f, 34.552002f, -251.189758f, -238.372253f, 511.514648f, 288.433533f, 367.109863f, 44.760437f, -437.0456f, -259.2056f, -228.565826f, 83.49725f, 424.367065f); + float4x4 b2 = float4x4(132.180237f, -179.877319f, 51.9685669f, 367.214233f, -395.2128f, 270.485229f, -73.104126f, 89.3499756f, -288.308533f, -168.324646f, 311.6159f, -468.341949f, 381.983948f, -1.39886475f, -102.288605f, -87.4248657f); + float4x4 r2 = float4x4(7.76147461f, 58.2174072f, 12.8520508f, -100.240662f, 34.552002f, -251.189758f, -19.0598755f, 64.76477f, 0.125f, 30.4605713f, 44.760437f, -437.0456f, -259.2056f, -0.5508728f, 83.49725f, 74.6676f); + TestUtils.AreEqual(a2 % b2, r2); + + float4x4 a3 = float4x4(327.2317f, 149.181763f, -392.158752f, -453.4767f, 480.8224f, 3.46044922f, -184.5924f, -181.417542f, -367.704224f, 146.0993f, 280.120728f, -282.483154f, 57.22583f, -432.671722f, -231.465637f, -228.28299f); + float4x4 b3 = float4x4(-58.42514f, -419.004883f, 479.817017f, -406.982849f, -371.595947f, 154.043213f, -444.750916f, -53.98001f, -168.831787f, -69.39877f, -380.760681f, 208.145569f, 194.436646f, 142.8681f, 413.1582f, -375.159424f); + float4x4 r3 = float4x4(35.1059875f, 149.181763f, -392.158752f, -46.493866f, 109.22644f, 3.46044922f, -184.5924f, -19.4775085f, -30.04065f, 7.301758f, 280.120728f, -74.3375854f, 57.22583f, -4.06741333f, -231.465637f, -228.28299f); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void float4x4_operator_mod_wide_scalar() + { + float4x4 a0 = float4x4(-433.417f, -5.51412964f, 393.3944f, 299.41156f, -120.80603f, -502.939026f, -450.807678f, 186.094788f, -84.47363f, -318.7815f, 433.4547f, -54.60019f, -172.338867f, -429.714661f, 222.361877f, 5.79638672f); + float b0 = (-90.49924f); + float4x4 r0 = float4x4(-71.4200439f, -5.51412964f, 31.39746f, 27.9138489f, -30.3067932f, -50.44284f, -88.81073f, 5.09631348f, -84.47363f, -47.283783f, 71.45776f, -54.60019f, -81.83963f, -67.71771f, 41.3634033f, 5.79638672f); + TestUtils.AreEqual(a0 % b0, r0); + + float4x4 a1 = float4x4(254.5108f, -203.082611f, -75.3564148f, 252.289124f, -69.4039f, 5.337219f, -279.060425f, 483.5506f, -331.993347f, 336f, 67.8396f, -124.720764f, 38.1759033f, 271.287f, 405.773621f, -194.761444f); + float b1 = (-433.0937f); + float4x4 r1 = float4x4(254.5108f, -203.082611f, -75.3564148f, 252.289124f, -69.4039f, 5.337219f, -279.060425f, 50.45691f, -331.993347f, 336f, 67.8396f, -124.720764f, 38.1759033f, 271.287f, 405.773621f, -194.761444f); + TestUtils.AreEqual(a1 % b1, r1); + + float4x4 a2 = float4x4(235.724f, -304.153168f, -295.520264f, 313.7224f, -232.202637f, 191.619751f, 244.096619f, 162.524231f, 390.016174f, 90.00452f, 155.933533f, 217.3377f, -306.819275f, 149.09375f, 503.828369f, -194.130127f); + float b2 = (465.984863f); + float4x4 r2 = float4x4(235.724f, -304.153168f, -295.520264f, 313.7224f, -232.202637f, 191.619751f, 244.096619f, 162.524231f, 390.016174f, 90.00452f, 155.933533f, 217.3377f, -306.819275f, 149.09375f, 37.8435059f, -194.130127f); + TestUtils.AreEqual(a2 % b2, r2); + + float4x4 a3 = float4x4(214.863037f, 225.9964f, -102.913971f, -173.706085f, 490.904663f, 501.148621f, 160.454834f, 327.860962f, -300.812683f, -326.939026f, -6.64724731f, -201.184448f, 389.350464f, -78.06848f, -484.3189f, -371.838745f); + float b3 = (198.770081f); + float4x4 r3 = float4x4(16.0929565f, 27.2263184f, -102.913971f, -173.706085f, 93.3645f, 103.608459f, 160.454834f, 129.090881f, -102.0426f, -128.168945f, -6.64724731f, -2.41436768f, 190.580383f, -78.06848f, -86.77875f, -173.068665f); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void float4x4_operator_mod_scalar_wide() + { + float a0 = (-396.4224f); + float4x4 b0 = float4x4(-159.140259f, 230.17334f, 14.7793579f, -303.1565f, 399.635f, 206.6947f, 397.0448f, -393.890656f, -372.067078f, 201.012268f, -95.566864f, -258.951477f, 106.983582f, 469.323547f, -34.80899f, 184.836548f); + float4x4 r0 = float4x4(-78.14188f, -166.249054f, -12.1590881f, -93.2659f, -396.4224f, -189.727692f, -396.4224f, -2.53173828f, -24.3553162f, -195.410126f, -14.1549377f, -137.470917f, -75.47165f, -396.4224f, -13.5234985f, -26.7492981f); + TestUtils.AreEqual(a0 % b0, r0); + + float a1 = (374.79425f); + float4x4 b1 = float4x4(-131.872711f, -120.092865f, 4.506653f, -111.401947f, 391.54248f, -218.668884f, 196.377441f, -511.032623f, 499.9535f, -433.523071f, -163.866852f, 177.004028f, 110.650146f, 17.68457f, -95.85297f, -432.440979f); + float4x4 r1 = float4x4(111.048828f, 14.5156555f, 0.7420654f, 40.58841f, 374.79425f, 156.125366f, 178.416809f, 374.79425f, 374.79425f, 374.79425f, 47.0605469f, 20.7861938f, 42.84381f, 3.418274f, 87.23535f, 374.79425f); + TestUtils.AreEqual(a1 % b1, r1); + + float a2 = (192.692078f); + float4x4 b2 = float4x4(-268.131775f, 271.075134f, 423.7027f, -413.233246f, 127.956238f, -298.204681f, -352.4181f, -175.607727f, -152.899292f, 34.6194458f, -380.802948f, 0.352050781f, 485.900879f, 266.150818f, 483.82074f, 11.777832f); + float4x4 r2 = float4x4(192.692078f, 192.692078f, 192.692078f, 192.692078f, 64.73584f, 192.692078f, 192.692078f, 17.08435f, 39.7927856f, 19.5948486f, 192.692078f, 0.120300293f, 192.692078f, 192.692078f, 192.692078f, 4.246765f); + TestUtils.AreEqual(a2 % b2, r2); + + float a3 = (274.135864f); + float4x4 b3 = float4x4(313.073181f, -102.217438f, -88.03519f, 226.979553f, -38.68274f, -63.1578064f, 330.401917f, -304.123871f, 411.681519f, 128.217773f, 48.9116821f, -58.8946533f, 29.2827148f, -328.672241f, -511.7139f, -338.5105f); + float4x4 r3 = float4x4(274.135864f, 69.70099f, 10.030304f, 47.15631f, 3.35668945f, 21.5046387f, 274.135864f, 274.135864f, 274.135864f, 17.7003174f, 29.5774536f, 38.55725f, 10.5914307f, 274.135864f, 274.135864f, 274.135864f); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void float4x4_operator_plus() + { + float4x4 a0 = float4x4(271.670837f, -79.08023f, -330.985046f, 31.824707f, 315.449524f, 319.222168f, 190.324646f, -350.3086f, -320.518463f, 102.054382f, -107.00351f, -428.7762f, 377.230164f, 234.773926f, 34.28363f, 258.330383f); + float4x4 r0 = float4x4(271.670837f, -79.08023f, -330.985046f, 31.824707f, 315.449524f, 319.222168f, 190.324646f, -350.3086f, -320.518463f, 102.054382f, -107.00351f, -428.7762f, 377.230164f, 234.773926f, 34.28363f, 258.330383f); + TestUtils.AreEqual(+a0, r0); + + float4x4 a1 = float4x4(465.355957f, -316.937134f, -230.052673f, 301.7851f, 2.58575439f, 350.2464f, 60.8197632f, -472.4421f, -364.802551f, 239.152344f, 473.803162f, 285.80896f, -273.2638f, -206.686371f, -113.362305f, -351.754883f); + float4x4 r1 = float4x4(465.355957f, -316.937134f, -230.052673f, 301.7851f, 2.58575439f, 350.2464f, 60.8197632f, -472.4421f, -364.802551f, 239.152344f, 473.803162f, 285.80896f, -273.2638f, -206.686371f, -113.362305f, -351.754883f); + TestUtils.AreEqual(+a1, r1); + + float4x4 a2 = float4x4(-116.536224f, -330.005341f, -379.674255f, -339.673218f, -29.0835266f, 62.20111f, 485.926636f, 183.724854f, -258.392456f, 486.4469f, 245.9909f, 231.854675f, -216.48996f, -163.009186f, 175.325439f, 404.378f); + float4x4 r2 = float4x4(-116.536224f, -330.005341f, -379.674255f, -339.673218f, -29.0835266f, 62.20111f, 485.926636f, 183.724854f, -258.392456f, 486.4469f, 245.9909f, 231.854675f, -216.48996f, -163.009186f, 175.325439f, 404.378f); + TestUtils.AreEqual(+a2, r2); + + float4x4 a3 = float4x4(87.64923f, -236.109039f, 6.508911f, 481.885681f, -368.854034f, 82.67334f, 120.19519f, -7.73321533f, 168.252075f, -431.930176f, 228.521545f, -124.117523f, 464.7453f, -203.259216f, -505.6412f, 434.978638f); + float4x4 r3 = float4x4(87.64923f, -236.109039f, 6.508911f, 481.885681f, -368.854034f, 82.67334f, 120.19519f, -7.73321533f, 168.252075f, -431.930176f, 228.521545f, -124.117523f, 464.7453f, -203.259216f, -505.6412f, 434.978638f); + TestUtils.AreEqual(+a3, r3); + } + + [TestCompiler] + public static void float4x4_operator_neg() + { + float4x4 a0 = float4x4(420.227173f, -196.2575f, -335.426819f, 509.04364f, -33.0144043f, -498.575317f, -495.837952f, -270.859467f, 19.68689f, 268.2367f, -180.600525f, 223.381287f, -410.392059f, -395.681549f, -349.149475f, -110.9393f); + float4x4 r0 = float4x4(-420.227173f, 196.2575f, 335.426819f, -509.04364f, 33.0144043f, 498.575317f, 495.837952f, 270.859467f, -19.68689f, -268.2367f, 180.600525f, -223.381287f, 410.392059f, 395.681549f, 349.149475f, 110.9393f); + TestUtils.AreEqual(-a0, r0); + + float4x4 a1 = float4x4(-238.2196f, 469.2926f, 48.29071f, 88.7237549f, 66.1485f, 55.7080078f, 464.541382f, 499.2428f, 175.015015f, 196.387573f, -306.1656f, 149.660034f, 320.391724f, -359.8338f, 22.0384521f, -159.55426f); + float4x4 r1 = float4x4(238.2196f, -469.2926f, -48.29071f, -88.7237549f, -66.1485f, -55.7080078f, -464.541382f, -499.2428f, -175.015015f, -196.387573f, 306.1656f, -149.660034f, -320.391724f, 359.8338f, -22.0384521f, 159.55426f); + TestUtils.AreEqual(-a1, r1); + + float4x4 a2 = float4x4(419.822449f, 363.716736f, 280.887878f, -270.6513f, -201.615753f, 325.031616f, 95.48926f, 191.070251f, 371.973572f, 296.512573f, -164.169922f, -347.4581f, -237.404968f, -228.701965f, 61.0822754f, 128.331543f); + float4x4 r2 = float4x4(-419.822449f, -363.716736f, -280.887878f, 270.6513f, 201.615753f, -325.031616f, -95.48926f, -191.070251f, -371.973572f, -296.512573f, 164.169922f, 347.4581f, 237.404968f, 228.701965f, -61.0822754f, -128.331543f); + TestUtils.AreEqual(-a2, r2); + + float4x4 a3 = float4x4(331.2558f, -501.0288f, 160.5802f, -180.496582f, 127.978333f, 260.034546f, -287.968262f, -502.199127f, 303.970581f, -182.962921f, 322.327637f, 91.48047f, 211.295166f, 116.070496f, 309.361023f, -129.064484f); + float4x4 r3 = float4x4(-331.2558f, 501.0288f, -160.5802f, 180.496582f, -127.978333f, -260.034546f, 287.968262f, 502.199127f, -303.970581f, 182.962921f, -322.327637f, -91.48047f, -211.295166f, -116.070496f, -309.361023f, 129.064484f); + TestUtils.AreEqual(-a3, r3); + } + + [TestCompiler] + public static void float4x4_operator_prefix_inc() + { + float4x4 a0 = float4x4(-99.79556f, 458.741821f, 96.1790161f, -48.55246f, -315.728973f, -299.230164f, -323.614868f, -456.8903f, -76.50766f, -305.584778f, 64.0965f, 148.679321f, 363.2849f, -115.559235f, -326.8778f, -179.894653f); + float4x4 r0 = float4x4(-98.79556f, 459.741821f, 97.1790161f, -47.55246f, -314.728973f, -298.230164f, -322.614868f, -455.8903f, -75.50766f, -304.584778f, 65.0965f, 149.679321f, 364.2849f, -114.559235f, -325.8778f, -178.894653f); + TestUtils.AreEqual(++a0, r0); + + float4x4 a1 = float4x4(339.8766f, -153.373688f, 261.625549f, 155.030823f, -396.650238f, 301.3058f, -221.355408f, -429.698151f, -271.2893f, -264.380066f, -377.5592f, 223.232422f, -71.076355f, -388.2279f, 131.283142f, 22.3049316f); + float4x4 r1 = float4x4(340.8766f, -152.373688f, 262.625549f, 156.030823f, -395.650238f, 302.3058f, -220.355408f, -428.698151f, -270.2893f, -263.380066f, -376.5592f, 224.232422f, -70.076355f, -387.2279f, 132.283142f, 23.3049316f); + TestUtils.AreEqual(++a1, r1); + + float4x4 a2 = float4x4(-480.760468f, 117.9541f, 139.525818f, 335.6897f, 162.6615f, -256.0451f, -254.7315f, -89.25604f, 314.36554f, 244.728149f, 34.01062f, -90.44528f, -472.63623f, -34.5667725f, -71.27185f, -396.4901f); + float4x4 r2 = float4x4(-479.760468f, 118.9541f, 140.525818f, 336.6897f, 163.6615f, -255.0451f, -253.7315f, -88.25604f, 315.36554f, 245.728149f, 35.01062f, -89.44528f, -471.63623f, -33.5667725f, -70.27185f, -395.4901f); + TestUtils.AreEqual(++a2, r2); + + float4x4 a3 = float4x4(-314.987457f, 63.45038f, 474.6681f, 257.173584f, 128.107178f, -354.5639f, -194.465576f, -130.854309f, 467.560364f, 477.1499f, -458.055664f, -168.122711f, 506.568665f, -429.356873f, 444.8133f, -385.6256f); + float4x4 r3 = float4x4(-313.987457f, 64.45038f, 475.6681f, 258.173584f, 129.107178f, -353.5639f, -193.465576f, -129.854309f, 468.560364f, 478.1499f, -457.055664f, -167.122711f, 507.568665f, -428.356873f, 445.8133f, -384.6256f); + TestUtils.AreEqual(++a3, r3); + } + + [TestCompiler] + public static void float4x4_operator_postfix_inc() + { + float4x4 a0 = float4x4(322.943542f, 472.0525f, 203.48761f, -49.8545837f, -31.4205322f, 455.3366f, 271.454651f, 55.7368774f, 153.7503f, -174.173f, -427.401062f, 215.110229f, 159.861023f, -333.050446f, 241.4649f, 287.220459f); + float4x4 r0 = float4x4(322.943542f, 472.0525f, 203.48761f, -49.8545837f, -31.4205322f, 455.3366f, 271.454651f, 55.7368774f, 153.7503f, -174.173f, -427.401062f, 215.110229f, 159.861023f, -333.050446f, 241.4649f, 287.220459f); + TestUtils.AreEqual(a0++, r0); + + float4x4 a1 = float4x4(-170.104645f, -162.86026f, 454.488831f, -449.9273f, 209.522644f, -311.435852f, 69.7314453f, -232.299652f, -341.498535f, 188.006592f, 417.7298f, 25.5656738f, -463.725647f, 504.448975f, -310.144958f, -117.398468f); + float4x4 r1 = float4x4(-170.104645f, -162.86026f, 454.488831f, -449.9273f, 209.522644f, -311.435852f, 69.7314453f, -232.299652f, -341.498535f, 188.006592f, 417.7298f, 25.5656738f, -463.725647f, 504.448975f, -310.144958f, -117.398468f); + TestUtils.AreEqual(a1++, r1); + + float4x4 a2 = float4x4(403.508728f, 446.607666f, -12.35257f, -232.150116f, 64.57703f, -10.5907288f, 193.584351f, 382.050354f, -462.064117f, -122.30658f, 428.7763f, 338.97876f, 227.544067f, -169.321228f, -95.7655945f, -169.855347f); + float4x4 r2 = float4x4(403.508728f, 446.607666f, -12.35257f, -232.150116f, 64.57703f, -10.5907288f, 193.584351f, 382.050354f, -462.064117f, -122.30658f, 428.7763f, 338.97876f, 227.544067f, -169.321228f, -95.7655945f, -169.855347f); + TestUtils.AreEqual(a2++, r2); + + float4x4 a3 = float4x4(439.3f, -424.349731f, 63.8623657f, 260.8709f, 350.9854f, 271.488342f, -378.243835f, -329.554932f, -201.921967f, -244.669952f, 365.7249f, -481.8288f, 105.475952f, -166.622009f, 394.7439f, -179.4913f); + float4x4 r3 = float4x4(439.3f, -424.349731f, 63.8623657f, 260.8709f, 350.9854f, 271.488342f, -378.243835f, -329.554932f, -201.921967f, -244.669952f, 365.7249f, -481.8288f, 105.475952f, -166.622009f, 394.7439f, -179.4913f); + TestUtils.AreEqual(a3++, r3); + } + + [TestCompiler] + public static void float4x4_operator_prefix_dec() + { + float4x4 a0 = float4x4(-416.201233f, -96.63788f, -50.14566f, -207.316437f, 439.479065f, -304.400818f, 337.968933f, 246.088989f, 171.964539f, -227.44281f, 298.2848f, 326.5078f, 400.7209f, -478.031372f, -326.452972f, -24.5845032f); + float4x4 r0 = float4x4(-417.201233f, -97.63788f, -51.14566f, -208.316437f, 438.479065f, -305.400818f, 336.968933f, 245.088989f, 170.964539f, -228.44281f, 297.2848f, 325.5078f, 399.7209f, -479.031372f, -327.452972f, -25.5845032f); + TestUtils.AreEqual(--a0, r0); + + float4x4 a1 = float4x4(112.796875f, -503.27417f, -79.6352539f, -131.00415f, 147.893677f, -15.7086487f, 188.758423f, 307.791931f, -406.667725f, 181.4751f, -188.69223f, -505.2157f, -372.241943f, -4.031769f, 83.76776f, -30.6314087f); + float4x4 r1 = float4x4(111.796875f, -504.27417f, -80.6352539f, -132.00415f, 146.893677f, -16.7086487f, 187.758423f, 306.791931f, -407.667725f, 180.4751f, -189.69223f, -506.2157f, -373.241943f, -5.031769f, 82.76776f, -31.6314087f); + TestUtils.AreEqual(--a1, r1); + + float4x4 a2 = float4x4(-436.906555f, 345.021545f, 4.73535156f, -68.65332f, 481.4961f, 463.391418f, -357.673279f, 153.329651f, -233.624329f, -35.23831f, 340.619629f, 259.928833f, 335.354919f, 85.36487f, -1.39398193f, -407.4104f); + float4x4 r2 = float4x4(-437.906555f, 344.021545f, 3.73535156f, -69.65332f, 480.4961f, 462.391418f, -358.673279f, 152.329651f, -234.624329f, -36.23831f, 339.619629f, 258.928833f, 334.354919f, 84.36487f, -2.393982f, -408.4104f); + TestUtils.AreEqual(--a2, r2); + + float4x4 a3 = float4x4(-145.793427f, -337.445435f, -464.6742f, 226.802917f, 15.3192139f, 431.0708f, 273.0959f, -3.10839844f, 334.1468f, 26.1240845f, 14.6611938f, 239.304688f, 32.2064819f, 288.589f, -297.4829f, -154.860779f); + float4x4 r3 = float4x4(-146.793427f, -338.445435f, -465.6742f, 225.802917f, 14.3192139f, 430.0708f, 272.0959f, -4.10839844f, 333.1468f, 25.1240845f, 13.6611938f, 238.304688f, 31.2064819f, 287.589f, -298.4829f, -155.860779f); + TestUtils.AreEqual(--a3, r3); + } + + [TestCompiler] + public static void float4x4_operator_postfix_dec() + { + float4x4 a0 = float4x4(-376.5924f, 16.9697266f, -0.2506714f, -202.323273f, 409.557556f, 47.85663f, -281.1117f, -262.0626f, -182.405731f, 450.1281f, -129.232666f, -332.154968f, -261.0089f, 205.461121f, -230.227783f, -483.066528f); + float4x4 r0 = float4x4(-376.5924f, 16.9697266f, -0.2506714f, -202.323273f, 409.557556f, 47.85663f, -281.1117f, -262.0626f, -182.405731f, 450.1281f, -129.232666f, -332.154968f, -261.0089f, 205.461121f, -230.227783f, -483.066528f); + TestUtils.AreEqual(a0--, r0); + + float4x4 a1 = float4x4(378.641235f, -192.177856f, -357.0542f, -396.302063f, 279.424255f, 115.867737f, -20.8232117f, 323.4054f, 379.156128f, 311.299f, 409.222473f, -428.2567f, -425.2884f, -194.6413f, -258.848358f, -208.985779f); + float4x4 r1 = float4x4(378.641235f, -192.177856f, -357.0542f, -396.302063f, 279.424255f, 115.867737f, -20.8232117f, 323.4054f, 379.156128f, 311.299f, 409.222473f, -428.2567f, -425.2884f, -194.6413f, -258.848358f, -208.985779f); + TestUtils.AreEqual(a1--, r1); + + float4x4 a2 = float4x4(-313.4259f, 176.78949f, -370.7863f, 64.90387f, 449.637756f, -112.105042f, -203.437408f, 417.137329f, -197.347351f, 446.023376f, 239.974548f, 350.618042f, -264.747253f, 186.44165f, 353.759521f, 68.23419f); + float4x4 r2 = float4x4(-313.4259f, 176.78949f, -370.7863f, 64.90387f, 449.637756f, -112.105042f, -203.437408f, 417.137329f, -197.347351f, 446.023376f, 239.974548f, 350.618042f, -264.747253f, 186.44165f, 353.759521f, 68.23419f); + TestUtils.AreEqual(a2--, r2); + + float4x4 a3 = float4x4(-240.610687f, -269.286316f, -101.805145f, -492.290375f, -507.078247f, 413.102f, -491.42746f, -13.7286682f, -481.5986f, 248.557617f, -178.3342f, -345.805847f, -269.117371f, 132.769409f, -382.384277f, 388.8308f); + float4x4 r3 = float4x4(-240.610687f, -269.286316f, -101.805145f, -492.290375f, -507.078247f, 413.102f, -491.42746f, -13.7286682f, -481.5986f, 248.557617f, -178.3342f, -345.805847f, -269.117371f, 132.769409f, -382.384277f, 388.8308f); + TestUtils.AreEqual(a3--, r3); + } + + + } +} diff --git a/package/Tests/Tests/Shared/TestFloat4x4.gen.cs.meta b/package/Tests/Tests/Shared/TestFloat4x4.gen.cs.meta new file mode 100755 index 000000000..84f7f600d --- /dev/null +++ b/package/Tests/Tests/Shared/TestFloat4x4.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b3a17e2bf2fb0984b96ba8a21a08b8b0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/package/Tests/Tests/Shared/TestHalf.cs b/package/Tests/Tests/Shared/TestHalf.cs new file mode 100755 index 000000000..7cd963e2e --- /dev/null +++ b/package/Tests/Tests/Shared/TestHalf.cs @@ -0,0 +1,445 @@ +using NUnit.Framework; +using static Unity.Mathematics.math; +using Burst.Compiler.IL.Tests; +using System; + +namespace Unity.Mathematics.Tests +{ + [TestFixture] + public partial class TestHalf + { + [TestCompiler] + public static void half_zero() + { + TestUtils.AreEqual(half.zero.value, 0x0000); + } + + [TestCompiler] + public static void half2_zero() + { + TestUtils.AreEqual(half2.zero.x.value, 0x0000); + TestUtils.AreEqual(half2.zero.y.value, 0x0000); + } + + [TestCompiler] + public static void half3_zero() + { + TestUtils.AreEqual(half3.zero.x.value, 0x0000); + TestUtils.AreEqual(half3.zero.y.value, 0x0000); + TestUtils.AreEqual(half3.zero.z.value, 0x0000); + } + + [TestCompiler] + public static void half4_zero() + { + TestUtils.AreEqual(half4.zero.x.value, 0x0000); + TestUtils.AreEqual(half4.zero.y.value, 0x0000); + TestUtils.AreEqual(half4.zero.z.value, 0x0000); + TestUtils.AreEqual(half4.zero.w.value, 0x0000); + } + + [TestCompiler] + public static void half_from_float_construction() + { + TestUtils.AreEqual(half(0.0f).value, 0x0000); + TestUtils.AreEqual(half(2.98e-08f).value, 0x0000); + TestUtils.AreEqual(half(5.96046448e-08f).value, 0x0001); + TestUtils.AreEqual(half(123.4f).value, 0x57B6); + TestUtils.AreEqual(half(65504.0f).value, 0x7BFF); + TestUtils.AreEqual(half(65520.0f).value, 0x7C00); + TestUtils.AreEqual(half(float.PositiveInfinity).value, 0x7C00); + TestUtils.AreEqual(half(float.NaN).value, 0xFE00); + + TestUtils.AreEqual(half(-2.98e-08f).value, 0x8000); + TestUtils.AreEqual(half(-5.96046448e-08f).value, 0x8001); + TestUtils.AreEqual(half(-123.4f).value, 0xD7B6); + TestUtils.AreEqual(half(-65504.0f).value, 0xFBFF); + TestUtils.AreEqual(half(-65520.0f).value, 0xFC00); + TestUtils.AreEqual(half(float.NegativeInfinity).value, 0xFC00); + } + + [TestCompiler] + [WindowsOnly("Mono on linux ignores signed zero.")] + public static void half_from_float_construction_signed_zero() + { + TestUtils.AreEqual(half(-0.0f).value, 0x8000); + } + + [TestCompiler] + public static void half2_from_float2_construction() + { + half2 h0 = half2(float2(0.0f, 2.98e-08f)); + half2 h1 = half2(float2(5.96046448e-08f, 123.4f)); + half2 h2 = half2(float2(65504.0f, 65520.0f)); + half2 h3 = half2(float2(float.PositiveInfinity, float.NaN)); + + half2 h4 = half2(float2(-2.98e-08f, -5.96046448e-08f)); + half2 h5 = half2(float2(-123.4f, -65504.0f)); + half2 h6 = half2(float2(-65520.0f, float.NegativeInfinity)); + half2 h7 = half2(float2(float.NegativeInfinity, 0.0f)); + + TestUtils.AreEqual(uint2(h0.x.value, h0.y.value), uint2(0x0000, 0x0000)); + TestUtils.AreEqual(uint2(h1.x.value, h1.y.value), uint2(0x0001, 0x57B6)); + TestUtils.AreEqual(uint2(h2.x.value, h2.y.value), uint2(0x7BFF, 0x7C00)); + TestUtils.AreEqual(uint2(h3.x.value, h3.y.value), uint2(0x7C00, 0xFE00)); + + TestUtils.AreEqual(uint2(h4.x.value, h4.y.value), uint2(0x8000, 0x8001)); + TestUtils.AreEqual(uint2(h5.x.value, h5.y.value), uint2(0xD7B6, 0xFBFF)); + TestUtils.AreEqual(uint2(h6.x.value, h6.y.value), uint2(0xFC00, 0xFC00)); + TestUtils.AreEqual(uint2(h7.x.value, h7.y.value), uint2(0xFC00, 0x0000)); + } + + [TestCompiler] + [WindowsOnly("Mono on linux ignores signed zero.")] + public static void half2_from_float2_construction_signed_zero() + { + half2 h0 = half2(float2(-0.0f, -0.0f)); + TestUtils.AreEqual(uint2(h0.x.value, h0.y.value), uint2(0x8000, 0x8000)); + } + + [TestCompiler] + public static void half3_from_float3_construction() + { + half3 h0 = half3(float3(0.0f, 2.98e-08f, 5.96046448e-08f)); + half3 h1 = half3(float3(123.4f, 65504.0f, 65520.0f)); + half3 h2 = half3(float3(float.PositiveInfinity, float.NaN, -2.98e-08f)); + half3 h3 = half3(float3(-5.96046448e-08f, -123.4f, -65504.0f)); + half3 h4 = half3(float3(-65520.0f, float.NegativeInfinity, 0.0f)); + + TestUtils.AreEqual(uint3(h0.x.value, h0.y.value, h0.z.value), uint3(0x0000, 0x0000, 0x0001)); + TestUtils.AreEqual(uint3(h1.x.value, h1.y.value, h1.z.value), uint3(0x57B6, 0x7BFF, 0x7C00)); + TestUtils.AreEqual(uint3(h2.x.value, h2.y.value, h2.z.value), uint3(0x7C00, 0xFE00, 0x8000)); + + TestUtils.AreEqual(uint3(h3.x.value, h3.y.value, h3.z.value), uint3(0x8001, 0xD7B6, 0xFBFF)); + TestUtils.AreEqual(uint3(h4.x.value, h4.y.value, h4.z.value), uint3(0xFC00, 0xFC00, 0x0000)); + } + + [TestCompiler] + [WindowsOnly("Mono on linux ignores signed zero.")] + public static void half3_from_float3_construction_signed_zero() + { + half3 h0 = half3(float3(-0.0f, -0.0f, -0.0f)); + TestUtils.AreEqual(uint3(h0.x.value, h0.y.value, h0.z.value), uint3(0x8000, 0x8000, 0x8000)); + } + + [TestCompiler] + public static void half4_from_float4_construction() + { + half4 h0 = half4(float4(0.0f, 2.98e-08f, 5.96046448e-08f, 123.4f)); + half4 h1 = half4(float4(65504.0f, 65520.0f, float.PositiveInfinity, float.NaN)); + half4 h2 = half4(float4(-2.98e-08f, -5.96046448e-08f, -123.4f, -65504.0f)); + half4 h3 = half4(float4(-65520.0f, float.NegativeInfinity, float.NegativeInfinity, 0.0f)); + + TestUtils.AreEqual(uint4(h0.x.value, h0.y.value, h0.z.value, h0.w.value), uint4(0x0000, 0x0000, 0x0001, 0x57B6)); + TestUtils.AreEqual(uint4(h1.x.value, h1.y.value, h1.z.value, h1.w.value), uint4(0x7BFF, 0x7C00, 0x7C00, 0xFE00)); + TestUtils.AreEqual(uint4(h2.x.value, h2.y.value, h2.z.value, h2.w.value), uint4(0x8000, 0x8001, 0xD7B6, 0xFBFF)); + TestUtils.AreEqual(uint4(h3.x.value, h3.y.value, h3.z.value, h3.w.value), uint4(0xFC00, 0xFC00, 0xFC00, 0x0000)); + } + + [TestCompiler] + [WindowsOnly("Mono on linux ignores signed zero.")] + public static void half4_from_float4_construction_signed_zero() + { + half4 h0 = half4(float4(-0.0f, -0.0f, -0.0f, -0.0f)); + TestUtils.AreEqual(uint4(h0.x.value, h0.y.value, h0.z.value, h0.w.value), uint4(0x8000, 0x8000, 0x8000, 0x8000)); + } + + + [TestCompiler] + public static void half_from_double_construction() + { + TestUtils.AreEqual(half(0.0).value, 0x0000); + TestUtils.AreEqual(half(2.98e-08).value, 0x0000); + TestUtils.AreEqual(half(5.96046448e-08).value, 0x0001); + TestUtils.AreEqual(half(123.4).value, 0x57B6); + TestUtils.AreEqual(half(65504.0).value, 0x7BFF); + TestUtils.AreEqual(half(65520.0).value, 0x7C00); + TestUtils.AreEqual(half(double.PositiveInfinity).value, 0x7C00); + TestUtils.AreEqual(half(double.NaN).value, 0xFE00); + + TestUtils.AreEqual(half(-2.98e-08).value, 0x8000); + TestUtils.AreEqual(half(-5.96046448e-08).value, 0x8001); + TestUtils.AreEqual(half(-123.4).value, 0xD7B6); + TestUtils.AreEqual(half(-65504.0).value, 0xFBFF); + TestUtils.AreEqual(half(-65520.0).value, 0xFC00); + TestUtils.AreEqual(half(double.NegativeInfinity).value, 0xFC00); + } + + [TestCompiler] + [WindowsOnly("Mono on linux ignores signed zero.")] + public static void half_from_double_construction_signed_zero() + { + TestUtils.AreEqual(half(-0.0).value, 0x8000); + } + + [TestCompiler] + public static void half2_from_double2_construction() + { + half2 h0 = half2(double2(0.0, 2.98e-08)); + half2 h1 = half2(double2(5.96046448e-08, 123.4)); + half2 h2 = half2(double2(65504.0, 65520.0)); + half2 h3 = half2(double2(double.PositiveInfinity, double.NaN)); + + half2 h4 = half2(double2(-2.98e-08, -5.96046448e-08)); + half2 h5 = half2(double2(-123.4, -65504.0)); + half2 h6 = half2(double2(-65520.0, double.NegativeInfinity)); + half2 h7 = half2(double2(double.NegativeInfinity, 0.0)); + + TestUtils.AreEqual(uint2(h0.x.value, h0.y.value), uint2(0x0000, 0x0000)); + TestUtils.AreEqual(uint2(h1.x.value, h1.y.value), uint2(0x0001, 0x57B6)); + TestUtils.AreEqual(uint2(h2.x.value, h2.y.value), uint2(0x7BFF, 0x7C00)); + TestUtils.AreEqual(uint2(h3.x.value, h3.y.value), uint2(0x7C00, 0xFE00)); + + TestUtils.AreEqual(uint2(h4.x.value, h4.y.value), uint2(0x8000, 0x8001)); + TestUtils.AreEqual(uint2(h5.x.value, h5.y.value), uint2(0xD7B6, 0xFBFF)); + TestUtils.AreEqual(uint2(h6.x.value, h6.y.value), uint2(0xFC00, 0xFC00)); + TestUtils.AreEqual(uint2(h7.x.value, h7.y.value), uint2(0xFC00, 0x0000)); + } + + [TestCompiler] + [WindowsOnly("Mono on linux ignores signed zero.")] + public static void half2_from_double2_construction_signed_zero() + { + half2 h0 = half2(double2(-0.0, -0.0)); + TestUtils.AreEqual(uint2(h0.x.value, h0.y.value), uint2(0x8000, 0x8000)); + } + + [TestCompiler] + public static void half3_from_double3_construction() + { + half3 h0 = half3(double3(0.0, 2.98e-08, 5.96046448e-08)); + half3 h1 = half3(double3(123.4, 65504.0, 65520.0)); + half3 h2 = half3(double3(double.PositiveInfinity, double.NaN, -2.98e-08)); + half3 h3 = half3(double3(-5.96046448e-08, -123.4, -65504.0)); + half3 h4 = half3(double3(-65520.0, double.NegativeInfinity, 0.0)); + + TestUtils.AreEqual(uint3(h0.x.value, h0.y.value, h0.z.value), uint3(0x0000, 0x0000, 0x0001)); + TestUtils.AreEqual(uint3(h1.x.value, h1.y.value, h1.z.value), uint3(0x57B6, 0x7BFF, 0x7C00)); + TestUtils.AreEqual(uint3(h2.x.value, h2.y.value, h2.z.value), uint3(0x7C00, 0xFE00, 0x8000)); + + TestUtils.AreEqual(uint3(h3.x.value, h3.y.value, h3.z.value), uint3(0x8001, 0xD7B6, 0xFBFF)); + TestUtils.AreEqual(uint3(h4.x.value, h4.y.value, h4.z.value), uint3(0xFC00, 0xFC00, 0x0000)); + } + + [TestCompiler] + [WindowsOnly("Mono on linux ignores signed zero.")] + public static void half3_from_double3_construction_signed_zero() + { + half3 h0 = half3(double3(-0.0, -0.0, -0.0)); + TestUtils.AreEqual(uint3(h0.x.value, h0.y.value, h0.z.value), uint3(0x8000, 0x8000, 0x8000)); + } + + [TestCompiler] + public static void half4_from_double4_construction() + { + half4 h0 = half4(double4(0.0, 2.98e-08, 5.96046448e-08, 123.4)); + half4 h1 = half4(double4(65504.0, 65520.0, double.PositiveInfinity, double.NaN)); + half4 h2 = half4(double4(-2.98e-08, -5.96046448e-08, -123.4, -65504.0)); + half4 h3 = half4(double4(-65520.0, double.NegativeInfinity, double.NegativeInfinity, 0.0)); + + TestUtils.AreEqual(uint4(h0.x.value, h0.y.value, h0.z.value, h0.w.value), uint4(0x0000, 0x0000, 0x0001, 0x57B6)); + TestUtils.AreEqual(uint4(h1.x.value, h1.y.value, h1.z.value, h1.w.value), uint4(0x7BFF, 0x7C00, 0x7C00, 0xFE00)); + TestUtils.AreEqual(uint4(h2.x.value, h2.y.value, h2.z.value, h2.w.value), uint4(0x8000, 0x8001, 0xD7B6, 0xFBFF)); + TestUtils.AreEqual(uint4(h3.x.value, h3.y.value, h3.z.value, h3.w.value), uint4(0xFC00, 0xFC00, 0xFC00, 0x0000)); + } + + [TestCompiler] + [WindowsOnly("Mono on linux ignores signed zero.")] + public static void half4_from_double4_construction_signed_zero() + { + half4 h0 = half4(double4(-0.0, -0.0, -0.0, -0.0)); + TestUtils.AreEqual(uint4(h0.x.value, h0.y.value, h0.z.value, h0.w.value), uint4(0x8000, 0x8000, 0x8000, 0x8000)); + } + + [TestCompiler] + public static void half_to_float() + { + TestUtils.AreEqual(asuint(new half { value = 0x0000 }), 0x00000000); + TestUtils.AreEqual(asuint(new half { value = 0x0203 }), 0x3800C000); + TestUtils.AreEqual(asuint(new half { value = 0x4321 }), 0x40642000); + TestUtils.AreEqual(asuint(new half { value = 0x7BFF }), 0x477FE000); + TestUtils.AreEqual(asuint(new half { value = 0x7C00 }), 0x7F800000); + TestUtils.AreEqual(isnan(new half { value = 0x7C01 }), true); + + TestUtils.AreEqual(asuint(new half { value = 0x8000 }), 0x80000000); + TestUtils.AreEqual(asuint(new half { value = 0x8203 }), 0xB800C000); + TestUtils.AreEqual(asuint(new half { value = 0xC321 }), 0xC0642000); + TestUtils.AreEqual(asuint(new half { value = 0xFBFF }), 0xC77FE000); + TestUtils.AreEqual(asuint(new half { value = 0xFC00 }), 0xFF800000); + TestUtils.AreEqual(isnan(new half { value = 0xFC01 }), true); + } + + [TestCompiler] + public static void half2_to_float2() + { + half2 h0; h0.x.value = 0x0000; h0.y.value = 0x0203; + half2 h1; h1.x.value = 0x4321; h1.y.value = 0x7BFF; + half2 h2; h2.x.value = 0x7C00; h2.y.value = 0x7C00; + half2 h3; h3.x.value = 0x7C01; h3.y.value = 0x7C01; + + half2 h4; h4.x.value = 0x8000; h4.y.value = 0x8203; + half2 h5; h5.x.value = 0xC321; h5.y.value = 0xFBFF; + half2 h6; h6.x.value = 0xFC00; h6.y.value = 0xFC00; + half2 h7; h7.x.value = 0xFC01; h7.y.value = 0xFC01; + + TestUtils.AreEqual(asuint(h0), uint2(0x00000000, 0x3800C000)); + TestUtils.AreEqual(asuint(h1), uint2(0x40642000, 0x477FE000)); + TestUtils.AreEqual(asuint(h2), uint2(0x7F800000, 0x7F800000)); + TestUtils.AreEqual(all(isnan(h3)), true); + + TestUtils.AreEqual(asuint(h4), uint2(0x80000000, 0xB800C000)); + TestUtils.AreEqual(asuint(h5), uint2(0xC0642000, 0xC77FE000)); + TestUtils.AreEqual(asuint(h6), uint2(0xFF800000, 0xFF800000)); + TestUtils.AreEqual(all(isnan(h7)), true); + } + + [TestCompiler] + public static void half3_to_float3() + { + half3 h0; h0.x.value = 0x0000; h0.y.value = 0x0203; h0.z.value = 0x4321; + half3 h1; h1.x.value = 0x7BFF; h1.y.value = 0x7C00; h1.z.value = 0x7C00; + half3 h2; h2.x.value = 0x7C01; h2.y.value = 0x7C01; h2.z.value = 0x7C01; + + half3 h3; h3.x.value = 0x8000; h3.y.value = 0x8203; h3.z.value = 0xC321; + half3 h4; h4.x.value = 0xFBFF; h4.y.value = 0xFC00; h4.z.value = 0xFC00; + half3 h5; h5.x.value = 0xFC01; h5.y.value = 0xFC01; h5.z.value = 0xFC01; + + TestUtils.AreEqual(asuint(h0), uint3(0x00000000, 0x3800C000, 0x40642000)); + TestUtils.AreEqual(asuint(h1), uint3(0x477FE000, 0x7F800000, 0x7F800000)); + TestUtils.AreEqual(all(isnan(h2)), true); + + TestUtils.AreEqual(asuint(h3), uint3(0x80000000, 0xB800C000, 0xC0642000)); + TestUtils.AreEqual(asuint(h4), uint3(0xC77FE000, 0xFF800000, 0xFF800000)); + TestUtils.AreEqual(all(isnan(h5)), true); + } + + [TestCompiler] + public static void half4_to_float4() + { + half4 h0; h0.x.value = 0x0000; h0.y.value = 0x0203; h0.z.value = 0x4321; h0.w.value = 0x7BFF; + half4 h1; h1.x.value = 0x7C00; h1.y.value = 0x7C00; h1.z.value = 0x7C00; h1.w.value = 0x7C00; + half4 h2; h2.x.value = 0x7C01; h2.y.value = 0x7C01; h2.z.value = 0x7C01; h2.w.value = 0x7C01; + + half4 h3; h3.x.value = 0x8000; h3.y.value = 0x8203; h3.z.value = 0xC321; h3.w.value = 0xFBFF; + half4 h4; h4.x.value = 0xFC00; h4.y.value = 0xFC00; h4.z.value = 0xFC00; h4.w.value = 0xFC00; + half4 h5; h5.x.value = 0xFC01; h5.y.value = 0xFC01; h5.z.value = 0xFC01; h5.w.value = 0xFC01; + + TestUtils.AreEqual(asuint(h0), uint4(0x00000000, 0x3800C000, 0x40642000, 0x477FE000)); + TestUtils.AreEqual(asuint(h1), uint4(0x7F800000, 0x7F800000, 0x7F800000, 0x7F800000)); + TestUtils.AreEqual(all(isnan(h2)), true); + + TestUtils.AreEqual(asuint(h3), uint4(0x80000000, 0xB800C000, 0xC0642000, 0xC77FE000)); + TestUtils.AreEqual(asuint(h4), uint4(0xFF800000, 0xFF800000, 0xFF800000, 0xFF800000)); + TestUtils.AreEqual(all(isnan(h5)), true); + } + + + [TestCompiler] + public static void half_to_double() + { + TestUtils.AreEqual(asulong((double)new half { value = 0x0000 }), 0x0000000000000000u); + TestUtils.AreEqual(asulong((double)new half { value = 0x0203 }), 0x3F00180000000000u); + TestUtils.AreEqual(asulong((double)new half { value = 0x4321 }), 0x400C840000000000u); + TestUtils.AreEqual(asulong((double)new half { value = 0x7BFF }), 0x40eFFC0000000000u); + TestUtils.AreEqual(asulong((double)new half { value = 0x7C00 }), 0x7FF0000000000000u); + TestUtils.AreEqual(isnan((double)new half { value = 0x7C01 }), true); + + TestUtils.AreEqual(asulong((double)new half { value = 0x8000 }), 0x8000000000000000u); + TestUtils.AreEqual(asulong((double)new half { value = 0x8203 }), 0xBF00180000000000u); + TestUtils.AreEqual(asulong((double)new half { value = 0xC321 }), 0xC00C840000000000u); + TestUtils.AreEqual(asulong((double)new half { value = 0xFBFF }), 0xC0eFFC0000000000u); + TestUtils.AreEqual(asulong((double)new half { value = 0xFC00 }), 0xFFF0000000000000u); + TestUtils.AreEqual(isnan((double)new half { value = 0xFC01 }), true); + } + + + [TestCompiler] + public static void half_from_float_explicit_conversion() + { + half h = (half)123.4f; + TestUtils.AreEqual(h.value, 0x57B6); + } + + [TestCompiler] + public static void half2_from_float2_explicit_conversion() + { + half2 h = (half2)float2(123.4f, 5.96046448e-08f); + TestUtils.AreEqual(h.x.value, 0x57B6); + TestUtils.AreEqual(h.y.value, 0x0001); + } + + [TestCompiler] + public static void half3_from_float3_explicit_conversion() + { + half3 h = (half3)float3(123.4f, 5.96046448e-08f, -65504.0f); + TestUtils.AreEqual(h.x.value, 0x57B6); + TestUtils.AreEqual(h.y.value, 0x0001); + TestUtils.AreEqual(h.z.value, 0xFBFF); + } + + [TestCompiler] + public static void half4_from_float4_explicit_conversion() + { + half4 h = (half4)float4(123.4f, 5.96046448e-08f, -65504.0f, float.PositiveInfinity); + TestUtils.AreEqual(h.x.value, 0x57B6); + TestUtils.AreEqual(h.y.value, 0x0001); + TestUtils.AreEqual(h.z.value, 0xFBFF); + TestUtils.AreEqual(h.w.value, 0x7C00); + } + + [TestCompiler] + public static void half_from_double_explicit_conversion() + { + half h = (half)123.4; + TestUtils.AreEqual(h.value, 0x57B6); + } + + + [TestCompiler] + public static void half_to_float_implicit_conversion() + { + half h; h.value = 0x0203; + float f = h; + TestUtils.AreEqual(asuint(f), 0x3800C000); + } + + [TestCompiler] + public static void half2_to_float2_implicit_conversion() + { + half2 h; h.x.value = 0x0203; h.y.value = 0x8203; + float2 f = h; + TestUtils.AreEqual(asuint(f.x), 0x3800C000); + TestUtils.AreEqual(asuint(f.y), 0xB800C000); + } + + [TestCompiler] + public static void half3_to_float3_implicit_conversion() + { + half3 h; h.x.value = 0x0203; h.y.value = 0x8203; h.z.value = 0x7BFF; + float3 f = h; + TestUtils.AreEqual(asuint(f.x), 0x3800C000); + TestUtils.AreEqual(asuint(f.y), 0xB800C000); + TestUtils.AreEqual(asuint(f.z), 0x477FE000); + } + + [TestCompiler] + public static void half4_to_float4_implicit_conversion() + { + half4 h; h.x.value = 0x0203; h.y.value = 0x8203; h.z.value = 0x7BFF; h.w.value = 0x7C00; + float4 f = h; + TestUtils.AreEqual(asuint(f.x), 0x3800C000); + TestUtils.AreEqual(asuint(f.y), 0xB800C000); + TestUtils.AreEqual(asuint(f.z), 0x477FE000); + TestUtils.AreEqual(asuint(f.w), 0x7F800000); + } + + [TestCompiler] + public static void half_to_double_implicit_conversion() + { + half h; h.value = 0x0203; + double f = h; + + TestUtils.AreEqual(asulong(f), 0x3F00180000000000u); + } + } +} diff --git a/package/Tests/Tests/Shared/TestHalf.cs.meta b/package/Tests/Tests/Shared/TestHalf.cs.meta new file mode 100755 index 000000000..291a364e9 --- /dev/null +++ b/package/Tests/Tests/Shared/TestHalf.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: dba01b4c9788ea04d87865908e0ba344 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/package/Tests/Tests/Shared/TestInt2.gen.cs b/package/Tests/Tests/Shared/TestInt2.gen.cs new file mode 100755 index 000000000..8f29d018f --- /dev/null +++ b/package/Tests/Tests/Shared/TestInt2.gen.cs @@ -0,0 +1,1339 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using NUnit.Framework; +using static Unity.Mathematics.math; +using Burst.Compiler.IL.Tests; + +namespace Unity.Mathematics.Tests +{ + [TestFixture] + public class TestInt2 + { + [TestCompiler] + public static void int2_zero() + { + TestUtils.AreEqual(int2.zero.x, 0); + TestUtils.AreEqual(int2.zero.y, 0); + } + + [TestCompiler] + public static void int2_constructor() + { + int2 a = new int2(1, 2); + TestUtils.AreEqual(a.x, 1); + TestUtils.AreEqual(a.y, 2); + } + + [TestCompiler] + public static void int2_scalar_constructor() + { + int2 a = new int2(17); + TestUtils.AreEqual(a.x, 17); + TestUtils.AreEqual(a.y, 17); + } + + [TestCompiler] + public static void int2_static_constructor() + { + int2 a = int2(1, 2); + TestUtils.AreEqual(a.x, 1); + TestUtils.AreEqual(a.y, 2); + } + + [TestCompiler] + public static void int2_static_scalar_constructor() + { + int2 a = int2(17); + TestUtils.AreEqual(a.x, 17); + TestUtils.AreEqual(a.y, 17); + } + + [TestCompiler] + public static void int2_operator_equal_wide_wide() + { + int2 a0 = int2(790229414, 970783976); + int2 b0 = int2(612337669, 1214209108); + bool2 r0 = bool2(false, false); + TestUtils.AreEqual(a0 == b0, r0); + + int2 a1 = int2(1428432738, 1578747135); + int2 b1 = int2(2120643427, 295461214); + bool2 r1 = bool2(false, false); + TestUtils.AreEqual(a1 == b1, r1); + + int2 a2 = int2(1733797753, 2001507228); + int2 b2 = int2(1510890331, 1893316566); + bool2 r2 = bool2(false, false); + TestUtils.AreEqual(a2 == b2, r2); + + int2 a3 = int2(1446876437, 1777406370); + int2 b3 = int2(921816149, 1834958575); + bool2 r3 = bool2(false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void int2_operator_equal_wide_scalar() + { + int2 a0 = int2(1211464300, 1921862607); + int b0 = (746972502); + bool2 r0 = bool2(false, false); + TestUtils.AreEqual(a0 == b0, r0); + + int2 a1 = int2(508076684, 1394594555); + int b1 = (1249127920); + bool2 r1 = bool2(false, false); + TestUtils.AreEqual(a1 == b1, r1); + + int2 a2 = int2(746862310, 1884008277); + int b2 = (1733655277); + bool2 r2 = bool2(false, false); + TestUtils.AreEqual(a2 == b2, r2); + + int2 a3 = int2(1682018538, 936027116); + int b3 = (795585660); + bool2 r3 = bool2(false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void int2_operator_equal_scalar_wide() + { + int a0 = (1150044438); + int2 b0 = int2(233855098, 924242519); + bool2 r0 = bool2(false, false); + TestUtils.AreEqual(a0 == b0, r0); + + int a1 = (1402948791); + int2 b1 = int2(601381975, 2120518068); + bool2 r1 = bool2(false, false); + TestUtils.AreEqual(a1 == b1, r1); + + int a2 = (629187703); + int2 b2 = int2(1971977031, 47183124); + bool2 r2 = bool2(false, false); + TestUtils.AreEqual(a2 == b2, r2); + + int a3 = (1061805787); + int2 b3 = int2(1009011238, 312511148); + bool2 r3 = bool2(false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void int2_operator_not_equal_wide_wide() + { + int2 a0 = int2(1660932106, 982847023); + int2 b0 = int2(107139049, 75478496); + bool2 r0 = bool2(true, true); + TestUtils.AreEqual(a0 != b0, r0); + + int2 a1 = int2(97046264, 1739517447); + int2 b1 = int2(2055495054, 358586687); + bool2 r1 = bool2(true, true); + TestUtils.AreEqual(a1 != b1, r1); + + int2 a2 = int2(1253499180, 1830584069); + int2 b2 = int2(942338347, 111564990); + bool2 r2 = bool2(true, true); + TestUtils.AreEqual(a2 != b2, r2); + + int2 a3 = int2(1841470429, 1397841646); + int2 b3 = int2(113811950, 948912488); + bool2 r3 = bool2(true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void int2_operator_not_equal_wide_scalar() + { + int2 a0 = int2(747758183, 1033001286); + int b0 = (248693828); + bool2 r0 = bool2(true, true); + TestUtils.AreEqual(a0 != b0, r0); + + int2 a1 = int2(1439973882, 1197845089); + int b1 = (2138928797); + bool2 r1 = bool2(true, true); + TestUtils.AreEqual(a1 != b1, r1); + + int2 a2 = int2(1432672459, 238704450); + int b2 = (950170763); + bool2 r2 = bool2(true, true); + TestUtils.AreEqual(a2 != b2, r2); + + int2 a3 = int2(2105962247, 1640688041); + int b3 = (727205263); + bool2 r3 = bool2(true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void int2_operator_not_equal_scalar_wide() + { + int a0 = (2076921066); + int2 b0 = int2(2037494727, 1989050616); + bool2 r0 = bool2(true, true); + TestUtils.AreEqual(a0 != b0, r0); + + int a1 = (48833929); + int2 b1 = int2(1897435904, 514354517); + bool2 r1 = bool2(true, true); + TestUtils.AreEqual(a1 != b1, r1); + + int a2 = (1783749164); + int2 b2 = int2(364694471, 754315072); + bool2 r2 = bool2(true, true); + TestUtils.AreEqual(a2 != b2, r2); + + int a3 = (124108032); + int2 b3 = int2(1512967900, 1178825850); + bool2 r3 = bool2(true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void int2_operator_less_wide_wide() + { + int2 a0 = int2(1182186063, 415538999); + int2 b0 = int2(524633529, 1032195686); + bool2 r0 = bool2(false, true); + TestUtils.AreEqual(a0 < b0, r0); + + int2 a1 = int2(1667335818, 1566618442); + int2 b1 = int2(760723389, 1505751409); + bool2 r1 = bool2(false, false); + TestUtils.AreEqual(a1 < b1, r1); + + int2 a2 = int2(1166180837, 639095188); + int2 b2 = int2(431962172, 1287906509); + bool2 r2 = bool2(false, true); + TestUtils.AreEqual(a2 < b2, r2); + + int2 a3 = int2(1080836365, 771119973); + int2 b3 = int2(1560084663, 1450178202); + bool2 r3 = bool2(true, true); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void int2_operator_less_wide_scalar() + { + int2 a0 = int2(608447185, 818840405); + int b0 = (1491216667); + bool2 r0 = bool2(true, true); + TestUtils.AreEqual(a0 < b0, r0); + + int2 a1 = int2(869219329, 1214500548); + int b1 = (2080125385); + bool2 r1 = bool2(true, true); + TestUtils.AreEqual(a1 < b1, r1); + + int2 a2 = int2(1361741203, 1615392341); + int b2 = (1667165786); + bool2 r2 = bool2(true, true); + TestUtils.AreEqual(a2 < b2, r2); + + int2 a3 = int2(840091491, 1247103789); + int b3 = (469591900); + bool2 r3 = bool2(false, false); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void int2_operator_less_scalar_wide() + { + int a0 = (548436837); + int2 b0 = int2(282703327, 14370648); + bool2 r0 = bool2(false, false); + TestUtils.AreEqual(a0 < b0, r0); + + int a1 = (1862117300); + int2 b1 = int2(1304793311, 826073259); + bool2 r1 = bool2(false, false); + TestUtils.AreEqual(a1 < b1, r1); + + int a2 = (988910157); + int2 b2 = int2(445132446, 1139670255); + bool2 r2 = bool2(false, true); + TestUtils.AreEqual(a2 < b2, r2); + + int a3 = (111349251); + int2 b3 = int2(1102440676, 112183144); + bool2 r3 = bool2(true, true); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void int2_operator_greater_wide_wide() + { + int2 a0 = int2(592884447, 2133928932); + int2 b0 = int2(138737040, 192863971); + bool2 r0 = bool2(true, true); + TestUtils.AreEqual(a0 > b0, r0); + + int2 a1 = int2(918957182, 1284069471); + int2 b1 = int2(1700841444, 1044631301); + bool2 r1 = bool2(false, true); + TestUtils.AreEqual(a1 > b1, r1); + + int2 a2 = int2(194584707, 739120780); + int2 b2 = int2(1391589821, 730837695); + bool2 r2 = bool2(false, true); + TestUtils.AreEqual(a2 > b2, r2); + + int2 a3 = int2(241654068, 1340158550); + int2 b3 = int2(253553987, 2078872742); + bool2 r3 = bool2(false, false); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void int2_operator_greater_wide_scalar() + { + int2 a0 = int2(1097138316, 211763648); + int b0 = (438688675); + bool2 r0 = bool2(true, false); + TestUtils.AreEqual(a0 > b0, r0); + + int2 a1 = int2(1883002501, 43662641); + int b1 = (56406996); + bool2 r1 = bool2(true, false); + TestUtils.AreEqual(a1 > b1, r1); + + int2 a2 = int2(1923456111, 1219010035); + int b2 = (1437755186); + bool2 r2 = bool2(true, false); + TestUtils.AreEqual(a2 > b2, r2); + + int2 a3 = int2(2125058448, 893125636); + int b3 = (304028799); + bool2 r3 = bool2(true, true); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void int2_operator_greater_scalar_wide() + { + int a0 = (2024896938); + int2 b0 = int2(599356784, 185671342); + bool2 r0 = bool2(true, true); + TestUtils.AreEqual(a0 > b0, r0); + + int a1 = (1932327391); + int2 b1 = int2(2025591013, 1257191721); + bool2 r1 = bool2(false, true); + TestUtils.AreEqual(a1 > b1, r1); + + int a2 = (1312388500); + int2 b2 = int2(1443698859, 779217735); + bool2 r2 = bool2(false, true); + TestUtils.AreEqual(a2 > b2, r2); + + int a3 = (691047512); + int2 b3 = int2(741776730, 732565983); + bool2 r3 = bool2(false, false); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void int2_operator_less_equal_wide_wide() + { + int2 a0 = int2(1577248162, 2043073061); + int2 b0 = int2(903445031, 2108974565); + bool2 r0 = bool2(false, true); + TestUtils.AreEqual(a0 <= b0, r0); + + int2 a1 = int2(1688380407, 176431985); + int2 b1 = int2(210822256, 1281704747); + bool2 r1 = bool2(false, true); + TestUtils.AreEqual(a1 <= b1, r1); + + int2 a2 = int2(223299035, 1502802140); + int2 b2 = int2(453681718, 66138830); + bool2 r2 = bool2(true, false); + TestUtils.AreEqual(a2 <= b2, r2); + + int2 a3 = int2(1691709825, 386789394); + int2 b3 = int2(1229799377, 1620922595); + bool2 r3 = bool2(false, true); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void int2_operator_less_equal_wide_scalar() + { + int2 a0 = int2(1722165358, 1219858357); + int b0 = (1688048545); + bool2 r0 = bool2(false, true); + TestUtils.AreEqual(a0 <= b0, r0); + + int2 a1 = int2(860410743, 348104022); + int b1 = (411099660); + bool2 r1 = bool2(false, true); + TestUtils.AreEqual(a1 <= b1, r1); + + int2 a2 = int2(1963256951, 58924407); + int b2 = (212084836); + bool2 r2 = bool2(false, true); + TestUtils.AreEqual(a2 <= b2, r2); + + int2 a3 = int2(1459242706, 532949158); + int b3 = (1745758438); + bool2 r3 = bool2(true, true); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void int2_operator_less_equal_scalar_wide() + { + int a0 = (1777585); + int2 b0 = int2(1181030049, 1787703989); + bool2 r0 = bool2(true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + int a1 = (1729760948); + int2 b1 = int2(1816537388, 1359786460); + bool2 r1 = bool2(true, false); + TestUtils.AreEqual(a1 <= b1, r1); + + int a2 = (874999193); + int2 b2 = int2(1678863148, 1711365839); + bool2 r2 = bool2(true, true); + TestUtils.AreEqual(a2 <= b2, r2); + + int a3 = (762067160); + int2 b3 = int2(11953554, 1131583906); + bool2 r3 = bool2(false, true); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void int2_operator_greater_equal_wide_wide() + { + int2 a0 = int2(263000030, 744235661); + int2 b0 = int2(1395535146, 1178373944); + bool2 r0 = bool2(false, false); + TestUtils.AreEqual(a0 >= b0, r0); + + int2 a1 = int2(1893760267, 237248); + int2 b1 = int2(1237373760, 1364855321); + bool2 r1 = bool2(true, false); + TestUtils.AreEqual(a1 >= b1, r1); + + int2 a2 = int2(1062370984, 1676977687); + int2 b2 = int2(600811864, 362060472); + bool2 r2 = bool2(true, true); + TestUtils.AreEqual(a2 >= b2, r2); + + int2 a3 = int2(816766880, 1089431546); + int2 b3 = int2(290870624, 1839067862); + bool2 r3 = bool2(true, false); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void int2_operator_greater_equal_wide_scalar() + { + int2 a0 = int2(2112791350, 1043657935); + int b0 = (1470533736); + bool2 r0 = bool2(true, false); + TestUtils.AreEqual(a0 >= b0, r0); + + int2 a1 = int2(101764761, 556026890); + int b1 = (1529909067); + bool2 r1 = bool2(false, false); + TestUtils.AreEqual(a1 >= b1, r1); + + int2 a2 = int2(281734132, 815093894); + int b2 = (1186600258); + bool2 r2 = bool2(false, false); + TestUtils.AreEqual(a2 >= b2, r2); + + int2 a3 = int2(609211196, 829548642); + int b3 = (1604309397); + bool2 r3 = bool2(false, false); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void int2_operator_greater_equal_scalar_wide() + { + int a0 = (1525542481); + int2 b0 = int2(1503244746, 861711266); + bool2 r0 = bool2(true, true); + TestUtils.AreEqual(a0 >= b0, r0); + + int a1 = (817773856); + int2 b1 = int2(925984572, 571221723); + bool2 r1 = bool2(false, true); + TestUtils.AreEqual(a1 >= b1, r1); + + int a2 = (683686810); + int2 b2 = int2(118252990, 1653952090); + bool2 r2 = bool2(true, false); + TestUtils.AreEqual(a2 >= b2, r2); + + int a3 = (1240253990); + int2 b3 = int2(1947039008, 1869136019); + bool2 r3 = bool2(false, false); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void int2_operator_add_wide_wide() + { + int2 a0 = int2(2049228671, 1658660009); + int2 b0 = int2(2088751567, 645762023); + int2 r0 = int2(-156987058, -1990545264); + TestUtils.AreEqual(a0 + b0, r0); + + int2 a1 = int2(491719392, 937013355); + int2 b1 = int2(306868786, 4360271); + int2 r1 = int2(798588178, 941373626); + TestUtils.AreEqual(a1 + b1, r1); + + int2 a2 = int2(81108663, 1063894558); + int2 b2 = int2(506047997, 2094559874); + int2 r2 = int2(587156660, -1136512864); + TestUtils.AreEqual(a2 + b2, r2); + + int2 a3 = int2(86954702, 843159721); + int2 b3 = int2(1634712736, 1601474440); + int2 r3 = int2(1721667438, -1850333135); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void int2_operator_add_wide_scalar() + { + int2 a0 = int2(2038218457, 134923711); + int b0 = (2124409227); + int2 r0 = int2(-132339612, -2035634358); + TestUtils.AreEqual(a0 + b0, r0); + + int2 a1 = int2(875689667, 997710928); + int b1 = (1338884463); + int2 r1 = int2(-2080393166, -1958371905); + TestUtils.AreEqual(a1 + b1, r1); + + int2 a2 = int2(340490871, 70433301); + int b2 = (1067888129); + int2 r2 = int2(1408379000, 1138321430); + TestUtils.AreEqual(a2 + b2, r2); + + int2 a3 = int2(2003021861, 1160398286); + int b3 = (1635971971); + int2 r3 = int2(-655973464, -1498597039); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void int2_operator_add_scalar_wide() + { + int a0 = (391092078); + int2 b0 = int2(519908870, 851424292); + int2 r0 = int2(911000948, 1242516370); + TestUtils.AreEqual(a0 + b0, r0); + + int a1 = (328314822); + int2 b1 = int2(135622204, 740923360); + int2 r1 = int2(463937026, 1069238182); + TestUtils.AreEqual(a1 + b1, r1); + + int a2 = (655394201); + int2 b2 = int2(1451896269, 1781697072); + int2 r2 = int2(2107290470, -1857876023); + TestUtils.AreEqual(a2 + b2, r2); + + int a3 = (996031825); + int2 b3 = int2(1557774949, 779774940); + int2 r3 = int2(-1741160522, 1775806765); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void int2_operator_sub_wide_wide() + { + int2 a0 = int2(1353441118, 797269833); + int2 b0 = int2(1332656812, 1827794007); + int2 r0 = int2(20784306, -1030524174); + TestUtils.AreEqual(a0 - b0, r0); + + int2 a1 = int2(659988112, 56022121); + int2 b1 = int2(972557431, 2078233689); + int2 r1 = int2(-312569319, -2022211568); + TestUtils.AreEqual(a1 - b1, r1); + + int2 a2 = int2(365847472, 2062899435); + int2 b2 = int2(1508184327, 1372307701); + int2 r2 = int2(-1142336855, 690591734); + TestUtils.AreEqual(a2 - b2, r2); + + int2 a3 = int2(1380988474, 799885138); + int2 b3 = int2(810327977, 936799885); + int2 r3 = int2(570660497, -136914747); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void int2_operator_sub_wide_scalar() + { + int2 a0 = int2(1176369558, 1934521195); + int b0 = (462232403); + int2 r0 = int2(714137155, 1472288792); + TestUtils.AreEqual(a0 - b0, r0); + + int2 a1 = int2(309452150, 108910717); + int b1 = (1417634074); + int2 r1 = int2(-1108181924, -1308723357); + TestUtils.AreEqual(a1 - b1, r1); + + int2 a2 = int2(1306356714, 1451794815); + int b2 = (1502312334); + int2 r2 = int2(-195955620, -50517519); + TestUtils.AreEqual(a2 - b2, r2); + + int2 a3 = int2(281174200, 1913724431); + int b3 = (87530840); + int2 r3 = int2(193643360, 1826193591); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void int2_operator_sub_scalar_wide() + { + int a0 = (1691534405); + int2 b0 = int2(2022393810, 1612688515); + int2 r0 = int2(-330859405, 78845890); + TestUtils.AreEqual(a0 - b0, r0); + + int a1 = (496689713); + int2 b1 = int2(887037586, 2097630964); + int2 r1 = int2(-390347873, -1600941251); + TestUtils.AreEqual(a1 - b1, r1); + + int a2 = (374934538); + int2 b2 = int2(939035482, 935242277); + int2 r2 = int2(-564100944, -560307739); + TestUtils.AreEqual(a2 - b2, r2); + + int a3 = (1789300421); + int2 b3 = int2(264712893, 1231856067); + int2 r3 = int2(1524587528, 557444354); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void int2_operator_mul_wide_wide() + { + int2 a0 = int2(245827027, 208934650); + int2 b0 = int2(759663997, 350129201); + int2 r0 = int2(-632811769, 1402281434); + TestUtils.AreEqual(a0 * b0, r0); + + int2 a1 = int2(1019478917, 568231809); + int2 b1 = int2(477450108, 1635735015); + int2 r1 = int2(332447596, -1932977561); + TestUtils.AreEqual(a1 * b1, r1); + + int2 a2 = int2(877289039, 1585782440); + int2 b2 = int2(388710278, 757722665); + int2 r2 = int2(-1670918566, 1455036648); + TestUtils.AreEqual(a2 * b2, r2); + + int2 a3 = int2(2111178729, 1186019069); + int2 b3 = int2(1509388321, 1841703980); + int2 r3 = int2(2128344329, -594088068); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void int2_operator_mul_wide_scalar() + { + int2 a0 = int2(1762033447, 465343930); + int b0 = (1476837906); + int2 r0 = int2(-1313177922, 1326807828); + TestUtils.AreEqual(a0 * b0, r0); + + int2 a1 = int2(1570757881, 1824319147); + int b1 = (1326409563); + int2 r1 = int2(1666366339, -252064823); + TestUtils.AreEqual(a1 * b1, r1); + + int2 a2 = int2(1356578909, 154616909); + int b2 = (72749215); + int2 r2 = int2(130042307, 1400257491); + TestUtils.AreEqual(a2 * b2, r2); + + int2 a3 = int2(975743632, 1958912969); + int b3 = (573770299); + int2 r3 = int2(414773040, -699623085); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void int2_operator_mul_scalar_wide() + { + int a0 = (99541948); + int2 b0 = int2(1764461774, 657072478); + int2 r0 = int2(-950398648, -102049016); + TestUtils.AreEqual(a0 * b0, r0); + + int a1 = (1459784358); + int2 b1 = int2(1610646683, 1632058826); + int2 r1 = int2(1040681602, -1659570948); + TestUtils.AreEqual(a1 * b1, r1); + + int a2 = (868441654); + int2 b2 = int2(1408757883, 335917146); + int2 r2 = int2(1867178994, -1836957956); + TestUtils.AreEqual(a2 * b2, r2); + + int a3 = (2105124483); + int2 b3 = int2(1178393968, 1963904348); + int2 r3 = int2(-1028919216, 2084093460); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void int2_operator_div_wide_wide() + { + int2 a0 = int2(1590198532, 507812502); + int2 b0 = int2(1434703236, 911965201); + int2 r0 = int2(1, 0); + TestUtils.AreEqual(a0 / b0, r0); + + int2 a1 = int2(126627032, 1058247011); + int2 b1 = int2(390415521, 128746927); + int2 r1 = int2(0, 8); + TestUtils.AreEqual(a1 / b1, r1); + + int2 a2 = int2(427387861, 290676154); + int2 b2 = int2(525835375, 816946613); + int2 r2 = int2(0, 0); + TestUtils.AreEqual(a2 / b2, r2); + + int2 a3 = int2(1829594484, 1127868739); + int2 b3 = int2(878264647, 146789678); + int2 r3 = int2(2, 7); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void int2_operator_div_wide_scalar() + { + int2 a0 = int2(560951562, 1218680769); + int b0 = (947861580); + int2 r0 = int2(0, 1); + TestUtils.AreEqual(a0 / b0, r0); + + int2 a1 = int2(375341724, 1919409166); + int b1 = (1613542090); + int2 r1 = int2(0, 1); + TestUtils.AreEqual(a1 / b1, r1); + + int2 a2 = int2(1397425408, 524526253); + int b2 = (1349573078); + int2 r2 = int2(1, 0); + TestUtils.AreEqual(a2 / b2, r2); + + int2 a3 = int2(341995568, 1515313790); + int b3 = (495895326); + int2 r3 = int2(0, 3); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void int2_operator_div_scalar_wide() + { + int a0 = (1161272038); + int2 b0 = int2(187325733, 1594107378); + int2 r0 = int2(6, 0); + TestUtils.AreEqual(a0 / b0, r0); + + int a1 = (2016183849); + int2 b1 = int2(1589343709, 388768753); + int2 r1 = int2(1, 5); + TestUtils.AreEqual(a1 / b1, r1); + + int a2 = (1417077283); + int2 b2 = int2(1773486938, 1154044032); + int2 r2 = int2(0, 1); + TestUtils.AreEqual(a2 / b2, r2); + + int a3 = (81831373); + int2 b3 = int2(1476877645, 653688843); + int2 r3 = int2(0, 0); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void int2_operator_mod_wide_wide() + { + int2 a0 = int2(146150818, 1846543305); + int2 b0 = int2(983050390, 771341152); + int2 r0 = int2(146150818, 303861001); + TestUtils.AreEqual(a0 % b0, r0); + + int2 a1 = int2(1071447756, 308965362); + int2 b1 = int2(942375212, 367361754); + int2 r1 = int2(129072544, 308965362); + TestUtils.AreEqual(a1 % b1, r1); + + int2 a2 = int2(659881575, 1002365460); + int2 b2 = int2(749500619, 750718852); + int2 r2 = int2(659881575, 251646608); + TestUtils.AreEqual(a2 % b2, r2); + + int2 a3 = int2(861198439, 1510617532); + int2 b3 = int2(2095151755, 88438806); + int2 r3 = int2(861198439, 7157830); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void int2_operator_mod_wide_scalar() + { + int2 a0 = int2(164800505, 1062177828); + int b0 = (883951171); + int2 r0 = int2(164800505, 178226657); + TestUtils.AreEqual(a0 % b0, r0); + + int2 a1 = int2(1898749675, 820393245); + int b1 = (1701653318); + int2 r1 = int2(197096357, 820393245); + TestUtils.AreEqual(a1 % b1, r1); + + int2 a2 = int2(19002208, 1464010899); + int b2 = (128329633); + int2 r2 = int2(19002208, 52384936); + TestUtils.AreEqual(a2 % b2, r2); + + int2 a3 = int2(896587769, 1982762194); + int b3 = (405208598); + int2 r3 = int2(86170573, 361927802); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void int2_operator_mod_scalar_wide() + { + int a0 = (242383789); + int2 b0 = int2(740000543, 1556450291); + int2 r0 = int2(242383789, 242383789); + TestUtils.AreEqual(a0 % b0, r0); + + int a1 = (1104736385); + int2 b1 = int2(437976569, 1911837205); + int2 r1 = int2(228783247, 1104736385); + TestUtils.AreEqual(a1 % b1, r1); + + int a2 = (1507212038); + int2 b2 = int2(1906405167, 247693265); + int2 r2 = int2(1507212038, 21052448); + TestUtils.AreEqual(a2 % b2, r2); + + int a3 = (293460573); + int2 b3 = int2(1495295166, 873323603); + int2 r3 = int2(293460573, 293460573); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void int2_operator_plus() + { + int2 a0 = int2(1643476803, 907898539); + int2 r0 = int2(1643476803, 907898539); + TestUtils.AreEqual(+a0, r0); + + int2 a1 = int2(379615839, 1735287433); + int2 r1 = int2(379615839, 1735287433); + TestUtils.AreEqual(+a1, r1); + + int2 a2 = int2(1743199272, 339091479); + int2 r2 = int2(1743199272, 339091479); + TestUtils.AreEqual(+a2, r2); + + int2 a3 = int2(401565897, 849339193); + int2 r3 = int2(401565897, 849339193); + TestUtils.AreEqual(+a3, r3); + } + + [TestCompiler] + public static void int2_operator_neg() + { + int2 a0 = int2(1955022112, 662160019); + int2 r0 = int2(-1955022112, -662160019); + TestUtils.AreEqual(-a0, r0); + + int2 a1 = int2(370300775, 1004505619); + int2 r1 = int2(-370300775, -1004505619); + TestUtils.AreEqual(-a1, r1); + + int2 a2 = int2(28153593, 505708349); + int2 r2 = int2(-28153593, -505708349); + TestUtils.AreEqual(-a2, r2); + + int2 a3 = int2(1115028238, 694995093); + int2 r3 = int2(-1115028238, -694995093); + TestUtils.AreEqual(-a3, r3); + } + + [TestCompiler] + public static void int2_operator_prefix_inc() + { + int2 a0 = int2(864455342, 2035793213); + int2 r0 = int2(864455343, 2035793214); + TestUtils.AreEqual(++a0, r0); + + int2 a1 = int2(1275443862, 411610189); + int2 r1 = int2(1275443863, 411610190); + TestUtils.AreEqual(++a1, r1); + + int2 a2 = int2(446210725, 115573442); + int2 r2 = int2(446210726, 115573443); + TestUtils.AreEqual(++a2, r2); + + int2 a3 = int2(913293639, 1208161871); + int2 r3 = int2(913293640, 1208161872); + TestUtils.AreEqual(++a3, r3); + } + + [TestCompiler] + public static void int2_operator_postfix_inc() + { + int2 a0 = int2(1751003569, 2063707595); + int2 r0 = int2(1751003569, 2063707595); + TestUtils.AreEqual(a0++, r0); + + int2 a1 = int2(1500486291, 1007848192); + int2 r1 = int2(1500486291, 1007848192); + TestUtils.AreEqual(a1++, r1); + + int2 a2 = int2(2028651936, 1190630527); + int2 r2 = int2(2028651936, 1190630527); + TestUtils.AreEqual(a2++, r2); + + int2 a3 = int2(1396179607, 177416855); + int2 r3 = int2(1396179607, 177416855); + TestUtils.AreEqual(a3++, r3); + } + + [TestCompiler] + public static void int2_operator_prefix_dec() + { + int2 a0 = int2(200904609, 871077500); + int2 r0 = int2(200904608, 871077499); + TestUtils.AreEqual(--a0, r0); + + int2 a1 = int2(968578728, 1995396216); + int2 r1 = int2(968578727, 1995396215); + TestUtils.AreEqual(--a1, r1); + + int2 a2 = int2(435367037, 1589827826); + int2 r2 = int2(435367036, 1589827825); + TestUtils.AreEqual(--a2, r2); + + int2 a3 = int2(1434377580, 1699290403); + int2 r3 = int2(1434377579, 1699290402); + TestUtils.AreEqual(--a3, r3); + } + + [TestCompiler] + public static void int2_operator_postfix_dec() + { + int2 a0 = int2(283970262, 1109329936); + int2 r0 = int2(283970262, 1109329936); + TestUtils.AreEqual(a0--, r0); + + int2 a1 = int2(1073216143, 1932646215); + int2 r1 = int2(1073216143, 1932646215); + TestUtils.AreEqual(a1--, r1); + + int2 a2 = int2(1174104498, 524156737); + int2 r2 = int2(1174104498, 524156737); + TestUtils.AreEqual(a2--, r2); + + int2 a3 = int2(691209285, 802721301); + int2 r3 = int2(691209285, 802721301); + TestUtils.AreEqual(a3--, r3); + } + + [TestCompiler] + public static void int2_operator_bitwise_and_wide_wide() + { + int2 a0 = int2(779935043, 1097962163); + int2 b0 = int2(307705143, 1710882162); + int2 r0 = int2(39064835, 1097961522); + TestUtils.AreEqual(a0 & b0, r0); + + int2 a1 = int2(1939593304, 800599247); + int2 b1 = int2(866836769, 532490608); + int2 r1 = int2(864731136, 263727168); + TestUtils.AreEqual(a1 & b1, r1); + + int2 a2 = int2(952140918, 782792558); + int2 b2 = int2(679371720, 1794035877); + int2 r2 = int2(675283008, 715673636); + TestUtils.AreEqual(a2 & b2, r2); + + int2 a3 = int2(1608557706, 396446406); + int2 b3 = int2(1439832202, 519529812); + int2 r3 = int2(1438646410, 379666500); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void int2_operator_bitwise_and_wide_scalar() + { + int2 a0 = int2(443615469, 490057985); + int b0 = (93423598); + int2 r0 = int2(1114348, 85033216); + TestUtils.AreEqual(a0 & b0, r0); + + int2 a1 = int2(2042441263, 1405175110); + int b1 = (1524760558); + int2 r1 = int2(1486958126, 1388397894); + TestUtils.AreEqual(a1 & b1, r1); + + int2 a2 = int2(510212004, 1236735839); + int b2 = (1941875181); + int2 r2 = int2(304619940, 1102446925); + TestUtils.AreEqual(a2 & b2, r2); + + int2 a3 = int2(1365509729, 607982857); + int b3 = (428270198); + int2 r3 = int2(285475424, 262144); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void int2_operator_bitwise_and_scalar_wide() + { + int a0 = (1144543590); + int2 b0 = int2(420346723, 562416448); + int2 r0 = int2(547170, 18752); + TestUtils.AreEqual(a0 & b0, r0); + + int a1 = (1393127318); + int2 b1 = int2(1560699552, 851218057); + int2 r1 = int2(1358979712, 302517888); + TestUtils.AreEqual(a1 & b1, r1); + + int a2 = (703880958); + int2 b2 = int2(1159378889, 2031211279); + int2 r2 = int2(17831624, 688935438); + TestUtils.AreEqual(a2 & b2, r2); + + int a3 = (1089518981); + int2 b3 = int2(270607307, 1349288930); + int2 r3 = int2(2105729, 1080066432); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void int2_operator_bitwise_or_wide_wide() + { + int2 a0 = int2(1731159103, 659068416); + int2 b0 = int2(1583847161, 692672727); + int2 r0 = int2(2138044159, 793370327); + TestUtils.AreEqual(a0 | b0, r0); + + int2 a1 = int2(382702471, 1821032196); + int2 b1 = int2(1161585489, 1756207130); + int2 r1 = int2(1476391895, 1823457054); + TestUtils.AreEqual(a1 | b1, r1); + + int2 a2 = int2(1565773438, 1004000514); + int2 b2 = int2(1321374429, 1287357212); + int2 r2 = int2(1607720703, 2147473182); + TestUtils.AreEqual(a2 | b2, r2); + + int2 a3 = int2(948501377, 600951835); + int2 b3 = int2(2075767170, 1273513430); + int2 r3 = int2(2075786115, 1811533279); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void int2_operator_bitwise_or_wide_scalar() + { + int2 a0 = int2(961259683, 471103264); + int b0 = (1666102508); + int2 r0 = int2(2068823279, 2136930284); + TestUtils.AreEqual(a0 | b0, r0); + + int2 a1 = int2(1733389229, 386953869); + int b1 = (1591585258); + int2 r1 = int2(2145250287, 1608383471); + TestUtils.AreEqual(a1 | b1, r1); + + int2 a2 = int2(1148351449, 1814263250); + int b2 = (1048929715); + int2 r2 = int2(2130147323, 2124903923); + TestUtils.AreEqual(a2 | b2, r2); + + int2 a3 = int2(860336789, 1227888278); + int b3 = (1637162093); + int2 r3 = int2(1943518973, 1773477631); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void int2_operator_bitwise_or_scalar_wide() + { + int a0 = (1213433101); + int2 b0 = int2(1212928242, 1614462616); + int2 r0 = int2(1213978111, 1752940445); + TestUtils.AreEqual(a0 | b0, r0); + + int a1 = (936937728); + int2 b1 = int2(764766995, 306352095); + int2 r1 = int2(1071508243, 937070559); + TestUtils.AreEqual(a1 | b1, r1); + + int a2 = (574719481); + int2 b2 = int2(1283571271, 2109131012); + int2 r2 = int2(1858191359, 2146946557); + TestUtils.AreEqual(a2 | b2, r2); + + int a3 = (979469710); + int2 b3 = int2(1348323481, 1407542578); + int2 r3 = int2(2055064991, 2078664126); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void int2_operator_bitwise_xor_wide_wide() + { + int2 a0 = int2(1556324760, 207002929); + int2 b0 = int2(1054997548, 1523759632); + int2 r0 = int2(1646419380, 1451501345); + TestUtils.AreEqual(a0 ^ b0, r0); + + int2 a1 = int2(1843444873, 1632079131); + int2 b1 = int2(251164872, 110472397); + int2 r1 = int2(1662567489, 1741824470); + TestUtils.AreEqual(a1 ^ b1, r1); + + int2 a2 = int2(1460334334, 1607815585); + int2 b2 = int2(384031112, 1109163205); + int2 r2 = int2(1105803126, 499723620); + TestUtils.AreEqual(a2 ^ b2, r2); + + int2 a3 = int2(220623650, 38668553); + int2 b3 = int2(535118981, 179106262); + int2 r3 = int2(314783655, 149092575); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void int2_operator_bitwise_xor_wide_scalar() + { + int2 a0 = int2(2124666952, 177397845); + int b0 = (493665894); + int2 r0 = int2(1674536494, 402546227); + TestUtils.AreEqual(a0 ^ b0, r0); + + int2 a1 = int2(574879617, 1136545648); + int b1 = (1937385541); + int2 r1 = int2(1362747332, 818177845); + TestUtils.AreEqual(a1 ^ b1, r1); + + int2 a2 = int2(213863690, 289301586); + int b2 = (535061373); + int2 r2 = int2(324742775, 249169711); + TestUtils.AreEqual(a2 ^ b2, r2); + + int2 a3 = int2(1305234431, 1308626970); + int b3 = (353786540); + int2 r3 = int2(1490686291, 1528187574); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void int2_operator_bitwise_xor_scalar_wide() + { + int a0 = (1288453276); + int2 b0 = int2(1077599928, 884741329); + int2 r0 = int2(217506340, 2020616269); + TestUtils.AreEqual(a0 ^ b0, r0); + + int a1 = (212164516); + int2 b1 = int2(1585020328, 152985454); + int2 r1 = int2(1390158348, 96141514); + TestUtils.AreEqual(a1 ^ b1, r1); + + int a2 = (1775851275); + int2 b2 = int2(1416249064, 1309317737); + int2 r2 = int2(1035168227, 668192098); + TestUtils.AreEqual(a2 ^ b2, r2); + + int a3 = (1773918217); + int2 b3 = int2(1509843030, 1206045972); + int2 r3 = int2(809875551, 777590045); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void int2_operator_left_shift() + { + int2 a0 = int2(197771193, 622182602); + int b0 = (1321149625); + int2 r0 = int2(1912602624, -1811939328); + TestUtils.AreEqual(a0 << b0, r0); + + int2 a1 = int2(1283988958, 473415985); + int b1 = (1327917304); + int2 r1 = int2(-570425344, 822083584); + TestUtils.AreEqual(a1 << b1, r1); + + int2 a2 = int2(432425717, 2058433484); + int b2 = (870301196); + int2 r2 = int2(1689210880, 322748416); + TestUtils.AreEqual(a2 << b2, r2); + + int2 a3 = int2(1200694230, 1360008038); + int b3 = (1531607705); + int2 r3 = int2(-1409286144, -872415232); + TestUtils.AreEqual(a3 << b3, r3); + } + + [TestCompiler] + public static void int2_operator_right_shift() + { + int2 a0 = int2(548167301, 1161338299); + int b0 = (1266801540); + int2 r0 = int2(34260456, 72583643); + TestUtils.AreEqual(a0 >> b0, r0); + + int2 a1 = int2(1617625829, 713958715); + int b1 = (1860731847); + int2 r1 = int2(12637701, 5577802); + TestUtils.AreEqual(a1 >> b1, r1); + + int2 a2 = int2(196552656, 1265099998); + int b2 = (770466193); + int2 r2 = int2(1499, 9651); + TestUtils.AreEqual(a2 >> b2, r2); + + int2 a3 = int2(572763124, 426807581); + int b3 = (506619530); + int2 r3 = int2(559338, 416804); + TestUtils.AreEqual(a3 >> b3, r3); + } + + [TestCompiler] + public static void int2_operator_bitwise_not() + { + int2 a0 = int2(1403358969, 831360921); + int2 r0 = int2(-1403358970, -831360922); + TestUtils.AreEqual(~a0, r0); + + int2 a1 = int2(2088190243, 878283189); + int2 r1 = int2(-2088190244, -878283190); + TestUtils.AreEqual(~a1, r1); + + int2 a2 = int2(308994339, 1420884856); + int2 r2 = int2(-308994340, -1420884857); + TestUtils.AreEqual(~a2, r2); + + int2 a3 = int2(472965491, 627580960); + int2 r3 = int2(-472965492, -627580961); + TestUtils.AreEqual(~a3, r3); + } + + [TestCompiler] + public static void int2_shuffle_result_1() + { + int2 a = int2(0, 1); + int2 b = int2(2, 3); + + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftX), (0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftY), (1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX), (2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY), (3)); + } + + [TestCompiler] + public static void int2_shuffle_result_2() + { + int2 a = int2(0, 1); + int2 b = int2(2, 3); + + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftX, ShuffleComponent.LeftX), int2(0, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftY, ShuffleComponent.LeftX), int2(1, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.LeftX), int2(2, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.LeftX), int2(3, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftX, ShuffleComponent.LeftY), int2(0, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftY, ShuffleComponent.LeftY), int2(1, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.LeftY), int2(2, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.LeftY), int2(3, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftX, ShuffleComponent.RightX), int2(0, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftY, ShuffleComponent.RightX), int2(1, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.RightX), int2(2, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.RightX), int2(3, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftX, ShuffleComponent.RightY), int2(0, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftY, ShuffleComponent.RightY), int2(1, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.RightY), int2(2, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.RightY), int2(3, 3)); + } + + [TestCompiler] + public static void int2_shuffle_result_3() + { + int2 a = int2(0, 1); + int2 b = int2(2, 3); + + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.RightY, ShuffleComponent.RightY), int3(2, 3, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.LeftX, ShuffleComponent.RightX), int3(2, 0, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.LeftY, ShuffleComponent.RightY), int3(3, 1, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftY, ShuffleComponent.LeftY, ShuffleComponent.LeftY), int3(1, 1, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.LeftY, ShuffleComponent.RightY), int3(2, 1, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftX, ShuffleComponent.RightY, ShuffleComponent.RightY), int3(0, 3, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.LeftY, ShuffleComponent.RightY), int3(2, 1, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.RightY, ShuffleComponent.LeftX), int3(3, 3, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.RightX, ShuffleComponent.RightY), int3(2, 2, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.RightX, ShuffleComponent.LeftX), int3(2, 2, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftX, ShuffleComponent.LeftY, ShuffleComponent.LeftY), int3(0, 1, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.RightX, ShuffleComponent.RightY), int3(3, 2, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftX, ShuffleComponent.LeftY, ShuffleComponent.LeftY), int3(0, 1, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.RightX, ShuffleComponent.RightX), int3(3, 2, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftX, ShuffleComponent.LeftY, ShuffleComponent.RightY), int3(0, 1, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.LeftY, ShuffleComponent.LeftY), int3(3, 1, 1)); + } + + [TestCompiler] + public static void int2_shuffle_result_4() + { + int2 a = int2(0, 1); + int2 b = int2(2, 3); + + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftX, ShuffleComponent.LeftX, ShuffleComponent.LeftY, ShuffleComponent.RightX), int4(0, 0, 1, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.LeftY, ShuffleComponent.LeftX, ShuffleComponent.RightY), int4(2, 1, 0, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.RightX, ShuffleComponent.RightY, ShuffleComponent.RightX), int4(3, 2, 3, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.LeftX, ShuffleComponent.RightY, ShuffleComponent.RightY), int4(2, 0, 3, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftX, ShuffleComponent.RightY, ShuffleComponent.LeftX, ShuffleComponent.RightX), int4(0, 3, 0, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.LeftX, ShuffleComponent.RightY, ShuffleComponent.LeftY), int4(3, 0, 3, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.RightX, ShuffleComponent.RightY, ShuffleComponent.LeftX), int4(2, 2, 3, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.RightX, ShuffleComponent.LeftX, ShuffleComponent.RightY), int4(2, 2, 0, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftX, ShuffleComponent.LeftY, ShuffleComponent.RightX, ShuffleComponent.LeftY), int4(0, 1, 2, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.LeftY, ShuffleComponent.RightY, ShuffleComponent.RightY), int4(2, 1, 3, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.RightY, ShuffleComponent.RightY, ShuffleComponent.LeftY), int4(3, 3, 3, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.RightX, ShuffleComponent.LeftY, ShuffleComponent.LeftY), int4(2, 2, 1, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.LeftX, ShuffleComponent.LeftX, ShuffleComponent.LeftX), int4(3, 0, 0, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.RightX, ShuffleComponent.RightX, ShuffleComponent.RightY), int4(2, 2, 2, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftX, ShuffleComponent.RightY, ShuffleComponent.LeftX, ShuffleComponent.RightY), int4(0, 3, 0, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.LeftX, ShuffleComponent.LeftX, ShuffleComponent.LeftX), int4(2, 0, 0, 0)); + } + + + } +} diff --git a/package/Tests/Tests/Shared/TestInt2.gen.cs.meta b/package/Tests/Tests/Shared/TestInt2.gen.cs.meta new file mode 100755 index 000000000..e48561bf3 --- /dev/null +++ b/package/Tests/Tests/Shared/TestInt2.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a60a1141ea2c3bc49b14be2842a73f00 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/package/Tests/Tests/Shared/TestInt2x2.gen.cs b/package/Tests/Tests/Shared/TestInt2x2.gen.cs new file mode 100755 index 000000000..5ef767911 --- /dev/null +++ b/package/Tests/Tests/Shared/TestInt2x2.gen.cs @@ -0,0 +1,1234 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using NUnit.Framework; +using static Unity.Mathematics.math; +using Burst.Compiler.IL.Tests; + +namespace Unity.Mathematics.Tests +{ + [TestFixture] + public class TestInt2x2 + { + [TestCompiler] + public static void int2x2_zero() + { + TestUtils.AreEqual(int2x2.zero.c0.x, 0); + TestUtils.AreEqual(int2x2.zero.c0.y, 0); + TestUtils.AreEqual(int2x2.zero.c1.x, 0); + TestUtils.AreEqual(int2x2.zero.c1.y, 0); + } + + [TestCompiler] + public static void int2x2_identity() + { + TestUtils.AreEqual(int2x2.identity.c0.x, 1); + TestUtils.AreEqual(int2x2.identity.c0.y, 0); + TestUtils.AreEqual(int2x2.identity.c1.x, 0); + TestUtils.AreEqual(int2x2.identity.c1.y, 1); + } + + [TestCompiler] + public static void int2x2_operator_equal_wide_wide() + { + int2x2 a0 = int2x2(790229414, 970783976, 1428432738, 1578747135); + int2x2 b0 = int2x2(612337669, 1214209108, 2120643427, 295461214); + bool2x2 r0 = bool2x2(false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + int2x2 a1 = int2x2(1733797753, 2001507228, 1446876437, 1777406370); + int2x2 b1 = int2x2(1510890331, 1893316566, 921816149, 1834958575); + bool2x2 r1 = bool2x2(false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + int2x2 a2 = int2x2(1426387268, 1809275021, 1843770816, 1172185222); + int2x2 b2 = int2x2(1482011863, 2062852792, 226398742, 770290735); + bool2x2 r2 = bool2x2(false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + int2x2 a3 = int2x2(1469608940, 869874758, 458603090, 581282460); + int2x2 b3 = int2x2(36812057, 543224481, 1565350150, 1909926604); + bool2x2 r3 = bool2x2(false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void int2x2_operator_equal_wide_scalar() + { + int2x2 a0 = int2x2(1211464300, 1921862607, 508076684, 1249127920); + int b0 = (746972502); + bool2x2 r0 = bool2x2(false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + int2x2 a1 = int2x2(1394594555, 1733655277, 1884008277, 1682018538); + int b1 = (746862310); + bool2x2 r1 = bool2x2(false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + int2x2 a2 = int2x2(795585660, 927605411, 672785749, 1465584610); + int b2 = (936027116); + bool2x2 r2 = bool2x2(false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + int2x2 a3 = int2x2(585324157, 969511077, 442746747, 1772925698); + int b3 = (404448210); + bool2x2 r3 = bool2x2(false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void int2x2_operator_equal_scalar_wide() + { + int a0 = (1150044438); + int2x2 b0 = int2x2(233855098, 924242519, 1402948791, 601381975); + bool2x2 r0 = bool2x2(false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + int a1 = (2120518068); + int2x2 b1 = int2x2(629187703, 1971977031, 47183124, 1061805787); + bool2x2 r1 = bool2x2(false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + int a2 = (1009011238); + int2x2 b2 = int2x2(312511148, 1460673064, 737210539, 1737844479); + bool2x2 r2 = bool2x2(false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + int a3 = (1892405453); + int2x2 b3 = int2x2(2133024000, 455818693, 2003197687, 1276241219); + bool2x2 r3 = bool2x2(false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void int2x2_operator_not_equal_wide_wide() + { + int2x2 a0 = int2x2(1660932106, 982847023, 97046264, 1739517447); + int2x2 b0 = int2x2(107139049, 75478496, 2055495054, 358586687); + bool2x2 r0 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + int2x2 a1 = int2x2(1253499180, 1830584069, 1841470429, 1397841646); + int2x2 b1 = int2x2(942338347, 111564990, 113811950, 948912488); + bool2x2 r1 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + int2x2 a2 = int2x2(1770890135, 1906548631, 169082967, 2099271786); + int2x2 b2 = int2x2(1080084121, 1400504872, 1032134499, 1061123400); + bool2x2 r2 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + int2x2 a3 = int2x2(1909317609, 46519139, 1433204003, 931492669); + int2x2 b3 = int2x2(221862069, 858950046, 989094643, 2023070999); + bool2x2 r3 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void int2x2_operator_not_equal_wide_scalar() + { + int2x2 a0 = int2x2(747758183, 1033001286, 1439973882, 2138928797); + int b0 = (248693828); + bool2x2 r0 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + int2x2 a1 = int2x2(1197845089, 950170763, 238704450, 2105962247); + int b1 = (1432672459); + bool2x2 r1 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + int2x2 a2 = int2x2(727205263, 276313906, 2126300423, 791998981); + int b2 = (1640688041); + bool2x2 r2 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + int2x2 a3 = int2x2(2035077187, 1412347883, 1622176923, 768370497); + int b3 = (1171827730); + bool2x2 r3 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void int2x2_operator_not_equal_scalar_wide() + { + int a0 = (2076921066); + int2x2 b0 = int2x2(2037494727, 1989050616, 48833929, 1897435904); + bool2x2 r0 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + int a1 = (514354517); + int2x2 b1 = int2x2(1783749164, 364694471, 754315072, 124108032); + bool2x2 r1 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + int a2 = (1512967900); + int2x2 b2 = int2x2(1178825850, 1854793298, 50286949, 2100802631); + bool2x2 r2 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + int a3 = (1640811853); + int2x2 b3 = int2x2(82110247, 472172806, 266984506, 2003668365); + bool2x2 r3 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void int2x2_operator_less_wide_wide() + { + int2x2 a0 = int2x2(1182186063, 415538999, 1667335818, 1566618442); + int2x2 b0 = int2x2(524633529, 1032195686, 760723389, 1505751409); + bool2x2 r0 = bool2x2(false, true, false, false); + TestUtils.AreEqual(a0 < b0, r0); + + int2x2 a1 = int2x2(1166180837, 639095188, 1080836365, 771119973); + int2x2 b1 = int2x2(431962172, 1287906509, 1560084663, 1450178202); + bool2x2 r1 = bool2x2(false, true, true, true); + TestUtils.AreEqual(a1 < b1, r1); + + int2x2 a2 = int2x2(928263233, 789225474, 665243110, 1003542034); + int2x2 b2 = int2x2(2066166337, 1107069023, 1640077524, 2103263105); + bool2x2 r2 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a2 < b2, r2); + + int2x2 a3 = int2x2(1032480172, 1961336172, 923379558, 21210619); + int2x2 b3 = int2x2(684229139, 1234033624, 1278743281, 1953079347); + bool2x2 r3 = bool2x2(false, false, true, true); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void int2x2_operator_less_wide_scalar() + { + int2x2 a0 = int2x2(608447185, 818840405, 869219329, 2080125385); + int b0 = (1491216667); + bool2x2 r0 = bool2x2(true, true, true, false); + TestUtils.AreEqual(a0 < b0, r0); + + int2x2 a1 = int2x2(1214500548, 1667165786, 1615392341, 840091491); + int b1 = (1361741203); + bool2x2 r1 = bool2x2(true, false, false, true); + TestUtils.AreEqual(a1 < b1, r1); + + int2x2 a2 = int2x2(469591900, 315321650, 930950514, 1100560246); + int b2 = (1247103789); + bool2x2 r2 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a2 < b2, r2); + + int2x2 a3 = int2x2(933855388, 1127696709, 1286331950, 380753337); + int b3 = (908563901); + bool2x2 r3 = bool2x2(false, false, false, true); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void int2x2_operator_less_scalar_wide() + { + int a0 = (548436837); + int2x2 b0 = int2x2(282703327, 14370648, 1862117300, 1304793311); + bool2x2 r0 = bool2x2(false, false, true, true); + TestUtils.AreEqual(a0 < b0, r0); + + int a1 = (826073259); + int2x2 b1 = int2x2(988910157, 445132446, 1139670255, 111349251); + bool2x2 r1 = bool2x2(true, false, true, false); + TestUtils.AreEqual(a1 < b1, r1); + + int a2 = (1102440676); + int2x2 b2 = int2x2(112183144, 1594415311, 1890019295, 2098715503); + bool2x2 r2 = bool2x2(false, true, true, true); + TestUtils.AreEqual(a2 < b2, r2); + + int a3 = (608933527); + int2x2 b3 = int2x2(183989010, 1596056507, 1027318999, 146281093); + bool2x2 r3 = bool2x2(false, true, true, false); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void int2x2_operator_greater_wide_wide() + { + int2x2 a0 = int2x2(592884447, 2133928932, 918957182, 1284069471); + int2x2 b0 = int2x2(138737040, 192863971, 1700841444, 1044631301); + bool2x2 r0 = bool2x2(true, true, false, true); + TestUtils.AreEqual(a0 > b0, r0); + + int2x2 a1 = int2x2(194584707, 739120780, 241654068, 1340158550); + int2x2 b1 = int2x2(1391589821, 730837695, 253553987, 2078872742); + bool2x2 r1 = bool2x2(false, true, false, false); + TestUtils.AreEqual(a1 > b1, r1); + + int2x2 a2 = int2x2(2099542537, 1182623667, 1399607274, 789301637); + int2x2 b2 = int2x2(910845808, 976047676, 202633078, 1223618940); + bool2x2 r2 = bool2x2(true, true, true, false); + TestUtils.AreEqual(a2 > b2, r2); + + int2x2 a3 = int2x2(180400925, 594688333, 1877031463, 1360073500); + int2x2 b3 = int2x2(641600530, 1830470354, 1570701388, 1104256103); + bool2x2 r3 = bool2x2(false, false, true, true); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void int2x2_operator_greater_wide_scalar() + { + int2x2 a0 = int2x2(1097138316, 211763648, 1883002501, 56406996); + int b0 = (438688675); + bool2x2 r0 = bool2x2(true, false, true, false); + TestUtils.AreEqual(a0 > b0, r0); + + int2x2 a1 = int2x2(43662641, 1437755186, 1219010035, 2125058448); + int b1 = (1923456111); + bool2x2 r1 = bool2x2(false, false, false, true); + TestUtils.AreEqual(a1 > b1, r1); + + int2x2 a2 = int2x2(304028799, 48044515, 711945018, 1035679270); + int b2 = (893125636); + bool2x2 r2 = bool2x2(false, false, false, true); + TestUtils.AreEqual(a2 > b2, r2); + + int2x2 a3 = int2x2(577943770, 1016617211, 2063134811, 1577403353); + int b3 = (572743717); + bool2x2 r3 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void int2x2_operator_greater_scalar_wide() + { + int a0 = (2024896938); + int2x2 b0 = int2x2(599356784, 185671342, 1932327391, 2025591013); + bool2x2 r0 = bool2x2(true, true, true, false); + TestUtils.AreEqual(a0 > b0, r0); + + int a1 = (1257191721); + int2x2 b1 = int2x2(1312388500, 1443698859, 779217735, 691047512); + bool2x2 r1 = bool2x2(false, false, true, true); + TestUtils.AreEqual(a1 > b1, r1); + + int a2 = (741776730); + int2x2 b2 = int2x2(732565983, 668302204, 1556466996, 858599525); + bool2x2 r2 = bool2x2(true, true, false, false); + TestUtils.AreEqual(a2 > b2, r2); + + int a3 = (1896917159); + int2x2 b3 = int2x2(701542098, 1052151621, 1023307544, 1435392907); + bool2x2 r3 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void int2x2_operator_less_equal_wide_wide() + { + int2x2 a0 = int2x2(1577248162, 2043073061, 1688380407, 176431985); + int2x2 b0 = int2x2(903445031, 2108974565, 210822256, 1281704747); + bool2x2 r0 = bool2x2(false, true, false, true); + TestUtils.AreEqual(a0 <= b0, r0); + + int2x2 a1 = int2x2(223299035, 1502802140, 1691709825, 386789394); + int2x2 b1 = int2x2(453681718, 66138830, 1229799377, 1620922595); + bool2x2 r1 = bool2x2(true, false, false, true); + TestUtils.AreEqual(a1 <= b1, r1); + + int2x2 a2 = int2x2(117182003, 1665770435, 1958490731, 420032601); + int2x2 b2 = int2x2(1715833766, 1366430432, 13102000, 46919981); + bool2x2 r2 = bool2x2(true, false, false, false); + TestUtils.AreEqual(a2 <= b2, r2); + + int2x2 a3 = int2x2(1251092689, 2011681765, 749743684, 183784440); + int2x2 b3 = int2x2(486470891, 1709514236, 2145785285, 854254454); + bool2x2 r3 = bool2x2(false, false, true, true); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void int2x2_operator_less_equal_wide_scalar() + { + int2x2 a0 = int2x2(1722165358, 1219858357, 860410743, 411099660); + int b0 = (1688048545); + bool2x2 r0 = bool2x2(false, true, true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + int2x2 a1 = int2x2(348104022, 212084836, 58924407, 1459242706); + int b1 = (1963256951); + bool2x2 r1 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a1 <= b1, r1); + + int2x2 a2 = int2x2(1745758438, 262559763, 690091301, 1806172431); + int b2 = (532949158); + bool2x2 r2 = bool2x2(false, true, false, false); + TestUtils.AreEqual(a2 <= b2, r2); + + int2x2 a3 = int2x2(2091514001, 1617221948, 2017733017, 804204255); + int b3 = (1857173043); + bool2x2 r3 = bool2x2(false, true, false, true); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void int2x2_operator_less_equal_scalar_wide() + { + int a0 = (1777585); + int2x2 b0 = int2x2(1181030049, 1787703989, 1729760948, 1816537388); + bool2x2 r0 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + int a1 = (1359786460); + int2x2 b1 = int2x2(874999193, 1678863148, 1711365839, 762067160); + bool2x2 r1 = bool2x2(false, true, true, false); + TestUtils.AreEqual(a1 <= b1, r1); + + int a2 = (11953554); + int2x2 b2 = int2x2(1131583906, 1175393186, 1293698493, 48893340); + bool2x2 r2 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a2 <= b2, r2); + + int a3 = (66196247); + int2x2 b3 = int2x2(1958607116, 1576473309, 861890786, 478252419); + bool2x2 r3 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void int2x2_operator_greater_equal_wide_wide() + { + int2x2 a0 = int2x2(263000030, 744235661, 1893760267, 237248); + int2x2 b0 = int2x2(1395535146, 1178373944, 1237373760, 1364855321); + bool2x2 r0 = bool2x2(false, false, true, false); + TestUtils.AreEqual(a0 >= b0, r0); + + int2x2 a1 = int2x2(1062370984, 1676977687, 816766880, 1089431546); + int2x2 b1 = int2x2(600811864, 362060472, 290870624, 1839067862); + bool2x2 r1 = bool2x2(true, true, true, false); + TestUtils.AreEqual(a1 >= b1, r1); + + int2x2 a2 = int2x2(1394493730, 1176473380, 1193988637, 1703862455); + int2x2 b2 = int2x2(396958580, 1336888643, 1019684398, 1697684196); + bool2x2 r2 = bool2x2(true, false, true, true); + TestUtils.AreEqual(a2 >= b2, r2); + + int2x2 a3 = int2x2(1806186947, 1253571980, 589397635, 1951842887); + int2x2 b3 = int2x2(1227300220, 2044269675, 1898323839, 874509380); + bool2x2 r3 = bool2x2(true, false, false, true); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void int2x2_operator_greater_equal_wide_scalar() + { + int2x2 a0 = int2x2(2112791350, 1043657935, 101764761, 1529909067); + int b0 = (1470533736); + bool2x2 r0 = bool2x2(true, false, false, true); + TestUtils.AreEqual(a0 >= b0, r0); + + int2x2 a1 = int2x2(556026890, 1186600258, 815093894, 609211196); + int b1 = (281734132); + bool2x2 r1 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a1 >= b1, r1); + + int2x2 a2 = int2x2(1604309397, 244604867, 1419295004, 471843809); + int b2 = (829548642); + bool2x2 r2 = bool2x2(true, false, true, false); + TestUtils.AreEqual(a2 >= b2, r2); + + int2x2 a3 = int2x2(1819986195, 1646290021, 196833647, 1596738181); + int b3 = (1460027917); + bool2x2 r3 = bool2x2(true, true, false, true); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void int2x2_operator_greater_equal_scalar_wide() + { + int a0 = (1525542481); + int2x2 b0 = int2x2(1503244746, 861711266, 817773856, 925984572); + bool2x2 r0 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a0 >= b0, r0); + + int a1 = (571221723); + int2x2 b1 = int2x2(683686810, 118252990, 1653952090, 1240253990); + bool2x2 r1 = bool2x2(false, true, false, false); + TestUtils.AreEqual(a1 >= b1, r1); + + int a2 = (1947039008); + int2x2 b2 = int2x2(1869136019, 152012637, 1214546726, 917376832); + bool2x2 r2 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a2 >= b2, r2); + + int a3 = (303549425); + int2x2 b3 = int2x2(2111728811, 945321577, 173706579, 625318949); + bool2x2 r3 = bool2x2(false, false, true, false); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void int2x2_operator_add_wide_wide() + { + int2x2 a0 = int2x2(2049228671, 1658660009, 491719392, 937013355); + int2x2 b0 = int2x2(2088751567, 645762023, 306868786, 4360271); + int2x2 r0 = int2x2(-156987058, -1990545264, 798588178, 941373626); + TestUtils.AreEqual(a0 + b0, r0); + + int2x2 a1 = int2x2(81108663, 1063894558, 86954702, 843159721); + int2x2 b1 = int2x2(506047997, 2094559874, 1634712736, 1601474440); + int2x2 r1 = int2x2(587156660, -1136512864, 1721667438, -1850333135); + TestUtils.AreEqual(a1 + b1, r1); + + int2x2 a2 = int2x2(698977704, 192867135, 1683407172, 137301303); + int2x2 b2 = int2x2(1586485231, 908746788, 1812370320, 1247342357); + int2x2 r2 = int2x2(-2009504361, 1101613923, -799189804, 1384643660); + TestUtils.AreEqual(a2 + b2, r2); + + int2x2 a3 = int2x2(2103582820, 526139155, 447937230, 2127411006); + int2x2 b3 = int2x2(2043773873, 223363428, 175115707, 985928617); + int2x2 r3 = int2x2(-147610603, 749502583, 623052937, -1181627673); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void int2x2_operator_add_wide_scalar() + { + int2x2 a0 = int2x2(2038218457, 134923711, 875689667, 1338884463); + int b0 = (2124409227); + int2x2 r0 = int2x2(-132339612, -2035634358, -1294868402, -831673606); + TestUtils.AreEqual(a0 + b0, r0); + + int2x2 a1 = int2x2(997710928, 1067888129, 70433301, 2003021861); + int b1 = (340490871); + int2x2 r1 = int2x2(1338201799, 1408379000, 410924172, -1951454564); + TestUtils.AreEqual(a1 + b1, r1); + + int2x2 a2 = int2x2(1635971971, 85446202, 1068152966, 1239387100); + int b2 = (1160398286); + int2x2 r2 = int2x2(-1498597039, 1245844488, -2066416044, -1895181910); + TestUtils.AreEqual(a2 + b2, r2); + + int2x2 a3 = int2x2(1497676888, 1095438654, 756559204, 1818718931); + int b3 = (1727477485); + int2x2 r3 = int2x2(-1069812923, -1472051157, -1810930607, -748770880); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void int2x2_operator_add_scalar_wide() + { + int a0 = (391092078); + int2x2 b0 = int2x2(519908870, 851424292, 328314822, 135622204); + int2x2 r0 = int2x2(911000948, 1242516370, 719406900, 526714282); + TestUtils.AreEqual(a0 + b0, r0); + + int a1 = (740923360); + int2x2 b1 = int2x2(655394201, 1451896269, 1781697072, 996031825); + int2x2 r1 = int2x2(1396317561, -2102147667, -1772346864, 1736955185); + TestUtils.AreEqual(a1 + b1, r1); + + int a2 = (1557774949); + int2x2 b2 = int2x2(779774940, 1111541302, 783046445, 1130163944); + int2x2 r2 = int2x2(-1957417407, -1625651045, -1954145902, -1607028403); + TestUtils.AreEqual(a2 + b2, r2); + + int a3 = (288279584); + int2x2 b3 = int2x2(1397683861, 1636583489, 673263339, 1469300874); + int2x2 r3 = int2x2(1685963445, 1924863073, 961542923, 1757580458); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void int2x2_operator_sub_wide_wide() + { + int2x2 a0 = int2x2(1353441118, 797269833, 659988112, 56022121); + int2x2 b0 = int2x2(1332656812, 1827794007, 972557431, 2078233689); + int2x2 r0 = int2x2(20784306, -1030524174, -312569319, -2022211568); + TestUtils.AreEqual(a0 - b0, r0); + + int2x2 a1 = int2x2(365847472, 2062899435, 1380988474, 799885138); + int2x2 b1 = int2x2(1508184327, 1372307701, 810327977, 936799885); + int2x2 r1 = int2x2(-1142336855, 690591734, 570660497, -136914747); + TestUtils.AreEqual(a1 - b1, r1); + + int2x2 a2 = int2x2(1306058185, 579775276, 1239163824, 344591081); + int2x2 b2 = int2x2(71562303, 1418723328, 1971342989, 1226053395); + int2x2 r2 = int2x2(1234495882, -838948052, -732179165, -881462314); + TestUtils.AreEqual(a2 - b2, r2); + + int2x2 a3 = int2x2(86359575, 1049709943, 721529513, 1767221271); + int2x2 b3 = int2x2(136565478, 1979903295, 600719425, 837912956); + int2x2 r3 = int2x2(-50205903, -930193352, 120810088, 929308315); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void int2x2_operator_sub_wide_scalar() + { + int2x2 a0 = int2x2(1176369558, 1934521195, 309452150, 1417634074); + int b0 = (462232403); + int2x2 r0 = int2x2(714137155, 1472288792, -152780253, 955401671); + TestUtils.AreEqual(a0 - b0, r0); + + int2x2 a1 = int2x2(108910717, 1502312334, 1451794815, 281174200); + int b1 = (1306356714); + int2x2 r1 = int2x2(-1197445997, 195955620, 145438101, -1025182514); + TestUtils.AreEqual(a1 - b1, r1); + + int2x2 a2 = int2x2(87530840, 2041593336, 557239990, 1119051448); + int b2 = (1913724431); + int2x2 r2 = int2x2(-1826193591, 127868905, -1356484441, -794672983); + TestUtils.AreEqual(a2 - b2, r2); + + int2x2 a3 = int2x2(1590376732, 816382635, 815920639, 1829033117); + int b3 = (819090189); + int2x2 r3 = int2x2(771286543, -2707554, -3169550, 1009942928); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void int2x2_operator_sub_scalar_wide() + { + int a0 = (1691534405); + int2x2 b0 = int2x2(2022393810, 1612688515, 496689713, 887037586); + int2x2 r0 = int2x2(-330859405, 78845890, 1194844692, 804496819); + TestUtils.AreEqual(a0 - b0, r0); + + int a1 = (2097630964); + int2x2 b1 = int2x2(374934538, 939035482, 935242277, 1789300421); + int2x2 r1 = int2x2(1722696426, 1158595482, 1162388687, 308330543); + TestUtils.AreEqual(a1 - b1, r1); + + int a2 = (264712893); + int2x2 b2 = int2x2(1231856067, 1818112748, 1428436109, 1258745460); + int2x2 r2 = int2x2(-967143174, -1553399855, -1163723216, -994032567); + TestUtils.AreEqual(a2 - b2, r2); + + int a3 = (1077380396); + int2x2 b3 = int2x2(1330722719, 518111829, 967128529, 344666254); + int2x2 r3 = int2x2(-253342323, 559268567, 110251867, 732714142); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void int2x2_operator_mul_wide_wide() + { + int2x2 a0 = int2x2(245827027, 208934650, 1019478917, 568231809); + int2x2 b0 = int2x2(759663997, 350129201, 477450108, 1635735015); + int2x2 r0 = int2x2(-632811769, 1402281434, 332447596, -1932977561); + TestUtils.AreEqual(a0 * b0, r0); + + int2x2 a1 = int2x2(877289039, 1585782440, 2111178729, 1186019069); + int2x2 b1 = int2x2(388710278, 757722665, 1509388321, 1841703980); + int2x2 r1 = int2x2(-1670918566, 1455036648, 2128344329, -594088068); + TestUtils.AreEqual(a1 * b1, r1); + + int2x2 a2 = int2x2(571481445, 1570087048, 629447153, 619383734); + int2x2 b2 = int2x2(1826369331, 1524322467, 1605207974, 428419155); + int2x2 r2 = int2x2(-1654168033, 2093463192, -1207506618, -1133560830); + TestUtils.AreEqual(a2 * b2, r2); + + int2x2 a3 = int2x2(2055121568, 700402816, 263414349, 187830569); + int2x2 b3 = int2x2(1460605791, 1968043860, 771161742, 2037340417); + int2x2 r3 = int2x2(990589280, -938173952, -1341723466, 1156600361); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void int2x2_operator_mul_wide_scalar() + { + int2x2 a0 = int2x2(1762033447, 465343930, 1570757881, 1326409563); + int b0 = (1476837906); + int2x2 r0 = int2x2(-1313177922, 1326807828, -2138555518, -276153754); + TestUtils.AreEqual(a0 * b0, r0); + + int2x2 a1 = int2x2(1824319147, 72749215, 154616909, 975743632); + int b1 = (1356578909); + int2x2 r1 = int2x2(-236385249, 130042307, 1244434425, -1981680048); + TestUtils.AreEqual(a1 * b1, r1); + + int2x2 a2 = int2x2(573770299, 971327747, 1818877398, 1324050764); + int b2 = (1958912969); + int2x2 r2 = int2x2(-699623085, 583613531, -1685426426, 377032876); + TestUtils.AreEqual(a2 * b2, r2); + + int2x2 a3 = int2x2(660611671, 391009467, 1186856590, 890343818); + int b3 = (1279757657); + int2x2 r3 = int2x2(-42542273, 1120105475, -22825634, 1972017914); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void int2x2_operator_mul_scalar_wide() + { + int a0 = (99541948); + int2x2 b0 = int2x2(1764461774, 657072478, 1459784358, 1610646683); + int2x2 r0 = int2x2(-950398648, -102049016, 1260585960, 1158730452); + TestUtils.AreEqual(a0 * b0, r0); + + int a1 = (1632058826); + int2x2 b1 = int2x2(868441654, 1408757883, 335917146, 2105124483); + int2x2 r1 = int2x2(-57330532, -1559359474, 712546564, -805332386); + TestUtils.AreEqual(a1 * b1, r1); + + int a2 = (1178393968); + int2x2 b2 = int2x2(1963904348, 1409533767, 243286231, 1336308795); + int2x2 r2 = int2x2(1196573760, 592673296, 209320208, -352466736); + TestUtils.AreEqual(a2 * b2, r2); + + int a3 = (517963367); + int2x2 b3 = int2x2(1733623488, 459880225, 994616533, 1420531535); + int2x2 r3 = int2x2(-774570176, -1271501753, 652617651, -1789672759); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void int2x2_operator_div_wide_wide() + { + int2x2 a0 = int2x2(1590198532, 507812502, 126627032, 1058247011); + int2x2 b0 = int2x2(1434703236, 911965201, 390415521, 128746927); + int2x2 r0 = int2x2(1, 0, 0, 8); + TestUtils.AreEqual(a0 / b0, r0); + + int2x2 a1 = int2x2(427387861, 290676154, 1829594484, 1127868739); + int2x2 b1 = int2x2(525835375, 816946613, 878264647, 146789678); + int2x2 r1 = int2x2(0, 0, 2, 7); + TestUtils.AreEqual(a1 / b1, r1); + + int2x2 a2 = int2x2(499016351, 1341209632, 134906097, 785470242); + int2x2 b2 = int2x2(2089524057, 254213018, 1916850021, 1737806518); + int2x2 r2 = int2x2(0, 5, 0, 0); + TestUtils.AreEqual(a2 / b2, r2); + + int2x2 a3 = int2x2(788249865, 1099825433, 1552968283, 1822367139); + int2x2 b3 = int2x2(1906634983, 437754923, 825037958, 902508708); + int2x2 r3 = int2x2(0, 2, 1, 2); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void int2x2_operator_div_wide_scalar() + { + int2x2 a0 = int2x2(560951562, 1218680769, 375341724, 1613542090); + int b0 = (947861580); + int2x2 r0 = int2x2(0, 1, 0, 1); + TestUtils.AreEqual(a0 / b0, r0); + + int2x2 a1 = int2x2(1919409166, 1349573078, 524526253, 341995568); + int b1 = (1397425408); + int2x2 r1 = int2x2(1, 0, 0, 0); + TestUtils.AreEqual(a1 / b1, r1); + + int2x2 a2 = int2x2(495895326, 1676971657, 2131487088, 2105094094); + int b2 = (1515313790); + int2x2 r2 = int2x2(0, 1, 1, 1); + TestUtils.AreEqual(a2 / b2, r2); + + int2x2 a3 = int2x2(1017891310, 1646044372, 1447236569, 107215658); + int b3 = (542666029); + int2x2 r3 = int2x2(1, 3, 2, 0); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void int2x2_operator_div_scalar_wide() + { + int a0 = (1161272038); + int2x2 b0 = int2x2(187325733, 1594107378, 2016183849, 1589343709); + int2x2 r0 = int2x2(6, 0, 0, 0); + TestUtils.AreEqual(a0 / b0, r0); + + int a1 = (388768753); + int2x2 b1 = int2x2(1417077283, 1773486938, 1154044032, 81831373); + int2x2 r1 = int2x2(0, 0, 0, 4); + TestUtils.AreEqual(a1 / b1, r1); + + int a2 = (1476877645); + int2x2 b2 = int2x2(653688843, 45756703, 631027637, 396671391); + int2x2 r2 = int2x2(2, 32, 2, 3); + TestUtils.AreEqual(a2 / b2, r2); + + int a3 = (784365696); + int2x2 b3 = int2x2(1250594097, 1818363859, 1653451772, 270557729); + int2x2 r3 = int2x2(0, 0, 0, 2); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void int2x2_operator_mod_wide_wide() + { + int2x2 a0 = int2x2(146150818, 1846543305, 1071447756, 308965362); + int2x2 b0 = int2x2(983050390, 771341152, 942375212, 367361754); + int2x2 r0 = int2x2(146150818, 303861001, 129072544, 308965362); + TestUtils.AreEqual(a0 % b0, r0); + + int2x2 a1 = int2x2(659881575, 1002365460, 861198439, 1510617532); + int2x2 b1 = int2x2(749500619, 750718852, 2095151755, 88438806); + int2x2 r1 = int2x2(659881575, 251646608, 861198439, 7157830); + TestUtils.AreEqual(a1 % b1, r1); + + int2x2 a2 = int2x2(778525078, 1458458044, 101987897, 1249565173); + int2x2 b2 = int2x2(769227442, 647214624, 1026513788, 1544950956); + int2x2 r2 = int2x2(9297636, 164028796, 101987897, 1249565173); + TestUtils.AreEqual(a2 % b2, r2); + + int2x2 a3 = int2x2(938026607, 1692541775, 1518877124, 1806965510); + int2x2 b3 = int2x2(160166322, 1099108075, 1158422232, 1798905209); + int2x2 r3 = int2x2(137194997, 593433700, 360454892, 8060301); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void int2x2_operator_mod_wide_scalar() + { + int2x2 a0 = int2x2(164800505, 1062177828, 1898749675, 1701653318); + int b0 = (883951171); + int2x2 r0 = int2x2(164800505, 178226657, 130847333, 817702147); + TestUtils.AreEqual(a0 % b0, r0); + + int2x2 a1 = int2x2(820393245, 128329633, 1464010899, 896587769); + int b1 = (19002208); + int2x2 r1 = int2x2(3298301, 14316385, 840883, 3483993); + TestUtils.AreEqual(a1 % b1, r1); + + int2x2 a2 = int2x2(405208598, 959236935, 712321026, 172564850); + int b2 = (1982762194); + int2x2 r2 = int2x2(405208598, 959236935, 712321026, 172564850); + TestUtils.AreEqual(a2 % b2, r2); + + int2x2 a3 = int2x2(1540068445, 1607489717, 165478511, 647846716); + int b3 = (1085897743); + int2x2 r3 = int2x2(454170702, 521591974, 165478511, 647846716); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void int2x2_operator_mod_scalar_wide() + { + int a0 = (242383789); + int2x2 b0 = int2x2(740000543, 1556450291, 1104736385, 437976569); + int2x2 r0 = int2x2(242383789, 242383789, 242383789, 242383789); + TestUtils.AreEqual(a0 % b0, r0); + + int a1 = (1911837205); + int2x2 b1 = int2x2(1507212038, 1906405167, 247693265, 293460573); + int2x2 r1 = int2x2(404625167, 5432038, 177984350, 151073767); + TestUtils.AreEqual(a1 % b1, r1); + + int a2 = (1495295166); + int2x2 b2 = int2x2(873323603, 530681233, 1298102643, 2057984657); + int2x2 r2 = int2x2(621971563, 433932700, 197192523, 1495295166); + TestUtils.AreEqual(a2 % b2, r2); + + int a3 = (1000742091); + int2x2 b3 = int2x2(1461372131, 1859742342, 797184687, 821888842); + int2x2 r3 = int2x2(1000742091, 1000742091, 203557404, 178853249); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void int2x2_operator_plus() + { + int2x2 a0 = int2x2(1643476803, 907898539, 379615839, 1140483021); + int2x2 r0 = int2x2(1643476803, 907898539, 379615839, 1140483021); + TestUtils.AreEqual(+a0, r0); + + int2x2 a1 = int2x2(1735287433, 1472881565, 339091479, 401565897); + int2x2 r1 = int2x2(1735287433, 1472881565, 339091479, 401565897); + TestUtils.AreEqual(+a1, r1); + + int2x2 a2 = int2x2(1287765427, 174532915, 1864850812, 1566098441); + int2x2 r2 = int2x2(1287765427, 174532915, 1864850812, 1566098441); + TestUtils.AreEqual(+a2, r2); + + int2x2 a3 = int2x2(1145639744, 2049663954, 1723005749, 409076474); + int2x2 r3 = int2x2(1145639744, 2049663954, 1723005749, 409076474); + TestUtils.AreEqual(+a3, r3); + } + + [TestCompiler] + public static void int2x2_operator_neg() + { + int2x2 a0 = int2x2(1955022112, 662160019, 370300775, 2141283773); + int2x2 r0 = int2x2(-1955022112, -662160019, -370300775, -2141283773); + TestUtils.AreEqual(-a0, r0); + + int2x2 a1 = int2x2(1004505619, 33894270, 505708349, 1115028238); + int2x2 r1 = int2x2(-1004505619, -33894270, -505708349, -1115028238); + TestUtils.AreEqual(-a1, r1); + + int2x2 a2 = int2x2(1636274969, 1542206286, 213087293, 243937487); + int2x2 r2 = int2x2(-1636274969, -1542206286, -213087293, -243937487); + TestUtils.AreEqual(-a2, r2); + + int2x2 a3 = int2x2(341522275, 574159094, 1687250035, 2057919693); + int2x2 r3 = int2x2(-341522275, -574159094, -1687250035, -2057919693); + TestUtils.AreEqual(-a3, r3); + } + + [TestCompiler] + public static void int2x2_operator_prefix_inc() + { + int2x2 a0 = int2x2(864455342, 2035793213, 1275443862, 971919915); + int2x2 r0 = int2x2(864455343, 2035793214, 1275443863, 971919916); + TestUtils.AreEqual(++a0, r0); + + int2x2 a1 = int2x2(411610189, 395072276, 115573442, 913293639); + int2x2 r1 = int2x2(411610190, 395072277, 115573443, 913293640); + TestUtils.AreEqual(++a1, r1); + + int2x2 a2 = int2x2(432884105, 1385544935, 1835605516, 831396561); + int2x2 r2 = int2x2(432884106, 1385544936, 1835605517, 831396562); + TestUtils.AreEqual(++a2, r2); + + int2x2 a3 = int2x2(388229350, 1786514683, 993189311, 752093909); + int2x2 r3 = int2x2(388229351, 1786514684, 993189312, 752093910); + TestUtils.AreEqual(++a3, r3); + } + + [TestCompiler] + public static void int2x2_operator_postfix_inc() + { + int2x2 a0 = int2x2(1751003569, 2063707595, 1500486291, 969189211); + int2x2 r0 = int2x2(1751003569, 2063707595, 1500486291, 969189211); + TestUtils.AreEqual(a0++, r0); + + int2x2 a1 = int2x2(1007848192, 1643023524, 1190630527, 1396179607); + int2x2 r1 = int2x2(1007848192, 1643023524, 1190630527, 1396179607); + TestUtils.AreEqual(a1++, r1); + + int2x2 a2 = int2x2(708474528, 1524860667, 1408994706, 375284401); + int2x2 r2 = int2x2(708474528, 1524860667, 1408994706, 375284401); + TestUtils.AreEqual(a2++, r2); + + int2x2 a3 = int2x2(1580130369, 717006530, 506142468, 732199129); + int2x2 r3 = int2x2(1580130369, 717006530, 506142468, 732199129); + TestUtils.AreEqual(a3++, r3); + } + + [TestCompiler] + public static void int2x2_operator_prefix_dec() + { + int2x2 a0 = int2x2(200904609, 871077500, 968578728, 638967721); + int2x2 r0 = int2x2(200904608, 871077499, 968578727, 638967720); + TestUtils.AreEqual(--a0, r0); + + int2x2 a1 = int2x2(1995396216, 1782514098, 1589827826, 1434377580); + int2x2 r1 = int2x2(1995396215, 1782514097, 1589827825, 1434377579); + TestUtils.AreEqual(--a1, r1); + + int2x2 a2 = int2x2(596759698, 1758478358, 1914114460, 71237375); + int2x2 r2 = int2x2(596759697, 1758478357, 1914114459, 71237374); + TestUtils.AreEqual(--a2, r2); + + int2x2 a3 = int2x2(389120307, 1310293956, 356565557, 18299409); + int2x2 r3 = int2x2(389120306, 1310293955, 356565556, 18299408); + TestUtils.AreEqual(--a3, r3); + } + + [TestCompiler] + public static void int2x2_operator_postfix_dec() + { + int2x2 a0 = int2x2(283970262, 1109329936, 1073216143, 649439137); + int2x2 r0 = int2x2(283970262, 1109329936, 1073216143, 649439137); + TestUtils.AreEqual(a0--, r0); + + int2x2 a1 = int2x2(1932646215, 484207852, 524156737, 691209285); + int2x2 r1 = int2x2(1932646215, 484207852, 524156737, 691209285); + TestUtils.AreEqual(a1--, r1); + + int2x2 a2 = int2x2(2017728859, 377162390, 526366486, 1504625034); + int2x2 r2 = int2x2(2017728859, 377162390, 526366486, 1504625034); + TestUtils.AreEqual(a2--, r2); + + int2x2 a3 = int2x2(590919177, 1867810045, 2095777993, 670715645); + int2x2 r3 = int2x2(590919177, 1867810045, 2095777993, 670715645); + TestUtils.AreEqual(a3--, r3); + } + + [TestCompiler] + public static void int2x2_operator_bitwise_and_wide_wide() + { + int2x2 a0 = int2x2(779935043, 1097962163, 1939593304, 800599247); + int2x2 b0 = int2x2(307705143, 1710882162, 866836769, 532490608); + int2x2 r0 = int2x2(39064835, 1097961522, 864731136, 263727168); + TestUtils.AreEqual(a0 & b0, r0); + + int2x2 a1 = int2x2(952140918, 782792558, 1608557706, 396446406); + int2x2 b1 = int2x2(679371720, 1794035877, 1439832202, 519529812); + int2x2 r1 = int2x2(675283008, 715673636, 1438646410, 379666500); + TestUtils.AreEqual(a1 & b1, r1); + + int2x2 a2 = int2x2(2039894114, 1286974642, 442394124, 1759739564); + int2x2 b2 = int2x2(23633139, 1209152681, 646737179, 1255867027); + int2x2 r2 = int2x2(16781410, 1209017504, 34366472, 1220739712); + TestUtils.AreEqual(a2 & b2, r2); + + int2x2 a3 = int2x2(233435438, 665207770, 1942050241, 1022352952); + int2x2 b3 = int2x2(1900854122, 413173763, 1409138251, 2087190272); + int2x2 r3 = int2x2(21541162, 10485762, 1405162561, 1013440000); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void int2x2_operator_bitwise_and_wide_scalar() + { + int2x2 a0 = int2x2(443615469, 490057985, 2042441263, 1524760558); + int b0 = (93423598); + int2x2 r0 = int2x2(1114348, 85033216, 26281518, 8488942); + TestUtils.AreEqual(a0 & b0, r0); + + int2x2 a1 = int2x2(1405175110, 1941875181, 1236735839, 1365509729); + int b1 = (510212004); + int2x2 r1 = int2x2(306251012, 304619940, 136386308, 274728480); + TestUtils.AreEqual(a1 & b1, r1); + + int2x2 a2 = int2x2(428270198, 650270920, 1249238550, 814629680); + int b2 = (607982857); + int2x2 r2 = int2x2(262144, 603983880, 3478528, 537657600); + TestUtils.AreEqual(a2 & b2, r2); + + int2x2 a3 = int2x2(1862276471, 861733033, 1408932942, 957693145); + int b3 = (143502472); + int2x2 r3 = int2x2(134218752, 852104, 8948744, 134556808); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void int2x2_operator_bitwise_and_scalar_wide() + { + int a0 = (1144543590); + int2x2 b0 = int2x2(420346723, 562416448, 1393127318, 1560699552); + int2x2 r0 = int2x2(547170, 18752, 1074284806, 1140867104); + TestUtils.AreEqual(a0 & b0, r0); + + int a1 = (851218057); + int2x2 b1 = int2x2(703880958, 1159378889, 2031211279, 1089518981); + int2x2 r1 = int2x2(548671112, 1607305, 806388233, 11570305); + TestUtils.AreEqual(a1 & b1, r1); + + int a2 = (270607307); + int2x2 b2 = int2x2(1349288930, 520199596, 1763483957, 1248975349); + int2x2 r2 = int2x2(270533570, 268501384, 8449, 2163137); + TestUtils.AreEqual(a2 & b2, r2); + + int a3 = (236938635); + int2x2 b3 = int2x2(185023291, 1085233038, 1845693112, 946052961); + int2x2 r3 = int2x2(168239371, 1000842, 235077768, 134415617); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void int2x2_operator_bitwise_or_wide_wide() + { + int2x2 a0 = int2x2(1731159103, 659068416, 382702471, 1821032196); + int2x2 b0 = int2x2(1583847161, 692672727, 1161585489, 1756207130); + int2x2 r0 = int2x2(2138044159, 793370327, 1476391895, 1823457054); + TestUtils.AreEqual(a0 | b0, r0); + + int2x2 a1 = int2x2(1565773438, 1004000514, 948501377, 600951835); + int2x2 b1 = int2x2(1321374429, 1287357212, 2075767170, 1273513430); + int2x2 r1 = int2x2(1607720703, 2147473182, 2075786115, 1811533279); + TestUtils.AreEqual(a1 | b1, r1); + + int2x2 a2 = int2x2(669346222, 396691477, 2108560248, 2117522137); + int2x2 b2 = int2x2(1610830169, 1316929125, 511625048, 573925879); + int2x2 r2 = int2x2(1743223295, 1610595957, 2147407736, 2117598207); + TestUtils.AreEqual(a2 | b2, r2); + + int2x2 a3 = int2x2(330307355, 818676817, 1774459567, 1117506257); + int2x2 b3 = int2x2(1502255628, 1841676448, 1682928938, 1115131952); + int2x2 r3 = int2x2(1538957087, 2110637297, 1842315183, 1124063985); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void int2x2_operator_bitwise_or_wide_scalar() + { + int2x2 a0 = int2x2(961259683, 471103264, 1733389229, 1591585258); + int b0 = (1666102508); + int2x2 r0 = int2x2(2068823279, 2136930284, 1734344685, 2145369582); + TestUtils.AreEqual(a0 | b0, r0); + + int2x2 a1 = int2x2(386953869, 1048929715, 1814263250, 860336789); + int b1 = (1148351449); + int2x2 r1 = int2x2(1467118557, 2130147323, 1819506651, 2004349917); + TestUtils.AreEqual(a1 | b1, r1); + + int2x2 a2 = int2x2(1637162093, 774029856, 879300408, 1179087439); + int b2 = (1227888278); + int2x2 r2 = int2x2(1773477631, 1865602742, 2105089982, 1333229279); + TestUtils.AreEqual(a2 | b2, r2); + + int2x2 a3 = int2x2(797240690, 46921989, 1980838747, 284225881); + int b3 = (1977614655); + int2x2 r3 = int2x2(2145709439, 2011953471, 2012296063, 1978724735); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void int2x2_operator_bitwise_or_scalar_wide() + { + int a0 = (1213433101); + int2x2 b0 = int2x2(1212928242, 1614462616, 936937728, 764766995); + int2x2 r0 = int2x2(1213978111, 1752940445, 2145094925, 1842867999); + TestUtils.AreEqual(a0 | b0, r0); + + int a1 = (306352095); + int2x2 b1 = int2x2(574719481, 1283571271, 2109131012, 979469710); + int2x2 r1 = int2x2(843288575, 1589886943, 2146881503, 979603423); + TestUtils.AreEqual(a1 | b1, r1); + + int a2 = (1348323481); + int2x2 b2 = int2x2(1407542578, 697517649, 1059093741, 627815046); + int2x2 r2 = int2x2(1409150395, 2044710617, 2138963197, 1971321503); + TestUtils.AreEqual(a2 | b2, r2); + + int a3 = (418822515); + int2x2 b3 = int2x2(83214352, 424663473, 447949225, 527022375); + int2x2 r3 = int2x2(486013299, 436206067, 452442619, 536852855); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void int2x2_operator_bitwise_xor_wide_wide() + { + int2x2 a0 = int2x2(1556324760, 207002929, 1843444873, 1632079131); + int2x2 b0 = int2x2(1054997548, 1523759632, 251164872, 110472397); + int2x2 r0 = int2x2(1646419380, 1451501345, 1662567489, 1741824470); + TestUtils.AreEqual(a0 ^ b0, r0); + + int2x2 a1 = int2x2(1460334334, 1607815585, 220623650, 38668553); + int2x2 b1 = int2x2(384031112, 1109163205, 535118981, 179106262); + int2x2 r1 = int2x2(1105803126, 499723620, 314783655, 149092575); + TestUtils.AreEqual(a1 ^ b1, r1); + + int2x2 a2 = int2x2(47193340, 643663548, 1371932564, 94957188); + int2x2 b2 = int2x2(1523031711, 1713313372, 1294118730, 520360641); + int2x2 r2 = int2x2(1477935715, 1078104288, 484747486, 447544389); + TestUtils.AreEqual(a2 ^ b2, r2); + + int2x2 a3 = int2x2(700973621, 370621508, 2087573076, 351476570); + int2x2 b3 = int2x2(1040688781, 1020757245, 1143954843, 1281933464); + int2x2 r3 = int2x2(399484088, 717273273, 943885263, 1486609346); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void int2x2_operator_bitwise_xor_wide_scalar() + { + int2x2 a0 = int2x2(2124666952, 177397845, 574879617, 1937385541); + int b0 = (493665894); + int2x2 r0 = int2x2(1674536494, 402546227, 1060063719, 1846973987); + TestUtils.AreEqual(a0 ^ b0, r0); + + int2x2 a1 = int2x2(1136545648, 535061373, 289301586, 1305234431); + int b1 = (213863690); + int2x2 r1 = int2x2(1325466234, 324742775, 495003992, 1098057461); + TestUtils.AreEqual(a1 ^ b1, r1); + + int2x2 a2 = int2x2(353786540, 1267729267, 125659640, 1315625690); + int b2 = (1308626970); + int2x2 r2 = int2x2(1528187574, 93328233, 1232959970, 6998720); + TestUtils.AreEqual(a2 ^ b2, r2); + + int2x2 a3 = int2x2(1730088797, 375757978, 491079274, 191750702); + int b3 = (116862046); + int2x2 r3 = int2x2(1642603267, 278048964, 464677428, 228249200); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void int2x2_operator_bitwise_xor_scalar_wide() + { + int a0 = (1288453276); + int2x2 b0 = int2x2(1077599928, 884741329, 212164516, 1585020328); + int2x2 r0 = int2x2(217506340, 2020616269, 1080648504, 313868596); + TestUtils.AreEqual(a0 ^ b0, r0); + + int a1 = (152985454); + int2x2 b1 = int2x2(1775851275, 1416249064, 1309317737, 1773918217); + int2x2 r1 = int2x2(1623656549, 1567908230, 1192543495, 1621460839); + TestUtils.AreEqual(a1 ^ b1, r1); + + int a2 = (1509843030); + int2x2 b2 = int2x2(1206045972, 1154916424, 1947871003, 1774252400); + int2x2 r2 = int2x2(505195842, 489209886, 769935181, 809406758); + TestUtils.AreEqual(a2 ^ b2, r2); + + int a3 = (1946113778); + int2x2 b3 = int2x2(1079717492, 290620937, 1382343363, 939045099); + int2x2 r3 = int2x2(866416774, 1655558395, 563852337, 1141368345); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void int2x2_operator_left_shift() + { + int2x2 a0 = int2x2(197771193, 622182602, 1283988958, 1327917304); + int b0 = (1321149625); + int2x2 r0 = int2x2(1912602624, -1811939328, -1140850688, -268435456); + TestUtils.AreEqual(a0 << b0, r0); + + int2x2 a1 = int2x2(473415985, 870301196, 2058433484, 1200694230); + int b1 = (432425717); + int2x2 r1 = int2x2(639631360, -1048576000, 2038431744, 2059403264); + TestUtils.AreEqual(a1 << b1, r1); + + int2x2 a2 = int2x2(1531607705, 1008296534, 1447702302, 1079614371); + int b2 = (1360008038); + int2x2 r2 = int2x2(-761354688, 106468736, -1836333184, 375843008); + TestUtils.AreEqual(a2 << b2, r2); + + int2x2 a3 = int2x2(35667343, 2045594989, 2077023268, 592678686); + int b3 = (1664454606); + int2x2 r3 = int2x2(258195456, 1398489088, 923336704, -473464832); + TestUtils.AreEqual(a3 << b3, r3); + } + + [TestCompiler] + public static void int2x2_operator_right_shift() + { + int2x2 a0 = int2x2(548167301, 1161338299, 1617625829, 1860731847); + int b0 = (1266801540); + int2x2 r0 = int2x2(34260456, 72583643, 101101614, 116295740); + TestUtils.AreEqual(a0 >> b0, r0); + + int2x2 a1 = int2x2(713958715, 770466193, 1265099998, 572763124); + int b1 = (196552656); + int2x2 r1 = int2x2(10894, 11756, 19303, 8739); + TestUtils.AreEqual(a1 >> b1, r1); + + int2x2 a2 = int2x2(506619530, 2031319045, 701927980, 917785020); + int b2 = (426807581); + int2x2 r2 = int2x2(0, 3, 1, 1); + TestUtils.AreEqual(a2 >> b2, r2); + + int2x2 a3 = int2x2(569504877, 1102123711, 334005460, 1624751550); + int b3 = (185593382); + int2x2 r3 = int2x2(8898513, 17220682, 5218835, 25386742); + TestUtils.AreEqual(a3 >> b3, r3); + } + + [TestCompiler] + public static void int2x2_operator_bitwise_not() + { + int2x2 a0 = int2x2(1403358969, 831360921, 2088190243, 976721016); + int2x2 r0 = int2x2(-1403358970, -831360922, -2088190244, -976721017); + TestUtils.AreEqual(~a0, r0); + + int2x2 a1 = int2x2(878283189, 1935567517, 1420884856, 472965491); + int2x2 r1 = int2x2(-878283190, -1935567518, -1420884857, -472965492); + TestUtils.AreEqual(~a1, r1); + + int2x2 a2 = int2x2(771711426, 2061524024, 753208488, 2097179283); + int2x2 r2 = int2x2(-771711427, -2061524025, -753208489, -2097179284); + TestUtils.AreEqual(~a2, r2); + + int2x2 a3 = int2x2(1303022493, 1289372466, 1635981125, 1951018596); + int2x2 r3 = int2x2(-1303022494, -1289372467, -1635981126, -1951018597); + TestUtils.AreEqual(~a3, r3); + } + + + } +} diff --git a/package/Tests/Tests/Shared/TestInt2x2.gen.cs.meta b/package/Tests/Tests/Shared/TestInt2x2.gen.cs.meta new file mode 100755 index 000000000..7bdf74185 --- /dev/null +++ b/package/Tests/Tests/Shared/TestInt2x2.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 041eb9518baf7a846bd945a05063b142 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/package/Tests/Tests/Shared/TestInt2x3.gen.cs b/package/Tests/Tests/Shared/TestInt2x3.gen.cs new file mode 100755 index 000000000..1b77efe90 --- /dev/null +++ b/package/Tests/Tests/Shared/TestInt2x3.gen.cs @@ -0,0 +1,1227 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using NUnit.Framework; +using static Unity.Mathematics.math; +using Burst.Compiler.IL.Tests; + +namespace Unity.Mathematics.Tests +{ + [TestFixture] + public class TestInt2x3 + { + [TestCompiler] + public static void int2x3_zero() + { + TestUtils.AreEqual(int2x3.zero.c0.x, 0); + TestUtils.AreEqual(int2x3.zero.c0.y, 0); + TestUtils.AreEqual(int2x3.zero.c1.x, 0); + TestUtils.AreEqual(int2x3.zero.c1.y, 0); + TestUtils.AreEqual(int2x3.zero.c2.x, 0); + TestUtils.AreEqual(int2x3.zero.c2.y, 0); + } + + [TestCompiler] + public static void int2x3_operator_equal_wide_wide() + { + int2x3 a0 = int2x3(790229414, 970783976, 1428432738, 1578747135, 1733797753, 2001507228); + int2x3 b0 = int2x3(612337669, 1214209108, 2120643427, 295461214, 1510890331, 1893316566); + bool2x3 r0 = bool2x3(false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + int2x3 a1 = int2x3(1446876437, 1777406370, 1426387268, 1809275021, 1843770816, 1172185222); + int2x3 b1 = int2x3(921816149, 1834958575, 1482011863, 2062852792, 226398742, 770290735); + bool2x3 r1 = bool2x3(false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + int2x3 a2 = int2x3(1469608940, 869874758, 458603090, 581282460, 1948324909, 1129078206); + int2x3 b2 = int2x3(36812057, 543224481, 1565350150, 1909926604, 1619900436, 1849990483); + bool2x3 r2 = bool2x3(false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + int2x3 a3 = int2x3(1638391029, 1135553683, 2079295200, 576232476, 608208235, 11172509); + int2x3 b3 = int2x3(1261604411, 161864811, 843379453, 1780425458, 215681636, 2123130580); + bool2x3 r3 = bool2x3(false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void int2x3_operator_equal_wide_scalar() + { + int2x3 a0 = int2x3(1211464300, 1921862607, 508076684, 1249127920, 1394594555, 746862310); + int b0 = (746972502); + bool2x3 r0 = bool2x3(false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + int2x3 a1 = int2x3(1733655277, 1682018538, 795585660, 936027116, 927605411, 672785749); + int b1 = (1884008277); + bool2x3 r1 = bool2x3(false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + int2x3 a2 = int2x3(1465584610, 404448210, 969511077, 442746747, 1772925698, 1884034177); + int b2 = (585324157); + bool2x3 r2 = bool2x3(false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + int2x3 a3 = int2x3(451512860, 1370577708, 597010220, 1249636005, 211986678, 1305479811); + int b3 = (425476075); + bool2x3 r3 = bool2x3(false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void int2x3_operator_equal_scalar_wide() + { + int a0 = (1150044438); + int2x3 b0 = int2x3(233855098, 924242519, 1402948791, 601381975, 2120518068, 629187703); + bool2x3 r0 = bool2x3(false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + int a1 = (1971977031); + int2x3 b1 = int2x3(47183124, 1061805787, 1009011238, 312511148, 1460673064, 737210539); + bool2x3 r1 = bool2x3(false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + int a2 = (1737844479); + int2x3 b2 = int2x3(1892405453, 2133024000, 455818693, 2003197687, 1276241219, 534746610); + bool2x3 r2 = bool2x3(false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + int a3 = (559824292); + int2x3 b3 = int2x3(1758388240, 1023494292, 719963017, 1883763832, 597498209, 367814403); + bool2x3 r3 = bool2x3(false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void int2x3_operator_not_equal_wide_wide() + { + int2x3 a0 = int2x3(1660932106, 982847023, 97046264, 1739517447, 1253499180, 1830584069); + int2x3 b0 = int2x3(107139049, 75478496, 2055495054, 358586687, 942338347, 111564990); + bool2x3 r0 = bool2x3(true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + int2x3 a1 = int2x3(1841470429, 1397841646, 1770890135, 1906548631, 169082967, 2099271786); + int2x3 b1 = int2x3(113811950, 948912488, 1080084121, 1400504872, 1032134499, 1061123400); + bool2x3 r1 = bool2x3(true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + int2x3 a2 = int2x3(1909317609, 46519139, 1433204003, 931492669, 670504132, 1551558665); + int2x3 b2 = int2x3(221862069, 858950046, 989094643, 2023070999, 1269317127, 531883744); + bool2x3 r2 = bool2x3(true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + int2x3 a3 = int2x3(1204055048, 1623586740, 226381077, 1145987803, 644253929, 475189890); + int2x3 b3 = int2x3(687761409, 278427731, 296354221, 536981557, 1134676193, 1749879634); + bool2x3 r3 = bool2x3(true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void int2x3_operator_not_equal_wide_scalar() + { + int2x3 a0 = int2x3(747758183, 1033001286, 1439973882, 2138928797, 1197845089, 1432672459); + int b0 = (248693828); + bool2x3 r0 = bool2x3(true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + int2x3 a1 = int2x3(950170763, 2105962247, 727205263, 1640688041, 276313906, 2126300423); + int b1 = (238704450); + bool2x3 r1 = bool2x3(true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + int2x3 a2 = int2x3(791998981, 1171827730, 1412347883, 1622176923, 768370497, 1072798259); + int b2 = (2035077187); + bool2x3 r2 = bool2x3(true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + int2x3 a3 = int2x3(1808712713, 1582645163, 1876273820, 90244766, 30493685, 904014575); + int b3 = (1497830076); + bool2x3 r3 = bool2x3(true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void int2x3_operator_not_equal_scalar_wide() + { + int a0 = (2076921066); + int2x3 b0 = int2x3(2037494727, 1989050616, 48833929, 1897435904, 514354517, 1783749164); + bool2x3 r0 = bool2x3(true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + int a1 = (364694471); + int2x3 b1 = int2x3(754315072, 124108032, 1512967900, 1178825850, 1854793298, 50286949); + bool2x3 r1 = bool2x3(true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + int a2 = (2100802631); + int2x3 b2 = int2x3(1640811853, 82110247, 472172806, 266984506, 2003668365, 1826089250); + bool2x3 r2 = bool2x3(true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + int a3 = (1041416160); + int2x3 b3 = int2x3(356140110, 2057237962, 799920703, 1916347720, 510966350, 572038024); + bool2x3 r3 = bool2x3(true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void int2x3_operator_less_wide_wide() + { + int2x3 a0 = int2x3(1182186063, 415538999, 1667335818, 1566618442, 1166180837, 639095188); + int2x3 b0 = int2x3(524633529, 1032195686, 760723389, 1505751409, 431962172, 1287906509); + bool2x3 r0 = bool2x3(false, true, false, false, false, true); + TestUtils.AreEqual(a0 < b0, r0); + + int2x3 a1 = int2x3(1080836365, 771119973, 928263233, 789225474, 665243110, 1003542034); + int2x3 b1 = int2x3(1560084663, 1450178202, 2066166337, 1107069023, 1640077524, 2103263105); + bool2x3 r1 = bool2x3(true, true, true, true, true, true); + TestUtils.AreEqual(a1 < b1, r1); + + int2x3 a2 = int2x3(1032480172, 1961336172, 923379558, 21210619, 1089772116, 1707633052); + int2x3 b2 = int2x3(684229139, 1234033624, 1278743281, 1953079347, 1228832942, 2082539723); + bool2x3 r2 = bool2x3(false, false, true, true, true, true); + TestUtils.AreEqual(a2 < b2, r2); + + int2x3 a3 = int2x3(778986024, 158153146, 336715101, 1839141169, 1706859710, 1928438162); + int2x3 b3 = int2x3(1088437561, 1058382082, 207459172, 750531081, 2015788562, 2126542133); + bool2x3 r3 = bool2x3(true, true, false, false, true, true); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void int2x3_operator_less_wide_scalar() + { + int2x3 a0 = int2x3(608447185, 818840405, 869219329, 2080125385, 1214500548, 1361741203); + int b0 = (1491216667); + bool2x3 r0 = bool2x3(true, true, true, false, true, true); + TestUtils.AreEqual(a0 < b0, r0); + + int2x3 a1 = int2x3(1667165786, 840091491, 469591900, 1247103789, 315321650, 930950514); + int b1 = (1615392341); + bool2x3 r1 = bool2x3(false, true, true, true, true, true); + TestUtils.AreEqual(a1 < b1, r1); + + int2x3 a2 = int2x3(1100560246, 908563901, 1127696709, 1286331950, 380753337, 971148054); + int b2 = (933855388); + bool2x3 r2 = bool2x3(false, true, false, false, true, false); + TestUtils.AreEqual(a2 < b2, r2); + + int2x3 a3 = int2x3(1827886929, 1579735991, 689044913, 1960894027, 371987110, 867559111); + int b3 = (1056649851); + bool2x3 r3 = bool2x3(false, false, true, false, true, true); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void int2x3_operator_less_scalar_wide() + { + int a0 = (548436837); + int2x3 b0 = int2x3(282703327, 14370648, 1862117300, 1304793311, 826073259, 988910157); + bool2x3 r0 = bool2x3(false, false, true, true, true, true); + TestUtils.AreEqual(a0 < b0, r0); + + int a1 = (445132446); + int2x3 b1 = int2x3(1139670255, 111349251, 1102440676, 112183144, 1594415311, 1890019295); + bool2x3 r1 = bool2x3(true, false, true, false, true, true); + TestUtils.AreEqual(a1 < b1, r1); + + int a2 = (2098715503); + int2x3 b2 = int2x3(608933527, 183989010, 1596056507, 1027318999, 146281093, 358911716); + bool2x3 r2 = bool2x3(false, false, false, false, false, false); + TestUtils.AreEqual(a2 < b2, r2); + + int a3 = (874278078); + int2x3 b3 = int2x3(1106057699, 1256807459, 2111973919, 1736480659, 810406400, 1329939911); + bool2x3 r3 = bool2x3(true, true, true, true, false, true); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void int2x3_operator_greater_wide_wide() + { + int2x3 a0 = int2x3(592884447, 2133928932, 918957182, 1284069471, 194584707, 739120780); + int2x3 b0 = int2x3(138737040, 192863971, 1700841444, 1044631301, 1391589821, 730837695); + bool2x3 r0 = bool2x3(true, true, false, true, false, true); + TestUtils.AreEqual(a0 > b0, r0); + + int2x3 a1 = int2x3(241654068, 1340158550, 2099542537, 1182623667, 1399607274, 789301637); + int2x3 b1 = int2x3(253553987, 2078872742, 910845808, 976047676, 202633078, 1223618940); + bool2x3 r1 = bool2x3(false, false, true, true, true, false); + TestUtils.AreEqual(a1 > b1, r1); + + int2x3 a2 = int2x3(180400925, 594688333, 1877031463, 1360073500, 1091782422, 546676424); + int2x3 b2 = int2x3(641600530, 1830470354, 1570701388, 1104256103, 1838646932, 740166101); + bool2x3 r2 = bool2x3(false, false, true, true, false, false); + TestUtils.AreEqual(a2 > b2, r2); + + int2x3 a3 = int2x3(348221770, 716039145, 458742739, 1365508046, 1523167942, 1574478622); + int2x3 b3 = int2x3(1549021845, 1457092873, 1790630950, 907793213, 555122804, 1418910265); + bool2x3 r3 = bool2x3(false, false, false, true, true, true); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void int2x3_operator_greater_wide_scalar() + { + int2x3 a0 = int2x3(1097138316, 211763648, 1883002501, 56406996, 43662641, 1923456111); + int b0 = (438688675); + bool2x3 r0 = bool2x3(true, false, true, false, false, true); + TestUtils.AreEqual(a0 > b0, r0); + + int2x3 a1 = int2x3(1437755186, 2125058448, 304028799, 893125636, 48044515, 711945018); + int b1 = (1219010035); + bool2x3 r1 = bool2x3(true, true, false, false, false, false); + TestUtils.AreEqual(a1 > b1, r1); + + int2x3 a2 = int2x3(1035679270, 572743717, 1016617211, 2063134811, 1577403353, 64009107); + int b2 = (577943770); + bool2x3 r2 = bool2x3(true, false, true, true, true, false); + TestUtils.AreEqual(a2 > b2, r2); + + int2x3 a3 = int2x3(1462961460, 3715845, 689362811, 263973424, 1045140419, 1058332184); + int b3 = (1143565920); + bool2x3 r3 = bool2x3(true, false, false, false, false, false); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void int2x3_operator_greater_scalar_wide() + { + int a0 = (2024896938); + int2x3 b0 = int2x3(599356784, 185671342, 1932327391, 2025591013, 1257191721, 1312388500); + bool2x3 r0 = bool2x3(true, true, true, false, true, true); + TestUtils.AreEqual(a0 > b0, r0); + + int a1 = (1443698859); + int2x3 b1 = int2x3(779217735, 691047512, 741776730, 732565983, 668302204, 1556466996); + bool2x3 r1 = bool2x3(true, true, true, true, true, false); + TestUtils.AreEqual(a1 > b1, r1); + + int a2 = (858599525); + int2x3 b2 = int2x3(1896917159, 701542098, 1052151621, 1023307544, 1435392907, 1858177345); + bool2x3 r2 = bool2x3(false, true, false, false, false, false); + TestUtils.AreEqual(a2 > b2, r2); + + int a3 = (299897686); + int2x3 b3 = int2x3(632930355, 1387203601, 483722222, 863042711, 1713088900, 315569296); + bool2x3 r3 = bool2x3(false, false, false, false, false, false); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void int2x3_operator_less_equal_wide_wide() + { + int2x3 a0 = int2x3(1577248162, 2043073061, 1688380407, 176431985, 223299035, 1502802140); + int2x3 b0 = int2x3(903445031, 2108974565, 210822256, 1281704747, 453681718, 66138830); + bool2x3 r0 = bool2x3(false, true, false, true, true, false); + TestUtils.AreEqual(a0 <= b0, r0); + + int2x3 a1 = int2x3(1691709825, 386789394, 117182003, 1665770435, 1958490731, 420032601); + int2x3 b1 = int2x3(1229799377, 1620922595, 1715833766, 1366430432, 13102000, 46919981); + bool2x3 r1 = bool2x3(false, true, true, false, false, false); + TestUtils.AreEqual(a1 <= b1, r1); + + int2x3 a2 = int2x3(1251092689, 2011681765, 749743684, 183784440, 1150674774, 1633828822); + int2x3 b2 = int2x3(486470891, 1709514236, 2145785285, 854254454, 1273278658, 810263315); + bool2x3 r2 = bool2x3(false, false, true, true, true, false); + TestUtils.AreEqual(a2 <= b2, r2); + + int2x3 a3 = int2x3(1719442172, 336047314, 743733218, 1393995865, 1854442658, 1498138884); + int2x3 b3 = int2x3(1862773824, 201799013, 974166844, 1320622967, 2058099616, 522102017); + bool2x3 r3 = bool2x3(true, false, true, false, true, false); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void int2x3_operator_less_equal_wide_scalar() + { + int2x3 a0 = int2x3(1722165358, 1219858357, 860410743, 411099660, 348104022, 1963256951); + int b0 = (1688048545); + bool2x3 r0 = bool2x3(false, true, true, true, true, false); + TestUtils.AreEqual(a0 <= b0, r0); + + int2x3 a1 = int2x3(212084836, 1459242706, 1745758438, 532949158, 262559763, 690091301); + int b1 = (58924407); + bool2x3 r1 = bool2x3(false, false, false, false, false, false); + TestUtils.AreEqual(a1 <= b1, r1); + + int2x3 a2 = int2x3(1806172431, 1857173043, 1617221948, 2017733017, 804204255, 981729559); + int b2 = (2091514001); + bool2x3 r2 = bool2x3(true, true, true, true, true, true); + TestUtils.AreEqual(a2 <= b2, r2); + + int2x3 a3 = int2x3(2032949254, 2079225209, 26179915, 238796519, 1917813750, 1258115260); + int b3 = (910922522); + bool2x3 r3 = bool2x3(false, false, true, true, false, false); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void int2x3_operator_less_equal_scalar_wide() + { + int a0 = (1777585); + int2x3 b0 = int2x3(1181030049, 1787703989, 1729760948, 1816537388, 1359786460, 874999193); + bool2x3 r0 = bool2x3(true, true, true, true, true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + int a1 = (1678863148); + int2x3 b1 = int2x3(1711365839, 762067160, 11953554, 1131583906, 1175393186, 1293698493); + bool2x3 r1 = bool2x3(true, false, false, false, false, false); + TestUtils.AreEqual(a1 <= b1, r1); + + int a2 = (48893340); + int2x3 b2 = int2x3(66196247, 1958607116, 1576473309, 861890786, 478252419, 957887737); + bool2x3 r2 = bool2x3(true, true, true, true, true, true); + TestUtils.AreEqual(a2 <= b2, r2); + + int a3 = (117849810); + int2x3 b3 = int2x3(1348693584, 105489302, 259034238, 530713566, 601413850, 830430286); + bool2x3 r3 = bool2x3(true, false, true, true, true, true); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void int2x3_operator_greater_equal_wide_wide() + { + int2x3 a0 = int2x3(263000030, 744235661, 1893760267, 237248, 1062370984, 1676977687); + int2x3 b0 = int2x3(1395535146, 1178373944, 1237373760, 1364855321, 600811864, 362060472); + bool2x3 r0 = bool2x3(false, false, true, false, true, true); + TestUtils.AreEqual(a0 >= b0, r0); + + int2x3 a1 = int2x3(816766880, 1089431546, 1394493730, 1176473380, 1193988637, 1703862455); + int2x3 b1 = int2x3(290870624, 1839067862, 396958580, 1336888643, 1019684398, 1697684196); + bool2x3 r1 = bool2x3(true, false, true, false, true, true); + TestUtils.AreEqual(a1 >= b1, r1); + + int2x3 a2 = int2x3(1806186947, 1253571980, 589397635, 1951842887, 798931197, 808426484); + int2x3 b2 = int2x3(1227300220, 2044269675, 1898323839, 874509380, 1873505472, 1268843918); + bool2x3 r2 = bool2x3(true, false, false, true, false, false); + TestUtils.AreEqual(a2 >= b2, r2); + + int2x3 a3 = int2x3(744869638, 1959531616, 207430702, 1533946595, 1148381840, 2011549474); + int2x3 b3 = int2x3(1606949562, 1263896445, 1805518202, 1412091359, 1240330374, 1955056253); + bool2x3 r3 = bool2x3(false, true, false, true, false, true); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void int2x3_operator_greater_equal_wide_scalar() + { + int2x3 a0 = int2x3(2112791350, 1043657935, 101764761, 1529909067, 556026890, 281734132); + int b0 = (1470533736); + bool2x3 r0 = bool2x3(true, false, false, true, false, false); + TestUtils.AreEqual(a0 >= b0, r0); + + int2x3 a1 = int2x3(1186600258, 609211196, 1604309397, 829548642, 244604867, 1419295004); + int b1 = (815093894); + bool2x3 r1 = bool2x3(true, false, true, true, false, true); + TestUtils.AreEqual(a1 >= b1, r1); + + int2x3 a2 = int2x3(471843809, 1460027917, 1646290021, 196833647, 1596738181, 1905036391); + int b2 = (1819986195); + bool2x3 r2 = bool2x3(false, false, false, false, false, true); + TestUtils.AreEqual(a2 >= b2, r2); + + int2x3 a3 = int2x3(1771391775, 370941146, 440219668, 1607345862, 1449142607, 1223010129); + int b3 = (1584946560); + bool2x3 r3 = bool2x3(true, false, false, true, false, false); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void int2x3_operator_greater_equal_scalar_wide() + { + int a0 = (1525542481); + int2x3 b0 = int2x3(1503244746, 861711266, 817773856, 925984572, 571221723, 683686810); + bool2x3 r0 = bool2x3(true, true, true, true, true, true); + TestUtils.AreEqual(a0 >= b0, r0); + + int a1 = (118252990); + int2x3 b1 = int2x3(1653952090, 1240253990, 1947039008, 1869136019, 152012637, 1214546726); + bool2x3 r1 = bool2x3(false, false, false, false, false, false); + TestUtils.AreEqual(a1 >= b1, r1); + + int a2 = (917376832); + int2x3 b2 = int2x3(303549425, 2111728811, 945321577, 173706579, 625318949, 519443238); + bool2x3 r2 = bool2x3(true, false, false, true, true, true); + TestUtils.AreEqual(a2 >= b2, r2); + + int a3 = (1583588379); + int2x3 b3 = int2x3(1026799433, 1713083717, 394922760, 1216218189, 1336522452, 233894308); + bool2x3 r3 = bool2x3(true, false, true, true, true, true); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void int2x3_operator_add_wide_wide() + { + int2x3 a0 = int2x3(2049228671, 1658660009, 491719392, 937013355, 81108663, 1063894558); + int2x3 b0 = int2x3(2088751567, 645762023, 306868786, 4360271, 506047997, 2094559874); + int2x3 r0 = int2x3(-156987058, -1990545264, 798588178, 941373626, 587156660, -1136512864); + TestUtils.AreEqual(a0 + b0, r0); + + int2x3 a1 = int2x3(86954702, 843159721, 698977704, 192867135, 1683407172, 137301303); + int2x3 b1 = int2x3(1634712736, 1601474440, 1586485231, 908746788, 1812370320, 1247342357); + int2x3 r1 = int2x3(1721667438, -1850333135, -2009504361, 1101613923, -799189804, 1384643660); + TestUtils.AreEqual(a1 + b1, r1); + + int2x3 a2 = int2x3(2103582820, 526139155, 447937230, 2127411006, 1670579390, 1914969141); + int2x3 b2 = int2x3(2043773873, 223363428, 175115707, 985928617, 507662836, 1231457019); + int2x3 r2 = int2x3(-147610603, 749502583, 623052937, -1181627673, -2116725070, -1148541136); + TestUtils.AreEqual(a2 + b2, r2); + + int2x3 a3 = int2x3(997691756, 857841794, 2129024875, 267535529, 978891383, 657092366); + int2x3 b3 = int2x3(776127866, 607782424, 1160366210, 1384832242, 702057048, 703554905); + int2x3 r3 = int2x3(1773819622, 1465624218, -1005576211, 1652367771, 1680948431, 1360647271); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void int2x3_operator_add_wide_scalar() + { + int2x3 a0 = int2x3(2038218457, 134923711, 875689667, 1338884463, 997710928, 340490871); + int b0 = (2124409227); + int2x3 r0 = int2x3(-132339612, -2035634358, -1294868402, -831673606, -1172847141, -1830067198); + TestUtils.AreEqual(a0 + b0, r0); + + int2x3 a1 = int2x3(1067888129, 2003021861, 1635971971, 1160398286, 85446202, 1068152966); + int b1 = (70433301); + int2x3 r1 = int2x3(1138321430, 2073455162, 1706405272, 1230831587, 155879503, 1138586267); + TestUtils.AreEqual(a1 + b1, r1); + + int2x3 a2 = int2x3(1239387100, 1727477485, 1095438654, 756559204, 1818718931, 658923552); + int b2 = (1497676888); + int2x3 r2 = int2x3(-1557903308, -1069812923, -1701851754, -2040731204, -978571477, -2138366856); + TestUtils.AreEqual(a2 + b2, r2); + + int2x3 a3 = int2x3(1610518921, 692843300, 1068593469, 1704776233, 577782260, 736972565); + int b3 = (1585755398); + int2x3 r3 = int2x3(-1098692977, -2016368598, -1640618429, -1004435665, -2131429638, -1972239333); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void int2x3_operator_add_scalar_wide() + { + int a0 = (391092078); + int2x3 b0 = int2x3(519908870, 851424292, 328314822, 135622204, 740923360, 655394201); + int2x3 r0 = int2x3(911000948, 1242516370, 719406900, 526714282, 1132015438, 1046486279); + TestUtils.AreEqual(a0 + b0, r0); + + int a1 = (1451896269); + int2x3 b1 = int2x3(1781697072, 996031825, 1557774949, 779774940, 1111541302, 783046445); + int2x3 r1 = int2x3(-1061373955, -1847039202, -1285296078, -2063296087, -1731529725, -2060024582); + TestUtils.AreEqual(a1 + b1, r1); + + int a2 = (1130163944); + int2x3 b2 = int2x3(288279584, 1397683861, 1636583489, 673263339, 1469300874, 14855965); + int2x3 r2 = int2x3(1418443528, -1767119491, -1528219863, 1803427283, -1695502478, 1145019909); + TestUtils.AreEqual(a2 + b2, r2); + + int a3 = (1116636999); + int2x3 b3 = int2x3(1488863300, 1600990886, 190651301, 1307459768, 920085839, 2082229835); + int2x3 r3 = int2x3(-1689466997, -1577339411, 1307288300, -1870870529, 2036722838, -1096100462); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void int2x3_operator_sub_wide_wide() + { + int2x3 a0 = int2x3(1353441118, 797269833, 659988112, 56022121, 365847472, 2062899435); + int2x3 b0 = int2x3(1332656812, 1827794007, 972557431, 2078233689, 1508184327, 1372307701); + int2x3 r0 = int2x3(20784306, -1030524174, -312569319, -2022211568, -1142336855, 690591734); + TestUtils.AreEqual(a0 - b0, r0); + + int2x3 a1 = int2x3(1380988474, 799885138, 1306058185, 579775276, 1239163824, 344591081); + int2x3 b1 = int2x3(810327977, 936799885, 71562303, 1418723328, 1971342989, 1226053395); + int2x3 r1 = int2x3(570660497, -136914747, 1234495882, -838948052, -732179165, -881462314); + TestUtils.AreEqual(a1 - b1, r1); + + int2x3 a2 = int2x3(86359575, 1049709943, 721529513, 1767221271, 7652784, 545192611); + int2x3 b2 = int2x3(136565478, 1979903295, 600719425, 837912956, 632054793, 711091688); + int2x3 r2 = int2x3(-50205903, -930193352, 120810088, 929308315, -624402009, -165899077); + TestUtils.AreEqual(a2 - b2, r2); + + int2x3 a3 = int2x3(176298787, 1477774126, 1426963688, 2032787858, 2059525977, 445200454); + int2x3 b3 = int2x3(904695656, 1640069560, 750244414, 1385118097, 1102391291, 1221949855); + int2x3 r3 = int2x3(-728396869, -162295434, 676719274, 647669761, 957134686, -776749401); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void int2x3_operator_sub_wide_scalar() + { + int2x3 a0 = int2x3(1176369558, 1934521195, 309452150, 1417634074, 108910717, 1306356714); + int b0 = (462232403); + int2x3 r0 = int2x3(714137155, 1472288792, -152780253, 955401671, -353321686, 844124311); + TestUtils.AreEqual(a0 - b0, r0); + + int2x3 a1 = int2x3(1502312334, 281174200, 87530840, 1913724431, 2041593336, 557239990); + int b1 = (1451794815); + int2x3 r1 = int2x3(50517519, -1170620615, -1364263975, 461929616, 589798521, -894554825); + TestUtils.AreEqual(a1 - b1, r1); + + int2x3 a2 = int2x3(1119051448, 819090189, 816382635, 815920639, 1829033117, 1792801932); + int b2 = (1590376732); + int2x3 r2 = int2x3(-471325284, -771286543, -773994097, -774456093, 238656385, 202425200); + TestUtils.AreEqual(a2 - b2, r2); + + int2x3 a3 = int2x3(1113440549, 1277257189, 2092779398, 642236742, 1605250794, 819644478); + int b3 = (1418937976); + int2x3 r3 = int2x3(-305497427, -141680787, 673841422, -776701234, 186312818, -599293498); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void int2x3_operator_sub_scalar_wide() + { + int a0 = (1691534405); + int2x3 b0 = int2x3(2022393810, 1612688515, 496689713, 887037586, 2097630964, 374934538); + int2x3 r0 = int2x3(-330859405, 78845890, 1194844692, 804496819, -406096559, 1316599867); + TestUtils.AreEqual(a0 - b0, r0); + + int a1 = (939035482); + int2x3 b1 = int2x3(935242277, 1789300421, 264712893, 1231856067, 1818112748, 1428436109); + int2x3 r1 = int2x3(3793205, -850264939, 674322589, -292820585, -879077266, -489400627); + TestUtils.AreEqual(a1 - b1, r1); + + int a2 = (1258745460); + int2x3 b2 = int2x3(1077380396, 1330722719, 518111829, 967128529, 344666254, 1082267918); + int2x3 r2 = int2x3(181365064, -71977259, 740633631, 291616931, 914079206, 176477542); + TestUtils.AreEqual(a2 - b2, r2); + + int a3 = (907866696); + int2x3 b3 = int2x3(1816885123, 460340568, 962154498, 557113461, 1701216709, 1980098777); + int2x3 r3 = int2x3(-909018427, 447526128, -54287802, 350753235, -793350013, -1072232081); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void int2x3_operator_mul_wide_wide() + { + int2x3 a0 = int2x3(245827027, 208934650, 1019478917, 568231809, 877289039, 1585782440); + int2x3 b0 = int2x3(759663997, 350129201, 477450108, 1635735015, 388710278, 757722665); + int2x3 r0 = int2x3(-632811769, 1402281434, 332447596, -1932977561, -1670918566, 1455036648); + TestUtils.AreEqual(a0 * b0, r0); + + int2x3 a1 = int2x3(2111178729, 1186019069, 571481445, 1570087048, 629447153, 619383734); + int2x3 b1 = int2x3(1509388321, 1841703980, 1826369331, 1524322467, 1605207974, 428419155); + int2x3 r1 = int2x3(2128344329, -594088068, -1654168033, 2093463192, -1207506618, -1133560830); + TestUtils.AreEqual(a1 * b1, r1); + + int2x3 a2 = int2x3(2055121568, 700402816, 263414349, 187830569, 2048056680, 546694675); + int2x3 b2 = int2x3(1460605791, 1968043860, 771161742, 2037340417, 322304267, 651448359); + int2x3 r2 = int2x3(990589280, -938173952, -1341723466, 1156600361, 649177976, 678952165); + TestUtils.AreEqual(a2 * b2, r2); + + int2x3 a3 = int2x3(853585367, 933370718, 990212476, 1915885905, 1984212358, 368146234); + int2x3 b3 = int2x3(1608326767, 1427155898, 1092185338, 665119139, 223634707, 694718952); + int2x3 r3 = int2x3(1063621177, -1611682740, -2142428392, -573253741, -1652113678, 1626072720); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void int2x3_operator_mul_wide_scalar() + { + int2x3 a0 = int2x3(1762033447, 465343930, 1570757881, 1326409563, 1824319147, 1356578909); + int b0 = (1476837906); + int2x3 r0 = int2x3(-1313177922, 1326807828, -2138555518, -276153754, -65548794, -1318584182); + TestUtils.AreEqual(a0 * b0, r0); + + int2x3 a1 = int2x3(72749215, 975743632, 573770299, 1958912969, 971327747, 1818877398); + int b1 = (154616909); + int2x3 r1 = int2x3(1400257491, 7966032, 499040191, 322676597, 469811687, -373386914); + TestUtils.AreEqual(a1 * b1, r1); + + int2x3 a2 = int2x3(1324050764, 1279757657, 391009467, 1186856590, 890343818, 800117742); + int b2 = (660611671); + int2x3 r2 = int2x3(645718228, -42542273, -1778409075, 1570790978, -133379610, 1820172770); + TestUtils.AreEqual(a2 * b2, r2); + + int2x3 a3 = int2x3(606927173, 1688964615, 1439447294, 387721300, 1192501703, 1613845584); + int b3 = (1338014500); + int2x3 r3 = int2x3(-254331724, 1134384636, 1352273336, -229242928, 1766808828, 645024576); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void int2x3_operator_mul_scalar_wide() + { + int a0 = (99541948); + int2x3 b0 = int2x3(1764461774, 657072478, 1459784358, 1610646683, 1632058826, 868441654); + int2x3 r0 = int2x3(-950398648, -102049016, 1260585960, 1158730452, -1606056, -466153048); + TestUtils.AreEqual(a0 * b0, r0); + + int a1 = (1408757883); + int2x3 b1 = int2x3(335917146, 2105124483, 1178393968, 1963904348, 1409533767, 243286231); + int2x3 r1 = int2x3(1223039806, 1995624689, -974691120, 375843636, 858017565, 2027534157); + TestUtils.AreEqual(a1 * b1, r1); + + int a2 = (1336308795); + int2x3 b2 = int2x3(517963367, 1733623488, 459880225, 994616533, 1420531535, 1821413700); + int2x3 r2 = int2x3(580046269, -997870016, -325015397, 831291671, -1034573003, -1254339924); + TestUtils.AreEqual(a2 * b2, r2); + + int a3 = (677771573); + int2x3 b3 = int2x3(2132626845, 1158827713, 640102997, 944551639, 1323243330, 1186460236); + int2x3 r3 = int2x3(-125843839, 1435043573, 698030233, 9173379, -824638806, 113055164); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void int2x3_operator_div_wide_wide() + { + int2x3 a0 = int2x3(1590198532, 507812502, 126627032, 1058247011, 427387861, 290676154); + int2x3 b0 = int2x3(1434703236, 911965201, 390415521, 128746927, 525835375, 816946613); + int2x3 r0 = int2x3(1, 0, 0, 8, 0, 0); + TestUtils.AreEqual(a0 / b0, r0); + + int2x3 a1 = int2x3(1829594484, 1127868739, 499016351, 1341209632, 134906097, 785470242); + int2x3 b1 = int2x3(878264647, 146789678, 2089524057, 254213018, 1916850021, 1737806518); + int2x3 r1 = int2x3(2, 7, 0, 5, 0, 0); + TestUtils.AreEqual(a1 / b1, r1); + + int2x3 a2 = int2x3(788249865, 1099825433, 1552968283, 1822367139, 1021812060, 1937073018); + int2x3 b2 = int2x3(1906634983, 437754923, 825037958, 902508708, 896853614, 49452028); + int2x3 r2 = int2x3(0, 2, 1, 2, 1, 39); + TestUtils.AreEqual(a2 / b2, r2); + + int2x3 a3 = int2x3(645757349, 1097576782, 1246027674, 1152153253, 1900577195, 172149343); + int2x3 b3 = int2x3(1921327824, 787000669, 1032149621, 858558868, 1422112429, 837098844); + int2x3 r3 = int2x3(0, 1, 1, 1, 1, 0); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void int2x3_operator_div_wide_scalar() + { + int2x3 a0 = int2x3(560951562, 1218680769, 375341724, 1613542090, 1919409166, 1397425408); + int b0 = (947861580); + int2x3 r0 = int2x3(0, 1, 0, 1, 2, 1); + TestUtils.AreEqual(a0 / b0, r0); + + int2x3 a1 = int2x3(1349573078, 341995568, 495895326, 1515313790, 1676971657, 2131487088); + int b1 = (524526253); + int2x3 r1 = int2x3(2, 0, 0, 2, 3, 4); + TestUtils.AreEqual(a1 / b1, r1); + + int2x3 a2 = int2x3(2105094094, 542666029, 1646044372, 1447236569, 107215658, 19616726); + int b2 = (1017891310); + int2x3 r2 = int2x3(2, 0, 1, 1, 0, 0); + TestUtils.AreEqual(a2 / b2, r2); + + int2x3 a3 = int2x3(896899915, 1249475421, 1486968988, 1738891885, 1919705924, 1244966864); + int b3 = (707389627); + int2x3 r3 = int2x3(1, 1, 2, 2, 2, 1); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void int2x3_operator_div_scalar_wide() + { + int a0 = (1161272038); + int2x3 b0 = int2x3(187325733, 1594107378, 2016183849, 1589343709, 388768753, 1417077283); + int2x3 r0 = int2x3(6, 0, 0, 0, 2, 0); + TestUtils.AreEqual(a0 / b0, r0); + + int a1 = (1773486938); + int2x3 b1 = int2x3(1154044032, 81831373, 1476877645, 653688843, 45756703, 631027637); + int2x3 r1 = int2x3(1, 21, 1, 2, 38, 2); + TestUtils.AreEqual(a1 / b1, r1); + + int a2 = (396671391); + int2x3 b2 = int2x3(784365696, 1250594097, 1818363859, 1653451772, 270557729, 48974453); + int2x3 r2 = int2x3(0, 0, 0, 0, 1, 8); + TestUtils.AreEqual(a2 / b2, r2); + + int a3 = (1796936382); + int2x3 b3 = int2x3(1427856423, 981056957, 1955700573, 705450043, 1054404890, 351914083); + int2x3 r3 = int2x3(1, 1, 0, 2, 1, 5); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void int2x3_operator_mod_wide_wide() + { + int2x3 a0 = int2x3(146150818, 1846543305, 1071447756, 308965362, 659881575, 1002365460); + int2x3 b0 = int2x3(983050390, 771341152, 942375212, 367361754, 749500619, 750718852); + int2x3 r0 = int2x3(146150818, 303861001, 129072544, 308965362, 659881575, 251646608); + TestUtils.AreEqual(a0 % b0, r0); + + int2x3 a1 = int2x3(861198439, 1510617532, 778525078, 1458458044, 101987897, 1249565173); + int2x3 b1 = int2x3(2095151755, 88438806, 769227442, 647214624, 1026513788, 1544950956); + int2x3 r1 = int2x3(861198439, 7157830, 9297636, 164028796, 101987897, 1249565173); + TestUtils.AreEqual(a1 % b1, r1); + + int2x3 a2 = int2x3(938026607, 1692541775, 1518877124, 1806965510, 1325139851, 994457255); + int2x3 b2 = int2x3(160166322, 1099108075, 1158422232, 1798905209, 164686701, 327889784); + int2x3 r2 = int2x3(137194997, 593433700, 360454892, 8060301, 7646243, 10787903); + TestUtils.AreEqual(a2 % b2, r2); + + int2x3 a3 = int2x3(1372400564, 1770508529, 100255877, 452674793, 1545968777, 629019189); + int2x3 b3 = int2x3(1082162785, 1213537518, 608481038, 329133821, 1824387961, 1223426748); + int2x3 r3 = int2x3(290237779, 556971011, 100255877, 123540972, 1545968777, 629019189); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void int2x3_operator_mod_wide_scalar() + { + int2x3 a0 = int2x3(164800505, 1062177828, 1898749675, 1701653318, 820393245, 19002208); + int b0 = (883951171); + int2x3 r0 = int2x3(164800505, 178226657, 130847333, 817702147, 820393245, 19002208); + TestUtils.AreEqual(a0 % b0, r0); + + int2x3 a1 = int2x3(128329633, 896587769, 405208598, 1982762194, 959236935, 712321026); + int b1 = (1464010899); + int2x3 r1 = int2x3(128329633, 896587769, 405208598, 518751295, 959236935, 712321026); + TestUtils.AreEqual(a1 % b1, r1); + + int2x3 a2 = int2x3(172564850, 1085897743, 1607489717, 165478511, 647846716, 915707999); + int b2 = (1540068445); + int2x3 r2 = int2x3(172564850, 1085897743, 67421272, 165478511, 647846716, 915707999); + TestUtils.AreEqual(a2 % b2, r2); + + int2x3 a3 = int2x3(1602830401, 1084934806, 488509689, 2087820912, 377501313, 1778384846); + int b3 = (928191283); + int2x3 r3 = int2x3(674639118, 156743523, 488509689, 231438346, 377501313, 850193563); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void int2x3_operator_mod_scalar_wide() + { + int a0 = (242383789); + int2x3 b0 = int2x3(740000543, 1556450291, 1104736385, 437976569, 1911837205, 1507212038); + int2x3 r0 = int2x3(242383789, 242383789, 242383789, 242383789, 242383789, 242383789); + TestUtils.AreEqual(a0 % b0, r0); + + int a1 = (1906405167); + int2x3 b1 = int2x3(247693265, 293460573, 1495295166, 873323603, 530681233, 1298102643); + int2x3 r1 = int2x3(172552312, 145641729, 411110001, 159757961, 314361468, 608302524); + TestUtils.AreEqual(a1 % b1, r1); + + int a2 = (2057984657); + int2x3 b2 = int2x3(1000742091, 1461372131, 1859742342, 797184687, 821888842, 1083192997); + int2x3 r2 = int2x3(56500475, 596612526, 198242315, 463615283, 414206973, 974791660); + TestUtils.AreEqual(a2 % b2, r2); + + int a3 = (840114986); + int2x3 b3 = int2x3(1894865954, 615159964, 1485575122, 2028738, 2122220318, 164578061); + int2x3 r3 = int2x3(840114986, 224955022, 840114986, 217454, 840114986, 17224681); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void int2x3_operator_plus() + { + int2x3 a0 = int2x3(1643476803, 907898539, 379615839, 1140483021, 1735287433, 1743199272); + int2x3 r0 = int2x3(1643476803, 907898539, 379615839, 1140483021, 1735287433, 1743199272); + TestUtils.AreEqual(+a0, r0); + + int2x3 a1 = int2x3(1472881565, 401565897, 1287765427, 849339193, 174532915, 1864850812); + int2x3 r1 = int2x3(1472881565, 401565897, 1287765427, 849339193, 174532915, 1864850812); + TestUtils.AreEqual(+a1, r1); + + int2x3 a2 = int2x3(1566098441, 1615499926, 2049663954, 1723005749, 409076474, 591286416); + int2x3 r2 = int2x3(1566098441, 1615499926, 2049663954, 1723005749, 409076474, 591286416); + TestUtils.AreEqual(+a2, r2); + + int2x3 a3 = int2x3(1706631096, 1808261782, 1201290141, 82958939, 308695413, 1575280693); + int2x3 r3 = int2x3(1706631096, 1808261782, 1201290141, 82958939, 308695413, 1575280693); + TestUtils.AreEqual(+a3, r3); + } + + [TestCompiler] + public static void int2x3_operator_neg() + { + int2x3 a0 = int2x3(1955022112, 662160019, 370300775, 2141283773, 1004505619, 28153593); + int2x3 r0 = int2x3(-1955022112, -662160019, -370300775, -2141283773, -1004505619, -28153593); + TestUtils.AreEqual(-a0, r0); + + int2x3 a1 = int2x3(33894270, 1115028238, 1636274969, 694995093, 1542206286, 213087293); + int2x3 r1 = int2x3(-33894270, -1115028238, -1636274969, -694995093, -1542206286, -213087293); + TestUtils.AreEqual(-a1, r1); + + int2x3 a2 = int2x3(243937487, 841085242, 574159094, 1687250035, 2057919693, 1175014732); + int2x3 r2 = int2x3(-243937487, -841085242, -574159094, -1687250035, -2057919693, -1175014732); + TestUtils.AreEqual(-a2, r2); + + int2x3 a3 = int2x3(1259809073, 1190569920, 2047955772, 2120729864, 1440774928, 1485596454); + int2x3 r3 = int2x3(-1259809073, -1190569920, -2047955772, -2120729864, -1440774928, -1485596454); + TestUtils.AreEqual(-a3, r3); + } + + [TestCompiler] + public static void int2x3_operator_prefix_inc() + { + int2x3 a0 = int2x3(864455342, 2035793213, 1275443862, 971919915, 411610189, 446210725); + int2x3 r0 = int2x3(864455343, 2035793214, 1275443863, 971919916, 411610190, 446210726); + TestUtils.AreEqual(++a0, r0); + + int2x3 a1 = int2x3(395072276, 913293639, 432884105, 1208161871, 1385544935, 1835605516); + int2x3 r1 = int2x3(395072277, 913293640, 432884106, 1208161872, 1385544936, 1835605517); + TestUtils.AreEqual(++a1, r1); + + int2x3 a2 = int2x3(831396561, 696475402, 1786514683, 993189311, 752093909, 1622410417); + int2x3 r2 = int2x3(831396562, 696475403, 1786514684, 993189312, 752093910, 1622410418); + TestUtils.AreEqual(++a2, r2); + + int2x3 a3 = int2x3(1398865015, 1705625817, 609525897, 172599489, 504806865, 519296647); + int2x3 r3 = int2x3(1398865016, 1705625818, 609525898, 172599490, 504806866, 519296648); + TestUtils.AreEqual(++a3, r3); + } + + [TestCompiler] + public static void int2x3_operator_postfix_inc() + { + int2x3 a0 = int2x3(1751003569, 2063707595, 1500486291, 969189211, 1007848192, 2028651936); + int2x3 r0 = int2x3(1751003569, 2063707595, 1500486291, 969189211, 1007848192, 2028651936); + TestUtils.AreEqual(a0++, r0); + + int2x3 a1 = int2x3(1643023524, 1396179607, 708474528, 177416855, 1524860667, 1408994706); + int2x3 r1 = int2x3(1643023524, 1396179607, 708474528, 177416855, 1524860667, 1408994706); + TestUtils.AreEqual(a1++, r1); + + int2x3 a2 = int2x3(375284401, 1676086778, 717006530, 506142468, 732199129, 2026873940); + int2x3 r2 = int2x3(375284401, 1676086778, 717006530, 506142468, 732199129, 2026873940); + TestUtils.AreEqual(a2++, r2); + + int2x3 a3 = int2x3(130175844, 420613464, 1219979307, 586574160, 357567451, 1468020171); + int2x3 r3 = int2x3(130175844, 420613464, 1219979307, 586574160, 357567451, 1468020171); + TestUtils.AreEqual(a3++, r3); + } + + [TestCompiler] + public static void int2x3_operator_prefix_dec() + { + int2x3 a0 = int2x3(200904609, 871077500, 968578728, 638967721, 1995396216, 435367037); + int2x3 r0 = int2x3(200904608, 871077499, 968578727, 638967720, 1995396215, 435367036); + TestUtils.AreEqual(--a0, r0); + + int2x3 a1 = int2x3(1782514098, 1434377580, 596759698, 1699290403, 1758478358, 1914114460); + int2x3 r1 = int2x3(1782514097, 1434377579, 596759697, 1699290402, 1758478357, 1914114459); + TestUtils.AreEqual(--a1, r1); + + int2x3 a2 = int2x3(71237375, 1022184392, 1310293956, 356565557, 18299409, 906734601); + int2x3 r2 = int2x3(71237374, 1022184391, 1310293955, 356565556, 18299408, 906734600); + TestUtils.AreEqual(--a2, r2); + + int2x3 a3 = int2x3(799006218, 1040798388, 1469596990, 1719228297, 220897829, 1454322707); + int2x3 r3 = int2x3(799006217, 1040798387, 1469596989, 1719228296, 220897828, 1454322706); + TestUtils.AreEqual(--a3, r3); + } + + [TestCompiler] + public static void int2x3_operator_postfix_dec() + { + int2x3 a0 = int2x3(283970262, 1109329936, 1073216143, 649439137, 1932646215, 1174104498); + int2x3 r0 = int2x3(283970262, 1109329936, 1073216143, 649439137, 1932646215, 1174104498); + TestUtils.AreEqual(a0--, r0); + + int2x3 a1 = int2x3(484207852, 691209285, 2017728859, 802721301, 377162390, 526366486); + int2x3 r1 = int2x3(484207852, 691209285, 2017728859, 802721301, 377162390, 526366486); + TestUtils.AreEqual(a1--, r1); + + int2x3 a2 = int2x3(1504625034, 60677868, 1867810045, 2095777993, 670715645, 324944916); + int2x3 r2 = int2x3(1504625034, 60677868, 1867810045, 2095777993, 670715645, 324944916); + TestUtils.AreEqual(a2--, r2); + + int2x3 a3 = int2x3(242636153, 1316734088, 1030072405, 1751972064, 1868889881, 1726583208); + int2x3 r3 = int2x3(242636153, 1316734088, 1030072405, 1751972064, 1868889881, 1726583208); + TestUtils.AreEqual(a3--, r3); + } + + [TestCompiler] + public static void int2x3_operator_bitwise_and_wide_wide() + { + int2x3 a0 = int2x3(779935043, 1097962163, 1939593304, 800599247, 952140918, 782792558); + int2x3 b0 = int2x3(307705143, 1710882162, 866836769, 532490608, 679371720, 1794035877); + int2x3 r0 = int2x3(39064835, 1097961522, 864731136, 263727168, 675283008, 715673636); + TestUtils.AreEqual(a0 & b0, r0); + + int2x3 a1 = int2x3(1608557706, 396446406, 2039894114, 1286974642, 442394124, 1759739564); + int2x3 b1 = int2x3(1439832202, 519529812, 23633139, 1209152681, 646737179, 1255867027); + int2x3 r1 = int2x3(1438646410, 379666500, 16781410, 1209017504, 34366472, 1220739712); + TestUtils.AreEqual(a1 & b1, r1); + + int2x3 a2 = int2x3(233435438, 665207770, 1942050241, 1022352952, 60340400, 329119345); + int2x3 b2 = int2x3(1900854122, 413173763, 1409138251, 2087190272, 563439483, 354579077); + int2x3 r2 = int2x3(21541162, 10485762, 1405162561, 1013440000, 26222640, 285241857); + TestUtils.AreEqual(a2 & b2, r2); + + int2x3 a3 = int2x3(406517382, 1126764634, 343425836, 1957552749, 1624478957, 341972372); + int2x3 b3 = int2x3(642224854, 1650432515, 755290290, 902865191, 661389406, 2134212586); + int2x3 r3 = int2x3(168582, 1107890178, 67125280, 880844837, 541065292, 337646976); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void int2x3_operator_bitwise_and_wide_scalar() + { + int2x3 a0 = int2x3(443615469, 490057985, 2042441263, 1524760558, 1405175110, 510212004); + int b0 = (93423598); + int2x3 r0 = int2x3(1114348, 85033216, 26281518, 8488942, 25232710, 67176356); + TestUtils.AreEqual(a0 & b0, r0); + + int2x3 a1 = int2x3(1941875181, 1365509729, 428270198, 607982857, 650270920, 1249238550); + int b1 = (1236735839); + int2x3 r1 = int2x3(1102446925, 1092879937, 159777366, 3478793, 8523848, 1211438614); + TestUtils.AreEqual(a1 & b1, r1); + + int2x3 a2 = int2x3(814629680, 143502472, 861733033, 1408932942, 957693145, 1567715668); + int b2 = (1862276471); + int2x3 r2 = int2x3(536871216, 134218752, 587202593, 1124078662, 687871057, 1291850068); + TestUtils.AreEqual(a2 & b2, r2); + + int2x3 a3 = int2x3(1102952410, 1599352836, 208656708, 1272226025, 462670926, 1817145060); + int b3 = (322053683); + int2x3 r3 = int2x3(19932690, 319823872, 2228224, 51388449, 319947778, 140832); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void int2x3_operator_bitwise_and_scalar_wide() + { + int a0 = (1144543590); + int2x3 b0 = int2x3(420346723, 562416448, 1393127318, 1560699552, 851218057, 703880958); + int2x3 r0 = int2x3(547170, 18752, 1074284806, 1140867104, 3672064, 3168358); + TestUtils.AreEqual(a0 & b0, r0); + + int a1 = (1159378889); + int2x3 b1 = int2x3(2031211279, 1089518981, 270607307, 1349288930, 520199596, 1763483957); + int2x3 r1 = int2x3(1091605257, 1074836865, 9161, 1074299840, 83924360, 1092133121); + TestUtils.AreEqual(a1 & b1, r1); + + int a2 = (1248975349); + int2x3 b2 = int2x3(236938635, 185023291, 1085233038, 1845693112, 946052961, 1436238522); + int2x3 r2 = int2x3(168903041, 167844145, 1075925380, 1241581744, 140613985, 1074872496); + TestUtils.AreEqual(a2 & b2, r2); + + int a3 = (2042776519); + int2x3 b3 = int2x3(56356886, 1770159840, 1872339579, 1439201366, 1233066417, 1214109404); + int2x3 r3 = int2x3(21118982, 1770146496, 1769996867, 1371555910, 1229064577, 1212170948); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void int2x3_operator_bitwise_or_wide_wide() + { + int2x3 a0 = int2x3(1731159103, 659068416, 382702471, 1821032196, 1565773438, 1004000514); + int2x3 b0 = int2x3(1583847161, 692672727, 1161585489, 1756207130, 1321374429, 1287357212); + int2x3 r0 = int2x3(2138044159, 793370327, 1476391895, 1823457054, 1607720703, 2147473182); + TestUtils.AreEqual(a0 | b0, r0); + + int2x3 a1 = int2x3(948501377, 600951835, 669346222, 396691477, 2108560248, 2117522137); + int2x3 b1 = int2x3(2075767170, 1273513430, 1610830169, 1316929125, 511625048, 573925879); + int2x3 r1 = int2x3(2075786115, 1811533279, 1743223295, 1610595957, 2147407736, 2117598207); + TestUtils.AreEqual(a1 | b1, r1); + + int2x3 a2 = int2x3(330307355, 818676817, 1774459567, 1117506257, 1254511182, 1017865993); + int2x3 b2 = int2x3(1502255628, 1841676448, 1682928938, 1115131952, 1541423910, 1416096228); + int2x3 r2 = int2x3(1538957087, 2110637297, 1842315183, 1124063985, 1541821294, 2096099309); + TestUtils.AreEqual(a2 | b2, r2); + + int2x3 a3 = int2x3(1883021644, 1140203470, 759288967, 2122744307, 335621148, 715028074); + int2x3 b3 = int2x3(188606371, 1041599540, 219545389, 560097663, 1087543661, 936383841); + int2x3 r3 = int2x3(2067654639, 2146934782, 760610735, 2145839615, 1423162749, 1071544171); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void int2x3_operator_bitwise_or_wide_scalar() + { + int2x3 a0 = int2x3(961259683, 471103264, 1733389229, 1591585258, 386953869, 1148351449); + int b0 = (1666102508); + int2x3 r0 = int2x3(2068823279, 2136930284, 1734344685, 2145369582, 2002712301, 1736374269); + TestUtils.AreEqual(a0 | b0, r0); + + int2x3 a1 = int2x3(1048929715, 860336789, 1637162093, 1227888278, 774029856, 879300408); + int b1 = (1814263250); + int2x3 r1 = int2x3(2124903923, 2137520087, 1840741887, 1832089558, 1847850994, 2087419898); + TestUtils.AreEqual(a1 | b1, r1); + + int2x3 a2 = int2x3(1179087439, 1977614655, 46921989, 1980838747, 284225881, 64304104); + int b2 = (797240690); + int2x3 r2 = int2x3(1875378047, 2145709439, 802159991, 2140536699, 1073020283, 802553850); + TestUtils.AreEqual(a2 | b2, r2); + + int2x3 a3 = int2x3(313591807, 1890090886, 521303722, 2021379070, 2055963359, 1511253082); + int b3 = (1393862490); + int2x3 r3 = int2x3(1404413951, 1941766110, 1595340794, 2071982078, 2074060767, 1528293210); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void int2x3_operator_bitwise_or_scalar_wide() + { + int a0 = (1213433101); + int2x3 b0 = int2x3(1212928242, 1614462616, 936937728, 764766995, 306352095, 574719481); + int2x3 r0 = int2x3(1213978111, 1752940445, 2145094925, 1842867999, 1515425759, 1783858685); + TestUtils.AreEqual(a0 | b0, r0); + + int a1 = (1283571271); + int2x3 b1 = int2x3(2109131012, 979469710, 1348323481, 1407542578, 697517649, 1059093741); + int2x3 r1 = int2x3(2109210439, 2128723919, 1558052575, 1608908663, 1838415447, 2141322991); + TestUtils.AreEqual(a1 | b1, r1); + + int a2 = (627815046); + int2x3 b2 = int2x3(418822515, 83214352, 424663473, 447949225, 527022375, 1947148461); + int2x3 r2 = int2x3(1040169975, 637530774, 1030749111, 1073462191, 1064024999, 1970254511); + TestUtils.AreEqual(a2 | b2, r2); + + int a3 = (305251437); + int2x3 b3 = int2x3(1254601325, 1752329425, 1592402684, 1587055329, 1088734150, 298563808); + int2x3 r3 = int2x3(1526199917, 2054417661, 1593566973, 1589235437, 1391839215, 335281389); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void int2x3_operator_bitwise_xor_wide_wide() + { + int2x3 a0 = int2x3(1556324760, 207002929, 1843444873, 1632079131, 1460334334, 1607815585); + int2x3 b0 = int2x3(1054997548, 1523759632, 251164872, 110472397, 384031112, 1109163205); + int2x3 r0 = int2x3(1646419380, 1451501345, 1662567489, 1741824470, 1105803126, 499723620); + TestUtils.AreEqual(a0 ^ b0, r0); + + int2x3 a1 = int2x3(220623650, 38668553, 47193340, 643663548, 1371932564, 94957188); + int2x3 b1 = int2x3(535118981, 179106262, 1523031711, 1713313372, 1294118730, 520360641); + int2x3 r1 = int2x3(314783655, 149092575, 1477935715, 1078104288, 484747486, 447544389); + TestUtils.AreEqual(a1 ^ b1, r1); + + int2x3 a2 = int2x3(700973621, 370621508, 2087573076, 351476570, 1340815927, 681577472); + int2x3 b2 = int2x3(1040688781, 1020757245, 1143954843, 1281933464, 175288469, 326874157); + int2x3 r2 = int2x3(399484088, 717273273, 943885263, 1486609346, 1167690402, 1004255277); + TestUtils.AreEqual(a2 ^ b2, r2); + + int2x3 a3 = int2x3(314138777, 446857644, 1368661599, 1672499683, 1259759761, 2049102405); + int2x3 b3 = int2x3(1192052687, 1087083643, 1900865484, 1521193463, 569695524, 1622101483); + int2x3 r3 = int2x3(1437869910, 1516836311, 551090579, 958119956, 1793242549, 445489070); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void int2x3_operator_bitwise_xor_wide_scalar() + { + int2x3 a0 = int2x3(2124666952, 177397845, 574879617, 1937385541, 1136545648, 213863690); + int b0 = (493665894); + int2x3 r0 = int2x3(1674536494, 402546227, 1060063719, 1846973987, 1590882582, 299103084); + TestUtils.AreEqual(a0 ^ b0, r0); + + int2x3 a1 = int2x3(535061373, 1305234431, 353786540, 1308626970, 1267729267, 125659640); + int b1 = (289301586); + int2x3 r1 = int2x3(249169711, 1559375789, 69746430, 1597928520, 1521379105, 373493162); + TestUtils.AreEqual(a1 ^ b1, r1); + + int2x3 a2 = int2x3(1315625690, 116862046, 375757978, 491079274, 191750702, 187129429); + int b2 = (1730088797); + int2x3 r2 = int2x3(695588231, 1642603267, 1903858631, 2052737335, 1819471219, 1815630088); + TestUtils.AreEqual(a2 ^ b2, r2); + + int2x3 a3 = int2x3(967051293, 653124416, 788984, 1479174924, 1680011736, 447453839); + int b3 = (549951551); + int2x3 r3 = int2x3(425955362, 103447423, 550212039, 2028860211, 1155885543, 980157104); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void int2x3_operator_bitwise_xor_scalar_wide() + { + int a0 = (1288453276); + int2x3 b0 = int2x3(1077599928, 884741329, 212164516, 1585020328, 152985454, 1775851275); + int2x3 r0 = int2x3(217506340, 2020616269, 1080648504, 313868596, 1171416050, 622160791); + TestUtils.AreEqual(a0 ^ b0, r0); + + int a1 = (1416249064); + int2x3 b1 = int2x3(1309317737, 1773918217, 1509843030, 1206045972, 1154916424, 1947871003); + int2x3 r1 = int2x3(442541185, 1037166305, 227827390, 327742460, 280796832, 544217587); + TestUtils.AreEqual(a1 ^ b1, r1); + + int a2 = (1774252400); + int2x3 b2 = int2x3(1946113778, 1079717492, 290620937, 1382343363, 939045099, 1309568053); + int2x3 r2 = int2x3(440379266, 698081028, 2022864761, 1000608691, 1580745115, 667852101); + TestUtils.AreEqual(a2 ^ b2, r2); + + int a3 = (221134131); + int2x3 b3 = int2x3(885841718, 612068188, 194068085, 1396957881, 573581481, 1813817520); + int2x3 r3 = int2x3(971170309, 693458543, 113181510, 1584258954, 790500762, 1630705027); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void int2x3_operator_left_shift() + { + int2x3 a0 = int2x3(197771193, 622182602, 1283988958, 1327917304, 473415985, 432425717); + int b0 = (1321149625); + int2x3 r0 = int2x3(1912602624, -1811939328, -1140850688, -268435456, 1644167168, -369098752); + TestUtils.AreEqual(a0 << b0, r0); + + int2x3 a1 = int2x3(870301196, 1200694230, 1531607705, 1360008038, 1008296534, 1447702302); + int b1 = (2058433484); + int2x3 r1 = int2x3(-69156864, 306012160, -1482059776, 20340736, -1775935488, -1561206784); + TestUtils.AreEqual(a1 << b1, r1); + + int2x3 a2 = int2x3(1079614371, 1664454606, 2045594989, 2077023268, 592678686, 297755411); + int b2 = (35667343); + int2x3 r2 = int2x3(-841908224, -941162496, -1497989120, 1846673408, -946929664, -1316388864); + TestUtils.AreEqual(a2 << b2, r2); + + int2x3 a3 = int2x3(1722762487, 37265945, 997793693, 1521705181, 263886278, 221147365); + int b3 = (1161625759); + int2x3 r3 = int2x3(-2147483648, -2147483648, -2147483648, -2147483648, 0, -2147483648); + TestUtils.AreEqual(a3 << b3, r3); + } + + [TestCompiler] + public static void int2x3_operator_right_shift() + { + int2x3 a0 = int2x3(548167301, 1161338299, 1617625829, 1860731847, 713958715, 196552656); + int b0 = (1266801540); + int2x3 r0 = int2x3(34260456, 72583643, 101101614, 116295740, 44622419, 12284541); + TestUtils.AreEqual(a0 >> b0, r0); + + int2x3 a1 = int2x3(770466193, 572763124, 506619530, 426807581, 2031319045, 701927980); + int b1 = (1265099998); + int2x3 r1 = int2x3(0, 0, 0, 0, 1, 0); + TestUtils.AreEqual(a1 >> b1, r1); + + int2x3 a2 = int2x3(917785020, 185593382, 1102123711, 334005460, 1624751550, 280138733); + int b2 = (569504877); + int2x3 r2 = int2x3(112034, 22655, 134536, 40772, 198333, 34196); + TestUtils.AreEqual(a2 >> b2, r2); + + int2x3 a3 = int2x3(1598620011, 736389149, 1279158873, 408822762, 763607760, 348013684); + int b3 = (1840564178); + int2x3 r3 = int2x3(6098, 2809, 4879, 1559, 2912, 1327); + TestUtils.AreEqual(a3 >> b3, r3); + } + + [TestCompiler] + public static void int2x3_operator_bitwise_not() + { + int2x3 a0 = int2x3(1403358969, 831360921, 2088190243, 976721016, 878283189, 308994339); + int2x3 r0 = int2x3(-1403358970, -831360922, -2088190244, -976721017, -878283190, -308994340); + TestUtils.AreEqual(~a0, r0); + + int2x3 a1 = int2x3(1935567517, 472965491, 771711426, 627580960, 2061524024, 753208488); + int2x3 r1 = int2x3(-1935567518, -472965492, -771711427, -627580961, -2061524025, -753208489); + TestUtils.AreEqual(~a1, r1); + + int2x3 a2 = int2x3(2097179283, 664744603, 1289372466, 1635981125, 1951018596, 1545651937); + int2x3 r2 = int2x3(-2097179284, -664744604, -1289372467, -1635981126, -1951018597, -1545651938); + TestUtils.AreEqual(~a2, r2); + + int2x3 a3 = int2x3(717936457, 1342785385, 869629475, 2045854321, 1282546942, 1562433528); + int2x3 r3 = int2x3(-717936458, -1342785386, -869629476, -2045854322, -1282546943, -1562433529); + TestUtils.AreEqual(~a3, r3); + } + + + } +} diff --git a/package/Tests/Tests/Shared/TestInt2x3.gen.cs.meta b/package/Tests/Tests/Shared/TestInt2x3.gen.cs.meta new file mode 100755 index 000000000..d64f81d4b --- /dev/null +++ b/package/Tests/Tests/Shared/TestInt2x3.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 6a957081e92e7e5429649cd56b5453b0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/package/Tests/Tests/Shared/TestInt2x4.gen.cs b/package/Tests/Tests/Shared/TestInt2x4.gen.cs new file mode 100755 index 000000000..27cb587fc --- /dev/null +++ b/package/Tests/Tests/Shared/TestInt2x4.gen.cs @@ -0,0 +1,1229 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using NUnit.Framework; +using static Unity.Mathematics.math; +using Burst.Compiler.IL.Tests; + +namespace Unity.Mathematics.Tests +{ + [TestFixture] + public class TestInt2x4 + { + [TestCompiler] + public static void int2x4_zero() + { + TestUtils.AreEqual(int2x4.zero.c0.x, 0); + TestUtils.AreEqual(int2x4.zero.c0.y, 0); + TestUtils.AreEqual(int2x4.zero.c1.x, 0); + TestUtils.AreEqual(int2x4.zero.c1.y, 0); + TestUtils.AreEqual(int2x4.zero.c2.x, 0); + TestUtils.AreEqual(int2x4.zero.c2.y, 0); + TestUtils.AreEqual(int2x4.zero.c3.x, 0); + TestUtils.AreEqual(int2x4.zero.c3.y, 0); + } + + [TestCompiler] + public static void int2x4_operator_equal_wide_wide() + { + int2x4 a0 = int2x4(790229414, 970783976, 1428432738, 1578747135, 1733797753, 2001507228, 1446876437, 1777406370); + int2x4 b0 = int2x4(612337669, 1214209108, 2120643427, 295461214, 1510890331, 1893316566, 921816149, 1834958575); + bool2x4 r0 = bool2x4(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + int2x4 a1 = int2x4(1426387268, 1809275021, 1843770816, 1172185222, 1469608940, 869874758, 458603090, 581282460); + int2x4 b1 = int2x4(1482011863, 2062852792, 226398742, 770290735, 36812057, 543224481, 1565350150, 1909926604); + bool2x4 r1 = bool2x4(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + int2x4 a2 = int2x4(1948324909, 1129078206, 1638391029, 1135553683, 2079295200, 576232476, 608208235, 11172509); + int2x4 b2 = int2x4(1619900436, 1849990483, 1261604411, 161864811, 843379453, 1780425458, 215681636, 2123130580); + bool2x4 r2 = bool2x4(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + int2x4 a3 = int2x4(1025529486, 2095601864, 193500113, 1780908384, 1587636094, 1892083815, 1250768669, 1984341771); + int2x4 b3 = int2x4(708665810, 1902328998, 1808456602, 563830672, 200493241, 1391620681, 1035522654, 168447603); + bool2x4 r3 = bool2x4(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void int2x4_operator_equal_wide_scalar() + { + int2x4 a0 = int2x4(1211464300, 1921862607, 508076684, 1249127920, 1394594555, 746862310, 1733655277, 1884008277); + int b0 = (746972502); + bool2x4 r0 = bool2x4(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + int2x4 a1 = int2x4(1682018538, 936027116, 927605411, 672785749, 1465584610, 585324157, 404448210, 969511077); + int b1 = (795585660); + bool2x4 r1 = bool2x4(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + int2x4 a2 = int2x4(442746747, 1884034177, 451512860, 425476075, 1370577708, 597010220, 1249636005, 211986678); + int b2 = (1772925698); + bool2x4 r2 = bool2x4(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + int2x4 a3 = int2x4(1305479811, 1150443719, 177122433, 511346787, 1442445694, 667984966, 1684122010, 1962874832); + int b3 = (255635293); + bool2x4 r3 = bool2x4(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void int2x4_operator_equal_scalar_wide() + { + int a0 = (1150044438); + int2x4 b0 = int2x4(233855098, 924242519, 1402948791, 601381975, 2120518068, 629187703, 1971977031, 47183124); + bool2x4 r0 = bool2x4(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + int a1 = (1061805787); + int2x4 b1 = int2x4(1009011238, 312511148, 1460673064, 737210539, 1737844479, 1892405453, 2133024000, 455818693); + bool2x4 r1 = bool2x4(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + int a2 = (2003197687); + int2x4 b2 = int2x4(1276241219, 534746610, 559824292, 1758388240, 1023494292, 719963017, 1883763832, 597498209); + bool2x4 r2 = bool2x4(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + int a3 = (367814403); + int2x4 b3 = int2x4(1839429063, 223575614, 79701214, 1699606118, 759455864, 2017599457, 1395605233, 1191785903); + bool2x4 r3 = bool2x4(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void int2x4_operator_not_equal_wide_wide() + { + int2x4 a0 = int2x4(1660932106, 982847023, 97046264, 1739517447, 1253499180, 1830584069, 1841470429, 1397841646); + int2x4 b0 = int2x4(107139049, 75478496, 2055495054, 358586687, 942338347, 111564990, 113811950, 948912488); + bool2x4 r0 = bool2x4(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + int2x4 a1 = int2x4(1770890135, 1906548631, 169082967, 2099271786, 1909317609, 46519139, 1433204003, 931492669); + int2x4 b1 = int2x4(1080084121, 1400504872, 1032134499, 1061123400, 221862069, 858950046, 989094643, 2023070999); + bool2x4 r1 = bool2x4(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + int2x4 a2 = int2x4(670504132, 1551558665, 1204055048, 1623586740, 226381077, 1145987803, 644253929, 475189890); + int2x4 b2 = int2x4(1269317127, 531883744, 687761409, 278427731, 296354221, 536981557, 1134676193, 1749879634); + bool2x4 r2 = bool2x4(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + int2x4 a3 = int2x4(922313145, 2006448607, 1574579050, 1839580033, 155350910, 313644534, 2008975915, 1072866331); + int2x4 b3 = int2x4(1944210269, 92849031, 164029425, 628797607, 2069207270, 2022667842, 880567401, 264404537); + bool2x4 r3 = bool2x4(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void int2x4_operator_not_equal_wide_scalar() + { + int2x4 a0 = int2x4(747758183, 1033001286, 1439973882, 2138928797, 1197845089, 1432672459, 950170763, 238704450); + int b0 = (248693828); + bool2x4 r0 = bool2x4(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + int2x4 a1 = int2x4(2105962247, 1640688041, 276313906, 2126300423, 791998981, 2035077187, 1171827730, 1412347883); + int b1 = (727205263); + bool2x4 r1 = bool2x4(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + int2x4 a2 = int2x4(1622176923, 1072798259, 1808712713, 1497830076, 1582645163, 1876273820, 90244766, 30493685); + int b2 = (768370497); + bool2x4 r2 = bool2x4(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + int2x4 a3 = int2x4(904014575, 11554610, 2016093187, 1515760622, 1596313927, 363921847, 1555396158, 913218907); + int b3 = (384643370); + bool2x4 r3 = bool2x4(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void int2x4_operator_not_equal_scalar_wide() + { + int a0 = (2076921066); + int2x4 b0 = int2x4(2037494727, 1989050616, 48833929, 1897435904, 514354517, 1783749164, 364694471, 754315072); + bool2x4 r0 = bool2x4(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + int a1 = (124108032); + int2x4 b1 = int2x4(1512967900, 1178825850, 1854793298, 50286949, 2100802631, 1640811853, 82110247, 472172806); + bool2x4 r1 = bool2x4(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + int a2 = (266984506); + int2x4 b2 = int2x4(2003668365, 1826089250, 1041416160, 356140110, 2057237962, 799920703, 1916347720, 510966350); + bool2x4 r2 = bool2x4(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + int a3 = (572038024); + int2x4 b3 = int2x4(1936481966, 1366859342, 1775285431, 604757336, 1047551607, 1311703338, 676012224, 627370253); + bool2x4 r3 = bool2x4(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void int2x4_operator_less_wide_wide() + { + int2x4 a0 = int2x4(1182186063, 415538999, 1667335818, 1566618442, 1166180837, 639095188, 1080836365, 771119973); + int2x4 b0 = int2x4(524633529, 1032195686, 760723389, 1505751409, 431962172, 1287906509, 1560084663, 1450178202); + bool2x4 r0 = bool2x4(false, true, false, false, false, true, true, true); + TestUtils.AreEqual(a0 < b0, r0); + + int2x4 a1 = int2x4(928263233, 789225474, 665243110, 1003542034, 1032480172, 1961336172, 923379558, 21210619); + int2x4 b1 = int2x4(2066166337, 1107069023, 1640077524, 2103263105, 684229139, 1234033624, 1278743281, 1953079347); + bool2x4 r1 = bool2x4(true, true, true, true, false, false, true, true); + TestUtils.AreEqual(a1 < b1, r1); + + int2x4 a2 = int2x4(1089772116, 1707633052, 778986024, 158153146, 336715101, 1839141169, 1706859710, 1928438162); + int2x4 b2 = int2x4(1228832942, 2082539723, 1088437561, 1058382082, 207459172, 750531081, 2015788562, 2126542133); + bool2x4 r2 = bool2x4(true, true, true, true, false, false, true, true); + TestUtils.AreEqual(a2 < b2, r2); + + int2x4 a3 = int2x4(1638101724, 2044698552, 1543260981, 471462349, 1668575142, 2147199161, 946870864, 582371851); + int2x4 b3 = int2x4(271967348, 1601249324, 1373999400, 1689592186, 459759541, 983106679, 332584818, 2034921203); + bool2x4 r3 = bool2x4(false, false, false, true, false, false, false, true); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void int2x4_operator_less_wide_scalar() + { + int2x4 a0 = int2x4(608447185, 818840405, 869219329, 2080125385, 1214500548, 1361741203, 1667165786, 1615392341); + int b0 = (1491216667); + bool2x4 r0 = bool2x4(true, true, true, false, true, true, false, false); + TestUtils.AreEqual(a0 < b0, r0); + + int2x4 a1 = int2x4(840091491, 1247103789, 315321650, 930950514, 1100560246, 933855388, 908563901, 1127696709); + int b1 = (469591900); + bool2x4 r1 = bool2x4(false, false, true, false, false, false, false, false); + TestUtils.AreEqual(a1 < b1, r1); + + int2x4 a2 = int2x4(1286331950, 971148054, 1827886929, 1056649851, 1579735991, 689044913, 1960894027, 371987110); + int b2 = (380753337); + bool2x4 r2 = bool2x4(false, false, false, false, false, false, false, true); + TestUtils.AreEqual(a2 < b2, r2); + + int2x4 a3 = int2x4(867559111, 1698536333, 41716206, 243673862, 1274625476, 611065092, 118750042, 1829327996); + int b3 = (1703747625); + bool2x4 r3 = bool2x4(true, true, true, true, true, true, true, false); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void int2x4_operator_less_scalar_wide() + { + int a0 = (548436837); + int2x4 b0 = int2x4(282703327, 14370648, 1862117300, 1304793311, 826073259, 988910157, 445132446, 1139670255); + bool2x4 r0 = bool2x4(false, false, true, true, true, true, false, true); + TestUtils.AreEqual(a0 < b0, r0); + + int a1 = (111349251); + int2x4 b1 = int2x4(1102440676, 112183144, 1594415311, 1890019295, 2098715503, 608933527, 183989010, 1596056507); + bool2x4 r1 = bool2x4(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 < b1, r1); + + int a2 = (1027318999); + int2x4 b2 = int2x4(146281093, 358911716, 874278078, 1106057699, 1256807459, 2111973919, 1736480659, 810406400); + bool2x4 r2 = bool2x4(false, false, false, true, true, true, true, false); + TestUtils.AreEqual(a2 < b2, r2); + + int a3 = (1329939911); + int2x4 b3 = int2x4(1276652605, 593690439, 771851138, 590897155, 386688344, 1290583204, 1984930954, 743544838); + bool2x4 r3 = bool2x4(false, false, false, false, false, false, true, false); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void int2x4_operator_greater_wide_wide() + { + int2x4 a0 = int2x4(592884447, 2133928932, 918957182, 1284069471, 194584707, 739120780, 241654068, 1340158550); + int2x4 b0 = int2x4(138737040, 192863971, 1700841444, 1044631301, 1391589821, 730837695, 253553987, 2078872742); + bool2x4 r0 = bool2x4(true, true, false, true, false, true, false, false); + TestUtils.AreEqual(a0 > b0, r0); + + int2x4 a1 = int2x4(2099542537, 1182623667, 1399607274, 789301637, 180400925, 594688333, 1877031463, 1360073500); + int2x4 b1 = int2x4(910845808, 976047676, 202633078, 1223618940, 641600530, 1830470354, 1570701388, 1104256103); + bool2x4 r1 = bool2x4(true, true, true, false, false, false, true, true); + TestUtils.AreEqual(a1 > b1, r1); + + int2x4 a2 = int2x4(1091782422, 546676424, 348221770, 716039145, 458742739, 1365508046, 1523167942, 1574478622); + int2x4 b2 = int2x4(1838646932, 740166101, 1549021845, 1457092873, 1790630950, 907793213, 555122804, 1418910265); + bool2x4 r2 = bool2x4(false, false, false, false, false, true, true, true); + TestUtils.AreEqual(a2 > b2, r2); + + int2x4 a3 = int2x4(1295065160, 715285504, 1130323487, 677530432, 1496919050, 12463046, 1106153111, 1315083485); + int2x4 b3 = int2x4(335209251, 1094341422, 1465325455, 390251369, 910309992, 277356652, 1601082764, 771366966); + bool2x4 r3 = bool2x4(true, false, false, true, true, false, false, true); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void int2x4_operator_greater_wide_scalar() + { + int2x4 a0 = int2x4(1097138316, 211763648, 1883002501, 56406996, 43662641, 1923456111, 1437755186, 1219010035); + int b0 = (438688675); + bool2x4 r0 = bool2x4(true, false, true, false, false, true, true, true); + TestUtils.AreEqual(a0 > b0, r0); + + int2x4 a1 = int2x4(2125058448, 893125636, 48044515, 711945018, 1035679270, 577943770, 572743717, 1016617211); + int b1 = (304028799); + bool2x4 r1 = bool2x4(true, true, false, true, true, true, true, true); + TestUtils.AreEqual(a1 > b1, r1); + + int2x4 a2 = int2x4(2063134811, 64009107, 1462961460, 1143565920, 3715845, 689362811, 263973424, 1045140419); + int b2 = (1577403353); + bool2x4 r2 = bool2x4(true, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 > b2, r2); + + int2x4 a3 = int2x4(1058332184, 1183316983, 1107974092, 212839726, 523727054, 112709358, 614746280, 1000986708); + int b3 = (524569092); + bool2x4 r3 = bool2x4(true, true, true, false, false, false, true, true); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void int2x4_operator_greater_scalar_wide() + { + int a0 = (2024896938); + int2x4 b0 = int2x4(599356784, 185671342, 1932327391, 2025591013, 1257191721, 1312388500, 1443698859, 779217735); + bool2x4 r0 = bool2x4(true, true, true, false, true, true, true, true); + TestUtils.AreEqual(a0 > b0, r0); + + int a1 = (691047512); + int2x4 b1 = int2x4(741776730, 732565983, 668302204, 1556466996, 858599525, 1896917159, 701542098, 1052151621); + bool2x4 r1 = bool2x4(false, false, true, false, false, false, false, false); + TestUtils.AreEqual(a1 > b1, r1); + + int a2 = (1023307544); + int2x4 b2 = int2x4(1435392907, 1858177345, 299897686, 632930355, 1387203601, 483722222, 863042711, 1713088900); + bool2x4 r2 = bool2x4(false, false, true, true, false, true, true, false); + TestUtils.AreEqual(a2 > b2, r2); + + int a3 = (315569296); + int2x4 b3 = int2x4(292652611, 1002628348, 927789921, 108145064, 425005337, 2093233588, 2063431853, 2079035844); + bool2x4 r3 = bool2x4(true, false, false, true, false, false, false, false); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void int2x4_operator_less_equal_wide_wide() + { + int2x4 a0 = int2x4(1577248162, 2043073061, 1688380407, 176431985, 223299035, 1502802140, 1691709825, 386789394); + int2x4 b0 = int2x4(903445031, 2108974565, 210822256, 1281704747, 453681718, 66138830, 1229799377, 1620922595); + bool2x4 r0 = bool2x4(false, true, false, true, true, false, false, true); + TestUtils.AreEqual(a0 <= b0, r0); + + int2x4 a1 = int2x4(117182003, 1665770435, 1958490731, 420032601, 1251092689, 2011681765, 749743684, 183784440); + int2x4 b1 = int2x4(1715833766, 1366430432, 13102000, 46919981, 486470891, 1709514236, 2145785285, 854254454); + bool2x4 r1 = bool2x4(true, false, false, false, false, false, true, true); + TestUtils.AreEqual(a1 <= b1, r1); + + int2x4 a2 = int2x4(1150674774, 1633828822, 1719442172, 336047314, 743733218, 1393995865, 1854442658, 1498138884); + int2x4 b2 = int2x4(1273278658, 810263315, 1862773824, 201799013, 974166844, 1320622967, 2058099616, 522102017); + bool2x4 r2 = bool2x4(true, false, true, false, true, false, true, false); + TestUtils.AreEqual(a2 <= b2, r2); + + int2x4 a3 = int2x4(912169992, 1992682021, 1619593455, 1883313982, 483412430, 857881876, 346624138, 531961063); + int2x4 b3 = int2x4(620752145, 1213693681, 1281818305, 1564146162, 1996153080, 1201909516, 614401396, 224997397); + bool2x4 r3 = bool2x4(false, false, false, false, true, true, true, false); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void int2x4_operator_less_equal_wide_scalar() + { + int2x4 a0 = int2x4(1722165358, 1219858357, 860410743, 411099660, 348104022, 1963256951, 212084836, 58924407); + int b0 = (1688048545); + bool2x4 r0 = bool2x4(false, true, true, true, true, false, true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + int2x4 a1 = int2x4(1459242706, 532949158, 262559763, 690091301, 1806172431, 2091514001, 1857173043, 1617221948); + int b1 = (1745758438); + bool2x4 r1 = bool2x4(true, true, true, true, false, false, false, true); + TestUtils.AreEqual(a1 <= b1, r1); + + int2x4 a2 = int2x4(2017733017, 981729559, 2032949254, 910922522, 2079225209, 26179915, 238796519, 1917813750); + int b2 = (804204255); + bool2x4 r2 = bool2x4(false, false, false, false, false, true, true, false); + TestUtils.AreEqual(a2 <= b2, r2); + + int2x4 a3 = int2x4(1258115260, 1337879822, 959460446, 1599429457, 1279143037, 1551937606, 626254356, 1162369122); + int b3 = (20607406); + bool2x4 r3 = bool2x4(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void int2x4_operator_less_equal_scalar_wide() + { + int a0 = (1777585); + int2x4 b0 = int2x4(1181030049, 1787703989, 1729760948, 1816537388, 1359786460, 874999193, 1678863148, 1711365839); + bool2x4 r0 = bool2x4(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + int a1 = (762067160); + int2x4 b1 = int2x4(11953554, 1131583906, 1175393186, 1293698493, 48893340, 66196247, 1958607116, 1576473309); + bool2x4 r1 = bool2x4(false, true, true, true, false, false, true, true); + TestUtils.AreEqual(a1 <= b1, r1); + + int a2 = (861890786); + int2x4 b2 = int2x4(478252419, 957887737, 117849810, 1348693584, 105489302, 259034238, 530713566, 601413850); + bool2x4 r2 = bool2x4(false, true, false, true, false, false, false, false); + TestUtils.AreEqual(a2 <= b2, r2); + + int a3 = (830430286); + int2x4 b3 = int2x4(145552297, 1697295044, 1150680564, 2091065664, 1796096704, 1572008712, 1556906486, 205552788); + bool2x4 r3 = bool2x4(false, true, true, true, true, true, true, false); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void int2x4_operator_greater_equal_wide_wide() + { + int2x4 a0 = int2x4(263000030, 744235661, 1893760267, 237248, 1062370984, 1676977687, 816766880, 1089431546); + int2x4 b0 = int2x4(1395535146, 1178373944, 1237373760, 1364855321, 600811864, 362060472, 290870624, 1839067862); + bool2x4 r0 = bool2x4(false, false, true, false, true, true, true, false); + TestUtils.AreEqual(a0 >= b0, r0); + + int2x4 a1 = int2x4(1394493730, 1176473380, 1193988637, 1703862455, 1806186947, 1253571980, 589397635, 1951842887); + int2x4 b1 = int2x4(396958580, 1336888643, 1019684398, 1697684196, 1227300220, 2044269675, 1898323839, 874509380); + bool2x4 r1 = bool2x4(true, false, true, true, true, false, false, true); + TestUtils.AreEqual(a1 >= b1, r1); + + int2x4 a2 = int2x4(798931197, 808426484, 744869638, 1959531616, 207430702, 1533946595, 1148381840, 2011549474); + int2x4 b2 = int2x4(1873505472, 1268843918, 1606949562, 1263896445, 1805518202, 1412091359, 1240330374, 1955056253); + bool2x4 r2 = bool2x4(false, false, false, true, false, true, false, true); + TestUtils.AreEqual(a2 >= b2, r2); + + int2x4 a3 = int2x4(605043041, 1707339660, 2038122892, 345761584, 1839156338, 1519670644, 2131285427, 775457686); + int2x4 b3 = int2x4(2025187918, 750755999, 869709740, 1390799279, 1194035112, 666460047, 103451220, 1311530792); + bool2x4 r3 = bool2x4(false, true, true, false, true, true, true, false); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void int2x4_operator_greater_equal_wide_scalar() + { + int2x4 a0 = int2x4(2112791350, 1043657935, 101764761, 1529909067, 556026890, 281734132, 1186600258, 815093894); + int b0 = (1470533736); + bool2x4 r0 = bool2x4(true, false, false, true, false, false, false, false); + TestUtils.AreEqual(a0 >= b0, r0); + + int2x4 a1 = int2x4(609211196, 829548642, 244604867, 1419295004, 471843809, 1819986195, 1460027917, 1646290021); + int b1 = (1604309397); + bool2x4 r1 = bool2x4(false, false, false, false, false, true, false, true); + TestUtils.AreEqual(a1 >= b1, r1); + + int2x4 a2 = int2x4(196833647, 1905036391, 1771391775, 1584946560, 370941146, 440219668, 1607345862, 1449142607); + int b2 = (1596738181); + bool2x4 r2 = bool2x4(false, true, true, false, false, false, true, false); + TestUtils.AreEqual(a2 >= b2, r2); + + int2x4 a3 = int2x4(1223010129, 1719435169, 258833609, 1389585003, 612593660, 42612027, 1138747386, 1491562090); + int b3 = (379014762); + bool2x4 r3 = bool2x4(true, true, false, true, true, false, true, true); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void int2x4_operator_greater_equal_scalar_wide() + { + int a0 = (1525542481); + int2x4 b0 = int2x4(1503244746, 861711266, 817773856, 925984572, 571221723, 683686810, 118252990, 1653952090); + bool2x4 r0 = bool2x4(true, true, true, true, true, true, true, false); + TestUtils.AreEqual(a0 >= b0, r0); + + int a1 = (1240253990); + int2x4 b1 = int2x4(1947039008, 1869136019, 152012637, 1214546726, 917376832, 303549425, 2111728811, 945321577); + bool2x4 r1 = bool2x4(false, false, true, true, true, true, false, true); + TestUtils.AreEqual(a1 >= b1, r1); + + int a2 = (173706579); + int2x4 b2 = int2x4(625318949, 519443238, 1583588379, 1026799433, 1713083717, 394922760, 1216218189, 1336522452); + bool2x4 r2 = bool2x4(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 >= b2, r2); + + int a3 = (233894308); + int2x4 b3 = int2x4(479913036, 984991199, 172993285, 2121050903, 465645173, 788510727, 337378780, 273010835); + bool2x4 r3 = bool2x4(false, false, true, false, false, false, false, false); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void int2x4_operator_add_wide_wide() + { + int2x4 a0 = int2x4(2049228671, 1658660009, 491719392, 937013355, 81108663, 1063894558, 86954702, 843159721); + int2x4 b0 = int2x4(2088751567, 645762023, 306868786, 4360271, 506047997, 2094559874, 1634712736, 1601474440); + int2x4 r0 = int2x4(-156987058, -1990545264, 798588178, 941373626, 587156660, -1136512864, 1721667438, -1850333135); + TestUtils.AreEqual(a0 + b0, r0); + + int2x4 a1 = int2x4(698977704, 192867135, 1683407172, 137301303, 2103582820, 526139155, 447937230, 2127411006); + int2x4 b1 = int2x4(1586485231, 908746788, 1812370320, 1247342357, 2043773873, 223363428, 175115707, 985928617); + int2x4 r1 = int2x4(-2009504361, 1101613923, -799189804, 1384643660, -147610603, 749502583, 623052937, -1181627673); + TestUtils.AreEqual(a1 + b1, r1); + + int2x4 a2 = int2x4(1670579390, 1914969141, 997691756, 857841794, 2129024875, 267535529, 978891383, 657092366); + int2x4 b2 = int2x4(507662836, 1231457019, 776127866, 607782424, 1160366210, 1384832242, 702057048, 703554905); + int2x4 r2 = int2x4(-2116725070, -1148541136, 1773819622, 1465624218, -1005576211, 1652367771, 1680948431, 1360647271); + TestUtils.AreEqual(a2 + b2, r2); + + int2x4 a3 = int2x4(941872903, 906908654, 1940071697, 862186205, 1951450264, 689662850, 1928213278, 1703906688); + int2x4 b3 = int2x4(2106992817, 1994483489, 539473, 236858351, 411317652, 595429166, 713649927, 2053476603); + int2x4 r3 = int2x4(-1246101576, -1393575153, 1940611170, 1099044556, -1932199380, 1285092016, -1653104091, -537584005); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void int2x4_operator_add_wide_scalar() + { + int2x4 a0 = int2x4(2038218457, 134923711, 875689667, 1338884463, 997710928, 340490871, 1067888129, 70433301); + int b0 = (2124409227); + int2x4 r0 = int2x4(-132339612, -2035634358, -1294868402, -831673606, -1172847141, -1830067198, -1102669940, -2100124768); + TestUtils.AreEqual(a0 + b0, r0); + + int2x4 a1 = int2x4(2003021861, 1160398286, 85446202, 1068152966, 1239387100, 1497676888, 1727477485, 1095438654); + int b1 = (1635971971); + int2x4 r1 = int2x4(-655973464, -1498597039, 1721418173, -1590842359, -1419608225, -1161318437, -931517840, -1563556671); + TestUtils.AreEqual(a1 + b1, r1); + + int2x4 a2 = int2x4(756559204, 658923552, 1610518921, 1585755398, 692843300, 1068593469, 1704776233, 577782260); + int b2 = (1818718931); + int2x4 r2 = int2x4(-1719689161, -1817324813, -865729444, -890492967, -1783405065, -1407654896, -771472132, -1898466105); + TestUtils.AreEqual(a2 + b2, r2); + + int2x4 a3 = int2x4(736972565, 564257439, 2051736283, 1572837697, 1628006545, 1855700263, 656748782, 272774516); + int b3 = (711894571); + int2x4 r3 = int2x4(1448867136, 1276152010, -1531336442, -2010235028, -1955066180, -1727372462, 1368643353, 984669087); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void int2x4_operator_add_scalar_wide() + { + int a0 = (391092078); + int2x4 b0 = int2x4(519908870, 851424292, 328314822, 135622204, 740923360, 655394201, 1451896269, 1781697072); + int2x4 r0 = int2x4(911000948, 1242516370, 719406900, 526714282, 1132015438, 1046486279, 1842988347, -2122178146); + TestUtils.AreEqual(a0 + b0, r0); + + int a1 = (996031825); + int2x4 b1 = int2x4(1557774949, 779774940, 1111541302, 783046445, 1130163944, 288279584, 1397683861, 1636583489); + int2x4 r1 = int2x4(-1741160522, 1775806765, 2107573127, 1779078270, 2126195769, 1284311409, -1901251610, -1662351982); + TestUtils.AreEqual(a1 + b1, r1); + + int a2 = (673263339); + int2x4 b2 = int2x4(1469300874, 14855965, 1116636999, 1488863300, 1600990886, 190651301, 1307459768, 920085839); + int2x4 r2 = int2x4(2142564213, 688119304, 1789900338, -2132840657, -2020713071, 863914640, 1980723107, 1593349178); + TestUtils.AreEqual(a2 + b2, r2); + + int a3 = (2082229835); + int2x4 b3 = int2x4(1992405574, 1213924458, 505841452, 981421162, 1488337699, 1113826640, 1806146508, 1841791222); + int2x4 r3 = int2x4(-220331887, -998813003, -1706896009, -1231316299, -724399762, -1098910821, -406590953, -370946239); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void int2x4_operator_sub_wide_wide() + { + int2x4 a0 = int2x4(1353441118, 797269833, 659988112, 56022121, 365847472, 2062899435, 1380988474, 799885138); + int2x4 b0 = int2x4(1332656812, 1827794007, 972557431, 2078233689, 1508184327, 1372307701, 810327977, 936799885); + int2x4 r0 = int2x4(20784306, -1030524174, -312569319, -2022211568, -1142336855, 690591734, 570660497, -136914747); + TestUtils.AreEqual(a0 - b0, r0); + + int2x4 a1 = int2x4(1306058185, 579775276, 1239163824, 344591081, 86359575, 1049709943, 721529513, 1767221271); + int2x4 b1 = int2x4(71562303, 1418723328, 1971342989, 1226053395, 136565478, 1979903295, 600719425, 837912956); + int2x4 r1 = int2x4(1234495882, -838948052, -732179165, -881462314, -50205903, -930193352, 120810088, 929308315); + TestUtils.AreEqual(a1 - b1, r1); + + int2x4 a2 = int2x4(7652784, 545192611, 176298787, 1477774126, 1426963688, 2032787858, 2059525977, 445200454); + int2x4 b2 = int2x4(632054793, 711091688, 904695656, 1640069560, 750244414, 1385118097, 1102391291, 1221949855); + int2x4 r2 = int2x4(-624402009, -165899077, -728396869, -162295434, 676719274, 647669761, 957134686, -776749401); + TestUtils.AreEqual(a2 - b2, r2); + + int2x4 a3 = int2x4(425848588, 2026967474, 1128492011, 61421784, 988065731, 1741434432, 2070331135, 1356704176); + int2x4 b3 = int2x4(609588723, 1054324682, 1678086165, 1529581776, 1718700085, 523422634, 223602473, 1912611694); + int2x4 r3 = int2x4(-183740135, 972642792, -549594154, -1468159992, -730634354, 1218011798, 1846728662, -555907518); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void int2x4_operator_sub_wide_scalar() + { + int2x4 a0 = int2x4(1176369558, 1934521195, 309452150, 1417634074, 108910717, 1306356714, 1502312334, 1451794815); + int b0 = (462232403); + int2x4 r0 = int2x4(714137155, 1472288792, -152780253, 955401671, -353321686, 844124311, 1040079931, 989562412); + TestUtils.AreEqual(a0 - b0, r0); + + int2x4 a1 = int2x4(281174200, 1913724431, 2041593336, 557239990, 1119051448, 1590376732, 819090189, 816382635); + int b1 = (87530840); + int2x4 r1 = int2x4(193643360, 1826193591, 1954062496, 469709150, 1031520608, 1502845892, 731559349, 728851795); + TestUtils.AreEqual(a1 - b1, r1); + + int2x4 a2 = int2x4(815920639, 1792801932, 1113440549, 1418937976, 1277257189, 2092779398, 642236742, 1605250794); + int b2 = (1829033117); + int2x4 r2 = int2x4(-1013112478, -36231185, -715592568, -410095141, -551775928, 263746281, -1186796375, -223782323); + TestUtils.AreEqual(a2 - b2, r2); + + int2x4 a3 = int2x4(819644478, 128303186, 553494257, 1017126971, 1999744782, 2017272758, 1817991764, 1280985500); + int b3 = (1468003019); + int2x4 r3 = int2x4(-648358541, -1339699833, -914508762, -450876048, 531741763, 549269739, 349988745, -187017519); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void int2x4_operator_sub_scalar_wide() + { + int a0 = (1691534405); + int2x4 b0 = int2x4(2022393810, 1612688515, 496689713, 887037586, 2097630964, 374934538, 939035482, 935242277); + int2x4 r0 = int2x4(-330859405, 78845890, 1194844692, 804496819, -406096559, 1316599867, 752498923, 756292128); + TestUtils.AreEqual(a0 - b0, r0); + + int a1 = (1789300421); + int2x4 b1 = int2x4(264712893, 1231856067, 1818112748, 1428436109, 1258745460, 1077380396, 1330722719, 518111829); + int2x4 r1 = int2x4(1524587528, 557444354, -28812327, 360864312, 530554961, 711920025, 458577702, 1271188592); + TestUtils.AreEqual(a1 - b1, r1); + + int a2 = (967128529); + int2x4 b2 = int2x4(344666254, 1082267918, 907866696, 1816885123, 460340568, 962154498, 557113461, 1701216709); + int2x4 r2 = int2x4(622462275, -115139389, 59261833, -849756594, 506787961, 4974031, 410015068, -734088180); + TestUtils.AreEqual(a2 - b2, r2); + + int a3 = (1980098777); + int2x4 b3 = int2x4(730060552, 1444397827, 853570556, 138836432, 1013190428, 718089530, 506757390, 1216448041); + int2x4 r3 = int2x4(1250038225, 535700950, 1126528221, 1841262345, 966908349, 1262009247, 1473341387, 763650736); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void int2x4_operator_mul_wide_wide() + { + int2x4 a0 = int2x4(245827027, 208934650, 1019478917, 568231809, 877289039, 1585782440, 2111178729, 1186019069); + int2x4 b0 = int2x4(759663997, 350129201, 477450108, 1635735015, 388710278, 757722665, 1509388321, 1841703980); + int2x4 r0 = int2x4(-632811769, 1402281434, 332447596, -1932977561, -1670918566, 1455036648, 2128344329, -594088068); + TestUtils.AreEqual(a0 * b0, r0); + + int2x4 a1 = int2x4(571481445, 1570087048, 629447153, 619383734, 2055121568, 700402816, 263414349, 187830569); + int2x4 b1 = int2x4(1826369331, 1524322467, 1605207974, 428419155, 1460605791, 1968043860, 771161742, 2037340417); + int2x4 r1 = int2x4(-1654168033, 2093463192, -1207506618, -1133560830, 990589280, -938173952, -1341723466, 1156600361); + TestUtils.AreEqual(a1 * b1, r1); + + int2x4 a2 = int2x4(2048056680, 546694675, 853585367, 933370718, 990212476, 1915885905, 1984212358, 368146234); + int2x4 b2 = int2x4(322304267, 651448359, 1608326767, 1427155898, 1092185338, 665119139, 223634707, 694718952); + int2x4 r2 = int2x4(649177976, 678952165, 1063621177, -1611682740, -2142428392, -573253741, -1652113678, 1626072720); + TestUtils.AreEqual(a2 * b2, r2); + + int2x4 a3 = int2x4(899438811, 1765718681, 409003054, 2069758852, 140280263, 442491280, 1924530939, 1372320666); + int2x4 b3 = int2x4(675813713, 999254223, 1326064110, 788102700, 1927999142, 1706356773, 747671596, 106127297); + int2x4 r3 = int2x4(1891467339, 335415735, 1128927428, -1656253776, -1433851638, 479369680, -366628060, -250163942); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void int2x4_operator_mul_wide_scalar() + { + int2x4 a0 = int2x4(1762033447, 465343930, 1570757881, 1326409563, 1824319147, 1356578909, 72749215, 154616909); + int b0 = (1476837906); + int2x4 r0 = int2x4(-1313177922, 1326807828, -2138555518, -276153754, -65548794, -1318584182, -1839224530, -1720506518); + TestUtils.AreEqual(a0 * b0, r0); + + int2x4 a1 = int2x4(975743632, 1958912969, 971327747, 1818877398, 1324050764, 660611671, 1279757657, 391009467); + int b1 = (573770299); + int2x4 r1 = int2x4(414773040, -699623085, 1045098929, -1129153454, 1954692228, 970215437, 1522404739, 631100697); + TestUtils.AreEqual(a1 * b1, r1); + + int2x4 a2 = int2x4(1186856590, 800117742, 606927173, 1338014500, 1688964615, 1439447294, 387721300, 1192501703); + int b2 = (890343818); + int2x4 r2 = int2x4(218605196, 908725324, -805080014, -1528445592, 1365477062, 1262261996, 2040090952, 691203142); + TestUtils.AreEqual(a2 * b2, r2); + + int2x4 a3 = int2x4(1613845584, 124378112, 970518733, 1370700538, 1978842602, 1451974062, 987919119, 1659987051); + int b3 = (76318055); + int2x4 r3 = int2x4(-1335460816, 1256424448, -545299589, 628661398, 357366566, 753276674, 2132219401, -825295347); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void int2x4_operator_mul_scalar_wide() + { + int a0 = (99541948); + int2x4 b0 = int2x4(1764461774, 657072478, 1459784358, 1610646683, 1632058826, 868441654, 1408757883, 335917146); + int2x4 r0 = int2x4(-950398648, -102049016, 1260585960, 1158730452, -1606056, -466153048, 2108402516, 1966690328); + TestUtils.AreEqual(a0 * b0, r0); + + int a1 = (2105124483); + int2x4 b1 = int2x4(1178393968, 1963904348, 1409533767, 243286231, 1336308795, 517963367, 1733623488, 459880225); + int2x4 r1 = int2x4(-1028919216, 2084093460, 1286996821, 910923781, 1886305329, -1039959883, 644799552, 1815059427); + TestUtils.AreEqual(a1 * b1, r1); + + int a2 = (994616533); + int2x4 b2 = int2x4(1420531535, 1821413700, 677771573, 2132626845, 1158827713, 640102997, 944551639, 1323243330); + int2x4 r2 = int2x4(585859259, 2021158292, 1046891801, -1941821535, -738776427, -1715252039, -160572189, 1259643370); + TestUtils.AreEqual(a2 * b2, r2); + + int a3 = (1186460236); + int2x4 b3 = int2x4(657101857, 1275563580, 1031291523, 1008470115, 1155301041, 1046199281, 2138825098, 1273008873); + int2x4 r3 = int2x4(-901633076, -879300144, 1278776548, 1761940324, -675287412, 2049744268, -375297800, -1944395988); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void int2x4_operator_div_wide_wide() + { + int2x4 a0 = int2x4(1590198532, 507812502, 126627032, 1058247011, 427387861, 290676154, 1829594484, 1127868739); + int2x4 b0 = int2x4(1434703236, 911965201, 390415521, 128746927, 525835375, 816946613, 878264647, 146789678); + int2x4 r0 = int2x4(1, 0, 0, 8, 0, 0, 2, 7); + TestUtils.AreEqual(a0 / b0, r0); + + int2x4 a1 = int2x4(499016351, 1341209632, 134906097, 785470242, 788249865, 1099825433, 1552968283, 1822367139); + int2x4 b1 = int2x4(2089524057, 254213018, 1916850021, 1737806518, 1906634983, 437754923, 825037958, 902508708); + int2x4 r1 = int2x4(0, 5, 0, 0, 0, 2, 1, 2); + TestUtils.AreEqual(a1 / b1, r1); + + int2x4 a2 = int2x4(1021812060, 1937073018, 645757349, 1097576782, 1246027674, 1152153253, 1900577195, 172149343); + int2x4 b2 = int2x4(896853614, 49452028, 1921327824, 787000669, 1032149621, 858558868, 1422112429, 837098844); + int2x4 r2 = int2x4(1, 39, 0, 1, 1, 1, 1, 0); + TestUtils.AreEqual(a2 / b2, r2); + + int2x4 a3 = int2x4(1735128704, 816492592, 2012272185, 632330092, 649232994, 123715336, 1438073735, 723262291); + int2x4 b3 = int2x4(616122946, 2035322800, 1324534444, 1820832158, 917489631, 367475696, 620492088, 1749833550); + int2x4 r3 = int2x4(2, 0, 1, 0, 0, 0, 2, 0); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void int2x4_operator_div_wide_scalar() + { + int2x4 a0 = int2x4(560951562, 1218680769, 375341724, 1613542090, 1919409166, 1397425408, 1349573078, 524526253); + int b0 = (947861580); + int2x4 r0 = int2x4(0, 1, 0, 1, 2, 1, 1, 0); + TestUtils.AreEqual(a0 / b0, r0); + + int2x4 a1 = int2x4(341995568, 1515313790, 1676971657, 2131487088, 2105094094, 1017891310, 542666029, 1646044372); + int b1 = (495895326); + int2x4 r1 = int2x4(0, 3, 3, 4, 4, 2, 1, 3); + TestUtils.AreEqual(a1 / b1, r1); + + int2x4 a2 = int2x4(1447236569, 19616726, 896899915, 707389627, 1249475421, 1486968988, 1738891885, 1919705924); + int b2 = (107215658); + int2x4 r2 = int2x4(13, 0, 8, 6, 11, 13, 16, 17); + TestUtils.AreEqual(a2 / b2, r2); + + int2x4 a3 = int2x4(1244966864, 206442634, 1508567412, 1825701056, 1117255783, 929925156, 1725332114, 1949103348); + int b3 = (1200843642); + int2x4 r3 = int2x4(1, 0, 1, 1, 0, 0, 1, 1); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void int2x4_operator_div_scalar_wide() + { + int a0 = (1161272038); + int2x4 b0 = int2x4(187325733, 1594107378, 2016183849, 1589343709, 388768753, 1417077283, 1773486938, 1154044032); + int2x4 r0 = int2x4(6, 0, 0, 0, 2, 0, 0, 1); + TestUtils.AreEqual(a0 / b0, r0); + + int a1 = (81831373); + int2x4 b1 = int2x4(1476877645, 653688843, 45756703, 631027637, 396671391, 784365696, 1250594097, 1818363859); + int2x4 r1 = int2x4(0, 0, 1, 0, 0, 0, 0, 0); + TestUtils.AreEqual(a1 / b1, r1); + + int a2 = (1653451772); + int2x4 b2 = int2x4(270557729, 48974453, 1796936382, 1427856423, 981056957, 1955700573, 705450043, 1054404890); + int2x4 r2 = int2x4(6, 33, 0, 1, 1, 0, 2, 1); + TestUtils.AreEqual(a2 / b2, r2); + + int a3 = (351914083); + int2x4 b3 = int2x4(131970646, 1320586926, 366944102, 1575786200, 257204865, 1582754309, 2114509003, 1266146708); + int2x4 r3 = int2x4(2, 0, 0, 0, 1, 0, 0, 0); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void int2x4_operator_mod_wide_wide() + { + int2x4 a0 = int2x4(146150818, 1846543305, 1071447756, 308965362, 659881575, 1002365460, 861198439, 1510617532); + int2x4 b0 = int2x4(983050390, 771341152, 942375212, 367361754, 749500619, 750718852, 2095151755, 88438806); + int2x4 r0 = int2x4(146150818, 303861001, 129072544, 308965362, 659881575, 251646608, 861198439, 7157830); + TestUtils.AreEqual(a0 % b0, r0); + + int2x4 a1 = int2x4(778525078, 1458458044, 101987897, 1249565173, 938026607, 1692541775, 1518877124, 1806965510); + int2x4 b1 = int2x4(769227442, 647214624, 1026513788, 1544950956, 160166322, 1099108075, 1158422232, 1798905209); + int2x4 r1 = int2x4(9297636, 164028796, 101987897, 1249565173, 137194997, 593433700, 360454892, 8060301); + TestUtils.AreEqual(a1 % b1, r1); + + int2x4 a2 = int2x4(1325139851, 994457255, 1372400564, 1770508529, 100255877, 452674793, 1545968777, 629019189); + int2x4 b2 = int2x4(164686701, 327889784, 1082162785, 1213537518, 608481038, 329133821, 1824387961, 1223426748); + int2x4 r2 = int2x4(7646243, 10787903, 290237779, 556971011, 100255877, 123540972, 1545968777, 629019189); + TestUtils.AreEqual(a2 % b2, r2); + + int2x4 a3 = int2x4(1402964707, 2138294579, 1641714420, 1782022072, 1880968864, 1980798192, 1397317084, 995968277); + int2x4 b3 = int2x4(798137669, 79717779, 1233582258, 1267120677, 301592349, 911281434, 1357340934, 1648942990); + int2x4 r3 = int2x4(604827038, 65632325, 408132162, 514901395, 71414770, 158235324, 39976150, 995968277); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void int2x4_operator_mod_wide_scalar() + { + int2x4 a0 = int2x4(164800505, 1062177828, 1898749675, 1701653318, 820393245, 19002208, 128329633, 1464010899); + int b0 = (883951171); + int2x4 r0 = int2x4(164800505, 178226657, 130847333, 817702147, 820393245, 19002208, 128329633, 580059728); + TestUtils.AreEqual(a0 % b0, r0); + + int2x4 a1 = int2x4(896587769, 1982762194, 959236935, 712321026, 172564850, 1540068445, 1085897743, 1607489717); + int b1 = (405208598); + int2x4 r1 = int2x4(86170573, 361927802, 148819739, 307112428, 172564850, 324442651, 275480547, 391863923); + TestUtils.AreEqual(a1 % b1, r1); + + int2x4 a2 = int2x4(165478511, 915707999, 1602830401, 928191283, 1084934806, 488509689, 2087820912, 377501313); + int b2 = (647846716); + int2x4 r2 = int2x4(165478511, 267861283, 307136969, 280344567, 437088090, 488509689, 144280764, 377501313); + TestUtils.AreEqual(a2 % b2, r2); + + int2x4 a3 = int2x4(1778384846, 812183417, 1153802502, 1642671870, 1924710742, 665297470, 1568090825, 2050982942); + int b3 = (1216011754); + int2x4 r3 = int2x4(562373092, 812183417, 1153802502, 426660116, 708698988, 665297470, 352079071, 834971188); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void int2x4_operator_mod_scalar_wide() + { + int a0 = (242383789); + int2x4 b0 = int2x4(740000543, 1556450291, 1104736385, 437976569, 1911837205, 1507212038, 1906405167, 247693265); + int2x4 r0 = int2x4(242383789, 242383789, 242383789, 242383789, 242383789, 242383789, 242383789, 242383789); + TestUtils.AreEqual(a0 % b0, r0); + + int a1 = (293460573); + int2x4 b1 = int2x4(1495295166, 873323603, 530681233, 1298102643, 2057984657, 1000742091, 1461372131, 1859742342); + int2x4 r1 = int2x4(293460573, 293460573, 293460573, 293460573, 293460573, 293460573, 293460573, 293460573); + TestUtils.AreEqual(a1 % b1, r1); + + int a2 = (797184687); + int2x4 b2 = int2x4(821888842, 1083192997, 840114986, 1894865954, 615159964, 1485575122, 2028738, 2122220318); + int2x4 r2 = int2x4(797184687, 797184687, 797184687, 797184687, 182024723, 797184687, 1919391, 797184687); + TestUtils.AreEqual(a2 % b2, r2); + + int a3 = (164578061); + int2x4 b3 = int2x4(730088119, 1444946139, 1305792037, 1110829011, 872723581, 166847388, 1477846418, 511428733); + int2x4 r3 = int2x4(164578061, 164578061, 164578061, 164578061, 164578061, 164578061, 164578061, 164578061); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void int2x4_operator_plus() + { + int2x4 a0 = int2x4(1643476803, 907898539, 379615839, 1140483021, 1735287433, 1743199272, 1472881565, 339091479); + int2x4 r0 = int2x4(1643476803, 907898539, 379615839, 1140483021, 1735287433, 1743199272, 1472881565, 339091479); + TestUtils.AreEqual(+a0, r0); + + int2x4 a1 = int2x4(401565897, 849339193, 174532915, 1864850812, 1566098441, 1145639744, 1615499926, 2049663954); + int2x4 r1 = int2x4(401565897, 849339193, 174532915, 1864850812, 1566098441, 1145639744, 1615499926, 2049663954); + TestUtils.AreEqual(+a1, r1); + + int2x4 a2 = int2x4(1723005749, 591286416, 1706631096, 1079164488, 1808261782, 1201290141, 82958939, 308695413); + int2x4 r2 = int2x4(1723005749, 591286416, 1706631096, 1079164488, 1808261782, 1201290141, 82958939, 308695413); + TestUtils.AreEqual(+a2, r2); + + int2x4 a3 = int2x4(1575280693, 1673126612, 500666137, 640289062, 836003812, 336058393, 829347661, 33442669); + int2x4 r3 = int2x4(1575280693, 1673126612, 500666137, 640289062, 836003812, 336058393, 829347661, 33442669); + TestUtils.AreEqual(+a3, r3); + } + + [TestCompiler] + public static void int2x4_operator_neg() + { + int2x4 a0 = int2x4(1955022112, 662160019, 370300775, 2141283773, 1004505619, 28153593, 33894270, 505708349); + int2x4 r0 = int2x4(-1955022112, -662160019, -370300775, -2141283773, -1004505619, -28153593, -33894270, -505708349); + TestUtils.AreEqual(-a0, r0); + + int2x4 a1 = int2x4(1115028238, 694995093, 1542206286, 213087293, 243937487, 341522275, 841085242, 574159094); + int2x4 r1 = int2x4(-1115028238, -694995093, -1542206286, -213087293, -243937487, -341522275, -841085242, -574159094); + TestUtils.AreEqual(-a1, r1); + + int2x4 a2 = int2x4(1687250035, 1175014732, 1259809073, 1212465326, 1190569920, 2047955772, 2120729864, 1440774928); + int2x4 r2 = int2x4(-1687250035, -1175014732, -1259809073, -1212465326, -1190569920, -2047955772, -2120729864, -1440774928); + TestUtils.AreEqual(-a2, r2); + + int2x4 a3 = int2x4(1485596454, 1387601718, 1745651998, 319115626, 1119959806, 739132284, 1954173314, 1709857098); + int2x4 r3 = int2x4(-1485596454, -1387601718, -1745651998, -319115626, -1119959806, -739132284, -1954173314, -1709857098); + TestUtils.AreEqual(-a3, r3); + } + + [TestCompiler] + public static void int2x4_operator_prefix_inc() + { + int2x4 a0 = int2x4(864455342, 2035793213, 1275443862, 971919915, 411610189, 446210725, 395072276, 115573442); + int2x4 r0 = int2x4(864455343, 2035793214, 1275443863, 971919916, 411610190, 446210726, 395072277, 115573443); + TestUtils.AreEqual(++a0, r0); + + int2x4 a1 = int2x4(913293639, 1208161871, 1385544935, 1835605516, 831396561, 388229350, 696475402, 1786514683); + int2x4 r1 = int2x4(913293640, 1208161872, 1385544936, 1835605517, 831396562, 388229351, 696475403, 1786514684); + TestUtils.AreEqual(++a1, r1); + + int2x4 a2 = int2x4(993189311, 1622410417, 1398865015, 241906003, 1705625817, 609525897, 172599489, 504806865); + int2x4 r2 = int2x4(993189312, 1622410418, 1398865016, 241906004, 1705625818, 609525898, 172599490, 504806866); + TestUtils.AreEqual(++a2, r2); + + int2x4 a3 = int2x4(519296647, 1541894135, 924683935, 259568871, 1349062584, 1120518661, 65514038, 1495168208); + int2x4 r3 = int2x4(519296648, 1541894136, 924683936, 259568872, 1349062585, 1120518662, 65514039, 1495168209); + TestUtils.AreEqual(++a3, r3); + } + + [TestCompiler] + public static void int2x4_operator_postfix_inc() + { + int2x4 a0 = int2x4(1751003569, 2063707595, 1500486291, 969189211, 1007848192, 2028651936, 1643023524, 1190630527); + int2x4 r0 = int2x4(1751003569, 2063707595, 1500486291, 969189211, 1007848192, 2028651936, 1643023524, 1190630527); + TestUtils.AreEqual(a0++, r0); + + int2x4 a1 = int2x4(1396179607, 177416855, 1524860667, 1408994706, 375284401, 1580130369, 1676086778, 717006530); + int2x4 r1 = int2x4(1396179607, 177416855, 1524860667, 1408994706, 375284401, 1580130369, 1676086778, 717006530); + TestUtils.AreEqual(a1++, r1); + + int2x4 a2 = int2x4(506142468, 2026873940, 130175844, 1513142653, 420613464, 1219979307, 586574160, 357567451); + int2x4 r2 = int2x4(506142468, 2026873940, 130175844, 1513142653, 420613464, 1219979307, 586574160, 357567451); + TestUtils.AreEqual(a2++, r2); + + int2x4 a3 = int2x4(1468020171, 1127356901, 101238629, 2131648021, 423320704, 827539403, 1919960927, 840371710); + int2x4 r3 = int2x4(1468020171, 1127356901, 101238629, 2131648021, 423320704, 827539403, 1919960927, 840371710); + TestUtils.AreEqual(a3++, r3); + } + + [TestCompiler] + public static void int2x4_operator_prefix_dec() + { + int2x4 a0 = int2x4(200904609, 871077500, 968578728, 638967721, 1995396216, 435367037, 1782514098, 1589827826); + int2x4 r0 = int2x4(200904608, 871077499, 968578727, 638967720, 1995396215, 435367036, 1782514097, 1589827825); + TestUtils.AreEqual(--a0, r0); + + int2x4 a1 = int2x4(1434377580, 1699290403, 1758478358, 1914114460, 71237375, 389120307, 1022184392, 1310293956); + int2x4 r1 = int2x4(1434377579, 1699290402, 1758478357, 1914114459, 71237374, 389120306, 1022184391, 1310293955); + TestUtils.AreEqual(--a1, r1); + + int2x4 a2 = int2x4(356565557, 906734601, 799006218, 1383897383, 1040798388, 1469596990, 1719228297, 220897829); + int2x4 r2 = int2x4(356565556, 906734600, 799006217, 1383897382, 1040798387, 1469596989, 1719228296, 220897828); + TestUtils.AreEqual(--a2, r2); + + int2x4 a3 = int2x4(1454322707, 14227726, 293093918, 1065286595, 1249415499, 1009503100, 157482354, 965385343); + int2x4 r3 = int2x4(1454322706, 14227725, 293093917, 1065286594, 1249415498, 1009503099, 157482353, 965385342); + TestUtils.AreEqual(--a3, r3); + } + + [TestCompiler] + public static void int2x4_operator_postfix_dec() + { + int2x4 a0 = int2x4(283970262, 1109329936, 1073216143, 649439137, 1932646215, 1174104498, 484207852, 524156737); + int2x4 r0 = int2x4(283970262, 1109329936, 1073216143, 649439137, 1932646215, 1174104498, 484207852, 524156737); + TestUtils.AreEqual(a0--, r0); + + int2x4 a1 = int2x4(691209285, 802721301, 377162390, 526366486, 1504625034, 590919177, 60677868, 1867810045); + int2x4 r1 = int2x4(691209285, 802721301, 377162390, 526366486, 1504625034, 590919177, 60677868, 1867810045); + TestUtils.AreEqual(a1--, r1); + + int2x4 a2 = int2x4(2095777993, 324944916, 242636153, 1659736954, 1316734088, 1030072405, 1751972064, 1868889881); + int2x4 r2 = int2x4(2095777993, 324944916, 242636153, 1659736954, 1316734088, 1030072405, 1751972064, 1868889881); + TestUtils.AreEqual(a2--, r2); + + int2x4 a3 = int2x4(1726583208, 175622377, 181847458, 665549439, 530897466, 635466911, 416440036, 1447690298); + int2x4 r3 = int2x4(1726583208, 175622377, 181847458, 665549439, 530897466, 635466911, 416440036, 1447690298); + TestUtils.AreEqual(a3--, r3); + } + + [TestCompiler] + public static void int2x4_operator_bitwise_and_wide_wide() + { + int2x4 a0 = int2x4(779935043, 1097962163, 1939593304, 800599247, 952140918, 782792558, 1608557706, 396446406); + int2x4 b0 = int2x4(307705143, 1710882162, 866836769, 532490608, 679371720, 1794035877, 1439832202, 519529812); + int2x4 r0 = int2x4(39064835, 1097961522, 864731136, 263727168, 675283008, 715673636, 1438646410, 379666500); + TestUtils.AreEqual(a0 & b0, r0); + + int2x4 a1 = int2x4(2039894114, 1286974642, 442394124, 1759739564, 233435438, 665207770, 1942050241, 1022352952); + int2x4 b1 = int2x4(23633139, 1209152681, 646737179, 1255867027, 1900854122, 413173763, 1409138251, 2087190272); + int2x4 r1 = int2x4(16781410, 1209017504, 34366472, 1220739712, 21541162, 10485762, 1405162561, 1013440000); + TestUtils.AreEqual(a1 & b1, r1); + + int2x4 a2 = int2x4(60340400, 329119345, 406517382, 1126764634, 343425836, 1957552749, 1624478957, 341972372); + int2x4 b2 = int2x4(563439483, 354579077, 642224854, 1650432515, 755290290, 902865191, 661389406, 2134212586); + int2x4 r2 = int2x4(26222640, 285241857, 168582, 1107890178, 67125280, 880844837, 541065292, 337646976); + TestUtils.AreEqual(a2 & b2, r2); + + int2x4 a3 = int2x4(181537307, 130347414, 1240828622, 526120460, 695449226, 1477446724, 201628999, 737924014); + int2x4 b3 = int2x4(1855189321, 185194029, 810374380, 133197864, 1989578783, 38739182, 387425484, 1690486314); + int2x4 r3 = int2x4(177340425, 50384900, 4522188, 122712072, 538087434, 3140, 67404868, 549634602); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void int2x4_operator_bitwise_and_wide_scalar() + { + int2x4 a0 = int2x4(443615469, 490057985, 2042441263, 1524760558, 1405175110, 510212004, 1941875181, 1236735839); + int b0 = (93423598); + int2x4 r0 = int2x4(1114348, 85033216, 26281518, 8488942, 25232710, 67176356, 26247660, 26281806); + TestUtils.AreEqual(a0 & b0, r0); + + int2x4 a1 = int2x4(1365509729, 607982857, 650270920, 1249238550, 814629680, 1862276471, 143502472, 861733033); + int b1 = (428270198); + int2x4 r1 = int2x4(285475424, 262144, 8536128, 134529558, 277234224, 150995062, 142909440, 285474848); + TestUtils.AreEqual(a1 & b1, r1); + + int2x4 a2 = int2x4(1408932942, 1567715668, 1102952410, 322053683, 1599352836, 208656708, 1272226025, 462670926); + int b2 = (957693145); + int2x4 r2 = int2x4(286268488, 420556880, 18167000, 286270481, 420753408, 134551616, 152314057, 420547656); + TestUtils.AreEqual(a2 & b2, r2); + + int2x4 a3 = int2x4(1817145060, 1817277774, 818900583, 772681077, 1630437952, 546018772, 872875431, 1143080525); + int b3 = (1466722981); + int2x4 r3 = int2x4(1145858724, 1145069572, 273443365, 101460005, 1093403136, 524420, 335806629, 1142948357); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void int2x4_operator_bitwise_and_scalar_wide() + { + int a0 = (1144543590); + int2x4 b0 = int2x4(420346723, 562416448, 1393127318, 1560699552, 851218057, 703880958, 1159378889, 2031211279); + int2x4 r0 = int2x4(547170, 18752, 1074284806, 1140867104, 3672064, 3168358, 1142427968, 1074811142); + TestUtils.AreEqual(a0 & b0, r0); + + int a1 = (1089518981); + int2x4 b1 = int2x4(270607307, 1349288930, 520199596, 1763483957, 1248975349, 236938635, 185023291, 1085233038); + int2x4 r1 = int2x4(2105729, 1080066432, 40324, 1074831621, 1081121157, 1058177, 14593, 1084233092); + TestUtils.AreEqual(a1 & b1, r1); + + int a2 = (1845693112); + int2x4 b2 = int2x4(946052961, 1436238522, 2042776519, 56356886, 1770159840, 1872339579, 1439201366, 1233066417); + int2x4 r2 = int2x4(671287840, 1141047992, 1744964224, 33751056, 1744964256, 1845559864, 1140852752, 1208158384); + TestUtils.AreEqual(a2 & b2, r2); + + int a3 = (1214109404); + int2x4 b3 = int2x4(2255485, 1814885263, 1711986588, 1286898282, 915476451, 1870138851, 372814411, 1623486506); + int2x4 r3 = int2x4(16988, 1208799884, 1074321052, 1209303624, 1115840, 1213727936, 1610312, 1078218760); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void int2x4_operator_bitwise_or_wide_wide() + { + int2x4 a0 = int2x4(1731159103, 659068416, 382702471, 1821032196, 1565773438, 1004000514, 948501377, 600951835); + int2x4 b0 = int2x4(1583847161, 692672727, 1161585489, 1756207130, 1321374429, 1287357212, 2075767170, 1273513430); + int2x4 r0 = int2x4(2138044159, 793370327, 1476391895, 1823457054, 1607720703, 2147473182, 2075786115, 1811533279); + TestUtils.AreEqual(a0 | b0, r0); + + int2x4 a1 = int2x4(669346222, 396691477, 2108560248, 2117522137, 330307355, 818676817, 1774459567, 1117506257); + int2x4 b1 = int2x4(1610830169, 1316929125, 511625048, 573925879, 1502255628, 1841676448, 1682928938, 1115131952); + int2x4 r1 = int2x4(1743223295, 1610595957, 2147407736, 2117598207, 1538957087, 2110637297, 1842315183, 1124063985); + TestUtils.AreEqual(a1 | b1, r1); + + int2x4 a2 = int2x4(1254511182, 1017865993, 1883021644, 1140203470, 759288967, 2122744307, 335621148, 715028074); + int2x4 b2 = int2x4(1541423910, 1416096228, 188606371, 1041599540, 219545389, 560097663, 1087543661, 936383841); + int2x4 r2 = int2x4(1541821294, 2096099309, 2067654639, 2146934782, 760610735, 2145839615, 1423162749, 1071544171); + TestUtils.AreEqual(a2 | b2, r2); + + int2x4 a3 = int2x4(543305337, 662107399, 1934997335, 436754869, 1613808671, 362365372, 342908672, 2129231210); + int2x4 b3 = int2x4(108816721, 1694053551, 452638547, 1219534055, 85142537, 1027930490, 2126839395, 2030328147); + int2x4 r3 = int2x4(645820281, 1744827823, 2080356183, 1522064887, 1697901599, 1037957630, 2129985379, 2146270587); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void int2x4_operator_bitwise_or_wide_scalar() + { + int2x4 a0 = int2x4(961259683, 471103264, 1733389229, 1591585258, 386953869, 1148351449, 1048929715, 1814263250); + int b0 = (1666102508); + int2x4 r0 = int2x4(2068823279, 2136930284, 1734344685, 2145369582, 2002712301, 1736374269, 2144335359, 1869608446); + TestUtils.AreEqual(a0 | b0, r0); + + int2x4 a1 = int2x4(860336789, 1227888278, 774029856, 879300408, 1179087439, 797240690, 1977614655, 46921989); + int b1 = (1637162093); + int2x4 r1 = int2x4(1943518973, 1773477631, 1874321005, 1979522941, 1742175855, 1872100735, 1978998143, 1675623789); + TestUtils.AreEqual(a1 | b1, r1); + + int2x4 a2 = int2x4(1980838747, 64304104, 313591807, 1393862490, 1890090886, 521303722, 2021379070, 2055963359); + int b2 = (284225881); + int2x4 r2 = int2x4(1995567963, 334885881, 317847551, 1408563035, 1895366623, 536016891, 2029779967, 2063332319); + TestUtils.AreEqual(a2 | b2, r2); + + int2x4 a3 = int2x4(1511253082, 1142751163, 1767274359, 1421981808, 1501294791, 485944015, 539526284, 310877895); + int b3 = (1775629833); + int2x4 r3 = int2x4(2077750875, 1843265467, 1775761279, 2111176313, 2046817999, 2113404623, 1778251405, 2077753039); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void int2x4_operator_bitwise_or_scalar_wide() + { + int a0 = (1213433101); + int2x4 b0 = int2x4(1212928242, 1614462616, 936937728, 764766995, 306352095, 574719481, 1283571271, 2109131012); + int2x4 r0 = int2x4(1213978111, 1752940445, 2145094925, 1842867999, 1515425759, 1783858685, 1288945487, 2113391885); + TestUtils.AreEqual(a0 | b0, r0); + + int a1 = (979469710); + int2x4 b1 = int2x4(1348323481, 1407542578, 697517649, 1059093741, 627815046, 418822515, 83214352, 424663473); + int2x4 r1 = int2x4(2055064991, 2078664126, 1005832159, 1063386607, 1064023950, 989314559, 1056294302, 997187007); + TestUtils.AreEqual(a1 | b1, r1); + + int a2 = (447949225); + int2x4 b2 = int2x4(527022375, 1947148461, 305251437, 1254601325, 1752329425, 1592402684, 1587055329, 1088734150); + int2x4 r2 = int2x4(536590767, 2126457261, 447999469, 1526184941, 2062773753, 1593519101, 1589357545, 1526197231); + TestUtils.AreEqual(a2 | b2, r2); + + int a3 = (298563808); + int2x4 b3 = int2x4(2052547661, 582843231, 656983670, 1944993640, 1081208038, 829763560, 990961386, 547309556); + int2x4 r3 = int2x4(2078276845, 872414207, 938213110, 1945092072, 1375468774, 838844392, 1004273386, 836763636); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void int2x4_operator_bitwise_xor_wide_wide() + { + int2x4 a0 = int2x4(1556324760, 207002929, 1843444873, 1632079131, 1460334334, 1607815585, 220623650, 38668553); + int2x4 b0 = int2x4(1054997548, 1523759632, 251164872, 110472397, 384031112, 1109163205, 535118981, 179106262); + int2x4 r0 = int2x4(1646419380, 1451501345, 1662567489, 1741824470, 1105803126, 499723620, 314783655, 149092575); + TestUtils.AreEqual(a0 ^ b0, r0); + + int2x4 a1 = int2x4(47193340, 643663548, 1371932564, 94957188, 700973621, 370621508, 2087573076, 351476570); + int2x4 b1 = int2x4(1523031711, 1713313372, 1294118730, 520360641, 1040688781, 1020757245, 1143954843, 1281933464); + int2x4 r1 = int2x4(1477935715, 1078104288, 484747486, 447544389, 399484088, 717273273, 943885263, 1486609346); + TestUtils.AreEqual(a1 ^ b1, r1); + + int2x4 a2 = int2x4(1340815927, 681577472, 314138777, 446857644, 1368661599, 1672499683, 1259759761, 2049102405); + int2x4 b2 = int2x4(175288469, 326874157, 1192052687, 1087083643, 1900865484, 1521193463, 569695524, 1622101483); + int2x4 r2 = int2x4(1167690402, 1004255277, 1437869910, 1516836311, 551090579, 958119956, 1793242549, 445489070); + TestUtils.AreEqual(a2 ^ b2, r2); + + int2x4 a3 = int2x4(1972524935, 91962333, 1960780785, 1303778459, 960040360, 822786011, 2028027011, 170382968); + int2x4 b3 = int2x4(1340735463, 546583617, 1034420616, 262206030, 1834125935, 802756092, 611321886, 316379491); + int2x4 r3 = int2x4(981182560, 636424092, 1232544377, 1108797141, 1416333255, 517186087, 1553020061, 419186459); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void int2x4_operator_bitwise_xor_wide_scalar() + { + int2x4 a0 = int2x4(2124666952, 177397845, 574879617, 1937385541, 1136545648, 213863690, 535061373, 289301586); + int b0 = (493665894); + int2x4 r0 = int2x4(1674536494, 402546227, 1060063719, 1846973987, 1590882582, 299103084, 42523931, 206756404); + TestUtils.AreEqual(a0 ^ b0, r0); + + int2x4 a1 = int2x4(1305234431, 1308626970, 1267729267, 125659640, 1315625690, 1730088797, 116862046, 375757978); + int b1 = (353786540); + int2x4 r1 = int2x4(1490686291, 1528187574, 1585863135, 309015380, 1534886006, 1913214449, 333543154, 57919030); + TestUtils.AreEqual(a1 ^ b1, r1); + + int2x4 a2 = int2x4(491079274, 187129429, 967051293, 549951551, 653124416, 788984, 1479174924, 1680011736); + int b2 = (191750702); + int2x4 r2 = int2x4(371762244, 4897915, 852093491, 732592657, 763363694, 190966742, 1397197090, 1867453430); + TestUtils.AreEqual(a2 ^ b2, r2); + + int2x4 a3 = int2x4(447453839, 293394300, 527727631, 529042816, 1382138962, 1206186973, 1059509471, 744733291); + int b3 = (890841598); + int2x4 r3 = int2x4(800240497, 610664066, 711808497, 714187902, 1735978412, 1929239075, 171965729, 427463573); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void int2x4_operator_bitwise_xor_scalar_wide() + { + int a0 = (1288453276); + int2x4 b0 = int2x4(1077599928, 884741329, 212164516, 1585020328, 152985454, 1775851275, 1416249064, 1309317737); + int2x4 r0 = int2x4(217506340, 2020616269, 1080648504, 313868596, 1171416050, 622160791, 413532788, 46573301); + TestUtils.AreEqual(a0 ^ b0, r0); + + int a1 = (1773918217); + int2x4 b1 = int2x4(1509843030, 1206045972, 1154916424, 1947871003, 1774252400, 1946113778, 1079717492, 290620937); + int2x4 r1 = int2x4(809875551, 777590045, 762148929, 497155858, 8071545, 440700667, 702609021, 2028559872); + TestUtils.AreEqual(a1 ^ b1, r1); + + int a2 = (1382343363); + int2x4 b2 = int2x4(939045099, 1309568053, 221134131, 885841718, 612068188, 194068085, 1396957881, 573581481); + int2x4 r2 = int2x4(1704743464, 476745462, 1598742512, 1722301941, 1981778335, 1509285046, 19333242, 1884605034); + TestUtils.AreEqual(a2 ^ b2, r2); + + int a3 = (1813817520); + int2x4 b3 = int2x4(86594349, 2006985393, 1431761813, 905646837, 1522414781, 192882943, 714832744, 374210759); + int2x4 r3 = int2x4(1765145501, 465338881, 961174309, 1508358725, 916626445, 1734574159, 1183306712, 2052237431); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void int2x4_operator_left_shift() + { + int2x4 a0 = int2x4(197771193, 622182602, 1283988958, 1327917304, 473415985, 432425717, 870301196, 2058433484); + int b0 = (1321149625); + int2x4 r0 = int2x4(1912602624, -1811939328, -1140850688, -268435456, 1644167168, -369098752, 402653184, -1744830464); + TestUtils.AreEqual(a0 << b0, r0); + + int2x4 a1 = int2x4(1200694230, 1360008038, 1008296534, 1447702302, 1079614371, 35667343, 1664454606, 2045594989); + int b1 = (1531607705); + int2x4 r1 = int2x4(-1409286144, -872415232, -1409286144, 1006632960, 1174405120, 503316480, -1677721600, -637534208); + TestUtils.AreEqual(a1 << b1, r1); + + int2x4 a2 = int2x4(2077023268, 297755411, 1722762487, 1161625759, 37265945, 997793693, 1521705181, 263886278); + int b2 = (592678686); + int2x4 r2 = int2x4(0, -1073741824, -1073741824, -1073741824, 1073741824, 1073741824, 1073741824, -2147483648); + TestUtils.AreEqual(a2 << b2, r2); + + int2x4 a3 = int2x4(221147365, 230910816, 71403448, 481375728, 1176038816, 1382694875, 1824729613, 1535276688); + int b3 = (2084190583); + int2x4 r3 = int2x4(1920991232, -1342177280, -603979776, -134217728, -805306368, -310378496, 109051904, 1207959552); + TestUtils.AreEqual(a3 << b3, r3); + } + + [TestCompiler] + public static void int2x4_operator_right_shift() + { + int2x4 a0 = int2x4(548167301, 1161338299, 1617625829, 1860731847, 713958715, 196552656, 770466193, 1265099998); + int b0 = (1266801540); + int2x4 r0 = int2x4(34260456, 72583643, 101101614, 116295740, 44622419, 12284541, 48154137, 79068749); + TestUtils.AreEqual(a0 >> b0, r0); + + int2x4 a1 = int2x4(572763124, 426807581, 2031319045, 701927980, 917785020, 569504877, 185593382, 1102123711); + int b1 = (506619530); + int2x4 r1 = int2x4(559338, 416804, 1983710, 685476, 896274, 556157, 181243, 1076292); + TestUtils.AreEqual(a1 >> b1, r1); + + int2x4 a2 = int2x4(334005460, 280138733, 1598620011, 1840564178, 736389149, 1279158873, 408822762, 763607760); + int b2 = (1624751550); + int2x4 r2 = int2x4(0, 0, 1, 1, 0, 1, 0, 0); + TestUtils.AreEqual(a2 >> b2, r2); + + int2x4 a3 = int2x4(348013684, 774126687, 1587054000, 600069797, 29576474, 1880981389, 352174824, 1164508476); + int b3 = (1568185874); + int2x4 r3 = int2x4(1327, 2953, 6054, 2289, 112, 7175, 1343, 4442); + TestUtils.AreEqual(a3 >> b3, r3); + } + + [TestCompiler] + public static void int2x4_operator_bitwise_not() + { + int2x4 a0 = int2x4(1403358969, 831360921, 2088190243, 976721016, 878283189, 308994339, 1935567517, 1420884856); + int2x4 r0 = int2x4(-1403358970, -831360922, -2088190244, -976721017, -878283190, -308994340, -1935567518, -1420884857); + TestUtils.AreEqual(~a0, r0); + + int2x4 a1 = int2x4(472965491, 627580960, 2061524024, 753208488, 2097179283, 1303022493, 664744603, 1289372466); + int2x4 r1 = int2x4(-472965492, -627580961, -2061524025, -753208489, -2097179284, -1303022494, -664744604, -1289372467); + TestUtils.AreEqual(~a1, r1); + + int2x4 a2 = int2x4(1635981125, 1545651937, 717936457, 1284504687, 1342785385, 869629475, 2045854321, 1282546942); + int2x4 r2 = int2x4(-1635981126, -1545651938, -717936458, -1284504688, -1342785386, -869629476, -2045854322, -1282546943); + TestUtils.AreEqual(~a2, r2); + + int2x4 a3 = int2x4(1562433528, 1736570715, 508906058, 2060752880, 1867418756, 388530274, 695179852, 1766938039); + int2x4 r3 = int2x4(-1562433529, -1736570716, -508906059, -2060752881, -1867418757, -388530275, -695179853, -1766938040); + TestUtils.AreEqual(~a3, r3); + } + + + } +} diff --git a/package/Tests/Tests/Shared/TestInt2x4.gen.cs.meta b/package/Tests/Tests/Shared/TestInt2x4.gen.cs.meta new file mode 100755 index 000000000..c14b2a079 --- /dev/null +++ b/package/Tests/Tests/Shared/TestInt2x4.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 847ca3f6ecd472f43b9995db81c87807 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/package/Tests/Tests/Shared/TestInt3.gen.cs b/package/Tests/Tests/Shared/TestInt3.gen.cs new file mode 100755 index 000000000..97f7efaf6 --- /dev/null +++ b/package/Tests/Tests/Shared/TestInt3.gen.cs @@ -0,0 +1,1346 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using NUnit.Framework; +using static Unity.Mathematics.math; +using Burst.Compiler.IL.Tests; + +namespace Unity.Mathematics.Tests +{ + [TestFixture] + public class TestInt3 + { + [TestCompiler] + public static void int3_zero() + { + TestUtils.AreEqual(int3.zero.x, 0); + TestUtils.AreEqual(int3.zero.y, 0); + TestUtils.AreEqual(int3.zero.z, 0); + } + + [TestCompiler] + public static void int3_constructor() + { + int3 a = new int3(1, 2, 3); + TestUtils.AreEqual(a.x, 1); + TestUtils.AreEqual(a.y, 2); + TestUtils.AreEqual(a.z, 3); + } + + [TestCompiler] + public static void int3_scalar_constructor() + { + int3 a = new int3(17); + TestUtils.AreEqual(a.x, 17); + TestUtils.AreEqual(a.y, 17); + TestUtils.AreEqual(a.z, 17); + } + + [TestCompiler] + public static void int3_static_constructor() + { + int3 a = int3(1, 2, 3); + TestUtils.AreEqual(a.x, 1); + TestUtils.AreEqual(a.y, 2); + TestUtils.AreEqual(a.z, 3); + } + + [TestCompiler] + public static void int3_static_scalar_constructor() + { + int3 a = int3(17); + TestUtils.AreEqual(a.x, 17); + TestUtils.AreEqual(a.y, 17); + TestUtils.AreEqual(a.z, 17); + } + + [TestCompiler] + public static void int3_operator_equal_wide_wide() + { + int3 a0 = int3(790229414, 970783976, 1428432738); + int3 b0 = int3(612337669, 1214209108, 2120643427); + bool3 r0 = bool3(false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + int3 a1 = int3(1578747135, 1733797753, 2001507228); + int3 b1 = int3(295461214, 1510890331, 1893316566); + bool3 r1 = bool3(false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + int3 a2 = int3(1446876437, 1777406370, 1426387268); + int3 b2 = int3(921816149, 1834958575, 1482011863); + bool3 r2 = bool3(false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + int3 a3 = int3(1809275021, 1843770816, 1172185222); + int3 b3 = int3(2062852792, 226398742, 770290735); + bool3 r3 = bool3(false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void int3_operator_equal_wide_scalar() + { + int3 a0 = int3(1211464300, 1921862607, 508076684); + int b0 = (746972502); + bool3 r0 = bool3(false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + int3 a1 = int3(1249127920, 746862310, 1733655277); + int b1 = (1394594555); + bool3 r1 = bool3(false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + int3 a2 = int3(1884008277, 795585660, 936027116); + int b2 = (1682018538); + bool3 r2 = bool3(false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + int3 a3 = int3(927605411, 1465584610, 585324157); + int b3 = (672785749); + bool3 r3 = bool3(false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void int3_operator_equal_scalar_wide() + { + int a0 = (1150044438); + int3 b0 = int3(233855098, 924242519, 1402948791); + bool3 r0 = bool3(false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + int a1 = (601381975); + int3 b1 = int3(2120518068, 629187703, 1971977031); + bool3 r1 = bool3(false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + int a2 = (47183124); + int3 b2 = int3(1061805787, 1009011238, 312511148); + bool3 r2 = bool3(false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + int a3 = (1460673064); + int3 b3 = int3(737210539, 1737844479, 1892405453); + bool3 r3 = bool3(false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void int3_operator_not_equal_wide_wide() + { + int3 a0 = int3(1660932106, 982847023, 97046264); + int3 b0 = int3(107139049, 75478496, 2055495054); + bool3 r0 = bool3(true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + int3 a1 = int3(1739517447, 1253499180, 1830584069); + int3 b1 = int3(358586687, 942338347, 111564990); + bool3 r1 = bool3(true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + int3 a2 = int3(1841470429, 1397841646, 1770890135); + int3 b2 = int3(113811950, 948912488, 1080084121); + bool3 r2 = bool3(true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + int3 a3 = int3(1906548631, 169082967, 2099271786); + int3 b3 = int3(1400504872, 1032134499, 1061123400); + bool3 r3 = bool3(true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void int3_operator_not_equal_wide_scalar() + { + int3 a0 = int3(747758183, 1033001286, 1439973882); + int b0 = (248693828); + bool3 r0 = bool3(true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + int3 a1 = int3(2138928797, 1432672459, 950170763); + int b1 = (1197845089); + bool3 r1 = bool3(true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + int3 a2 = int3(238704450, 727205263, 1640688041); + int b2 = (2105962247); + bool3 r2 = bool3(true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + int3 a3 = int3(276313906, 791998981, 2035077187); + int b3 = (2126300423); + bool3 r3 = bool3(true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void int3_operator_not_equal_scalar_wide() + { + int a0 = (2076921066); + int3 b0 = int3(2037494727, 1989050616, 48833929); + bool3 r0 = bool3(true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + int a1 = (1897435904); + int3 b1 = int3(514354517, 1783749164, 364694471); + bool3 r1 = bool3(true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + int a2 = (754315072); + int3 b2 = int3(124108032, 1512967900, 1178825850); + bool3 r2 = bool3(true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + int a3 = (1854793298); + int3 b3 = int3(50286949, 2100802631, 1640811853); + bool3 r3 = bool3(true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void int3_operator_less_wide_wide() + { + int3 a0 = int3(1182186063, 415538999, 1667335818); + int3 b0 = int3(524633529, 1032195686, 760723389); + bool3 r0 = bool3(false, true, false); + TestUtils.AreEqual(a0 < b0, r0); + + int3 a1 = int3(1566618442, 1166180837, 639095188); + int3 b1 = int3(1505751409, 431962172, 1287906509); + bool3 r1 = bool3(false, false, true); + TestUtils.AreEqual(a1 < b1, r1); + + int3 a2 = int3(1080836365, 771119973, 928263233); + int3 b2 = int3(1560084663, 1450178202, 2066166337); + bool3 r2 = bool3(true, true, true); + TestUtils.AreEqual(a2 < b2, r2); + + int3 a3 = int3(789225474, 665243110, 1003542034); + int3 b3 = int3(1107069023, 1640077524, 2103263105); + bool3 r3 = bool3(true, true, true); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void int3_operator_less_wide_scalar() + { + int3 a0 = int3(608447185, 818840405, 869219329); + int b0 = (1491216667); + bool3 r0 = bool3(true, true, true); + TestUtils.AreEqual(a0 < b0, r0); + + int3 a1 = int3(2080125385, 1361741203, 1667165786); + int b1 = (1214500548); + bool3 r1 = bool3(false, false, false); + TestUtils.AreEqual(a1 < b1, r1); + + int3 a2 = int3(1615392341, 469591900, 1247103789); + int b2 = (840091491); + bool3 r2 = bool3(false, true, false); + TestUtils.AreEqual(a2 < b2, r2); + + int3 a3 = int3(315321650, 1100560246, 933855388); + int b3 = (930950514); + bool3 r3 = bool3(true, false, false); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void int3_operator_less_scalar_wide() + { + int a0 = (548436837); + int3 b0 = int3(282703327, 14370648, 1862117300); + bool3 r0 = bool3(false, false, true); + TestUtils.AreEqual(a0 < b0, r0); + + int a1 = (1304793311); + int3 b1 = int3(826073259, 988910157, 445132446); + bool3 r1 = bool3(false, false, false); + TestUtils.AreEqual(a1 < b1, r1); + + int a2 = (1139670255); + int3 b2 = int3(111349251, 1102440676, 112183144); + bool3 r2 = bool3(false, false, false); + TestUtils.AreEqual(a2 < b2, r2); + + int a3 = (1594415311); + int3 b3 = int3(1890019295, 2098715503, 608933527); + bool3 r3 = bool3(true, true, false); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void int3_operator_greater_wide_wide() + { + int3 a0 = int3(592884447, 2133928932, 918957182); + int3 b0 = int3(138737040, 192863971, 1700841444); + bool3 r0 = bool3(true, true, false); + TestUtils.AreEqual(a0 > b0, r0); + + int3 a1 = int3(1284069471, 194584707, 739120780); + int3 b1 = int3(1044631301, 1391589821, 730837695); + bool3 r1 = bool3(true, false, true); + TestUtils.AreEqual(a1 > b1, r1); + + int3 a2 = int3(241654068, 1340158550, 2099542537); + int3 b2 = int3(253553987, 2078872742, 910845808); + bool3 r2 = bool3(false, false, true); + TestUtils.AreEqual(a2 > b2, r2); + + int3 a3 = int3(1182623667, 1399607274, 789301637); + int3 b3 = int3(976047676, 202633078, 1223618940); + bool3 r3 = bool3(true, true, false); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void int3_operator_greater_wide_scalar() + { + int3 a0 = int3(1097138316, 211763648, 1883002501); + int b0 = (438688675); + bool3 r0 = bool3(true, false, true); + TestUtils.AreEqual(a0 > b0, r0); + + int3 a1 = int3(56406996, 1923456111, 1437755186); + int b1 = (43662641); + bool3 r1 = bool3(true, true, true); + TestUtils.AreEqual(a1 > b1, r1); + + int3 a2 = int3(1219010035, 304028799, 893125636); + int b2 = (2125058448); + bool3 r2 = bool3(false, false, false); + TestUtils.AreEqual(a2 > b2, r2); + + int3 a3 = int3(48044515, 1035679270, 577943770); + int b3 = (711945018); + bool3 r3 = bool3(false, true, false); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void int3_operator_greater_scalar_wide() + { + int a0 = (2024896938); + int3 b0 = int3(599356784, 185671342, 1932327391); + bool3 r0 = bool3(true, true, true); + TestUtils.AreEqual(a0 > b0, r0); + + int a1 = (2025591013); + int3 b1 = int3(1257191721, 1312388500, 1443698859); + bool3 r1 = bool3(true, true, true); + TestUtils.AreEqual(a1 > b1, r1); + + int a2 = (779217735); + int3 b2 = int3(691047512, 741776730, 732565983); + bool3 r2 = bool3(true, true, true); + TestUtils.AreEqual(a2 > b2, r2); + + int a3 = (668302204); + int3 b3 = int3(1556466996, 858599525, 1896917159); + bool3 r3 = bool3(false, false, false); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void int3_operator_less_equal_wide_wide() + { + int3 a0 = int3(1577248162, 2043073061, 1688380407); + int3 b0 = int3(903445031, 2108974565, 210822256); + bool3 r0 = bool3(false, true, false); + TestUtils.AreEqual(a0 <= b0, r0); + + int3 a1 = int3(176431985, 223299035, 1502802140); + int3 b1 = int3(1281704747, 453681718, 66138830); + bool3 r1 = bool3(true, true, false); + TestUtils.AreEqual(a1 <= b1, r1); + + int3 a2 = int3(1691709825, 386789394, 117182003); + int3 b2 = int3(1229799377, 1620922595, 1715833766); + bool3 r2 = bool3(false, true, true); + TestUtils.AreEqual(a2 <= b2, r2); + + int3 a3 = int3(1665770435, 1958490731, 420032601); + int3 b3 = int3(1366430432, 13102000, 46919981); + bool3 r3 = bool3(false, false, false); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void int3_operator_less_equal_wide_scalar() + { + int3 a0 = int3(1722165358, 1219858357, 860410743); + int b0 = (1688048545); + bool3 r0 = bool3(false, true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + int3 a1 = int3(411099660, 1963256951, 212084836); + int b1 = (348104022); + bool3 r1 = bool3(false, false, true); + TestUtils.AreEqual(a1 <= b1, r1); + + int3 a2 = int3(58924407, 1745758438, 532949158); + int b2 = (1459242706); + bool3 r2 = bool3(true, false, true); + TestUtils.AreEqual(a2 <= b2, r2); + + int3 a3 = int3(262559763, 1806172431, 2091514001); + int b3 = (690091301); + bool3 r3 = bool3(true, false, false); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void int3_operator_less_equal_scalar_wide() + { + int a0 = (1777585); + int3 b0 = int3(1181030049, 1787703989, 1729760948); + bool3 r0 = bool3(true, true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + int a1 = (1816537388); + int3 b1 = int3(1359786460, 874999193, 1678863148); + bool3 r1 = bool3(false, false, false); + TestUtils.AreEqual(a1 <= b1, r1); + + int a2 = (1711365839); + int3 b2 = int3(762067160, 11953554, 1131583906); + bool3 r2 = bool3(false, false, false); + TestUtils.AreEqual(a2 <= b2, r2); + + int a3 = (1175393186); + int3 b3 = int3(1293698493, 48893340, 66196247); + bool3 r3 = bool3(true, false, false); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void int3_operator_greater_equal_wide_wide() + { + int3 a0 = int3(263000030, 744235661, 1893760267); + int3 b0 = int3(1395535146, 1178373944, 1237373760); + bool3 r0 = bool3(false, false, true); + TestUtils.AreEqual(a0 >= b0, r0); + + int3 a1 = int3(237248, 1062370984, 1676977687); + int3 b1 = int3(1364855321, 600811864, 362060472); + bool3 r1 = bool3(false, true, true); + TestUtils.AreEqual(a1 >= b1, r1); + + int3 a2 = int3(816766880, 1089431546, 1394493730); + int3 b2 = int3(290870624, 1839067862, 396958580); + bool3 r2 = bool3(true, false, true); + TestUtils.AreEqual(a2 >= b2, r2); + + int3 a3 = int3(1176473380, 1193988637, 1703862455); + int3 b3 = int3(1336888643, 1019684398, 1697684196); + bool3 r3 = bool3(false, true, true); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void int3_operator_greater_equal_wide_scalar() + { + int3 a0 = int3(2112791350, 1043657935, 101764761); + int b0 = (1470533736); + bool3 r0 = bool3(true, false, false); + TestUtils.AreEqual(a0 >= b0, r0); + + int3 a1 = int3(1529909067, 281734132, 1186600258); + int b1 = (556026890); + bool3 r1 = bool3(true, false, true); + TestUtils.AreEqual(a1 >= b1, r1); + + int3 a2 = int3(815093894, 1604309397, 829548642); + int b2 = (609211196); + bool3 r2 = bool3(true, true, true); + TestUtils.AreEqual(a2 >= b2, r2); + + int3 a3 = int3(244604867, 471843809, 1819986195); + int b3 = (1419295004); + bool3 r3 = bool3(false, false, true); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void int3_operator_greater_equal_scalar_wide() + { + int a0 = (1525542481); + int3 b0 = int3(1503244746, 861711266, 817773856); + bool3 r0 = bool3(true, true, true); + TestUtils.AreEqual(a0 >= b0, r0); + + int a1 = (925984572); + int3 b1 = int3(571221723, 683686810, 118252990); + bool3 r1 = bool3(true, true, true); + TestUtils.AreEqual(a1 >= b1, r1); + + int a2 = (1653952090); + int3 b2 = int3(1240253990, 1947039008, 1869136019); + bool3 r2 = bool3(true, false, false); + TestUtils.AreEqual(a2 >= b2, r2); + + int a3 = (152012637); + int3 b3 = int3(1214546726, 917376832, 303549425); + bool3 r3 = bool3(false, false, false); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void int3_operator_add_wide_wide() + { + int3 a0 = int3(2049228671, 1658660009, 491719392); + int3 b0 = int3(2088751567, 645762023, 306868786); + int3 r0 = int3(-156987058, -1990545264, 798588178); + TestUtils.AreEqual(a0 + b0, r0); + + int3 a1 = int3(937013355, 81108663, 1063894558); + int3 b1 = int3(4360271, 506047997, 2094559874); + int3 r1 = int3(941373626, 587156660, -1136512864); + TestUtils.AreEqual(a1 + b1, r1); + + int3 a2 = int3(86954702, 843159721, 698977704); + int3 b2 = int3(1634712736, 1601474440, 1586485231); + int3 r2 = int3(1721667438, -1850333135, -2009504361); + TestUtils.AreEqual(a2 + b2, r2); + + int3 a3 = int3(192867135, 1683407172, 137301303); + int3 b3 = int3(908746788, 1812370320, 1247342357); + int3 r3 = int3(1101613923, -799189804, 1384643660); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void int3_operator_add_wide_scalar() + { + int3 a0 = int3(2038218457, 134923711, 875689667); + int b0 = (2124409227); + int3 r0 = int3(-132339612, -2035634358, -1294868402); + TestUtils.AreEqual(a0 + b0, r0); + + int3 a1 = int3(1338884463, 340490871, 1067888129); + int b1 = (997710928); + int3 r1 = int3(-1958371905, 1338201799, 2065599057); + TestUtils.AreEqual(a1 + b1, r1); + + int3 a2 = int3(70433301, 1635971971, 1160398286); + int b2 = (2003021861); + int3 r2 = int3(2073455162, -655973464, -1131547149); + TestUtils.AreEqual(a2 + b2, r2); + + int3 a3 = int3(85446202, 1239387100, 1497676888); + int b3 = (1068152966); + int3 r3 = int3(1153599168, -1987427230, -1729137442); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void int3_operator_add_scalar_wide() + { + int a0 = (391092078); + int3 b0 = int3(519908870, 851424292, 328314822); + int3 r0 = int3(911000948, 1242516370, 719406900); + TestUtils.AreEqual(a0 + b0, r0); + + int a1 = (135622204); + int3 b1 = int3(740923360, 655394201, 1451896269); + int3 r1 = int3(876545564, 791016405, 1587518473); + TestUtils.AreEqual(a1 + b1, r1); + + int a2 = (1781697072); + int3 b2 = int3(996031825, 1557774949, 779774940); + int3 r2 = int3(-1517238399, -955495275, -1733495284); + TestUtils.AreEqual(a2 + b2, r2); + + int a3 = (1111541302); + int3 b3 = int3(783046445, 1130163944, 288279584); + int3 r3 = int3(1894587747, -2053262050, 1399820886); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void int3_operator_sub_wide_wide() + { + int3 a0 = int3(1353441118, 797269833, 659988112); + int3 b0 = int3(1332656812, 1827794007, 972557431); + int3 r0 = int3(20784306, -1030524174, -312569319); + TestUtils.AreEqual(a0 - b0, r0); + + int3 a1 = int3(56022121, 365847472, 2062899435); + int3 b1 = int3(2078233689, 1508184327, 1372307701); + int3 r1 = int3(-2022211568, -1142336855, 690591734); + TestUtils.AreEqual(a1 - b1, r1); + + int3 a2 = int3(1380988474, 799885138, 1306058185); + int3 b2 = int3(810327977, 936799885, 71562303); + int3 r2 = int3(570660497, -136914747, 1234495882); + TestUtils.AreEqual(a2 - b2, r2); + + int3 a3 = int3(579775276, 1239163824, 344591081); + int3 b3 = int3(1418723328, 1971342989, 1226053395); + int3 r3 = int3(-838948052, -732179165, -881462314); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void int3_operator_sub_wide_scalar() + { + int3 a0 = int3(1176369558, 1934521195, 309452150); + int b0 = (462232403); + int3 r0 = int3(714137155, 1472288792, -152780253); + TestUtils.AreEqual(a0 - b0, r0); + + int3 a1 = int3(1417634074, 1306356714, 1502312334); + int b1 = (108910717); + int3 r1 = int3(1308723357, 1197445997, 1393401617); + TestUtils.AreEqual(a1 - b1, r1); + + int3 a2 = int3(1451794815, 87530840, 1913724431); + int b2 = (281174200); + int3 r2 = int3(1170620615, -193643360, 1632550231); + TestUtils.AreEqual(a2 - b2, r2); + + int3 a3 = int3(2041593336, 1119051448, 1590376732); + int b3 = (557239990); + int3 r3 = int3(1484353346, 561811458, 1033136742); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void int3_operator_sub_scalar_wide() + { + int a0 = (1691534405); + int3 b0 = int3(2022393810, 1612688515, 496689713); + int3 r0 = int3(-330859405, 78845890, 1194844692); + TestUtils.AreEqual(a0 - b0, r0); + + int a1 = (887037586); + int3 b1 = int3(2097630964, 374934538, 939035482); + int3 r1 = int3(-1210593378, 512103048, -51997896); + TestUtils.AreEqual(a1 - b1, r1); + + int a2 = (935242277); + int3 b2 = int3(1789300421, 264712893, 1231856067); + int3 r2 = int3(-854058144, 670529384, -296613790); + TestUtils.AreEqual(a2 - b2, r2); + + int a3 = (1818112748); + int3 b3 = int3(1428436109, 1258745460, 1077380396); + int3 r3 = int3(389676639, 559367288, 740732352); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void int3_operator_mul_wide_wide() + { + int3 a0 = int3(245827027, 208934650, 1019478917); + int3 b0 = int3(759663997, 350129201, 477450108); + int3 r0 = int3(-632811769, 1402281434, 332447596); + TestUtils.AreEqual(a0 * b0, r0); + + int3 a1 = int3(568231809, 877289039, 1585782440); + int3 b1 = int3(1635735015, 388710278, 757722665); + int3 r1 = int3(-1932977561, -1670918566, 1455036648); + TestUtils.AreEqual(a1 * b1, r1); + + int3 a2 = int3(2111178729, 1186019069, 571481445); + int3 b2 = int3(1509388321, 1841703980, 1826369331); + int3 r2 = int3(2128344329, -594088068, -1654168033); + TestUtils.AreEqual(a2 * b2, r2); + + int3 a3 = int3(1570087048, 629447153, 619383734); + int3 b3 = int3(1524322467, 1605207974, 428419155); + int3 r3 = int3(2093463192, -1207506618, -1133560830); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void int3_operator_mul_wide_scalar() + { + int3 a0 = int3(1762033447, 465343930, 1570757881); + int b0 = (1476837906); + int3 r0 = int3(-1313177922, 1326807828, -2138555518); + TestUtils.AreEqual(a0 * b0, r0); + + int3 a1 = int3(1326409563, 1356578909, 72749215); + int b1 = (1824319147); + int3 r1 = int3(-252064823, -236385249, -2127563723); + TestUtils.AreEqual(a1 * b1, r1); + + int3 a2 = int3(154616909, 573770299, 1958912969); + int b2 = (975743632); + int3 r2 = int3(7966032, 414773040, 262642448); + TestUtils.AreEqual(a2 * b2, r2); + + int3 a3 = int3(971327747, 1324050764, 660611671); + int b3 = (1818877398); + int3 r3 = int3(-1947361406, 1927061896, -1313812550); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void int3_operator_mul_scalar_wide() + { + int a0 = (99541948); + int3 b0 = int3(1764461774, 657072478, 1459784358); + int3 r0 = int3(-950398648, -102049016, 1260585960); + TestUtils.AreEqual(a0 * b0, r0); + + int a1 = (1610646683); + int3 b1 = int3(1632058826, 868441654, 1408757883); + int3 r1 = int3(1644073294, 1407050418, -820115847); + TestUtils.AreEqual(a1 * b1, r1); + + int a2 = (335917146); + int3 b2 = int3(2105124483, 1178393968, 1963904348); + int3 r2 = int3(1003330062, -1663903392, -2026933672); + TestUtils.AreEqual(a2 * b2, r2); + + int a3 = (1409533767); + int3 b3 = int3(243286231, 1336308795, 517963367); + int3 r3 = int3(108928161, 875895133, -1837949039); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void int3_operator_div_wide_wide() + { + int3 a0 = int3(1590198532, 507812502, 126627032); + int3 b0 = int3(1434703236, 911965201, 390415521); + int3 r0 = int3(1, 0, 0); + TestUtils.AreEqual(a0 / b0, r0); + + int3 a1 = int3(1058247011, 427387861, 290676154); + int3 b1 = int3(128746927, 525835375, 816946613); + int3 r1 = int3(8, 0, 0); + TestUtils.AreEqual(a1 / b1, r1); + + int3 a2 = int3(1829594484, 1127868739, 499016351); + int3 b2 = int3(878264647, 146789678, 2089524057); + int3 r2 = int3(2, 7, 0); + TestUtils.AreEqual(a2 / b2, r2); + + int3 a3 = int3(1341209632, 134906097, 785470242); + int3 b3 = int3(254213018, 1916850021, 1737806518); + int3 r3 = int3(5, 0, 0); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void int3_operator_div_wide_scalar() + { + int3 a0 = int3(560951562, 1218680769, 375341724); + int b0 = (947861580); + int3 r0 = int3(0, 1, 0); + TestUtils.AreEqual(a0 / b0, r0); + + int3 a1 = int3(1613542090, 1397425408, 1349573078); + int b1 = (1919409166); + int3 r1 = int3(0, 0, 0); + TestUtils.AreEqual(a1 / b1, r1); + + int3 a2 = int3(524526253, 495895326, 1515313790); + int b2 = (341995568); + int3 r2 = int3(1, 1, 4); + TestUtils.AreEqual(a2 / b2, r2); + + int3 a3 = int3(1676971657, 2105094094, 1017891310); + int b3 = (2131487088); + int3 r3 = int3(0, 0, 0); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void int3_operator_div_scalar_wide() + { + int a0 = (1161272038); + int3 b0 = int3(187325733, 1594107378, 2016183849); + int3 r0 = int3(6, 0, 0); + TestUtils.AreEqual(a0 / b0, r0); + + int a1 = (1589343709); + int3 b1 = int3(388768753, 1417077283, 1773486938); + int3 r1 = int3(4, 1, 0); + TestUtils.AreEqual(a1 / b1, r1); + + int a2 = (1154044032); + int3 b2 = int3(81831373, 1476877645, 653688843); + int3 r2 = int3(14, 0, 1); + TestUtils.AreEqual(a2 / b2, r2); + + int a3 = (45756703); + int3 b3 = int3(631027637, 396671391, 784365696); + int3 r3 = int3(0, 0, 0); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void int3_operator_mod_wide_wide() + { + int3 a0 = int3(146150818, 1846543305, 1071447756); + int3 b0 = int3(983050390, 771341152, 942375212); + int3 r0 = int3(146150818, 303861001, 129072544); + TestUtils.AreEqual(a0 % b0, r0); + + int3 a1 = int3(308965362, 659881575, 1002365460); + int3 b1 = int3(367361754, 749500619, 750718852); + int3 r1 = int3(308965362, 659881575, 251646608); + TestUtils.AreEqual(a1 % b1, r1); + + int3 a2 = int3(861198439, 1510617532, 778525078); + int3 b2 = int3(2095151755, 88438806, 769227442); + int3 r2 = int3(861198439, 7157830, 9297636); + TestUtils.AreEqual(a2 % b2, r2); + + int3 a3 = int3(1458458044, 101987897, 1249565173); + int3 b3 = int3(647214624, 1026513788, 1544950956); + int3 r3 = int3(164028796, 101987897, 1249565173); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void int3_operator_mod_wide_scalar() + { + int3 a0 = int3(164800505, 1062177828, 1898749675); + int b0 = (883951171); + int3 r0 = int3(164800505, 178226657, 130847333); + TestUtils.AreEqual(a0 % b0, r0); + + int3 a1 = int3(1701653318, 19002208, 128329633); + int b1 = (820393245); + int3 r1 = int3(60866828, 19002208, 128329633); + TestUtils.AreEqual(a1 % b1, r1); + + int3 a2 = int3(1464010899, 405208598, 1982762194); + int b2 = (896587769); + int3 r2 = int3(567423130, 405208598, 189586656); + TestUtils.AreEqual(a2 % b2, r2); + + int3 a3 = int3(959236935, 172564850, 1540068445); + int b3 = (712321026); + int3 r3 = int3(246915909, 172564850, 115426393); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void int3_operator_mod_scalar_wide() + { + int a0 = (242383789); + int3 b0 = int3(740000543, 1556450291, 1104736385); + int3 r0 = int3(242383789, 242383789, 242383789); + TestUtils.AreEqual(a0 % b0, r0); + + int a1 = (437976569); + int3 b1 = int3(1911837205, 1507212038, 1906405167); + int3 r1 = int3(437976569, 437976569, 437976569); + TestUtils.AreEqual(a1 % b1, r1); + + int a2 = (247693265); + int3 b2 = int3(293460573, 1495295166, 873323603); + int3 r2 = int3(247693265, 247693265, 247693265); + TestUtils.AreEqual(a2 % b2, r2); + + int a3 = (530681233); + int3 b3 = int3(1298102643, 2057984657, 1000742091); + int3 r3 = int3(530681233, 530681233, 530681233); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void int3_operator_plus() + { + int3 a0 = int3(1643476803, 907898539, 379615839); + int3 r0 = int3(1643476803, 907898539, 379615839); + TestUtils.AreEqual(+a0, r0); + + int3 a1 = int3(1140483021, 1743199272, 1472881565); + int3 r1 = int3(1140483021, 1743199272, 1472881565); + TestUtils.AreEqual(+a1, r1); + + int3 a2 = int3(339091479, 1287765427, 849339193); + int3 r2 = int3(339091479, 1287765427, 849339193); + TestUtils.AreEqual(+a2, r2); + + int3 a3 = int3(174532915, 1566098441, 1145639744); + int3 r3 = int3(174532915, 1566098441, 1145639744); + TestUtils.AreEqual(+a3, r3); + } + + [TestCompiler] + public static void int3_operator_neg() + { + int3 a0 = int3(1955022112, 662160019, 370300775); + int3 r0 = int3(-1955022112, -662160019, -370300775); + TestUtils.AreEqual(-a0, r0); + + int3 a1 = int3(2141283773, 28153593, 33894270); + int3 r1 = int3(-2141283773, -28153593, -33894270); + TestUtils.AreEqual(-a1, r1); + + int3 a2 = int3(505708349, 1636274969, 694995093); + int3 r2 = int3(-505708349, -1636274969, -694995093); + TestUtils.AreEqual(-a2, r2); + + int3 a3 = int3(1542206286, 243937487, 341522275); + int3 r3 = int3(-1542206286, -243937487, -341522275); + TestUtils.AreEqual(-a3, r3); + } + + [TestCompiler] + public static void int3_operator_prefix_inc() + { + int3 a0 = int3(864455342, 2035793213, 1275443862); + int3 r0 = int3(864455343, 2035793214, 1275443863); + TestUtils.AreEqual(++a0, r0); + + int3 a1 = int3(971919915, 446210725, 395072276); + int3 r1 = int3(971919916, 446210726, 395072277); + TestUtils.AreEqual(++a1, r1); + + int3 a2 = int3(115573442, 432884105, 1208161871); + int3 r2 = int3(115573443, 432884106, 1208161872); + TestUtils.AreEqual(++a2, r2); + + int3 a3 = int3(1385544935, 831396561, 388229350); + int3 r3 = int3(1385544936, 831396562, 388229351); + TestUtils.AreEqual(++a3, r3); + } + + [TestCompiler] + public static void int3_operator_postfix_inc() + { + int3 a0 = int3(1751003569, 2063707595, 1500486291); + int3 r0 = int3(1751003569, 2063707595, 1500486291); + TestUtils.AreEqual(a0++, r0); + + int3 a1 = int3(969189211, 2028651936, 1643023524); + int3 r1 = int3(969189211, 2028651936, 1643023524); + TestUtils.AreEqual(a1++, r1); + + int3 a2 = int3(1190630527, 708474528, 177416855); + int3 r2 = int3(1190630527, 708474528, 177416855); + TestUtils.AreEqual(a2++, r2); + + int3 a3 = int3(1524860667, 375284401, 1580130369); + int3 r3 = int3(1524860667, 375284401, 1580130369); + TestUtils.AreEqual(a3++, r3); + } + + [TestCompiler] + public static void int3_operator_prefix_dec() + { + int3 a0 = int3(200904609, 871077500, 968578728); + int3 r0 = int3(200904608, 871077499, 968578727); + TestUtils.AreEqual(--a0, r0); + + int3 a1 = int3(638967721, 435367037, 1782514098); + int3 r1 = int3(638967720, 435367036, 1782514097); + TestUtils.AreEqual(--a1, r1); + + int3 a2 = int3(1589827826, 596759698, 1699290403); + int3 r2 = int3(1589827825, 596759697, 1699290402); + TestUtils.AreEqual(--a2, r2); + + int3 a3 = int3(1758478358, 71237375, 389120307); + int3 r3 = int3(1758478357, 71237374, 389120306); + TestUtils.AreEqual(--a3, r3); + } + + [TestCompiler] + public static void int3_operator_postfix_dec() + { + int3 a0 = int3(283970262, 1109329936, 1073216143); + int3 r0 = int3(283970262, 1109329936, 1073216143); + TestUtils.AreEqual(a0--, r0); + + int3 a1 = int3(649439137, 1174104498, 484207852); + int3 r1 = int3(649439137, 1174104498, 484207852); + TestUtils.AreEqual(a1--, r1); + + int3 a2 = int3(524156737, 2017728859, 802721301); + int3 r2 = int3(524156737, 2017728859, 802721301); + TestUtils.AreEqual(a2--, r2); + + int3 a3 = int3(377162390, 1504625034, 590919177); + int3 r3 = int3(377162390, 1504625034, 590919177); + TestUtils.AreEqual(a3--, r3); + } + + [TestCompiler] + public static void int3_operator_bitwise_and_wide_wide() + { + int3 a0 = int3(779935043, 1097962163, 1939593304); + int3 b0 = int3(307705143, 1710882162, 866836769); + int3 r0 = int3(39064835, 1097961522, 864731136); + TestUtils.AreEqual(a0 & b0, r0); + + int3 a1 = int3(800599247, 952140918, 782792558); + int3 b1 = int3(532490608, 679371720, 1794035877); + int3 r1 = int3(263727168, 675283008, 715673636); + TestUtils.AreEqual(a1 & b1, r1); + + int3 a2 = int3(1608557706, 396446406, 2039894114); + int3 b2 = int3(1439832202, 519529812, 23633139); + int3 r2 = int3(1438646410, 379666500, 16781410); + TestUtils.AreEqual(a2 & b2, r2); + + int3 a3 = int3(1286974642, 442394124, 1759739564); + int3 b3 = int3(1209152681, 646737179, 1255867027); + int3 r3 = int3(1209017504, 34366472, 1220739712); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void int3_operator_bitwise_and_wide_scalar() + { + int3 a0 = int3(443615469, 490057985, 2042441263); + int b0 = (93423598); + int3 r0 = int3(1114348, 85033216, 26281518); + TestUtils.AreEqual(a0 & b0, r0); + + int3 a1 = int3(1524760558, 510212004, 1941875181); + int b1 = (1405175110); + int3 r1 = int3(1388397894, 306251012, 1400897860); + TestUtils.AreEqual(a1 & b1, r1); + + int3 a2 = int3(1236735839, 428270198, 607982857); + int b2 = (1365509729); + int3 r2 = int3(1092879937, 285475424, 2360321); + TestUtils.AreEqual(a2 & b2, r2); + + int3 a3 = int3(650270920, 814629680, 1862276471); + int b3 = (1249238550); + int3 r3 = int3(37771264, 279056, 1241519126); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void int3_operator_bitwise_and_scalar_wide() + { + int a0 = (1144543590); + int3 b0 = int3(420346723, 562416448, 1393127318); + int3 r0 = int3(547170, 18752, 1074284806); + TestUtils.AreEqual(a0 & b0, r0); + + int a1 = (1560699552); + int3 b1 = int3(851218057, 703880958, 1159378889); + int3 r1 = int3(268698240, 151274144, 1157767808); + TestUtils.AreEqual(a1 & b1, r1); + + int a2 = (2031211279); + int3 b2 = int3(1089518981, 270607307, 1349288930); + int3 r2 = int3(1074827525, 268501771, 1342210818); + TestUtils.AreEqual(a2 & b2, r2); + + int a3 = (520199596); + int3 b3 = int3(1763483957, 1248975349, 236938635); + int3 r3 = int3(151028004, 167877028, 234947976); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void int3_operator_bitwise_or_wide_wide() + { + int3 a0 = int3(1731159103, 659068416, 382702471); + int3 b0 = int3(1583847161, 692672727, 1161585489); + int3 r0 = int3(2138044159, 793370327, 1476391895); + TestUtils.AreEqual(a0 | b0, r0); + + int3 a1 = int3(1821032196, 1565773438, 1004000514); + int3 b1 = int3(1756207130, 1321374429, 1287357212); + int3 r1 = int3(1823457054, 1607720703, 2147473182); + TestUtils.AreEqual(a1 | b1, r1); + + int3 a2 = int3(948501377, 600951835, 669346222); + int3 b2 = int3(2075767170, 1273513430, 1610830169); + int3 r2 = int3(2075786115, 1811533279, 1743223295); + TestUtils.AreEqual(a2 | b2, r2); + + int3 a3 = int3(396691477, 2108560248, 2117522137); + int3 b3 = int3(1316929125, 511625048, 573925879); + int3 r3 = int3(1610595957, 2147407736, 2117598207); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void int3_operator_bitwise_or_wide_scalar() + { + int3 a0 = int3(961259683, 471103264, 1733389229); + int b0 = (1666102508); + int3 r0 = int3(2068823279, 2136930284, 1734344685); + TestUtils.AreEqual(a0 | b0, r0); + + int3 a1 = int3(1591585258, 1148351449, 1048929715); + int b1 = (386953869); + int3 r1 = int3(1608383471, 1467118557, 1066760127); + TestUtils.AreEqual(a1 | b1, r1); + + int3 a2 = int3(1814263250, 1637162093, 1227888278); + int b2 = (860336789); + int3 r2 = int3(2137520087, 1943518973, 2071443095); + TestUtils.AreEqual(a2 | b2, r2); + + int3 a3 = int3(774029856, 1179087439, 797240690); + int b3 = (879300408); + int3 r3 = int3(1047252792, 1987018623, 1072557946); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void int3_operator_bitwise_or_scalar_wide() + { + int a0 = (1213433101); + int3 b0 = int3(1212928242, 1614462616, 936937728); + int3 r0 = int3(1213978111, 1752940445, 2145094925); + TestUtils.AreEqual(a0 | b0, r0); + + int a1 = (764766995); + int3 b1 = int3(306352095, 574719481, 1283571271); + int3 r1 = int3(1071116255, 802549755, 1838546775); + TestUtils.AreEqual(a1 | b1, r1); + + int a2 = (2109131012); + int3 b2 = int3(979469710, 1348323481, 1407542578); + int3 r2 = int3(2146946446, 2113915293, 2146954550); + TestUtils.AreEqual(a2 | b2, r2); + + int a3 = (697517649); + int3 b3 = int3(1059093741, 627815046, 418822515); + int3 r3 = int3(1068728061, 771487447, 972554099); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void int3_operator_bitwise_xor_wide_wide() + { + int3 a0 = int3(1556324760, 207002929, 1843444873); + int3 b0 = int3(1054997548, 1523759632, 251164872); + int3 r0 = int3(1646419380, 1451501345, 1662567489); + TestUtils.AreEqual(a0 ^ b0, r0); + + int3 a1 = int3(1632079131, 1460334334, 1607815585); + int3 b1 = int3(110472397, 384031112, 1109163205); + int3 r1 = int3(1741824470, 1105803126, 499723620); + TestUtils.AreEqual(a1 ^ b1, r1); + + int3 a2 = int3(220623650, 38668553, 47193340); + int3 b2 = int3(535118981, 179106262, 1523031711); + int3 r2 = int3(314783655, 149092575, 1477935715); + TestUtils.AreEqual(a2 ^ b2, r2); + + int3 a3 = int3(643663548, 1371932564, 94957188); + int3 b3 = int3(1713313372, 1294118730, 520360641); + int3 r3 = int3(1078104288, 484747486, 447544389); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void int3_operator_bitwise_xor_wide_scalar() + { + int3 a0 = int3(2124666952, 177397845, 574879617); + int b0 = (493665894); + int3 r0 = int3(1674536494, 402546227, 1060063719); + TestUtils.AreEqual(a0 ^ b0, r0); + + int3 a1 = int3(1937385541, 213863690, 535061373); + int b1 = (1136545648); + int3 r1 = int3(818177845, 1325466234, 1549413389); + TestUtils.AreEqual(a1 ^ b1, r1); + + int3 a2 = int3(289301586, 353786540, 1308626970); + int b2 = (1305234431); + int3 r2 = int3(1559375789, 1490686291, 63724517); + TestUtils.AreEqual(a2 ^ b2, r2); + + int3 a3 = int3(1267729267, 1315625690, 1730088797); + int b3 = (125659640); + int3 r3 = int3(1290627723, 1226289954, 1617061541); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void int3_operator_bitwise_xor_scalar_wide() + { + int a0 = (1288453276); + int3 b0 = int3(1077599928, 884741329, 212164516); + int3 r0 = int3(217506340, 2020616269, 1080648504); + TestUtils.AreEqual(a0 ^ b0, r0); + + int a1 = (1585020328); + int3 b1 = int3(152985454, 1775851275, 1416249064); + int3 r1 = int3(1466376902, 933243555, 169034560); + TestUtils.AreEqual(a1 ^ b1, r1); + + int a2 = (1309317737); + int3 b2 = int3(1773918217, 1509843030, 1206045972); + int3 r2 = int3(665928288, 401930815, 166221693); + TestUtils.AreEqual(a2 ^ b2, r2); + + int a3 = (1154916424); + int3 b3 = int3(1947871003, 1774252400, 1946113778); + int3 r3 = int3(818710355, 756437304, 925497018); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void int3_operator_left_shift() + { + int3 a0 = int3(197771193, 622182602, 1283988958); + int b0 = (1321149625); + int3 r0 = int3(1912602624, -1811939328, -1140850688); + TestUtils.AreEqual(a0 << b0, r0); + + int3 a1 = int3(1327917304, 432425717, 870301196); + int b1 = (473415985); + int3 r1 = int3(-772800512, -1779826688, 2081947648); + TestUtils.AreEqual(a1 << b1, r1); + + int3 a2 = int3(2058433484, 1531607705, 1360008038); + int b2 = (1200694230); + int3 r2 = int3(-218103808, -1505755136, -645922816); + TestUtils.AreEqual(a2 << b2, r2); + + int3 a3 = int3(1008296534, 1079614371, 35667343); + int b3 = (1447702302); + int3 r3 = int3(-2147483648, -1073741824, -1073741824); + TestUtils.AreEqual(a3 << b3, r3); + } + + [TestCompiler] + public static void int3_operator_right_shift() + { + int3 a0 = int3(548167301, 1161338299, 1617625829); + int b0 = (1266801540); + int3 r0 = int3(34260456, 72583643, 101101614); + TestUtils.AreEqual(a0 >> b0, r0); + + int3 a1 = int3(1860731847, 196552656, 770466193); + int b1 = (713958715); + int3 r1 = int3(13, 1, 5); + TestUtils.AreEqual(a1 >> b1, r1); + + int3 a2 = int3(1265099998, 506619530, 426807581); + int b2 = (572763124); + int3 r2 = int3(1206, 483, 407); + TestUtils.AreEqual(a2 >> b2, r2); + + int3 a3 = int3(2031319045, 917785020, 569504877); + int b3 = (701927980); + int3 r3 = int3(495927, 224068, 139039); + TestUtils.AreEqual(a3 >> b3, r3); + } + + [TestCompiler] + public static void int3_operator_bitwise_not() + { + int3 a0 = int3(1403358969, 831360921, 2088190243); + int3 r0 = int3(-1403358970, -831360922, -2088190244); + TestUtils.AreEqual(~a0, r0); + + int3 a1 = int3(976721016, 308994339, 1935567517); + int3 r1 = int3(-976721017, -308994340, -1935567518); + TestUtils.AreEqual(~a1, r1); + + int3 a2 = int3(1420884856, 771711426, 627580960); + int3 r2 = int3(-1420884857, -771711427, -627580961); + TestUtils.AreEqual(~a2, r2); + + int3 a3 = int3(2061524024, 2097179283, 1303022493); + int3 r3 = int3(-2061524025, -2097179284, -1303022494); + TestUtils.AreEqual(~a3, r3); + } + + [TestCompiler] + public static void int3_shuffle_result_1() + { + int3 a = int3(0, 1, 2); + int3 b = int3(3, 4, 5); + + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftX), (0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftY), (1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftZ), (2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX), (3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY), (4)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ), (5)); + } + + [TestCompiler] + public static void int3_shuffle_result_2() + { + int3 a = int3(0, 1, 2); + int3 b = int3(3, 4, 5); + + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.RightY), int2(4, 4)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.RightX), int2(4, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftY, ShuffleComponent.RightX), int2(1, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ, ShuffleComponent.LeftZ), int2(5, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ, ShuffleComponent.LeftY), int2(5, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftY, ShuffleComponent.LeftZ), int2(1, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.LeftZ), int2(3, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ, ShuffleComponent.LeftX), int2(5, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ, ShuffleComponent.RightZ), int2(5, 5)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.LeftY), int2(4, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.RightZ), int2(4, 5)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ, ShuffleComponent.LeftX), int2(5, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.RightX), int2(4, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ, ShuffleComponent.RightY), int2(5, 4)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.LeftX), int2(3, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftY, ShuffleComponent.LeftZ), int2(1, 2)); + } + + [TestCompiler] + public static void int3_shuffle_result_3() + { + int3 a = int3(0, 1, 2); + int3 b = int3(3, 4, 5); + + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftY, ShuffleComponent.RightZ, ShuffleComponent.RightX), int3(1, 5, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.LeftX, ShuffleComponent.LeftZ), int3(4, 0, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftZ, ShuffleComponent.RightZ, ShuffleComponent.RightX), int3(2, 5, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.LeftX, ShuffleComponent.LeftY), int3(4, 0, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ, ShuffleComponent.RightY, ShuffleComponent.LeftZ), int3(5, 4, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftZ, ShuffleComponent.LeftX, ShuffleComponent.LeftY), int3(2, 0, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftZ, ShuffleComponent.RightY, ShuffleComponent.RightX), int3(2, 4, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftZ, ShuffleComponent.LeftY, ShuffleComponent.RightZ), int3(2, 1, 5)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.RightY, ShuffleComponent.RightZ), int3(4, 4, 5)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.RightX, ShuffleComponent.LeftY), int3(4, 3, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ, ShuffleComponent.RightZ, ShuffleComponent.LeftX), int3(5, 5, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ, ShuffleComponent.LeftY, ShuffleComponent.RightX), int3(5, 1, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.LeftY, ShuffleComponent.RightZ), int3(4, 1, 5)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftZ, ShuffleComponent.RightX, ShuffleComponent.RightY), int3(2, 3, 4)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.LeftX, ShuffleComponent.RightY), int3(4, 0, 4)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.LeftX, ShuffleComponent.RightZ), int3(4, 0, 5)); + } + + [TestCompiler] + public static void int3_shuffle_result_4() + { + int3 a = int3(0, 1, 2); + int3 b = int3(3, 4, 5); + + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftY, ShuffleComponent.LeftZ, ShuffleComponent.RightX, ShuffleComponent.LeftY), int4(1, 2, 3, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.LeftZ, ShuffleComponent.RightZ, ShuffleComponent.RightY), int4(4, 2, 5, 4)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.RightY, ShuffleComponent.RightZ, ShuffleComponent.LeftY), int4(4, 4, 5, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.RightX, ShuffleComponent.LeftY, ShuffleComponent.LeftY), int4(3, 3, 1, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.LeftY, ShuffleComponent.LeftY, ShuffleComponent.LeftX), int4(4, 1, 1, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.RightY, ShuffleComponent.RightX, ShuffleComponent.RightZ), int4(3, 4, 3, 5)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftY, ShuffleComponent.RightZ, ShuffleComponent.LeftX, ShuffleComponent.RightZ), int4(1, 5, 0, 5)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.LeftX, ShuffleComponent.LeftX, ShuffleComponent.LeftX), int4(4, 0, 0, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.RightZ, ShuffleComponent.LeftZ, ShuffleComponent.LeftX), int4(3, 5, 2, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.RightX, ShuffleComponent.LeftY, ShuffleComponent.RightX), int4(4, 3, 1, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftX, ShuffleComponent.LeftZ, ShuffleComponent.RightZ, ShuffleComponent.LeftX), int4(0, 2, 5, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftY, ShuffleComponent.RightY, ShuffleComponent.RightZ, ShuffleComponent.RightZ), int4(1, 4, 5, 5)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftZ, ShuffleComponent.RightX, ShuffleComponent.LeftY, ShuffleComponent.RightX), int4(2, 3, 1, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.LeftX, ShuffleComponent.LeftY, ShuffleComponent.LeftZ), int4(3, 0, 1, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ, ShuffleComponent.RightX, ShuffleComponent.LeftX, ShuffleComponent.RightY), int4(5, 3, 0, 4)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftZ, ShuffleComponent.RightZ, ShuffleComponent.LeftX, ShuffleComponent.RightY), int4(2, 5, 0, 4)); + } + + + } +} diff --git a/package/Tests/Tests/Shared/TestInt3.gen.cs.meta b/package/Tests/Tests/Shared/TestInt3.gen.cs.meta new file mode 100755 index 000000000..03b32ecc2 --- /dev/null +++ b/package/Tests/Tests/Shared/TestInt3.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 749525b6f2a189a42bddcde8b3f6a88e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/package/Tests/Tests/Shared/TestInt3x2.gen.cs b/package/Tests/Tests/Shared/TestInt3x2.gen.cs new file mode 100755 index 000000000..f7889dd7e --- /dev/null +++ b/package/Tests/Tests/Shared/TestInt3x2.gen.cs @@ -0,0 +1,1227 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using NUnit.Framework; +using static Unity.Mathematics.math; +using Burst.Compiler.IL.Tests; + +namespace Unity.Mathematics.Tests +{ + [TestFixture] + public class TestInt3x2 + { + [TestCompiler] + public static void int3x2_zero() + { + TestUtils.AreEqual(int3x2.zero.c0.x, 0); + TestUtils.AreEqual(int3x2.zero.c0.y, 0); + TestUtils.AreEqual(int3x2.zero.c0.z, 0); + TestUtils.AreEqual(int3x2.zero.c1.x, 0); + TestUtils.AreEqual(int3x2.zero.c1.y, 0); + TestUtils.AreEqual(int3x2.zero.c1.z, 0); + } + + [TestCompiler] + public static void int3x2_operator_equal_wide_wide() + { + int3x2 a0 = int3x2(790229414, 970783976, 1428432738, 1578747135, 1733797753, 2001507228); + int3x2 b0 = int3x2(612337669, 1214209108, 2120643427, 295461214, 1510890331, 1893316566); + bool3x2 r0 = bool3x2(false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + int3x2 a1 = int3x2(1446876437, 1777406370, 1426387268, 1809275021, 1843770816, 1172185222); + int3x2 b1 = int3x2(921816149, 1834958575, 1482011863, 2062852792, 226398742, 770290735); + bool3x2 r1 = bool3x2(false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + int3x2 a2 = int3x2(1469608940, 869874758, 458603090, 581282460, 1948324909, 1129078206); + int3x2 b2 = int3x2(36812057, 543224481, 1565350150, 1909926604, 1619900436, 1849990483); + bool3x2 r2 = bool3x2(false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + int3x2 a3 = int3x2(1638391029, 1135553683, 2079295200, 576232476, 608208235, 11172509); + int3x2 b3 = int3x2(1261604411, 161864811, 843379453, 1780425458, 215681636, 2123130580); + bool3x2 r3 = bool3x2(false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void int3x2_operator_equal_wide_scalar() + { + int3x2 a0 = int3x2(1211464300, 1921862607, 508076684, 1249127920, 1394594555, 746862310); + int b0 = (746972502); + bool3x2 r0 = bool3x2(false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + int3x2 a1 = int3x2(1733655277, 1682018538, 795585660, 936027116, 927605411, 672785749); + int b1 = (1884008277); + bool3x2 r1 = bool3x2(false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + int3x2 a2 = int3x2(1465584610, 404448210, 969511077, 442746747, 1772925698, 1884034177); + int b2 = (585324157); + bool3x2 r2 = bool3x2(false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + int3x2 a3 = int3x2(451512860, 1370577708, 597010220, 1249636005, 211986678, 1305479811); + int b3 = (425476075); + bool3x2 r3 = bool3x2(false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void int3x2_operator_equal_scalar_wide() + { + int a0 = (1150044438); + int3x2 b0 = int3x2(233855098, 924242519, 1402948791, 601381975, 2120518068, 629187703); + bool3x2 r0 = bool3x2(false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + int a1 = (1971977031); + int3x2 b1 = int3x2(47183124, 1061805787, 1009011238, 312511148, 1460673064, 737210539); + bool3x2 r1 = bool3x2(false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + int a2 = (1737844479); + int3x2 b2 = int3x2(1892405453, 2133024000, 455818693, 2003197687, 1276241219, 534746610); + bool3x2 r2 = bool3x2(false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + int a3 = (559824292); + int3x2 b3 = int3x2(1758388240, 1023494292, 719963017, 1883763832, 597498209, 367814403); + bool3x2 r3 = bool3x2(false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void int3x2_operator_not_equal_wide_wide() + { + int3x2 a0 = int3x2(1660932106, 982847023, 97046264, 1739517447, 1253499180, 1830584069); + int3x2 b0 = int3x2(107139049, 75478496, 2055495054, 358586687, 942338347, 111564990); + bool3x2 r0 = bool3x2(true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + int3x2 a1 = int3x2(1841470429, 1397841646, 1770890135, 1906548631, 169082967, 2099271786); + int3x2 b1 = int3x2(113811950, 948912488, 1080084121, 1400504872, 1032134499, 1061123400); + bool3x2 r1 = bool3x2(true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + int3x2 a2 = int3x2(1909317609, 46519139, 1433204003, 931492669, 670504132, 1551558665); + int3x2 b2 = int3x2(221862069, 858950046, 989094643, 2023070999, 1269317127, 531883744); + bool3x2 r2 = bool3x2(true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + int3x2 a3 = int3x2(1204055048, 1623586740, 226381077, 1145987803, 644253929, 475189890); + int3x2 b3 = int3x2(687761409, 278427731, 296354221, 536981557, 1134676193, 1749879634); + bool3x2 r3 = bool3x2(true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void int3x2_operator_not_equal_wide_scalar() + { + int3x2 a0 = int3x2(747758183, 1033001286, 1439973882, 2138928797, 1197845089, 1432672459); + int b0 = (248693828); + bool3x2 r0 = bool3x2(true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + int3x2 a1 = int3x2(950170763, 2105962247, 727205263, 1640688041, 276313906, 2126300423); + int b1 = (238704450); + bool3x2 r1 = bool3x2(true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + int3x2 a2 = int3x2(791998981, 1171827730, 1412347883, 1622176923, 768370497, 1072798259); + int b2 = (2035077187); + bool3x2 r2 = bool3x2(true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + int3x2 a3 = int3x2(1808712713, 1582645163, 1876273820, 90244766, 30493685, 904014575); + int b3 = (1497830076); + bool3x2 r3 = bool3x2(true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void int3x2_operator_not_equal_scalar_wide() + { + int a0 = (2076921066); + int3x2 b0 = int3x2(2037494727, 1989050616, 48833929, 1897435904, 514354517, 1783749164); + bool3x2 r0 = bool3x2(true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + int a1 = (364694471); + int3x2 b1 = int3x2(754315072, 124108032, 1512967900, 1178825850, 1854793298, 50286949); + bool3x2 r1 = bool3x2(true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + int a2 = (2100802631); + int3x2 b2 = int3x2(1640811853, 82110247, 472172806, 266984506, 2003668365, 1826089250); + bool3x2 r2 = bool3x2(true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + int a3 = (1041416160); + int3x2 b3 = int3x2(356140110, 2057237962, 799920703, 1916347720, 510966350, 572038024); + bool3x2 r3 = bool3x2(true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void int3x2_operator_less_wide_wide() + { + int3x2 a0 = int3x2(1182186063, 415538999, 1667335818, 1566618442, 1166180837, 639095188); + int3x2 b0 = int3x2(524633529, 1032195686, 760723389, 1505751409, 431962172, 1287906509); + bool3x2 r0 = bool3x2(false, true, false, false, false, true); + TestUtils.AreEqual(a0 < b0, r0); + + int3x2 a1 = int3x2(1080836365, 771119973, 928263233, 789225474, 665243110, 1003542034); + int3x2 b1 = int3x2(1560084663, 1450178202, 2066166337, 1107069023, 1640077524, 2103263105); + bool3x2 r1 = bool3x2(true, true, true, true, true, true); + TestUtils.AreEqual(a1 < b1, r1); + + int3x2 a2 = int3x2(1032480172, 1961336172, 923379558, 21210619, 1089772116, 1707633052); + int3x2 b2 = int3x2(684229139, 1234033624, 1278743281, 1953079347, 1228832942, 2082539723); + bool3x2 r2 = bool3x2(false, false, true, true, true, true); + TestUtils.AreEqual(a2 < b2, r2); + + int3x2 a3 = int3x2(778986024, 158153146, 336715101, 1839141169, 1706859710, 1928438162); + int3x2 b3 = int3x2(1088437561, 1058382082, 207459172, 750531081, 2015788562, 2126542133); + bool3x2 r3 = bool3x2(true, true, false, false, true, true); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void int3x2_operator_less_wide_scalar() + { + int3x2 a0 = int3x2(608447185, 818840405, 869219329, 2080125385, 1214500548, 1361741203); + int b0 = (1491216667); + bool3x2 r0 = bool3x2(true, true, true, false, true, true); + TestUtils.AreEqual(a0 < b0, r0); + + int3x2 a1 = int3x2(1667165786, 840091491, 469591900, 1247103789, 315321650, 930950514); + int b1 = (1615392341); + bool3x2 r1 = bool3x2(false, true, true, true, true, true); + TestUtils.AreEqual(a1 < b1, r1); + + int3x2 a2 = int3x2(1100560246, 908563901, 1127696709, 1286331950, 380753337, 971148054); + int b2 = (933855388); + bool3x2 r2 = bool3x2(false, true, false, false, true, false); + TestUtils.AreEqual(a2 < b2, r2); + + int3x2 a3 = int3x2(1827886929, 1579735991, 689044913, 1960894027, 371987110, 867559111); + int b3 = (1056649851); + bool3x2 r3 = bool3x2(false, false, true, false, true, true); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void int3x2_operator_less_scalar_wide() + { + int a0 = (548436837); + int3x2 b0 = int3x2(282703327, 14370648, 1862117300, 1304793311, 826073259, 988910157); + bool3x2 r0 = bool3x2(false, false, true, true, true, true); + TestUtils.AreEqual(a0 < b0, r0); + + int a1 = (445132446); + int3x2 b1 = int3x2(1139670255, 111349251, 1102440676, 112183144, 1594415311, 1890019295); + bool3x2 r1 = bool3x2(true, false, true, false, true, true); + TestUtils.AreEqual(a1 < b1, r1); + + int a2 = (2098715503); + int3x2 b2 = int3x2(608933527, 183989010, 1596056507, 1027318999, 146281093, 358911716); + bool3x2 r2 = bool3x2(false, false, false, false, false, false); + TestUtils.AreEqual(a2 < b2, r2); + + int a3 = (874278078); + int3x2 b3 = int3x2(1106057699, 1256807459, 2111973919, 1736480659, 810406400, 1329939911); + bool3x2 r3 = bool3x2(true, true, true, true, false, true); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void int3x2_operator_greater_wide_wide() + { + int3x2 a0 = int3x2(592884447, 2133928932, 918957182, 1284069471, 194584707, 739120780); + int3x2 b0 = int3x2(138737040, 192863971, 1700841444, 1044631301, 1391589821, 730837695); + bool3x2 r0 = bool3x2(true, true, false, true, false, true); + TestUtils.AreEqual(a0 > b0, r0); + + int3x2 a1 = int3x2(241654068, 1340158550, 2099542537, 1182623667, 1399607274, 789301637); + int3x2 b1 = int3x2(253553987, 2078872742, 910845808, 976047676, 202633078, 1223618940); + bool3x2 r1 = bool3x2(false, false, true, true, true, false); + TestUtils.AreEqual(a1 > b1, r1); + + int3x2 a2 = int3x2(180400925, 594688333, 1877031463, 1360073500, 1091782422, 546676424); + int3x2 b2 = int3x2(641600530, 1830470354, 1570701388, 1104256103, 1838646932, 740166101); + bool3x2 r2 = bool3x2(false, false, true, true, false, false); + TestUtils.AreEqual(a2 > b2, r2); + + int3x2 a3 = int3x2(348221770, 716039145, 458742739, 1365508046, 1523167942, 1574478622); + int3x2 b3 = int3x2(1549021845, 1457092873, 1790630950, 907793213, 555122804, 1418910265); + bool3x2 r3 = bool3x2(false, false, false, true, true, true); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void int3x2_operator_greater_wide_scalar() + { + int3x2 a0 = int3x2(1097138316, 211763648, 1883002501, 56406996, 43662641, 1923456111); + int b0 = (438688675); + bool3x2 r0 = bool3x2(true, false, true, false, false, true); + TestUtils.AreEqual(a0 > b0, r0); + + int3x2 a1 = int3x2(1437755186, 2125058448, 304028799, 893125636, 48044515, 711945018); + int b1 = (1219010035); + bool3x2 r1 = bool3x2(true, true, false, false, false, false); + TestUtils.AreEqual(a1 > b1, r1); + + int3x2 a2 = int3x2(1035679270, 572743717, 1016617211, 2063134811, 1577403353, 64009107); + int b2 = (577943770); + bool3x2 r2 = bool3x2(true, false, true, true, true, false); + TestUtils.AreEqual(a2 > b2, r2); + + int3x2 a3 = int3x2(1462961460, 3715845, 689362811, 263973424, 1045140419, 1058332184); + int b3 = (1143565920); + bool3x2 r3 = bool3x2(true, false, false, false, false, false); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void int3x2_operator_greater_scalar_wide() + { + int a0 = (2024896938); + int3x2 b0 = int3x2(599356784, 185671342, 1932327391, 2025591013, 1257191721, 1312388500); + bool3x2 r0 = bool3x2(true, true, true, false, true, true); + TestUtils.AreEqual(a0 > b0, r0); + + int a1 = (1443698859); + int3x2 b1 = int3x2(779217735, 691047512, 741776730, 732565983, 668302204, 1556466996); + bool3x2 r1 = bool3x2(true, true, true, true, true, false); + TestUtils.AreEqual(a1 > b1, r1); + + int a2 = (858599525); + int3x2 b2 = int3x2(1896917159, 701542098, 1052151621, 1023307544, 1435392907, 1858177345); + bool3x2 r2 = bool3x2(false, true, false, false, false, false); + TestUtils.AreEqual(a2 > b2, r2); + + int a3 = (299897686); + int3x2 b3 = int3x2(632930355, 1387203601, 483722222, 863042711, 1713088900, 315569296); + bool3x2 r3 = bool3x2(false, false, false, false, false, false); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void int3x2_operator_less_equal_wide_wide() + { + int3x2 a0 = int3x2(1577248162, 2043073061, 1688380407, 176431985, 223299035, 1502802140); + int3x2 b0 = int3x2(903445031, 2108974565, 210822256, 1281704747, 453681718, 66138830); + bool3x2 r0 = bool3x2(false, true, false, true, true, false); + TestUtils.AreEqual(a0 <= b0, r0); + + int3x2 a1 = int3x2(1691709825, 386789394, 117182003, 1665770435, 1958490731, 420032601); + int3x2 b1 = int3x2(1229799377, 1620922595, 1715833766, 1366430432, 13102000, 46919981); + bool3x2 r1 = bool3x2(false, true, true, false, false, false); + TestUtils.AreEqual(a1 <= b1, r1); + + int3x2 a2 = int3x2(1251092689, 2011681765, 749743684, 183784440, 1150674774, 1633828822); + int3x2 b2 = int3x2(486470891, 1709514236, 2145785285, 854254454, 1273278658, 810263315); + bool3x2 r2 = bool3x2(false, false, true, true, true, false); + TestUtils.AreEqual(a2 <= b2, r2); + + int3x2 a3 = int3x2(1719442172, 336047314, 743733218, 1393995865, 1854442658, 1498138884); + int3x2 b3 = int3x2(1862773824, 201799013, 974166844, 1320622967, 2058099616, 522102017); + bool3x2 r3 = bool3x2(true, false, true, false, true, false); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void int3x2_operator_less_equal_wide_scalar() + { + int3x2 a0 = int3x2(1722165358, 1219858357, 860410743, 411099660, 348104022, 1963256951); + int b0 = (1688048545); + bool3x2 r0 = bool3x2(false, true, true, true, true, false); + TestUtils.AreEqual(a0 <= b0, r0); + + int3x2 a1 = int3x2(212084836, 1459242706, 1745758438, 532949158, 262559763, 690091301); + int b1 = (58924407); + bool3x2 r1 = bool3x2(false, false, false, false, false, false); + TestUtils.AreEqual(a1 <= b1, r1); + + int3x2 a2 = int3x2(1806172431, 1857173043, 1617221948, 2017733017, 804204255, 981729559); + int b2 = (2091514001); + bool3x2 r2 = bool3x2(true, true, true, true, true, true); + TestUtils.AreEqual(a2 <= b2, r2); + + int3x2 a3 = int3x2(2032949254, 2079225209, 26179915, 238796519, 1917813750, 1258115260); + int b3 = (910922522); + bool3x2 r3 = bool3x2(false, false, true, true, false, false); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void int3x2_operator_less_equal_scalar_wide() + { + int a0 = (1777585); + int3x2 b0 = int3x2(1181030049, 1787703989, 1729760948, 1816537388, 1359786460, 874999193); + bool3x2 r0 = bool3x2(true, true, true, true, true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + int a1 = (1678863148); + int3x2 b1 = int3x2(1711365839, 762067160, 11953554, 1131583906, 1175393186, 1293698493); + bool3x2 r1 = bool3x2(true, false, false, false, false, false); + TestUtils.AreEqual(a1 <= b1, r1); + + int a2 = (48893340); + int3x2 b2 = int3x2(66196247, 1958607116, 1576473309, 861890786, 478252419, 957887737); + bool3x2 r2 = bool3x2(true, true, true, true, true, true); + TestUtils.AreEqual(a2 <= b2, r2); + + int a3 = (117849810); + int3x2 b3 = int3x2(1348693584, 105489302, 259034238, 530713566, 601413850, 830430286); + bool3x2 r3 = bool3x2(true, false, true, true, true, true); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void int3x2_operator_greater_equal_wide_wide() + { + int3x2 a0 = int3x2(263000030, 744235661, 1893760267, 237248, 1062370984, 1676977687); + int3x2 b0 = int3x2(1395535146, 1178373944, 1237373760, 1364855321, 600811864, 362060472); + bool3x2 r0 = bool3x2(false, false, true, false, true, true); + TestUtils.AreEqual(a0 >= b0, r0); + + int3x2 a1 = int3x2(816766880, 1089431546, 1394493730, 1176473380, 1193988637, 1703862455); + int3x2 b1 = int3x2(290870624, 1839067862, 396958580, 1336888643, 1019684398, 1697684196); + bool3x2 r1 = bool3x2(true, false, true, false, true, true); + TestUtils.AreEqual(a1 >= b1, r1); + + int3x2 a2 = int3x2(1806186947, 1253571980, 589397635, 1951842887, 798931197, 808426484); + int3x2 b2 = int3x2(1227300220, 2044269675, 1898323839, 874509380, 1873505472, 1268843918); + bool3x2 r2 = bool3x2(true, false, false, true, false, false); + TestUtils.AreEqual(a2 >= b2, r2); + + int3x2 a3 = int3x2(744869638, 1959531616, 207430702, 1533946595, 1148381840, 2011549474); + int3x2 b3 = int3x2(1606949562, 1263896445, 1805518202, 1412091359, 1240330374, 1955056253); + bool3x2 r3 = bool3x2(false, true, false, true, false, true); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void int3x2_operator_greater_equal_wide_scalar() + { + int3x2 a0 = int3x2(2112791350, 1043657935, 101764761, 1529909067, 556026890, 281734132); + int b0 = (1470533736); + bool3x2 r0 = bool3x2(true, false, false, true, false, false); + TestUtils.AreEqual(a0 >= b0, r0); + + int3x2 a1 = int3x2(1186600258, 609211196, 1604309397, 829548642, 244604867, 1419295004); + int b1 = (815093894); + bool3x2 r1 = bool3x2(true, false, true, true, false, true); + TestUtils.AreEqual(a1 >= b1, r1); + + int3x2 a2 = int3x2(471843809, 1460027917, 1646290021, 196833647, 1596738181, 1905036391); + int b2 = (1819986195); + bool3x2 r2 = bool3x2(false, false, false, false, false, true); + TestUtils.AreEqual(a2 >= b2, r2); + + int3x2 a3 = int3x2(1771391775, 370941146, 440219668, 1607345862, 1449142607, 1223010129); + int b3 = (1584946560); + bool3x2 r3 = bool3x2(true, false, false, true, false, false); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void int3x2_operator_greater_equal_scalar_wide() + { + int a0 = (1525542481); + int3x2 b0 = int3x2(1503244746, 861711266, 817773856, 925984572, 571221723, 683686810); + bool3x2 r0 = bool3x2(true, true, true, true, true, true); + TestUtils.AreEqual(a0 >= b0, r0); + + int a1 = (118252990); + int3x2 b1 = int3x2(1653952090, 1240253990, 1947039008, 1869136019, 152012637, 1214546726); + bool3x2 r1 = bool3x2(false, false, false, false, false, false); + TestUtils.AreEqual(a1 >= b1, r1); + + int a2 = (917376832); + int3x2 b2 = int3x2(303549425, 2111728811, 945321577, 173706579, 625318949, 519443238); + bool3x2 r2 = bool3x2(true, false, false, true, true, true); + TestUtils.AreEqual(a2 >= b2, r2); + + int a3 = (1583588379); + int3x2 b3 = int3x2(1026799433, 1713083717, 394922760, 1216218189, 1336522452, 233894308); + bool3x2 r3 = bool3x2(true, false, true, true, true, true); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void int3x2_operator_add_wide_wide() + { + int3x2 a0 = int3x2(2049228671, 1658660009, 491719392, 937013355, 81108663, 1063894558); + int3x2 b0 = int3x2(2088751567, 645762023, 306868786, 4360271, 506047997, 2094559874); + int3x2 r0 = int3x2(-156987058, -1990545264, 798588178, 941373626, 587156660, -1136512864); + TestUtils.AreEqual(a0 + b0, r0); + + int3x2 a1 = int3x2(86954702, 843159721, 698977704, 192867135, 1683407172, 137301303); + int3x2 b1 = int3x2(1634712736, 1601474440, 1586485231, 908746788, 1812370320, 1247342357); + int3x2 r1 = int3x2(1721667438, -1850333135, -2009504361, 1101613923, -799189804, 1384643660); + TestUtils.AreEqual(a1 + b1, r1); + + int3x2 a2 = int3x2(2103582820, 526139155, 447937230, 2127411006, 1670579390, 1914969141); + int3x2 b2 = int3x2(2043773873, 223363428, 175115707, 985928617, 507662836, 1231457019); + int3x2 r2 = int3x2(-147610603, 749502583, 623052937, -1181627673, -2116725070, -1148541136); + TestUtils.AreEqual(a2 + b2, r2); + + int3x2 a3 = int3x2(997691756, 857841794, 2129024875, 267535529, 978891383, 657092366); + int3x2 b3 = int3x2(776127866, 607782424, 1160366210, 1384832242, 702057048, 703554905); + int3x2 r3 = int3x2(1773819622, 1465624218, -1005576211, 1652367771, 1680948431, 1360647271); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void int3x2_operator_add_wide_scalar() + { + int3x2 a0 = int3x2(2038218457, 134923711, 875689667, 1338884463, 997710928, 340490871); + int b0 = (2124409227); + int3x2 r0 = int3x2(-132339612, -2035634358, -1294868402, -831673606, -1172847141, -1830067198); + TestUtils.AreEqual(a0 + b0, r0); + + int3x2 a1 = int3x2(1067888129, 2003021861, 1635971971, 1160398286, 85446202, 1068152966); + int b1 = (70433301); + int3x2 r1 = int3x2(1138321430, 2073455162, 1706405272, 1230831587, 155879503, 1138586267); + TestUtils.AreEqual(a1 + b1, r1); + + int3x2 a2 = int3x2(1239387100, 1727477485, 1095438654, 756559204, 1818718931, 658923552); + int b2 = (1497676888); + int3x2 r2 = int3x2(-1557903308, -1069812923, -1701851754, -2040731204, -978571477, -2138366856); + TestUtils.AreEqual(a2 + b2, r2); + + int3x2 a3 = int3x2(1610518921, 692843300, 1068593469, 1704776233, 577782260, 736972565); + int b3 = (1585755398); + int3x2 r3 = int3x2(-1098692977, -2016368598, -1640618429, -1004435665, -2131429638, -1972239333); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void int3x2_operator_add_scalar_wide() + { + int a0 = (391092078); + int3x2 b0 = int3x2(519908870, 851424292, 328314822, 135622204, 740923360, 655394201); + int3x2 r0 = int3x2(911000948, 1242516370, 719406900, 526714282, 1132015438, 1046486279); + TestUtils.AreEqual(a0 + b0, r0); + + int a1 = (1451896269); + int3x2 b1 = int3x2(1781697072, 996031825, 1557774949, 779774940, 1111541302, 783046445); + int3x2 r1 = int3x2(-1061373955, -1847039202, -1285296078, -2063296087, -1731529725, -2060024582); + TestUtils.AreEqual(a1 + b1, r1); + + int a2 = (1130163944); + int3x2 b2 = int3x2(288279584, 1397683861, 1636583489, 673263339, 1469300874, 14855965); + int3x2 r2 = int3x2(1418443528, -1767119491, -1528219863, 1803427283, -1695502478, 1145019909); + TestUtils.AreEqual(a2 + b2, r2); + + int a3 = (1116636999); + int3x2 b3 = int3x2(1488863300, 1600990886, 190651301, 1307459768, 920085839, 2082229835); + int3x2 r3 = int3x2(-1689466997, -1577339411, 1307288300, -1870870529, 2036722838, -1096100462); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void int3x2_operator_sub_wide_wide() + { + int3x2 a0 = int3x2(1353441118, 797269833, 659988112, 56022121, 365847472, 2062899435); + int3x2 b0 = int3x2(1332656812, 1827794007, 972557431, 2078233689, 1508184327, 1372307701); + int3x2 r0 = int3x2(20784306, -1030524174, -312569319, -2022211568, -1142336855, 690591734); + TestUtils.AreEqual(a0 - b0, r0); + + int3x2 a1 = int3x2(1380988474, 799885138, 1306058185, 579775276, 1239163824, 344591081); + int3x2 b1 = int3x2(810327977, 936799885, 71562303, 1418723328, 1971342989, 1226053395); + int3x2 r1 = int3x2(570660497, -136914747, 1234495882, -838948052, -732179165, -881462314); + TestUtils.AreEqual(a1 - b1, r1); + + int3x2 a2 = int3x2(86359575, 1049709943, 721529513, 1767221271, 7652784, 545192611); + int3x2 b2 = int3x2(136565478, 1979903295, 600719425, 837912956, 632054793, 711091688); + int3x2 r2 = int3x2(-50205903, -930193352, 120810088, 929308315, -624402009, -165899077); + TestUtils.AreEqual(a2 - b2, r2); + + int3x2 a3 = int3x2(176298787, 1477774126, 1426963688, 2032787858, 2059525977, 445200454); + int3x2 b3 = int3x2(904695656, 1640069560, 750244414, 1385118097, 1102391291, 1221949855); + int3x2 r3 = int3x2(-728396869, -162295434, 676719274, 647669761, 957134686, -776749401); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void int3x2_operator_sub_wide_scalar() + { + int3x2 a0 = int3x2(1176369558, 1934521195, 309452150, 1417634074, 108910717, 1306356714); + int b0 = (462232403); + int3x2 r0 = int3x2(714137155, 1472288792, -152780253, 955401671, -353321686, 844124311); + TestUtils.AreEqual(a0 - b0, r0); + + int3x2 a1 = int3x2(1502312334, 281174200, 87530840, 1913724431, 2041593336, 557239990); + int b1 = (1451794815); + int3x2 r1 = int3x2(50517519, -1170620615, -1364263975, 461929616, 589798521, -894554825); + TestUtils.AreEqual(a1 - b1, r1); + + int3x2 a2 = int3x2(1119051448, 819090189, 816382635, 815920639, 1829033117, 1792801932); + int b2 = (1590376732); + int3x2 r2 = int3x2(-471325284, -771286543, -773994097, -774456093, 238656385, 202425200); + TestUtils.AreEqual(a2 - b2, r2); + + int3x2 a3 = int3x2(1113440549, 1277257189, 2092779398, 642236742, 1605250794, 819644478); + int b3 = (1418937976); + int3x2 r3 = int3x2(-305497427, -141680787, 673841422, -776701234, 186312818, -599293498); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void int3x2_operator_sub_scalar_wide() + { + int a0 = (1691534405); + int3x2 b0 = int3x2(2022393810, 1612688515, 496689713, 887037586, 2097630964, 374934538); + int3x2 r0 = int3x2(-330859405, 78845890, 1194844692, 804496819, -406096559, 1316599867); + TestUtils.AreEqual(a0 - b0, r0); + + int a1 = (939035482); + int3x2 b1 = int3x2(935242277, 1789300421, 264712893, 1231856067, 1818112748, 1428436109); + int3x2 r1 = int3x2(3793205, -850264939, 674322589, -292820585, -879077266, -489400627); + TestUtils.AreEqual(a1 - b1, r1); + + int a2 = (1258745460); + int3x2 b2 = int3x2(1077380396, 1330722719, 518111829, 967128529, 344666254, 1082267918); + int3x2 r2 = int3x2(181365064, -71977259, 740633631, 291616931, 914079206, 176477542); + TestUtils.AreEqual(a2 - b2, r2); + + int a3 = (907866696); + int3x2 b3 = int3x2(1816885123, 460340568, 962154498, 557113461, 1701216709, 1980098777); + int3x2 r3 = int3x2(-909018427, 447526128, -54287802, 350753235, -793350013, -1072232081); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void int3x2_operator_mul_wide_wide() + { + int3x2 a0 = int3x2(245827027, 208934650, 1019478917, 568231809, 877289039, 1585782440); + int3x2 b0 = int3x2(759663997, 350129201, 477450108, 1635735015, 388710278, 757722665); + int3x2 r0 = int3x2(-632811769, 1402281434, 332447596, -1932977561, -1670918566, 1455036648); + TestUtils.AreEqual(a0 * b0, r0); + + int3x2 a1 = int3x2(2111178729, 1186019069, 571481445, 1570087048, 629447153, 619383734); + int3x2 b1 = int3x2(1509388321, 1841703980, 1826369331, 1524322467, 1605207974, 428419155); + int3x2 r1 = int3x2(2128344329, -594088068, -1654168033, 2093463192, -1207506618, -1133560830); + TestUtils.AreEqual(a1 * b1, r1); + + int3x2 a2 = int3x2(2055121568, 700402816, 263414349, 187830569, 2048056680, 546694675); + int3x2 b2 = int3x2(1460605791, 1968043860, 771161742, 2037340417, 322304267, 651448359); + int3x2 r2 = int3x2(990589280, -938173952, -1341723466, 1156600361, 649177976, 678952165); + TestUtils.AreEqual(a2 * b2, r2); + + int3x2 a3 = int3x2(853585367, 933370718, 990212476, 1915885905, 1984212358, 368146234); + int3x2 b3 = int3x2(1608326767, 1427155898, 1092185338, 665119139, 223634707, 694718952); + int3x2 r3 = int3x2(1063621177, -1611682740, -2142428392, -573253741, -1652113678, 1626072720); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void int3x2_operator_mul_wide_scalar() + { + int3x2 a0 = int3x2(1762033447, 465343930, 1570757881, 1326409563, 1824319147, 1356578909); + int b0 = (1476837906); + int3x2 r0 = int3x2(-1313177922, 1326807828, -2138555518, -276153754, -65548794, -1318584182); + TestUtils.AreEqual(a0 * b0, r0); + + int3x2 a1 = int3x2(72749215, 975743632, 573770299, 1958912969, 971327747, 1818877398); + int b1 = (154616909); + int3x2 r1 = int3x2(1400257491, 7966032, 499040191, 322676597, 469811687, -373386914); + TestUtils.AreEqual(a1 * b1, r1); + + int3x2 a2 = int3x2(1324050764, 1279757657, 391009467, 1186856590, 890343818, 800117742); + int b2 = (660611671); + int3x2 r2 = int3x2(645718228, -42542273, -1778409075, 1570790978, -133379610, 1820172770); + TestUtils.AreEqual(a2 * b2, r2); + + int3x2 a3 = int3x2(606927173, 1688964615, 1439447294, 387721300, 1192501703, 1613845584); + int b3 = (1338014500); + int3x2 r3 = int3x2(-254331724, 1134384636, 1352273336, -229242928, 1766808828, 645024576); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void int3x2_operator_mul_scalar_wide() + { + int a0 = (99541948); + int3x2 b0 = int3x2(1764461774, 657072478, 1459784358, 1610646683, 1632058826, 868441654); + int3x2 r0 = int3x2(-950398648, -102049016, 1260585960, 1158730452, -1606056, -466153048); + TestUtils.AreEqual(a0 * b0, r0); + + int a1 = (1408757883); + int3x2 b1 = int3x2(335917146, 2105124483, 1178393968, 1963904348, 1409533767, 243286231); + int3x2 r1 = int3x2(1223039806, 1995624689, -974691120, 375843636, 858017565, 2027534157); + TestUtils.AreEqual(a1 * b1, r1); + + int a2 = (1336308795); + int3x2 b2 = int3x2(517963367, 1733623488, 459880225, 994616533, 1420531535, 1821413700); + int3x2 r2 = int3x2(580046269, -997870016, -325015397, 831291671, -1034573003, -1254339924); + TestUtils.AreEqual(a2 * b2, r2); + + int a3 = (677771573); + int3x2 b3 = int3x2(2132626845, 1158827713, 640102997, 944551639, 1323243330, 1186460236); + int3x2 r3 = int3x2(-125843839, 1435043573, 698030233, 9173379, -824638806, 113055164); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void int3x2_operator_div_wide_wide() + { + int3x2 a0 = int3x2(1590198532, 507812502, 126627032, 1058247011, 427387861, 290676154); + int3x2 b0 = int3x2(1434703236, 911965201, 390415521, 128746927, 525835375, 816946613); + int3x2 r0 = int3x2(1, 0, 0, 8, 0, 0); + TestUtils.AreEqual(a0 / b0, r0); + + int3x2 a1 = int3x2(1829594484, 1127868739, 499016351, 1341209632, 134906097, 785470242); + int3x2 b1 = int3x2(878264647, 146789678, 2089524057, 254213018, 1916850021, 1737806518); + int3x2 r1 = int3x2(2, 7, 0, 5, 0, 0); + TestUtils.AreEqual(a1 / b1, r1); + + int3x2 a2 = int3x2(788249865, 1099825433, 1552968283, 1822367139, 1021812060, 1937073018); + int3x2 b2 = int3x2(1906634983, 437754923, 825037958, 902508708, 896853614, 49452028); + int3x2 r2 = int3x2(0, 2, 1, 2, 1, 39); + TestUtils.AreEqual(a2 / b2, r2); + + int3x2 a3 = int3x2(645757349, 1097576782, 1246027674, 1152153253, 1900577195, 172149343); + int3x2 b3 = int3x2(1921327824, 787000669, 1032149621, 858558868, 1422112429, 837098844); + int3x2 r3 = int3x2(0, 1, 1, 1, 1, 0); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void int3x2_operator_div_wide_scalar() + { + int3x2 a0 = int3x2(560951562, 1218680769, 375341724, 1613542090, 1919409166, 1397425408); + int b0 = (947861580); + int3x2 r0 = int3x2(0, 1, 0, 1, 2, 1); + TestUtils.AreEqual(a0 / b0, r0); + + int3x2 a1 = int3x2(1349573078, 341995568, 495895326, 1515313790, 1676971657, 2131487088); + int b1 = (524526253); + int3x2 r1 = int3x2(2, 0, 0, 2, 3, 4); + TestUtils.AreEqual(a1 / b1, r1); + + int3x2 a2 = int3x2(2105094094, 542666029, 1646044372, 1447236569, 107215658, 19616726); + int b2 = (1017891310); + int3x2 r2 = int3x2(2, 0, 1, 1, 0, 0); + TestUtils.AreEqual(a2 / b2, r2); + + int3x2 a3 = int3x2(896899915, 1249475421, 1486968988, 1738891885, 1919705924, 1244966864); + int b3 = (707389627); + int3x2 r3 = int3x2(1, 1, 2, 2, 2, 1); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void int3x2_operator_div_scalar_wide() + { + int a0 = (1161272038); + int3x2 b0 = int3x2(187325733, 1594107378, 2016183849, 1589343709, 388768753, 1417077283); + int3x2 r0 = int3x2(6, 0, 0, 0, 2, 0); + TestUtils.AreEqual(a0 / b0, r0); + + int a1 = (1773486938); + int3x2 b1 = int3x2(1154044032, 81831373, 1476877645, 653688843, 45756703, 631027637); + int3x2 r1 = int3x2(1, 21, 1, 2, 38, 2); + TestUtils.AreEqual(a1 / b1, r1); + + int a2 = (396671391); + int3x2 b2 = int3x2(784365696, 1250594097, 1818363859, 1653451772, 270557729, 48974453); + int3x2 r2 = int3x2(0, 0, 0, 0, 1, 8); + TestUtils.AreEqual(a2 / b2, r2); + + int a3 = (1796936382); + int3x2 b3 = int3x2(1427856423, 981056957, 1955700573, 705450043, 1054404890, 351914083); + int3x2 r3 = int3x2(1, 1, 0, 2, 1, 5); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void int3x2_operator_mod_wide_wide() + { + int3x2 a0 = int3x2(146150818, 1846543305, 1071447756, 308965362, 659881575, 1002365460); + int3x2 b0 = int3x2(983050390, 771341152, 942375212, 367361754, 749500619, 750718852); + int3x2 r0 = int3x2(146150818, 303861001, 129072544, 308965362, 659881575, 251646608); + TestUtils.AreEqual(a0 % b0, r0); + + int3x2 a1 = int3x2(861198439, 1510617532, 778525078, 1458458044, 101987897, 1249565173); + int3x2 b1 = int3x2(2095151755, 88438806, 769227442, 647214624, 1026513788, 1544950956); + int3x2 r1 = int3x2(861198439, 7157830, 9297636, 164028796, 101987897, 1249565173); + TestUtils.AreEqual(a1 % b1, r1); + + int3x2 a2 = int3x2(938026607, 1692541775, 1518877124, 1806965510, 1325139851, 994457255); + int3x2 b2 = int3x2(160166322, 1099108075, 1158422232, 1798905209, 164686701, 327889784); + int3x2 r2 = int3x2(137194997, 593433700, 360454892, 8060301, 7646243, 10787903); + TestUtils.AreEqual(a2 % b2, r2); + + int3x2 a3 = int3x2(1372400564, 1770508529, 100255877, 452674793, 1545968777, 629019189); + int3x2 b3 = int3x2(1082162785, 1213537518, 608481038, 329133821, 1824387961, 1223426748); + int3x2 r3 = int3x2(290237779, 556971011, 100255877, 123540972, 1545968777, 629019189); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void int3x2_operator_mod_wide_scalar() + { + int3x2 a0 = int3x2(164800505, 1062177828, 1898749675, 1701653318, 820393245, 19002208); + int b0 = (883951171); + int3x2 r0 = int3x2(164800505, 178226657, 130847333, 817702147, 820393245, 19002208); + TestUtils.AreEqual(a0 % b0, r0); + + int3x2 a1 = int3x2(128329633, 896587769, 405208598, 1982762194, 959236935, 712321026); + int b1 = (1464010899); + int3x2 r1 = int3x2(128329633, 896587769, 405208598, 518751295, 959236935, 712321026); + TestUtils.AreEqual(a1 % b1, r1); + + int3x2 a2 = int3x2(172564850, 1085897743, 1607489717, 165478511, 647846716, 915707999); + int b2 = (1540068445); + int3x2 r2 = int3x2(172564850, 1085897743, 67421272, 165478511, 647846716, 915707999); + TestUtils.AreEqual(a2 % b2, r2); + + int3x2 a3 = int3x2(1602830401, 1084934806, 488509689, 2087820912, 377501313, 1778384846); + int b3 = (928191283); + int3x2 r3 = int3x2(674639118, 156743523, 488509689, 231438346, 377501313, 850193563); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void int3x2_operator_mod_scalar_wide() + { + int a0 = (242383789); + int3x2 b0 = int3x2(740000543, 1556450291, 1104736385, 437976569, 1911837205, 1507212038); + int3x2 r0 = int3x2(242383789, 242383789, 242383789, 242383789, 242383789, 242383789); + TestUtils.AreEqual(a0 % b0, r0); + + int a1 = (1906405167); + int3x2 b1 = int3x2(247693265, 293460573, 1495295166, 873323603, 530681233, 1298102643); + int3x2 r1 = int3x2(172552312, 145641729, 411110001, 159757961, 314361468, 608302524); + TestUtils.AreEqual(a1 % b1, r1); + + int a2 = (2057984657); + int3x2 b2 = int3x2(1000742091, 1461372131, 1859742342, 797184687, 821888842, 1083192997); + int3x2 r2 = int3x2(56500475, 596612526, 198242315, 463615283, 414206973, 974791660); + TestUtils.AreEqual(a2 % b2, r2); + + int a3 = (840114986); + int3x2 b3 = int3x2(1894865954, 615159964, 1485575122, 2028738, 2122220318, 164578061); + int3x2 r3 = int3x2(840114986, 224955022, 840114986, 217454, 840114986, 17224681); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void int3x2_operator_plus() + { + int3x2 a0 = int3x2(1643476803, 907898539, 379615839, 1140483021, 1735287433, 1743199272); + int3x2 r0 = int3x2(1643476803, 907898539, 379615839, 1140483021, 1735287433, 1743199272); + TestUtils.AreEqual(+a0, r0); + + int3x2 a1 = int3x2(1472881565, 401565897, 1287765427, 849339193, 174532915, 1864850812); + int3x2 r1 = int3x2(1472881565, 401565897, 1287765427, 849339193, 174532915, 1864850812); + TestUtils.AreEqual(+a1, r1); + + int3x2 a2 = int3x2(1566098441, 1615499926, 2049663954, 1723005749, 409076474, 591286416); + int3x2 r2 = int3x2(1566098441, 1615499926, 2049663954, 1723005749, 409076474, 591286416); + TestUtils.AreEqual(+a2, r2); + + int3x2 a3 = int3x2(1706631096, 1808261782, 1201290141, 82958939, 308695413, 1575280693); + int3x2 r3 = int3x2(1706631096, 1808261782, 1201290141, 82958939, 308695413, 1575280693); + TestUtils.AreEqual(+a3, r3); + } + + [TestCompiler] + public static void int3x2_operator_neg() + { + int3x2 a0 = int3x2(1955022112, 662160019, 370300775, 2141283773, 1004505619, 28153593); + int3x2 r0 = int3x2(-1955022112, -662160019, -370300775, -2141283773, -1004505619, -28153593); + TestUtils.AreEqual(-a0, r0); + + int3x2 a1 = int3x2(33894270, 1115028238, 1636274969, 694995093, 1542206286, 213087293); + int3x2 r1 = int3x2(-33894270, -1115028238, -1636274969, -694995093, -1542206286, -213087293); + TestUtils.AreEqual(-a1, r1); + + int3x2 a2 = int3x2(243937487, 841085242, 574159094, 1687250035, 2057919693, 1175014732); + int3x2 r2 = int3x2(-243937487, -841085242, -574159094, -1687250035, -2057919693, -1175014732); + TestUtils.AreEqual(-a2, r2); + + int3x2 a3 = int3x2(1259809073, 1190569920, 2047955772, 2120729864, 1440774928, 1485596454); + int3x2 r3 = int3x2(-1259809073, -1190569920, -2047955772, -2120729864, -1440774928, -1485596454); + TestUtils.AreEqual(-a3, r3); + } + + [TestCompiler] + public static void int3x2_operator_prefix_inc() + { + int3x2 a0 = int3x2(864455342, 2035793213, 1275443862, 971919915, 411610189, 446210725); + int3x2 r0 = int3x2(864455343, 2035793214, 1275443863, 971919916, 411610190, 446210726); + TestUtils.AreEqual(++a0, r0); + + int3x2 a1 = int3x2(395072276, 913293639, 432884105, 1208161871, 1385544935, 1835605516); + int3x2 r1 = int3x2(395072277, 913293640, 432884106, 1208161872, 1385544936, 1835605517); + TestUtils.AreEqual(++a1, r1); + + int3x2 a2 = int3x2(831396561, 696475402, 1786514683, 993189311, 752093909, 1622410417); + int3x2 r2 = int3x2(831396562, 696475403, 1786514684, 993189312, 752093910, 1622410418); + TestUtils.AreEqual(++a2, r2); + + int3x2 a3 = int3x2(1398865015, 1705625817, 609525897, 172599489, 504806865, 519296647); + int3x2 r3 = int3x2(1398865016, 1705625818, 609525898, 172599490, 504806866, 519296648); + TestUtils.AreEqual(++a3, r3); + } + + [TestCompiler] + public static void int3x2_operator_postfix_inc() + { + int3x2 a0 = int3x2(1751003569, 2063707595, 1500486291, 969189211, 1007848192, 2028651936); + int3x2 r0 = int3x2(1751003569, 2063707595, 1500486291, 969189211, 1007848192, 2028651936); + TestUtils.AreEqual(a0++, r0); + + int3x2 a1 = int3x2(1643023524, 1396179607, 708474528, 177416855, 1524860667, 1408994706); + int3x2 r1 = int3x2(1643023524, 1396179607, 708474528, 177416855, 1524860667, 1408994706); + TestUtils.AreEqual(a1++, r1); + + int3x2 a2 = int3x2(375284401, 1676086778, 717006530, 506142468, 732199129, 2026873940); + int3x2 r2 = int3x2(375284401, 1676086778, 717006530, 506142468, 732199129, 2026873940); + TestUtils.AreEqual(a2++, r2); + + int3x2 a3 = int3x2(130175844, 420613464, 1219979307, 586574160, 357567451, 1468020171); + int3x2 r3 = int3x2(130175844, 420613464, 1219979307, 586574160, 357567451, 1468020171); + TestUtils.AreEqual(a3++, r3); + } + + [TestCompiler] + public static void int3x2_operator_prefix_dec() + { + int3x2 a0 = int3x2(200904609, 871077500, 968578728, 638967721, 1995396216, 435367037); + int3x2 r0 = int3x2(200904608, 871077499, 968578727, 638967720, 1995396215, 435367036); + TestUtils.AreEqual(--a0, r0); + + int3x2 a1 = int3x2(1782514098, 1434377580, 596759698, 1699290403, 1758478358, 1914114460); + int3x2 r1 = int3x2(1782514097, 1434377579, 596759697, 1699290402, 1758478357, 1914114459); + TestUtils.AreEqual(--a1, r1); + + int3x2 a2 = int3x2(71237375, 1022184392, 1310293956, 356565557, 18299409, 906734601); + int3x2 r2 = int3x2(71237374, 1022184391, 1310293955, 356565556, 18299408, 906734600); + TestUtils.AreEqual(--a2, r2); + + int3x2 a3 = int3x2(799006218, 1040798388, 1469596990, 1719228297, 220897829, 1454322707); + int3x2 r3 = int3x2(799006217, 1040798387, 1469596989, 1719228296, 220897828, 1454322706); + TestUtils.AreEqual(--a3, r3); + } + + [TestCompiler] + public static void int3x2_operator_postfix_dec() + { + int3x2 a0 = int3x2(283970262, 1109329936, 1073216143, 649439137, 1932646215, 1174104498); + int3x2 r0 = int3x2(283970262, 1109329936, 1073216143, 649439137, 1932646215, 1174104498); + TestUtils.AreEqual(a0--, r0); + + int3x2 a1 = int3x2(484207852, 691209285, 2017728859, 802721301, 377162390, 526366486); + int3x2 r1 = int3x2(484207852, 691209285, 2017728859, 802721301, 377162390, 526366486); + TestUtils.AreEqual(a1--, r1); + + int3x2 a2 = int3x2(1504625034, 60677868, 1867810045, 2095777993, 670715645, 324944916); + int3x2 r2 = int3x2(1504625034, 60677868, 1867810045, 2095777993, 670715645, 324944916); + TestUtils.AreEqual(a2--, r2); + + int3x2 a3 = int3x2(242636153, 1316734088, 1030072405, 1751972064, 1868889881, 1726583208); + int3x2 r3 = int3x2(242636153, 1316734088, 1030072405, 1751972064, 1868889881, 1726583208); + TestUtils.AreEqual(a3--, r3); + } + + [TestCompiler] + public static void int3x2_operator_bitwise_and_wide_wide() + { + int3x2 a0 = int3x2(779935043, 1097962163, 1939593304, 800599247, 952140918, 782792558); + int3x2 b0 = int3x2(307705143, 1710882162, 866836769, 532490608, 679371720, 1794035877); + int3x2 r0 = int3x2(39064835, 1097961522, 864731136, 263727168, 675283008, 715673636); + TestUtils.AreEqual(a0 & b0, r0); + + int3x2 a1 = int3x2(1608557706, 396446406, 2039894114, 1286974642, 442394124, 1759739564); + int3x2 b1 = int3x2(1439832202, 519529812, 23633139, 1209152681, 646737179, 1255867027); + int3x2 r1 = int3x2(1438646410, 379666500, 16781410, 1209017504, 34366472, 1220739712); + TestUtils.AreEqual(a1 & b1, r1); + + int3x2 a2 = int3x2(233435438, 665207770, 1942050241, 1022352952, 60340400, 329119345); + int3x2 b2 = int3x2(1900854122, 413173763, 1409138251, 2087190272, 563439483, 354579077); + int3x2 r2 = int3x2(21541162, 10485762, 1405162561, 1013440000, 26222640, 285241857); + TestUtils.AreEqual(a2 & b2, r2); + + int3x2 a3 = int3x2(406517382, 1126764634, 343425836, 1957552749, 1624478957, 341972372); + int3x2 b3 = int3x2(642224854, 1650432515, 755290290, 902865191, 661389406, 2134212586); + int3x2 r3 = int3x2(168582, 1107890178, 67125280, 880844837, 541065292, 337646976); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void int3x2_operator_bitwise_and_wide_scalar() + { + int3x2 a0 = int3x2(443615469, 490057985, 2042441263, 1524760558, 1405175110, 510212004); + int b0 = (93423598); + int3x2 r0 = int3x2(1114348, 85033216, 26281518, 8488942, 25232710, 67176356); + TestUtils.AreEqual(a0 & b0, r0); + + int3x2 a1 = int3x2(1941875181, 1365509729, 428270198, 607982857, 650270920, 1249238550); + int b1 = (1236735839); + int3x2 r1 = int3x2(1102446925, 1092879937, 159777366, 3478793, 8523848, 1211438614); + TestUtils.AreEqual(a1 & b1, r1); + + int3x2 a2 = int3x2(814629680, 143502472, 861733033, 1408932942, 957693145, 1567715668); + int b2 = (1862276471); + int3x2 r2 = int3x2(536871216, 134218752, 587202593, 1124078662, 687871057, 1291850068); + TestUtils.AreEqual(a2 & b2, r2); + + int3x2 a3 = int3x2(1102952410, 1599352836, 208656708, 1272226025, 462670926, 1817145060); + int b3 = (322053683); + int3x2 r3 = int3x2(19932690, 319823872, 2228224, 51388449, 319947778, 140832); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void int3x2_operator_bitwise_and_scalar_wide() + { + int a0 = (1144543590); + int3x2 b0 = int3x2(420346723, 562416448, 1393127318, 1560699552, 851218057, 703880958); + int3x2 r0 = int3x2(547170, 18752, 1074284806, 1140867104, 3672064, 3168358); + TestUtils.AreEqual(a0 & b0, r0); + + int a1 = (1159378889); + int3x2 b1 = int3x2(2031211279, 1089518981, 270607307, 1349288930, 520199596, 1763483957); + int3x2 r1 = int3x2(1091605257, 1074836865, 9161, 1074299840, 83924360, 1092133121); + TestUtils.AreEqual(a1 & b1, r1); + + int a2 = (1248975349); + int3x2 b2 = int3x2(236938635, 185023291, 1085233038, 1845693112, 946052961, 1436238522); + int3x2 r2 = int3x2(168903041, 167844145, 1075925380, 1241581744, 140613985, 1074872496); + TestUtils.AreEqual(a2 & b2, r2); + + int a3 = (2042776519); + int3x2 b3 = int3x2(56356886, 1770159840, 1872339579, 1439201366, 1233066417, 1214109404); + int3x2 r3 = int3x2(21118982, 1770146496, 1769996867, 1371555910, 1229064577, 1212170948); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void int3x2_operator_bitwise_or_wide_wide() + { + int3x2 a0 = int3x2(1731159103, 659068416, 382702471, 1821032196, 1565773438, 1004000514); + int3x2 b0 = int3x2(1583847161, 692672727, 1161585489, 1756207130, 1321374429, 1287357212); + int3x2 r0 = int3x2(2138044159, 793370327, 1476391895, 1823457054, 1607720703, 2147473182); + TestUtils.AreEqual(a0 | b0, r0); + + int3x2 a1 = int3x2(948501377, 600951835, 669346222, 396691477, 2108560248, 2117522137); + int3x2 b1 = int3x2(2075767170, 1273513430, 1610830169, 1316929125, 511625048, 573925879); + int3x2 r1 = int3x2(2075786115, 1811533279, 1743223295, 1610595957, 2147407736, 2117598207); + TestUtils.AreEqual(a1 | b1, r1); + + int3x2 a2 = int3x2(330307355, 818676817, 1774459567, 1117506257, 1254511182, 1017865993); + int3x2 b2 = int3x2(1502255628, 1841676448, 1682928938, 1115131952, 1541423910, 1416096228); + int3x2 r2 = int3x2(1538957087, 2110637297, 1842315183, 1124063985, 1541821294, 2096099309); + TestUtils.AreEqual(a2 | b2, r2); + + int3x2 a3 = int3x2(1883021644, 1140203470, 759288967, 2122744307, 335621148, 715028074); + int3x2 b3 = int3x2(188606371, 1041599540, 219545389, 560097663, 1087543661, 936383841); + int3x2 r3 = int3x2(2067654639, 2146934782, 760610735, 2145839615, 1423162749, 1071544171); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void int3x2_operator_bitwise_or_wide_scalar() + { + int3x2 a0 = int3x2(961259683, 471103264, 1733389229, 1591585258, 386953869, 1148351449); + int b0 = (1666102508); + int3x2 r0 = int3x2(2068823279, 2136930284, 1734344685, 2145369582, 2002712301, 1736374269); + TestUtils.AreEqual(a0 | b0, r0); + + int3x2 a1 = int3x2(1048929715, 860336789, 1637162093, 1227888278, 774029856, 879300408); + int b1 = (1814263250); + int3x2 r1 = int3x2(2124903923, 2137520087, 1840741887, 1832089558, 1847850994, 2087419898); + TestUtils.AreEqual(a1 | b1, r1); + + int3x2 a2 = int3x2(1179087439, 1977614655, 46921989, 1980838747, 284225881, 64304104); + int b2 = (797240690); + int3x2 r2 = int3x2(1875378047, 2145709439, 802159991, 2140536699, 1073020283, 802553850); + TestUtils.AreEqual(a2 | b2, r2); + + int3x2 a3 = int3x2(313591807, 1890090886, 521303722, 2021379070, 2055963359, 1511253082); + int b3 = (1393862490); + int3x2 r3 = int3x2(1404413951, 1941766110, 1595340794, 2071982078, 2074060767, 1528293210); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void int3x2_operator_bitwise_or_scalar_wide() + { + int a0 = (1213433101); + int3x2 b0 = int3x2(1212928242, 1614462616, 936937728, 764766995, 306352095, 574719481); + int3x2 r0 = int3x2(1213978111, 1752940445, 2145094925, 1842867999, 1515425759, 1783858685); + TestUtils.AreEqual(a0 | b0, r0); + + int a1 = (1283571271); + int3x2 b1 = int3x2(2109131012, 979469710, 1348323481, 1407542578, 697517649, 1059093741); + int3x2 r1 = int3x2(2109210439, 2128723919, 1558052575, 1608908663, 1838415447, 2141322991); + TestUtils.AreEqual(a1 | b1, r1); + + int a2 = (627815046); + int3x2 b2 = int3x2(418822515, 83214352, 424663473, 447949225, 527022375, 1947148461); + int3x2 r2 = int3x2(1040169975, 637530774, 1030749111, 1073462191, 1064024999, 1970254511); + TestUtils.AreEqual(a2 | b2, r2); + + int a3 = (305251437); + int3x2 b3 = int3x2(1254601325, 1752329425, 1592402684, 1587055329, 1088734150, 298563808); + int3x2 r3 = int3x2(1526199917, 2054417661, 1593566973, 1589235437, 1391839215, 335281389); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void int3x2_operator_bitwise_xor_wide_wide() + { + int3x2 a0 = int3x2(1556324760, 207002929, 1843444873, 1632079131, 1460334334, 1607815585); + int3x2 b0 = int3x2(1054997548, 1523759632, 251164872, 110472397, 384031112, 1109163205); + int3x2 r0 = int3x2(1646419380, 1451501345, 1662567489, 1741824470, 1105803126, 499723620); + TestUtils.AreEqual(a0 ^ b0, r0); + + int3x2 a1 = int3x2(220623650, 38668553, 47193340, 643663548, 1371932564, 94957188); + int3x2 b1 = int3x2(535118981, 179106262, 1523031711, 1713313372, 1294118730, 520360641); + int3x2 r1 = int3x2(314783655, 149092575, 1477935715, 1078104288, 484747486, 447544389); + TestUtils.AreEqual(a1 ^ b1, r1); + + int3x2 a2 = int3x2(700973621, 370621508, 2087573076, 351476570, 1340815927, 681577472); + int3x2 b2 = int3x2(1040688781, 1020757245, 1143954843, 1281933464, 175288469, 326874157); + int3x2 r2 = int3x2(399484088, 717273273, 943885263, 1486609346, 1167690402, 1004255277); + TestUtils.AreEqual(a2 ^ b2, r2); + + int3x2 a3 = int3x2(314138777, 446857644, 1368661599, 1672499683, 1259759761, 2049102405); + int3x2 b3 = int3x2(1192052687, 1087083643, 1900865484, 1521193463, 569695524, 1622101483); + int3x2 r3 = int3x2(1437869910, 1516836311, 551090579, 958119956, 1793242549, 445489070); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void int3x2_operator_bitwise_xor_wide_scalar() + { + int3x2 a0 = int3x2(2124666952, 177397845, 574879617, 1937385541, 1136545648, 213863690); + int b0 = (493665894); + int3x2 r0 = int3x2(1674536494, 402546227, 1060063719, 1846973987, 1590882582, 299103084); + TestUtils.AreEqual(a0 ^ b0, r0); + + int3x2 a1 = int3x2(535061373, 1305234431, 353786540, 1308626970, 1267729267, 125659640); + int b1 = (289301586); + int3x2 r1 = int3x2(249169711, 1559375789, 69746430, 1597928520, 1521379105, 373493162); + TestUtils.AreEqual(a1 ^ b1, r1); + + int3x2 a2 = int3x2(1315625690, 116862046, 375757978, 491079274, 191750702, 187129429); + int b2 = (1730088797); + int3x2 r2 = int3x2(695588231, 1642603267, 1903858631, 2052737335, 1819471219, 1815630088); + TestUtils.AreEqual(a2 ^ b2, r2); + + int3x2 a3 = int3x2(967051293, 653124416, 788984, 1479174924, 1680011736, 447453839); + int b3 = (549951551); + int3x2 r3 = int3x2(425955362, 103447423, 550212039, 2028860211, 1155885543, 980157104); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void int3x2_operator_bitwise_xor_scalar_wide() + { + int a0 = (1288453276); + int3x2 b0 = int3x2(1077599928, 884741329, 212164516, 1585020328, 152985454, 1775851275); + int3x2 r0 = int3x2(217506340, 2020616269, 1080648504, 313868596, 1171416050, 622160791); + TestUtils.AreEqual(a0 ^ b0, r0); + + int a1 = (1416249064); + int3x2 b1 = int3x2(1309317737, 1773918217, 1509843030, 1206045972, 1154916424, 1947871003); + int3x2 r1 = int3x2(442541185, 1037166305, 227827390, 327742460, 280796832, 544217587); + TestUtils.AreEqual(a1 ^ b1, r1); + + int a2 = (1774252400); + int3x2 b2 = int3x2(1946113778, 1079717492, 290620937, 1382343363, 939045099, 1309568053); + int3x2 r2 = int3x2(440379266, 698081028, 2022864761, 1000608691, 1580745115, 667852101); + TestUtils.AreEqual(a2 ^ b2, r2); + + int a3 = (221134131); + int3x2 b3 = int3x2(885841718, 612068188, 194068085, 1396957881, 573581481, 1813817520); + int3x2 r3 = int3x2(971170309, 693458543, 113181510, 1584258954, 790500762, 1630705027); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void int3x2_operator_left_shift() + { + int3x2 a0 = int3x2(197771193, 622182602, 1283988958, 1327917304, 473415985, 432425717); + int b0 = (1321149625); + int3x2 r0 = int3x2(1912602624, -1811939328, -1140850688, -268435456, 1644167168, -369098752); + TestUtils.AreEqual(a0 << b0, r0); + + int3x2 a1 = int3x2(870301196, 1200694230, 1531607705, 1360008038, 1008296534, 1447702302); + int b1 = (2058433484); + int3x2 r1 = int3x2(-69156864, 306012160, -1482059776, 20340736, -1775935488, -1561206784); + TestUtils.AreEqual(a1 << b1, r1); + + int3x2 a2 = int3x2(1079614371, 1664454606, 2045594989, 2077023268, 592678686, 297755411); + int b2 = (35667343); + int3x2 r2 = int3x2(-841908224, -941162496, -1497989120, 1846673408, -946929664, -1316388864); + TestUtils.AreEqual(a2 << b2, r2); + + int3x2 a3 = int3x2(1722762487, 37265945, 997793693, 1521705181, 263886278, 221147365); + int b3 = (1161625759); + int3x2 r3 = int3x2(-2147483648, -2147483648, -2147483648, -2147483648, 0, -2147483648); + TestUtils.AreEqual(a3 << b3, r3); + } + + [TestCompiler] + public static void int3x2_operator_right_shift() + { + int3x2 a0 = int3x2(548167301, 1161338299, 1617625829, 1860731847, 713958715, 196552656); + int b0 = (1266801540); + int3x2 r0 = int3x2(34260456, 72583643, 101101614, 116295740, 44622419, 12284541); + TestUtils.AreEqual(a0 >> b0, r0); + + int3x2 a1 = int3x2(770466193, 572763124, 506619530, 426807581, 2031319045, 701927980); + int b1 = (1265099998); + int3x2 r1 = int3x2(0, 0, 0, 0, 1, 0); + TestUtils.AreEqual(a1 >> b1, r1); + + int3x2 a2 = int3x2(917785020, 185593382, 1102123711, 334005460, 1624751550, 280138733); + int b2 = (569504877); + int3x2 r2 = int3x2(112034, 22655, 134536, 40772, 198333, 34196); + TestUtils.AreEqual(a2 >> b2, r2); + + int3x2 a3 = int3x2(1598620011, 736389149, 1279158873, 408822762, 763607760, 348013684); + int b3 = (1840564178); + int3x2 r3 = int3x2(6098, 2809, 4879, 1559, 2912, 1327); + TestUtils.AreEqual(a3 >> b3, r3); + } + + [TestCompiler] + public static void int3x2_operator_bitwise_not() + { + int3x2 a0 = int3x2(1403358969, 831360921, 2088190243, 976721016, 878283189, 308994339); + int3x2 r0 = int3x2(-1403358970, -831360922, -2088190244, -976721017, -878283190, -308994340); + TestUtils.AreEqual(~a0, r0); + + int3x2 a1 = int3x2(1935567517, 472965491, 771711426, 627580960, 2061524024, 753208488); + int3x2 r1 = int3x2(-1935567518, -472965492, -771711427, -627580961, -2061524025, -753208489); + TestUtils.AreEqual(~a1, r1); + + int3x2 a2 = int3x2(2097179283, 664744603, 1289372466, 1635981125, 1951018596, 1545651937); + int3x2 r2 = int3x2(-2097179284, -664744604, -1289372467, -1635981126, -1951018597, -1545651938); + TestUtils.AreEqual(~a2, r2); + + int3x2 a3 = int3x2(717936457, 1342785385, 869629475, 2045854321, 1282546942, 1562433528); + int3x2 r3 = int3x2(-717936458, -1342785386, -869629476, -2045854322, -1282546943, -1562433529); + TestUtils.AreEqual(~a3, r3); + } + + + } +} diff --git a/package/Tests/Tests/Shared/TestInt3x2.gen.cs.meta b/package/Tests/Tests/Shared/TestInt3x2.gen.cs.meta new file mode 100755 index 000000000..d34b6dfa9 --- /dev/null +++ b/package/Tests/Tests/Shared/TestInt3x2.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a70be02e3e9e4764494cdb824f94da34 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/package/Tests/Tests/Shared/TestInt3x3.gen.cs b/package/Tests/Tests/Shared/TestInt3x3.gen.cs new file mode 100755 index 000000000..b42ba490b --- /dev/null +++ b/package/Tests/Tests/Shared/TestInt3x3.gen.cs @@ -0,0 +1,1244 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using NUnit.Framework; +using static Unity.Mathematics.math; +using Burst.Compiler.IL.Tests; + +namespace Unity.Mathematics.Tests +{ + [TestFixture] + public class TestInt3x3 + { + [TestCompiler] + public static void int3x3_zero() + { + TestUtils.AreEqual(int3x3.zero.c0.x, 0); + TestUtils.AreEqual(int3x3.zero.c0.y, 0); + TestUtils.AreEqual(int3x3.zero.c0.z, 0); + TestUtils.AreEqual(int3x3.zero.c1.x, 0); + TestUtils.AreEqual(int3x3.zero.c1.y, 0); + TestUtils.AreEqual(int3x3.zero.c1.z, 0); + TestUtils.AreEqual(int3x3.zero.c2.x, 0); + TestUtils.AreEqual(int3x3.zero.c2.y, 0); + TestUtils.AreEqual(int3x3.zero.c2.z, 0); + } + + [TestCompiler] + public static void int3x3_identity() + { + TestUtils.AreEqual(int3x3.identity.c0.x, 1); + TestUtils.AreEqual(int3x3.identity.c0.y, 0); + TestUtils.AreEqual(int3x3.identity.c0.z, 0); + TestUtils.AreEqual(int3x3.identity.c1.x, 0); + TestUtils.AreEqual(int3x3.identity.c1.y, 1); + TestUtils.AreEqual(int3x3.identity.c1.z, 0); + TestUtils.AreEqual(int3x3.identity.c2.x, 0); + TestUtils.AreEqual(int3x3.identity.c2.y, 0); + TestUtils.AreEqual(int3x3.identity.c2.z, 1); + } + + [TestCompiler] + public static void int3x3_operator_equal_wide_wide() + { + int3x3 a0 = int3x3(790229414, 970783976, 1428432738, 1578747135, 1733797753, 2001507228, 1446876437, 1777406370, 1426387268); + int3x3 b0 = int3x3(612337669, 1214209108, 2120643427, 295461214, 1510890331, 1893316566, 921816149, 1834958575, 1482011863); + bool3x3 r0 = bool3x3(false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + int3x3 a1 = int3x3(1809275021, 1843770816, 1172185222, 1469608940, 869874758, 458603090, 581282460, 1948324909, 1129078206); + int3x3 b1 = int3x3(2062852792, 226398742, 770290735, 36812057, 543224481, 1565350150, 1909926604, 1619900436, 1849990483); + bool3x3 r1 = bool3x3(false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + int3x3 a2 = int3x3(1638391029, 1135553683, 2079295200, 576232476, 608208235, 11172509, 1025529486, 2095601864, 193500113); + int3x3 b2 = int3x3(1261604411, 161864811, 843379453, 1780425458, 215681636, 2123130580, 708665810, 1902328998, 1808456602); + bool3x3 r2 = bool3x3(false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + int3x3 a3 = int3x3(1780908384, 1587636094, 1892083815, 1250768669, 1984341771, 929607871, 2092475304, 1940221590, 196567546); + int3x3 b3 = int3x3(563830672, 200493241, 1391620681, 1035522654, 168447603, 91580624, 1974459648, 2074899534, 164782857); + bool3x3 r3 = bool3x3(false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void int3x3_operator_equal_wide_scalar() + { + int3x3 a0 = int3x3(1211464300, 1921862607, 508076684, 1249127920, 1394594555, 746862310, 1733655277, 1884008277, 1682018538); + int b0 = (746972502); + bool3x3 r0 = bool3x3(false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + int3x3 a1 = int3x3(795585660, 927605411, 672785749, 1465584610, 585324157, 404448210, 969511077, 442746747, 1772925698); + int b1 = (936027116); + bool3x3 r1 = bool3x3(false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + int3x3 a2 = int3x3(1884034177, 425476075, 1370577708, 597010220, 1249636005, 211986678, 1305479811, 255635293, 1150443719); + int b2 = (451512860); + bool3x3 r2 = bool3x3(false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + int3x3 a3 = int3x3(177122433, 1442445694, 667984966, 1684122010, 1962874832, 172230876, 496695881, 955604291, 872759249); + int b3 = (511346787); + bool3x3 r3 = bool3x3(false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void int3x3_operator_equal_scalar_wide() + { + int a0 = (1150044438); + int3x3 b0 = int3x3(233855098, 924242519, 1402948791, 601381975, 2120518068, 629187703, 1971977031, 47183124, 1061805787); + bool3x3 r0 = bool3x3(false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + int a1 = (1009011238); + int3x3 b1 = int3x3(312511148, 1460673064, 737210539, 1737844479, 1892405453, 2133024000, 455818693, 2003197687, 1276241219); + bool3x3 r1 = bool3x3(false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + int a2 = (534746610); + int3x3 b2 = int3x3(559824292, 1758388240, 1023494292, 719963017, 1883763832, 597498209, 367814403, 1839429063, 223575614); + bool3x3 r2 = bool3x3(false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + int a3 = (79701214); + int3x3 b3 = int3x3(1699606118, 759455864, 2017599457, 1395605233, 1191785903, 1156248212, 338891967, 61410415, 1576985758); + bool3x3 r3 = bool3x3(false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void int3x3_operator_not_equal_wide_wide() + { + int3x3 a0 = int3x3(1660932106, 982847023, 97046264, 1739517447, 1253499180, 1830584069, 1841470429, 1397841646, 1770890135); + int3x3 b0 = int3x3(107139049, 75478496, 2055495054, 358586687, 942338347, 111564990, 113811950, 948912488, 1080084121); + bool3x3 r0 = bool3x3(true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + int3x3 a1 = int3x3(1906548631, 169082967, 2099271786, 1909317609, 46519139, 1433204003, 931492669, 670504132, 1551558665); + int3x3 b1 = int3x3(1400504872, 1032134499, 1061123400, 221862069, 858950046, 989094643, 2023070999, 1269317127, 531883744); + bool3x3 r1 = bool3x3(true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + int3x3 a2 = int3x3(1204055048, 1623586740, 226381077, 1145987803, 644253929, 475189890, 922313145, 2006448607, 1574579050); + int3x3 b2 = int3x3(687761409, 278427731, 296354221, 536981557, 1134676193, 1749879634, 1944210269, 92849031, 164029425); + bool3x3 r2 = bool3x3(true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + int3x3 a3 = int3x3(1839580033, 155350910, 313644534, 2008975915, 1072866331, 10845678, 1588544505, 709736932, 1892341087); + int3x3 b3 = int3x3(628797607, 2069207270, 2022667842, 880567401, 264404537, 1954996717, 572153302, 865957902, 1083128726); + bool3x3 r3 = bool3x3(true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void int3x3_operator_not_equal_wide_scalar() + { + int3x3 a0 = int3x3(747758183, 1033001286, 1439973882, 2138928797, 1197845089, 1432672459, 950170763, 238704450, 2105962247); + int b0 = (248693828); + bool3x3 r0 = bool3x3(true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + int3x3 a1 = int3x3(727205263, 276313906, 2126300423, 791998981, 2035077187, 1171827730, 1412347883, 1622176923, 768370497); + int b1 = (1640688041); + bool3x3 r1 = bool3x3(true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + int3x3 a2 = int3x3(1072798259, 1497830076, 1582645163, 1876273820, 90244766, 30493685, 904014575, 384643370, 11554610); + int b2 = (1808712713); + bool3x3 r2 = bool3x3(true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + int3x3 a3 = int3x3(2016093187, 1596313927, 363921847, 1555396158, 913218907, 1739138988, 1916670251, 1516209113, 765258490); + int b3 = (1515760622); + bool3x3 r3 = bool3x3(true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void int3x3_operator_not_equal_scalar_wide() + { + int a0 = (2076921066); + int3x3 b0 = int3x3(2037494727, 1989050616, 48833929, 1897435904, 514354517, 1783749164, 364694471, 754315072, 124108032); + bool3x3 r0 = bool3x3(true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + int a1 = (1512967900); + int3x3 b1 = int3x3(1178825850, 1854793298, 50286949, 2100802631, 1640811853, 82110247, 472172806, 266984506, 2003668365); + bool3x3 r1 = bool3x3(true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + int a2 = (1826089250); + int3x3 b2 = int3x3(1041416160, 356140110, 2057237962, 799920703, 1916347720, 510966350, 572038024, 1936481966, 1366859342); + bool3x3 r2 = bool3x3(true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + int a3 = (1775285431); + int3x3 b3 = int3x3(604757336, 1047551607, 1311703338, 676012224, 627370253, 1715733805, 699755913, 1875151666, 358894860); + bool3x3 r3 = bool3x3(true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void int3x3_operator_less_wide_wide() + { + int3x3 a0 = int3x3(1182186063, 415538999, 1667335818, 1566618442, 1166180837, 639095188, 1080836365, 771119973, 928263233); + int3x3 b0 = int3x3(524633529, 1032195686, 760723389, 1505751409, 431962172, 1287906509, 1560084663, 1450178202, 2066166337); + bool3x3 r0 = bool3x3(false, true, false, false, false, true, true, true, true); + TestUtils.AreEqual(a0 < b0, r0); + + int3x3 a1 = int3x3(789225474, 665243110, 1003542034, 1032480172, 1961336172, 923379558, 21210619, 1089772116, 1707633052); + int3x3 b1 = int3x3(1107069023, 1640077524, 2103263105, 684229139, 1234033624, 1278743281, 1953079347, 1228832942, 2082539723); + bool3x3 r1 = bool3x3(true, true, true, false, false, true, true, true, true); + TestUtils.AreEqual(a1 < b1, r1); + + int3x3 a2 = int3x3(778986024, 158153146, 336715101, 1839141169, 1706859710, 1928438162, 1638101724, 2044698552, 1543260981); + int3x3 b2 = int3x3(1088437561, 1058382082, 207459172, 750531081, 2015788562, 2126542133, 271967348, 1601249324, 1373999400); + bool3x3 r2 = bool3x3(true, true, false, false, true, true, false, false, false); + TestUtils.AreEqual(a2 < b2, r2); + + int3x3 a3 = int3x3(471462349, 1668575142, 2147199161, 946870864, 582371851, 410751553, 198134393, 1999935258, 671192178); + int3x3 b3 = int3x3(1689592186, 459759541, 983106679, 332584818, 2034921203, 833499488, 1999487070, 836063897, 1987309319); + bool3x3 r3 = bool3x3(true, false, false, false, true, true, true, false, true); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void int3x3_operator_less_wide_scalar() + { + int3x3 a0 = int3x3(608447185, 818840405, 869219329, 2080125385, 1214500548, 1361741203, 1667165786, 1615392341, 840091491); + int b0 = (1491216667); + bool3x3 r0 = bool3x3(true, true, true, false, true, true, false, false, true); + TestUtils.AreEqual(a0 < b0, r0); + + int3x3 a1 = int3x3(469591900, 315321650, 930950514, 1100560246, 933855388, 908563901, 1127696709, 1286331950, 380753337); + int b1 = (1247103789); + bool3x3 r1 = bool3x3(true, true, true, true, true, true, true, false, true); + TestUtils.AreEqual(a1 < b1, r1); + + int3x3 a2 = int3x3(971148054, 1056649851, 1579735991, 689044913, 1960894027, 371987110, 867559111, 1703747625, 1698536333); + int b2 = (1827886929); + bool3x3 r2 = bool3x3(true, true, true, true, false, true, true, true, true); + TestUtils.AreEqual(a2 < b2, r2); + + int3x3 a3 = int3x3(41716206, 1274625476, 611065092, 118750042, 1829327996, 452204442, 1645191336, 1829152606, 1891059504); + int b3 = (243673862); + bool3x3 r3 = bool3x3(true, false, false, true, false, false, false, false, false); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void int3x3_operator_less_scalar_wide() + { + int a0 = (548436837); + int3x3 b0 = int3x3(282703327, 14370648, 1862117300, 1304793311, 826073259, 988910157, 445132446, 1139670255, 111349251); + bool3x3 r0 = bool3x3(false, false, true, true, true, true, false, true, false); + TestUtils.AreEqual(a0 < b0, r0); + + int a1 = (1102440676); + int3x3 b1 = int3x3(112183144, 1594415311, 1890019295, 2098715503, 608933527, 183989010, 1596056507, 1027318999, 146281093); + bool3x3 r1 = bool3x3(false, true, true, true, false, false, true, false, false); + TestUtils.AreEqual(a1 < b1, r1); + + int a2 = (358911716); + int3x3 b2 = int3x3(874278078, 1106057699, 1256807459, 2111973919, 1736480659, 810406400, 1329939911, 1276652605, 593690439); + bool3x3 r2 = bool3x3(true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 < b2, r2); + + int a3 = (771851138); + int3x3 b3 = int3x3(590897155, 386688344, 1290583204, 1984930954, 743544838, 1473400608, 1300775973, 1351720916, 168788814); + bool3x3 r3 = bool3x3(false, false, true, true, false, true, true, true, false); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void int3x3_operator_greater_wide_wide() + { + int3x3 a0 = int3x3(592884447, 2133928932, 918957182, 1284069471, 194584707, 739120780, 241654068, 1340158550, 2099542537); + int3x3 b0 = int3x3(138737040, 192863971, 1700841444, 1044631301, 1391589821, 730837695, 253553987, 2078872742, 910845808); + bool3x3 r0 = bool3x3(true, true, false, true, false, true, false, false, true); + TestUtils.AreEqual(a0 > b0, r0); + + int3x3 a1 = int3x3(1182623667, 1399607274, 789301637, 180400925, 594688333, 1877031463, 1360073500, 1091782422, 546676424); + int3x3 b1 = int3x3(976047676, 202633078, 1223618940, 641600530, 1830470354, 1570701388, 1104256103, 1838646932, 740166101); + bool3x3 r1 = bool3x3(true, true, false, false, false, true, true, false, false); + TestUtils.AreEqual(a1 > b1, r1); + + int3x3 a2 = int3x3(348221770, 716039145, 458742739, 1365508046, 1523167942, 1574478622, 1295065160, 715285504, 1130323487); + int3x3 b2 = int3x3(1549021845, 1457092873, 1790630950, 907793213, 555122804, 1418910265, 335209251, 1094341422, 1465325455); + bool3x3 r2 = bool3x3(false, false, false, true, true, true, true, false, false); + TestUtils.AreEqual(a2 > b2, r2); + + int3x3 a3 = int3x3(677530432, 1496919050, 12463046, 1106153111, 1315083485, 31516321, 1786538920, 1854361210, 1730650972); + int3x3 b3 = int3x3(390251369, 910309992, 277356652, 1601082764, 771366966, 1782348324, 550490783, 599992449, 550520692); + bool3x3 r3 = bool3x3(true, true, false, false, true, false, true, true, true); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void int3x3_operator_greater_wide_scalar() + { + int3x3 a0 = int3x3(1097138316, 211763648, 1883002501, 56406996, 43662641, 1923456111, 1437755186, 1219010035, 2125058448); + int b0 = (438688675); + bool3x3 r0 = bool3x3(true, false, true, false, false, true, true, true, true); + TestUtils.AreEqual(a0 > b0, r0); + + int3x3 a1 = int3x3(304028799, 48044515, 711945018, 1035679270, 577943770, 572743717, 1016617211, 2063134811, 1577403353); + int b1 = (893125636); + bool3x3 r1 = bool3x3(false, false, false, true, false, false, true, true, true); + TestUtils.AreEqual(a1 > b1, r1); + + int3x3 a2 = int3x3(64009107, 1143565920, 3715845, 689362811, 263973424, 1045140419, 1058332184, 524569092, 1183316983); + int b2 = (1462961460); + bool3x3 r2 = bool3x3(false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 > b2, r2); + + int3x3 a3 = int3x3(1107974092, 523727054, 112709358, 614746280, 1000986708, 1683117650, 1451781409, 61102732, 1284938191); + int b3 = (212839726); + bool3x3 r3 = bool3x3(true, true, false, true, true, true, true, false, true); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void int3x3_operator_greater_scalar_wide() + { + int a0 = (2024896938); + int3x3 b0 = int3x3(599356784, 185671342, 1932327391, 2025591013, 1257191721, 1312388500, 1443698859, 779217735, 691047512); + bool3x3 r0 = bool3x3(true, true, true, false, true, true, true, true, true); + TestUtils.AreEqual(a0 > b0, r0); + + int a1 = (741776730); + int3x3 b1 = int3x3(732565983, 668302204, 1556466996, 858599525, 1896917159, 701542098, 1052151621, 1023307544, 1435392907); + bool3x3 r1 = bool3x3(true, true, false, false, false, true, false, false, false); + TestUtils.AreEqual(a1 > b1, r1); + + int a2 = (1858177345); + int3x3 b2 = int3x3(299897686, 632930355, 1387203601, 483722222, 863042711, 1713088900, 315569296, 292652611, 1002628348); + bool3x3 r2 = bool3x3(true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 > b2, r2); + + int a3 = (927789921); + int3x3 b3 = int3x3(108145064, 425005337, 2093233588, 2063431853, 2079035844, 849337819, 1769234051, 358948261, 267985383); + bool3x3 r3 = bool3x3(true, true, false, false, false, true, false, true, true); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void int3x3_operator_less_equal_wide_wide() + { + int3x3 a0 = int3x3(1577248162, 2043073061, 1688380407, 176431985, 223299035, 1502802140, 1691709825, 386789394, 117182003); + int3x3 b0 = int3x3(903445031, 2108974565, 210822256, 1281704747, 453681718, 66138830, 1229799377, 1620922595, 1715833766); + bool3x3 r0 = bool3x3(false, true, false, true, true, false, false, true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + int3x3 a1 = int3x3(1665770435, 1958490731, 420032601, 1251092689, 2011681765, 749743684, 183784440, 1150674774, 1633828822); + int3x3 b1 = int3x3(1366430432, 13102000, 46919981, 486470891, 1709514236, 2145785285, 854254454, 1273278658, 810263315); + bool3x3 r1 = bool3x3(false, false, false, false, false, true, true, true, false); + TestUtils.AreEqual(a1 <= b1, r1); + + int3x3 a2 = int3x3(1719442172, 336047314, 743733218, 1393995865, 1854442658, 1498138884, 912169992, 1992682021, 1619593455); + int3x3 b2 = int3x3(1862773824, 201799013, 974166844, 1320622967, 2058099616, 522102017, 620752145, 1213693681, 1281818305); + bool3x3 r2 = bool3x3(true, false, true, false, true, false, false, false, false); + TestUtils.AreEqual(a2 <= b2, r2); + + int3x3 a3 = int3x3(1883313982, 483412430, 857881876, 346624138, 531961063, 269897278, 1062947703, 1743454202, 2048964070); + int3x3 b3 = int3x3(1564146162, 1996153080, 1201909516, 614401396, 224997397, 648547686, 418431167, 1724009726, 401891826); + bool3x3 r3 = bool3x3(false, true, true, true, false, true, false, false, false); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void int3x3_operator_less_equal_wide_scalar() + { + int3x3 a0 = int3x3(1722165358, 1219858357, 860410743, 411099660, 348104022, 1963256951, 212084836, 58924407, 1459242706); + int b0 = (1688048545); + bool3x3 r0 = bool3x3(false, true, true, true, true, false, true, true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + int3x3 a1 = int3x3(1745758438, 262559763, 690091301, 1806172431, 2091514001, 1857173043, 1617221948, 2017733017, 804204255); + int b1 = (532949158); + bool3x3 r1 = bool3x3(false, true, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 <= b1, r1); + + int3x3 a2 = int3x3(981729559, 910922522, 2079225209, 26179915, 238796519, 1917813750, 1258115260, 20607406, 1337879822); + int b2 = (2032949254); + bool3x3 r2 = bool3x3(true, true, false, true, true, true, true, true, true); + TestUtils.AreEqual(a2 <= b2, r2); + + int3x3 a3 = int3x3(959460446, 1279143037, 1551937606, 626254356, 1162369122, 1021674613, 127839058, 1974631244, 426908235); + int b3 = (1599429457); + bool3x3 r3 = bool3x3(true, true, true, true, true, true, true, false, true); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void int3x3_operator_less_equal_scalar_wide() + { + int a0 = (1777585); + int3x3 b0 = int3x3(1181030049, 1787703989, 1729760948, 1816537388, 1359786460, 874999193, 1678863148, 1711365839, 762067160); + bool3x3 r0 = bool3x3(true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + int a1 = (11953554); + int3x3 b1 = int3x3(1131583906, 1175393186, 1293698493, 48893340, 66196247, 1958607116, 1576473309, 861890786, 478252419); + bool3x3 r1 = bool3x3(true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 <= b1, r1); + + int a2 = (957887737); + int3x3 b2 = int3x3(117849810, 1348693584, 105489302, 259034238, 530713566, 601413850, 830430286, 145552297, 1697295044); + bool3x3 r2 = bool3x3(false, true, false, false, false, false, false, false, true); + TestUtils.AreEqual(a2 <= b2, r2); + + int a3 = (1150680564); + int3x3 b3 = int3x3(2091065664, 1796096704, 1572008712, 1556906486, 205552788, 620963188, 1156705971, 1121867260, 733876180); + bool3x3 r3 = bool3x3(true, true, true, true, false, false, true, false, false); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void int3x3_operator_greater_equal_wide_wide() + { + int3x3 a0 = int3x3(263000030, 744235661, 1893760267, 237248, 1062370984, 1676977687, 816766880, 1089431546, 1394493730); + int3x3 b0 = int3x3(1395535146, 1178373944, 1237373760, 1364855321, 600811864, 362060472, 290870624, 1839067862, 396958580); + bool3x3 r0 = bool3x3(false, false, true, false, true, true, true, false, true); + TestUtils.AreEqual(a0 >= b0, r0); + + int3x3 a1 = int3x3(1176473380, 1193988637, 1703862455, 1806186947, 1253571980, 589397635, 1951842887, 798931197, 808426484); + int3x3 b1 = int3x3(1336888643, 1019684398, 1697684196, 1227300220, 2044269675, 1898323839, 874509380, 1873505472, 1268843918); + bool3x3 r1 = bool3x3(false, true, true, true, false, false, true, false, false); + TestUtils.AreEqual(a1 >= b1, r1); + + int3x3 a2 = int3x3(744869638, 1959531616, 207430702, 1533946595, 1148381840, 2011549474, 605043041, 1707339660, 2038122892); + int3x3 b2 = int3x3(1606949562, 1263896445, 1805518202, 1412091359, 1240330374, 1955056253, 2025187918, 750755999, 869709740); + bool3x3 r2 = bool3x3(false, true, false, true, false, true, false, true, true); + TestUtils.AreEqual(a2 >= b2, r2); + + int3x3 a3 = int3x3(345761584, 1839156338, 1519670644, 2131285427, 775457686, 796452624, 1710612922, 1629927787, 1094198224); + int3x3 b3 = int3x3(1390799279, 1194035112, 666460047, 103451220, 1311530792, 802468307, 1090745055, 1968071275, 1935027815); + bool3x3 r3 = bool3x3(false, true, true, true, false, false, true, false, false); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void int3x3_operator_greater_equal_wide_scalar() + { + int3x3 a0 = int3x3(2112791350, 1043657935, 101764761, 1529909067, 556026890, 281734132, 1186600258, 815093894, 609211196); + int b0 = (1470533736); + bool3x3 r0 = bool3x3(true, false, false, true, false, false, false, false, false); + TestUtils.AreEqual(a0 >= b0, r0); + + int3x3 a1 = int3x3(1604309397, 244604867, 1419295004, 471843809, 1819986195, 1460027917, 1646290021, 196833647, 1596738181); + int b1 = (829548642); + bool3x3 r1 = bool3x3(true, false, true, false, true, true, true, false, true); + TestUtils.AreEqual(a1 >= b1, r1); + + int3x3 a2 = int3x3(1905036391, 1584946560, 370941146, 440219668, 1607345862, 1449142607, 1223010129, 379014762, 1719435169); + int b2 = (1771391775); + bool3x3 r2 = bool3x3(true, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 >= b2, r2); + + int3x3 a3 = int3x3(258833609, 612593660, 42612027, 1138747386, 1491562090, 917503963, 353608194, 1526792895, 192092521); + int b3 = (1389585003); + bool3x3 r3 = bool3x3(false, false, false, false, true, false, false, true, false); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void int3x3_operator_greater_equal_scalar_wide() + { + int a0 = (1525542481); + int3x3 b0 = int3x3(1503244746, 861711266, 817773856, 925984572, 571221723, 683686810, 118252990, 1653952090, 1240253990); + bool3x3 r0 = bool3x3(true, true, true, true, true, true, true, false, true); + TestUtils.AreEqual(a0 >= b0, r0); + + int a1 = (1947039008); + int3x3 b1 = int3x3(1869136019, 152012637, 1214546726, 917376832, 303549425, 2111728811, 945321577, 173706579, 625318949); + bool3x3 r1 = bool3x3(true, true, true, true, true, false, true, true, true); + TestUtils.AreEqual(a1 >= b1, r1); + + int a2 = (519443238); + int3x3 b2 = int3x3(1583588379, 1026799433, 1713083717, 394922760, 1216218189, 1336522452, 233894308, 479913036, 984991199); + bool3x3 r2 = bool3x3(false, false, false, true, false, false, true, true, false); + TestUtils.AreEqual(a2 >= b2, r2); + + int a3 = (172993285); + int3x3 b3 = int3x3(2121050903, 465645173, 788510727, 337378780, 273010835, 1898553615, 1111540136, 717385513, 474197678); + bool3x3 r3 = bool3x3(false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void int3x3_operator_add_wide_wide() + { + int3x3 a0 = int3x3(2049228671, 1658660009, 491719392, 937013355, 81108663, 1063894558, 86954702, 843159721, 698977704); + int3x3 b0 = int3x3(2088751567, 645762023, 306868786, 4360271, 506047997, 2094559874, 1634712736, 1601474440, 1586485231); + int3x3 r0 = int3x3(-156987058, -1990545264, 798588178, 941373626, 587156660, -1136512864, 1721667438, -1850333135, -2009504361); + TestUtils.AreEqual(a0 + b0, r0); + + int3x3 a1 = int3x3(192867135, 1683407172, 137301303, 2103582820, 526139155, 447937230, 2127411006, 1670579390, 1914969141); + int3x3 b1 = int3x3(908746788, 1812370320, 1247342357, 2043773873, 223363428, 175115707, 985928617, 507662836, 1231457019); + int3x3 r1 = int3x3(1101613923, -799189804, 1384643660, -147610603, 749502583, 623052937, -1181627673, -2116725070, -1148541136); + TestUtils.AreEqual(a1 + b1, r1); + + int3x3 a2 = int3x3(997691756, 857841794, 2129024875, 267535529, 978891383, 657092366, 941872903, 906908654, 1940071697); + int3x3 b2 = int3x3(776127866, 607782424, 1160366210, 1384832242, 702057048, 703554905, 2106992817, 1994483489, 539473); + int3x3 r2 = int3x3(1773819622, 1465624218, -1005576211, 1652367771, 1680948431, 1360647271, -1246101576, -1393575153, 1940611170); + TestUtils.AreEqual(a2 + b2, r2); + + int3x3 a3 = int3x3(862186205, 1951450264, 689662850, 1928213278, 1703906688, 526120638, 423980484, 1867227242, 603782684); + int3x3 b3 = int3x3(236858351, 411317652, 595429166, 713649927, 2053476603, 77965941, 1726775513, 1759186349, 2070333485); + int3x3 r3 = int3x3(1099044556, -1932199380, 1285092016, -1653104091, -537584005, 604086579, -2144211299, -668553705, -1620851127); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void int3x3_operator_add_wide_scalar() + { + int3x3 a0 = int3x3(2038218457, 134923711, 875689667, 1338884463, 997710928, 340490871, 1067888129, 70433301, 2003021861); + int b0 = (2124409227); + int3x3 r0 = int3x3(-132339612, -2035634358, -1294868402, -831673606, -1172847141, -1830067198, -1102669940, -2100124768, -167536208); + TestUtils.AreEqual(a0 + b0, r0); + + int3x3 a1 = int3x3(1635971971, 85446202, 1068152966, 1239387100, 1497676888, 1727477485, 1095438654, 756559204, 1818718931); + int b1 = (1160398286); + int3x3 r1 = int3x3(-1498597039, 1245844488, -2066416044, -1895181910, -1636892122, -1407091525, -2039130356, 1916957490, -1315850079); + TestUtils.AreEqual(a1 + b1, r1); + + int3x3 a2 = int3x3(658923552, 1585755398, 692843300, 1068593469, 1704776233, 577782260, 736972565, 711894571, 564257439); + int b2 = (1610518921); + int3x3 r2 = int3x3(-2025524823, -1098692977, -1991605075, -1615854906, -979672142, -2106666115, -1947475810, -1972553804, -2120190936); + TestUtils.AreEqual(a2 + b2, r2); + + int3x3 a3 = int3x3(2051736283, 1628006545, 1855700263, 656748782, 272774516, 1917133199, 828322973, 2116810190, 2092767444); + int b3 = (1572837697); + int3x3 r3 = int3x3(-670393316, -1094123054, -866429336, -2065380817, 1845612213, -804996400, -1893806626, -605319409, -629362155); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void int3x3_operator_add_scalar_wide() + { + int a0 = (391092078); + int3x3 b0 = int3x3(519908870, 851424292, 328314822, 135622204, 740923360, 655394201, 1451896269, 1781697072, 996031825); + int3x3 r0 = int3x3(911000948, 1242516370, 719406900, 526714282, 1132015438, 1046486279, 1842988347, -2122178146, 1387123903); + TestUtils.AreEqual(a0 + b0, r0); + + int a1 = (1557774949); + int3x3 b1 = int3x3(779774940, 1111541302, 783046445, 1130163944, 288279584, 1397683861, 1636583489, 673263339, 1469300874); + int3x3 r1 = int3x3(-1957417407, -1625651045, -1954145902, -1607028403, 1846054533, -1339508486, -1100608858, -2063929008, -1267891473); + TestUtils.AreEqual(a1 + b1, r1); + + int a2 = (14855965); + int3x3 b2 = int3x3(1116636999, 1488863300, 1600990886, 190651301, 1307459768, 920085839, 2082229835, 1992405574, 1213924458); + int3x3 r2 = int3x3(1131492964, 1503719265, 1615846851, 205507266, 1322315733, 934941804, 2097085800, 2007261539, 1228780423); + TestUtils.AreEqual(a2 + b2, r2); + + int a3 = (505841452); + int3x3 b3 = int3x3(981421162, 1488337699, 1113826640, 1806146508, 1841791222, 206610851, 526971953, 1236359886, 1459523189); + int3x3 r3 = int3x3(1487262614, 1994179151, 1619668092, -1982979336, -1947334622, 712452303, 1032813405, 1742201338, 1965364641); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void int3x3_operator_sub_wide_wide() + { + int3x3 a0 = int3x3(1353441118, 797269833, 659988112, 56022121, 365847472, 2062899435, 1380988474, 799885138, 1306058185); + int3x3 b0 = int3x3(1332656812, 1827794007, 972557431, 2078233689, 1508184327, 1372307701, 810327977, 936799885, 71562303); + int3x3 r0 = int3x3(20784306, -1030524174, -312569319, -2022211568, -1142336855, 690591734, 570660497, -136914747, 1234495882); + TestUtils.AreEqual(a0 - b0, r0); + + int3x3 a1 = int3x3(579775276, 1239163824, 344591081, 86359575, 1049709943, 721529513, 1767221271, 7652784, 545192611); + int3x3 b1 = int3x3(1418723328, 1971342989, 1226053395, 136565478, 1979903295, 600719425, 837912956, 632054793, 711091688); + int3x3 r1 = int3x3(-838948052, -732179165, -881462314, -50205903, -930193352, 120810088, 929308315, -624402009, -165899077); + TestUtils.AreEqual(a1 - b1, r1); + + int3x3 a2 = int3x3(176298787, 1477774126, 1426963688, 2032787858, 2059525977, 445200454, 425848588, 2026967474, 1128492011); + int3x3 b2 = int3x3(904695656, 1640069560, 750244414, 1385118097, 1102391291, 1221949855, 609588723, 1054324682, 1678086165); + int3x3 r2 = int3x3(-728396869, -162295434, 676719274, 647669761, 957134686, -776749401, -183740135, 972642792, -549594154); + TestUtils.AreEqual(a2 - b2, r2); + + int3x3 a3 = int3x3(61421784, 988065731, 1741434432, 2070331135, 1356704176, 1888446703, 1364654917, 265135366, 760501098); + int3x3 b3 = int3x3(1529581776, 1718700085, 523422634, 223602473, 1912611694, 1224986479, 748933681, 88793450, 401362529); + int3x3 r3 = int3x3(-1468159992, -730634354, 1218011798, 1846728662, -555907518, 663460224, 615721236, 176341916, 359138569); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void int3x3_operator_sub_wide_scalar() + { + int3x3 a0 = int3x3(1176369558, 1934521195, 309452150, 1417634074, 108910717, 1306356714, 1502312334, 1451794815, 281174200); + int b0 = (462232403); + int3x3 r0 = int3x3(714137155, 1472288792, -152780253, 955401671, -353321686, 844124311, 1040079931, 989562412, -181058203); + TestUtils.AreEqual(a0 - b0, r0); + + int3x3 a1 = int3x3(87530840, 2041593336, 557239990, 1119051448, 1590376732, 819090189, 816382635, 815920639, 1829033117); + int b1 = (1913724431); + int3x3 r1 = int3x3(-1826193591, 127868905, -1356484441, -794672983, -323347699, -1094634242, -1097341796, -1097803792, -84691314); + TestUtils.AreEqual(a1 - b1, r1); + + int3x3 a2 = int3x3(1792801932, 1418937976, 1277257189, 2092779398, 642236742, 1605250794, 819644478, 1468003019, 128303186); + int b2 = (1113440549); + int3x3 r2 = int3x3(679361383, 305497427, 163816640, 979338849, -471203807, 491810245, -293796071, 354562470, -985137363); + TestUtils.AreEqual(a2 - b2, r2); + + int3x3 a3 = int3x3(553494257, 1999744782, 2017272758, 1817991764, 1280985500, 676974855, 1638032613, 949761204, 1835969317); + int b3 = (1017126971); + int3x3 r3 = int3x3(-463632714, 982617811, 1000145787, 800864793, 263858529, -340152116, 620905642, -67365767, 818842346); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void int3x3_operator_sub_scalar_wide() + { + int a0 = (1691534405); + int3x3 b0 = int3x3(2022393810, 1612688515, 496689713, 887037586, 2097630964, 374934538, 939035482, 935242277, 1789300421); + int3x3 r0 = int3x3(-330859405, 78845890, 1194844692, 804496819, -406096559, 1316599867, 752498923, 756292128, -97766016); + TestUtils.AreEqual(a0 - b0, r0); + + int a1 = (264712893); + int3x3 b1 = int3x3(1231856067, 1818112748, 1428436109, 1258745460, 1077380396, 1330722719, 518111829, 967128529, 344666254); + int3x3 r1 = int3x3(-967143174, -1553399855, -1163723216, -994032567, -812667503, -1066009826, -253398936, -702415636, -79953361); + TestUtils.AreEqual(a1 - b1, r1); + + int a2 = (1082267918); + int3x3 b2 = int3x3(907866696, 1816885123, 460340568, 962154498, 557113461, 1701216709, 1980098777, 730060552, 1444397827); + int3x3 r2 = int3x3(174401222, -734617205, 621927350, 120113420, 525154457, -618948791, -897830859, 352207366, -362129909); + TestUtils.AreEqual(a2 - b2, r2); + + int a3 = (853570556); + int3x3 b3 = int3x3(138836432, 1013190428, 718089530, 506757390, 1216448041, 936312747, 1997286455, 1969982026, 902880656); + int3x3 r3 = int3x3(714734124, -159619872, 135481026, 346813166, -362877485, -82742191, -1143715899, -1116411470, -49310100); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void int3x3_operator_mul_wide_wide() + { + int3x3 a0 = int3x3(245827027, 208934650, 1019478917, 568231809, 877289039, 1585782440, 2111178729, 1186019069, 571481445); + int3x3 b0 = int3x3(759663997, 350129201, 477450108, 1635735015, 388710278, 757722665, 1509388321, 1841703980, 1826369331); + int3x3 r0 = int3x3(-632811769, 1402281434, 332447596, -1932977561, -1670918566, 1455036648, 2128344329, -594088068, -1654168033); + TestUtils.AreEqual(a0 * b0, r0); + + int3x3 a1 = int3x3(1570087048, 629447153, 619383734, 2055121568, 700402816, 263414349, 187830569, 2048056680, 546694675); + int3x3 b1 = int3x3(1524322467, 1605207974, 428419155, 1460605791, 1968043860, 771161742, 2037340417, 322304267, 651448359); + int3x3 r1 = int3x3(2093463192, -1207506618, -1133560830, 990589280, -938173952, -1341723466, 1156600361, 649177976, 678952165); + TestUtils.AreEqual(a1 * b1, r1); + + int3x3 a2 = int3x3(853585367, 933370718, 990212476, 1915885905, 1984212358, 368146234, 899438811, 1765718681, 409003054); + int3x3 b2 = int3x3(1608326767, 1427155898, 1092185338, 665119139, 223634707, 694718952, 675813713, 999254223, 1326064110); + int3x3 r2 = int3x3(1063621177, -1611682740, -2142428392, -573253741, -1652113678, 1626072720, 1891467339, 335415735, 1128927428); + TestUtils.AreEqual(a2 * b2, r2); + + int3x3 a3 = int3x3(2069758852, 140280263, 442491280, 1924530939, 1372320666, 200879709, 857149632, 962693646, 988118613); + int3x3 b3 = int3x3(788102700, 1927999142, 1706356773, 747671596, 106127297, 1695925670, 1788874462, 534570710, 1110638325); + int3x3 r3 = int3x3(-1656253776, -1433851638, 479369680, -366628060, -250163942, 48406862, -1997863296, -275121228, -1483457191); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void int3x3_operator_mul_wide_scalar() + { + int3x3 a0 = int3x3(1762033447, 465343930, 1570757881, 1326409563, 1824319147, 1356578909, 72749215, 154616909, 975743632); + int b0 = (1476837906); + int3x3 r0 = int3x3(-1313177922, 1326807828, -2138555518, -276153754, -65548794, -1318584182, -1839224530, -1720506518, 1736252960); + TestUtils.AreEqual(a0 * b0, r0); + + int3x3 a1 = int3x3(573770299, 971327747, 1818877398, 1324050764, 660611671, 1279757657, 391009467, 1186856590, 890343818); + int b1 = (1958912969); + int3x3 r1 = int3x3(-699623085, 583613531, -1685426426, 377032876, -1840882865, -459299359, 506042323, -1008908418, -1391844518); + TestUtils.AreEqual(a1 * b1, r1); + + int3x3 a2 = int3x3(800117742, 1338014500, 1688964615, 1439447294, 387721300, 1192501703, 1613845584, 76318055, 124378112); + int b2 = (606927173); + int3x3 r2 = int3x3(-1112302298, -254331724, 1687557859, 1193437814, 1547735716, -2021938781, -1509062256, 1364534211, -964408320); + TestUtils.AreEqual(a2 * b2, r2); + + int3x3 a3 = int3x3(970518733, 1978842602, 1451974062, 987919119, 1659987051, 1325430351, 948943118, 1743760648, 227492421); + int b3 = (1370700538); + int3x3 r3 = int3x3(-524248526, 45251204, -1510152212, 28492454, 1649233534, -109154522, -1626217556, 1373293008, -567715486); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void int3x3_operator_mul_scalar_wide() + { + int a0 = (99541948); + int3x3 b0 = int3x3(1764461774, 657072478, 1459784358, 1610646683, 1632058826, 868441654, 1408757883, 335917146, 2105124483); + int3x3 r0 = int3x3(-950398648, -102049016, 1260585960, 1158730452, -1606056, -466153048, 2108402516, 1966690328, 1623617844); + TestUtils.AreEqual(a0 * b0, r0); + + int a1 = (1178393968); + int3x3 b1 = int3x3(1963904348, 1409533767, 243286231, 1336308795, 517963367, 1733623488, 459880225, 994616533, 1420531535); + int3x3 r1 = int3x3(1196573760, 592673296, 209320208, -352466736, 1007302672, -904186880, -1000629392, -2046820816, 1026909584); + TestUtils.AreEqual(a1 * b1, r1); + + int a2 = (1821413700); + int3x3 b2 = int3x3(677771573, 2132626845, 1158827713, 640102997, 944551639, 1323243330, 1186460236, 657101857, 1275563580); + int3x3 r2 = int3x3(118306580, 1091472052, 1879587908, -2118417516, -186623972, 1015975816, 1406756912, -1010431548, -883833872); + TestUtils.AreEqual(a2 * b2, r2); + + int a3 = (1031291523); + int3x3 b3 = int3x3(1008470115, 1155301041, 1046199281, 2138825098, 1273008873, 1788343477, 1994364082, 597340263, 2022856151); + int3x3 r3 = int3x3(-2115383127, -1518963053, 358436435, -952500834, 469974843, -1901010273, -1775305962, 1424675509, -456434939); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void int3x3_operator_div_wide_wide() + { + int3x3 a0 = int3x3(1590198532, 507812502, 126627032, 1058247011, 427387861, 290676154, 1829594484, 1127868739, 499016351); + int3x3 b0 = int3x3(1434703236, 911965201, 390415521, 128746927, 525835375, 816946613, 878264647, 146789678, 2089524057); + int3x3 r0 = int3x3(1, 0, 0, 8, 0, 0, 2, 7, 0); + TestUtils.AreEqual(a0 / b0, r0); + + int3x3 a1 = int3x3(1341209632, 134906097, 785470242, 788249865, 1099825433, 1552968283, 1822367139, 1021812060, 1937073018); + int3x3 b1 = int3x3(254213018, 1916850021, 1737806518, 1906634983, 437754923, 825037958, 902508708, 896853614, 49452028); + int3x3 r1 = int3x3(5, 0, 0, 0, 2, 1, 2, 1, 39); + TestUtils.AreEqual(a1 / b1, r1); + + int3x3 a2 = int3x3(645757349, 1097576782, 1246027674, 1152153253, 1900577195, 172149343, 1735128704, 816492592, 2012272185); + int3x3 b2 = int3x3(1921327824, 787000669, 1032149621, 858558868, 1422112429, 837098844, 616122946, 2035322800, 1324534444); + int3x3 r2 = int3x3(0, 1, 1, 1, 1, 0, 2, 0, 1); + TestUtils.AreEqual(a2 / b2, r2); + + int3x3 a3 = int3x3(632330092, 649232994, 123715336, 1438073735, 723262291, 850951883, 1942618200, 1088675276, 1648515976); + int3x3 b3 = int3x3(1820832158, 917489631, 367475696, 620492088, 1749833550, 1535651093, 932740870, 1078416711, 725172174); + int3x3 r3 = int3x3(0, 0, 0, 2, 0, 0, 2, 1, 2); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void int3x3_operator_div_wide_scalar() + { + int3x3 a0 = int3x3(560951562, 1218680769, 375341724, 1613542090, 1919409166, 1397425408, 1349573078, 524526253, 341995568); + int b0 = (947861580); + int3x3 r0 = int3x3(0, 1, 0, 1, 2, 1, 1, 0, 0); + TestUtils.AreEqual(a0 / b0, r0); + + int3x3 a1 = int3x3(495895326, 1676971657, 2131487088, 2105094094, 1017891310, 542666029, 1646044372, 1447236569, 107215658); + int b1 = (1515313790); + int3x3 r1 = int3x3(0, 1, 1, 1, 0, 0, 1, 0, 0); + TestUtils.AreEqual(a1 / b1, r1); + + int3x3 a2 = int3x3(19616726, 707389627, 1249475421, 1486968988, 1738891885, 1919705924, 1244966864, 1200843642, 206442634); + int b2 = (896899915); + int3x3 r2 = int3x3(0, 0, 1, 1, 1, 2, 1, 1, 0); + TestUtils.AreEqual(a2 / b2, r2); + + int3x3 a3 = int3x3(1508567412, 1117255783, 929925156, 1725332114, 1949103348, 1383839785, 2136282541, 159847918, 1515555001); + int b3 = (1825701056); + int3x3 r3 = int3x3(0, 0, 0, 0, 1, 0, 1, 0, 0); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void int3x3_operator_div_scalar_wide() + { + int a0 = (1161272038); + int3x3 b0 = int3x3(187325733, 1594107378, 2016183849, 1589343709, 388768753, 1417077283, 1773486938, 1154044032, 81831373); + int3x3 r0 = int3x3(6, 0, 0, 0, 2, 0, 0, 1, 14); + TestUtils.AreEqual(a0 / b0, r0); + + int a1 = (1476877645); + int3x3 b1 = int3x3(653688843, 45756703, 631027637, 396671391, 784365696, 1250594097, 1818363859, 1653451772, 270557729); + int3x3 r1 = int3x3(2, 32, 2, 3, 1, 1, 0, 0, 5); + TestUtils.AreEqual(a1 / b1, r1); + + int a2 = (48974453); + int3x3 b2 = int3x3(1796936382, 1427856423, 981056957, 1955700573, 705450043, 1054404890, 351914083, 131970646, 1320586926); + int3x3 r2 = int3x3(0, 0, 0, 0, 0, 0, 0, 0, 0); + TestUtils.AreEqual(a2 / b2, r2); + + int a3 = (366944102); + int3x3 b3 = int3x3(1575786200, 257204865, 1582754309, 2114509003, 1266146708, 45105265, 2092444751, 407744534, 126616016); + int3x3 r3 = int3x3(0, 1, 0, 0, 0, 8, 0, 0, 2); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void int3x3_operator_mod_wide_wide() + { + int3x3 a0 = int3x3(146150818, 1846543305, 1071447756, 308965362, 659881575, 1002365460, 861198439, 1510617532, 778525078); + int3x3 b0 = int3x3(983050390, 771341152, 942375212, 367361754, 749500619, 750718852, 2095151755, 88438806, 769227442); + int3x3 r0 = int3x3(146150818, 303861001, 129072544, 308965362, 659881575, 251646608, 861198439, 7157830, 9297636); + TestUtils.AreEqual(a0 % b0, r0); + + int3x3 a1 = int3x3(1458458044, 101987897, 1249565173, 938026607, 1692541775, 1518877124, 1806965510, 1325139851, 994457255); + int3x3 b1 = int3x3(647214624, 1026513788, 1544950956, 160166322, 1099108075, 1158422232, 1798905209, 164686701, 327889784); + int3x3 r1 = int3x3(164028796, 101987897, 1249565173, 137194997, 593433700, 360454892, 8060301, 7646243, 10787903); + TestUtils.AreEqual(a1 % b1, r1); + + int3x3 a2 = int3x3(1372400564, 1770508529, 100255877, 452674793, 1545968777, 629019189, 1402964707, 2138294579, 1641714420); + int3x3 b2 = int3x3(1082162785, 1213537518, 608481038, 329133821, 1824387961, 1223426748, 798137669, 79717779, 1233582258); + int3x3 r2 = int3x3(290237779, 556971011, 100255877, 123540972, 1545968777, 629019189, 604827038, 65632325, 408132162); + TestUtils.AreEqual(a2 % b2, r2); + + int3x3 a3 = int3x3(1782022072, 1880968864, 1980798192, 1397317084, 995968277, 1090018756, 1573062648, 1100694500, 863521889); + int3x3 b3 = int3x3(1267120677, 301592349, 911281434, 1357340934, 1648942990, 1350943898, 696511738, 1182727748, 1843845940); + int3x3 r3 = int3x3(514901395, 71414770, 158235324, 39976150, 995968277, 1090018756, 180039172, 1100694500, 863521889); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void int3x3_operator_mod_wide_scalar() + { + int3x3 a0 = int3x3(164800505, 1062177828, 1898749675, 1701653318, 820393245, 19002208, 128329633, 1464010899, 896587769); + int b0 = (883951171); + int3x3 r0 = int3x3(164800505, 178226657, 130847333, 817702147, 820393245, 19002208, 128329633, 580059728, 12636598); + TestUtils.AreEqual(a0 % b0, r0); + + int3x3 a1 = int3x3(405208598, 959236935, 712321026, 172564850, 1540068445, 1085897743, 1607489717, 165478511, 647846716); + int b1 = (1982762194); + int3x3 r1 = int3x3(405208598, 959236935, 712321026, 172564850, 1540068445, 1085897743, 1607489717, 165478511, 647846716); + TestUtils.AreEqual(a1 % b1, r1); + + int3x3 a2 = int3x3(915707999, 928191283, 1084934806, 488509689, 2087820912, 377501313, 1778384846, 1216011754, 812183417); + int b2 = (1602830401); + int3x3 r2 = int3x3(915707999, 928191283, 1084934806, 488509689, 484990511, 377501313, 175554445, 1216011754, 812183417); + TestUtils.AreEqual(a2 % b2, r2); + + int3x3 a3 = int3x3(1153802502, 1924710742, 665297470, 1568090825, 2050982942, 435886407, 453990946, 1731665372, 586777590); + int b3 = (1642671870); + int3x3 r3 = int3x3(1153802502, 282038872, 665297470, 1568090825, 408311072, 435886407, 453990946, 88993502, 586777590); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void int3x3_operator_mod_scalar_wide() + { + int a0 = (242383789); + int3x3 b0 = int3x3(740000543, 1556450291, 1104736385, 437976569, 1911837205, 1507212038, 1906405167, 247693265, 293460573); + int3x3 r0 = int3x3(242383789, 242383789, 242383789, 242383789, 242383789, 242383789, 242383789, 242383789, 242383789); + TestUtils.AreEqual(a0 % b0, r0); + + int a1 = (1495295166); + int3x3 b1 = int3x3(873323603, 530681233, 1298102643, 2057984657, 1000742091, 1461372131, 1859742342, 797184687, 821888842); + int3x3 r1 = int3x3(621971563, 433932700, 197192523, 1495295166, 494553075, 33923035, 1495295166, 698110479, 673406324); + TestUtils.AreEqual(a1 % b1, r1); + + int a2 = (1083192997); + int3x3 b2 = int3x3(840114986, 1894865954, 615159964, 1485575122, 2028738, 2122220318, 164578061, 730088119, 1444946139); + int3x3 r2 = int3x3(243078011, 1083192997, 468033033, 1083192997, 1875643, 1083192997, 95724631, 353104878, 1083192997); + TestUtils.AreEqual(a2 % b2, r2); + + int a3 = (1305792037); + int3x3 b3 = int3x3(1110829011, 872723581, 166847388, 1477846418, 511428733, 1642227542, 1962310765, 207128894, 1342085447); + int3x3 r3 = int3x3(194963026, 433068456, 137860321, 1305792037, 282934571, 1305792037, 1305792037, 63018673, 1305792037); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void int3x3_operator_plus() + { + int3x3 a0 = int3x3(1643476803, 907898539, 379615839, 1140483021, 1735287433, 1743199272, 1472881565, 339091479, 401565897); + int3x3 r0 = int3x3(1643476803, 907898539, 379615839, 1140483021, 1735287433, 1743199272, 1472881565, 339091479, 401565897); + TestUtils.AreEqual(+a0, r0); + + int3x3 a1 = int3x3(1287765427, 174532915, 1864850812, 1566098441, 1145639744, 1615499926, 2049663954, 1723005749, 409076474); + int3x3 r1 = int3x3(1287765427, 174532915, 1864850812, 1566098441, 1145639744, 1615499926, 2049663954, 1723005749, 409076474); + TestUtils.AreEqual(+a1, r1); + + int3x3 a2 = int3x3(591286416, 1079164488, 1808261782, 1201290141, 82958939, 308695413, 1575280693, 2067379018, 1673126612); + int3x3 r2 = int3x3(591286416, 1079164488, 1808261782, 1201290141, 82958939, 308695413, 1575280693, 2067379018, 1673126612); + TestUtils.AreEqual(+a2, r2); + + int3x3 a3 = int3x3(500666137, 836003812, 336058393, 829347661, 33442669, 381670450, 277507230, 361395485, 1012749225); + int3x3 r3 = int3x3(500666137, 836003812, 336058393, 829347661, 33442669, 381670450, 277507230, 361395485, 1012749225); + TestUtils.AreEqual(+a3, r3); + } + + [TestCompiler] + public static void int3x3_operator_neg() + { + int3x3 a0 = int3x3(1955022112, 662160019, 370300775, 2141283773, 1004505619, 28153593, 33894270, 505708349, 1115028238); + int3x3 r0 = int3x3(-1955022112, -662160019, -370300775, -2141283773, -1004505619, -28153593, -33894270, -505708349, -1115028238); + TestUtils.AreEqual(-a0, r0); + + int3x3 a1 = int3x3(1636274969, 1542206286, 213087293, 243937487, 341522275, 841085242, 574159094, 1687250035, 2057919693); + int3x3 r1 = int3x3(-1636274969, -1542206286, -213087293, -243937487, -341522275, -841085242, -574159094, -1687250035, -2057919693); + TestUtils.AreEqual(-a1, r1); + + int3x3 a2 = int3x3(1175014732, 1212465326, 1190569920, 2047955772, 2120729864, 1440774928, 1485596454, 431666091, 1387601718); + int3x3 r2 = int3x3(-1175014732, -1212465326, -1190569920, -2047955772, -2120729864, -1440774928, -1485596454, -431666091, -1387601718); + TestUtils.AreEqual(-a2, r2); + + int3x3 a3 = int3x3(1745651998, 1119959806, 739132284, 1954173314, 1709857098, 1836511050, 1662806453, 506144868, 650922971); + int3x3 r3 = int3x3(-1745651998, -1119959806, -739132284, -1954173314, -1709857098, -1836511050, -1662806453, -506144868, -650922971); + TestUtils.AreEqual(-a3, r3); + } + + [TestCompiler] + public static void int3x3_operator_prefix_inc() + { + int3x3 a0 = int3x3(864455342, 2035793213, 1275443862, 971919915, 411610189, 446210725, 395072276, 115573442, 913293639); + int3x3 r0 = int3x3(864455343, 2035793214, 1275443863, 971919916, 411610190, 446210726, 395072277, 115573443, 913293640); + TestUtils.AreEqual(++a0, r0); + + int3x3 a1 = int3x3(432884105, 1385544935, 1835605516, 831396561, 388229350, 696475402, 1786514683, 993189311, 752093909); + int3x3 r1 = int3x3(432884106, 1385544936, 1835605517, 831396562, 388229351, 696475403, 1786514684, 993189312, 752093910); + TestUtils.AreEqual(++a1, r1); + + int3x3 a2 = int3x3(1622410417, 241906003, 1705625817, 609525897, 172599489, 504806865, 519296647, 281942776, 1541894135); + int3x3 r2 = int3x3(1622410418, 241906004, 1705625818, 609525898, 172599490, 504806866, 519296648, 281942777, 1541894136); + TestUtils.AreEqual(++a2, r2); + + int3x3 a3 = int3x3(924683935, 1349062584, 1120518661, 65514038, 1495168208, 1321109497, 1366348660, 1777734111, 1414867743); + int3x3 r3 = int3x3(924683936, 1349062585, 1120518662, 65514039, 1495168209, 1321109498, 1366348661, 1777734112, 1414867744); + TestUtils.AreEqual(++a3, r3); + } + + [TestCompiler] + public static void int3x3_operator_postfix_inc() + { + int3x3 a0 = int3x3(1751003569, 2063707595, 1500486291, 969189211, 1007848192, 2028651936, 1643023524, 1190630527, 1396179607); + int3x3 r0 = int3x3(1751003569, 2063707595, 1500486291, 969189211, 1007848192, 2028651936, 1643023524, 1190630527, 1396179607); + TestUtils.AreEqual(a0++, r0); + + int3x3 a1 = int3x3(708474528, 1524860667, 1408994706, 375284401, 1580130369, 1676086778, 717006530, 506142468, 732199129); + int3x3 r1 = int3x3(708474528, 1524860667, 1408994706, 375284401, 1580130369, 1676086778, 717006530, 506142468, 732199129); + TestUtils.AreEqual(a1++, r1); + + int3x3 a2 = int3x3(2026873940, 1513142653, 420613464, 1219979307, 586574160, 357567451, 1468020171, 1949784665, 1127356901); + int3x3 r2 = int3x3(2026873940, 1513142653, 420613464, 1219979307, 586574160, 357567451, 1468020171, 1949784665, 1127356901); + TestUtils.AreEqual(a2++, r2); + + int3x3 a3 = int3x3(101238629, 423320704, 827539403, 1919960927, 840371710, 2010345998, 1047836590, 586887730, 1209169651); + int3x3 r3 = int3x3(101238629, 423320704, 827539403, 1919960927, 840371710, 2010345998, 1047836590, 586887730, 1209169651); + TestUtils.AreEqual(a3++, r3); + } + + [TestCompiler] + public static void int3x3_operator_prefix_dec() + { + int3x3 a0 = int3x3(200904609, 871077500, 968578728, 638967721, 1995396216, 435367037, 1782514098, 1589827826, 1434377580); + int3x3 r0 = int3x3(200904608, 871077499, 968578727, 638967720, 1995396215, 435367036, 1782514097, 1589827825, 1434377579); + TestUtils.AreEqual(--a0, r0); + + int3x3 a1 = int3x3(596759698, 1758478358, 1914114460, 71237375, 389120307, 1022184392, 1310293956, 356565557, 18299409); + int3x3 r1 = int3x3(596759697, 1758478357, 1914114459, 71237374, 389120306, 1022184391, 1310293955, 356565556, 18299408); + TestUtils.AreEqual(--a1, r1); + + int3x3 a2 = int3x3(906734601, 1383897383, 1040798388, 1469596990, 1719228297, 220897829, 1454322707, 678025545, 14227726); + int3x3 r2 = int3x3(906734600, 1383897382, 1040798387, 1469596989, 1719228296, 220897828, 1454322706, 678025544, 14227725); + TestUtils.AreEqual(--a2, r2); + + int3x3 a3 = int3x3(293093918, 1249415499, 1009503100, 157482354, 965385343, 1797304434, 1083672612, 929765380, 2083512379); + int3x3 r3 = int3x3(293093917, 1249415498, 1009503099, 157482353, 965385342, 1797304433, 1083672611, 929765379, 2083512378); + TestUtils.AreEqual(--a3, r3); + } + + [TestCompiler] + public static void int3x3_operator_postfix_dec() + { + int3x3 a0 = int3x3(283970262, 1109329936, 1073216143, 649439137, 1932646215, 1174104498, 484207852, 524156737, 691209285); + int3x3 r0 = int3x3(283970262, 1109329936, 1073216143, 649439137, 1932646215, 1174104498, 484207852, 524156737, 691209285); + TestUtils.AreEqual(a0--, r0); + + int3x3 a1 = int3x3(2017728859, 377162390, 526366486, 1504625034, 590919177, 60677868, 1867810045, 2095777993, 670715645); + int3x3 r1 = int3x3(2017728859, 377162390, 526366486, 1504625034, 590919177, 60677868, 1867810045, 2095777993, 670715645); + TestUtils.AreEqual(a1--, r1); + + int3x3 a2 = int3x3(324944916, 1659736954, 1316734088, 1030072405, 1751972064, 1868889881, 1726583208, 1931943579, 175622377); + int3x3 r2 = int3x3(324944916, 1659736954, 1316734088, 1030072405, 1751972064, 1868889881, 1726583208, 1931943579, 175622377); + TestUtils.AreEqual(a2--, r2); + + int3x3 a3 = int3x3(181847458, 530897466, 635466911, 416440036, 1447690298, 1444496274, 296146626, 1209855130, 2016700604); + int3x3 r3 = int3x3(181847458, 530897466, 635466911, 416440036, 1447690298, 1444496274, 296146626, 1209855130, 2016700604); + TestUtils.AreEqual(a3--, r3); + } + + [TestCompiler] + public static void int3x3_operator_bitwise_and_wide_wide() + { + int3x3 a0 = int3x3(779935043, 1097962163, 1939593304, 800599247, 952140918, 782792558, 1608557706, 396446406, 2039894114); + int3x3 b0 = int3x3(307705143, 1710882162, 866836769, 532490608, 679371720, 1794035877, 1439832202, 519529812, 23633139); + int3x3 r0 = int3x3(39064835, 1097961522, 864731136, 263727168, 675283008, 715673636, 1438646410, 379666500, 16781410); + TestUtils.AreEqual(a0 & b0, r0); + + int3x3 a1 = int3x3(1286974642, 442394124, 1759739564, 233435438, 665207770, 1942050241, 1022352952, 60340400, 329119345); + int3x3 b1 = int3x3(1209152681, 646737179, 1255867027, 1900854122, 413173763, 1409138251, 2087190272, 563439483, 354579077); + int3x3 r1 = int3x3(1209017504, 34366472, 1220739712, 21541162, 10485762, 1405162561, 1013440000, 26222640, 285241857); + TestUtils.AreEqual(a1 & b1, r1); + + int3x3 a2 = int3x3(406517382, 1126764634, 343425836, 1957552749, 1624478957, 341972372, 181537307, 130347414, 1240828622); + int3x3 b2 = int3x3(642224854, 1650432515, 755290290, 902865191, 661389406, 2134212586, 1855189321, 185194029, 810374380); + int3x3 r2 = int3x3(168582, 1107890178, 67125280, 880844837, 541065292, 337646976, 177340425, 50384900, 4522188); + TestUtils.AreEqual(a2 & b2, r2); + + int3x3 a3 = int3x3(526120460, 695449226, 1477446724, 201628999, 737924014, 1804502415, 1733695477, 1110712857, 113012430); + int3x3 b3 = int3x3(133197864, 1989578783, 38739182, 387425484, 1690486314, 843085933, 1045118223, 41867329, 1397669260); + int3x3 r3 = int3x3(122712072, 538087434, 3140, 67404868, 549634602, 570425357, 641864965, 36962305, 34352268); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void int3x3_operator_bitwise_and_wide_scalar() + { + int3x3 a0 = int3x3(443615469, 490057985, 2042441263, 1524760558, 1405175110, 510212004, 1941875181, 1236735839, 1365509729); + int b0 = (93423598); + int3x3 r0 = int3x3(1114348, 85033216, 26281518, 8488942, 25232710, 67176356, 26247660, 26281806, 16778848); + TestUtils.AreEqual(a0 & b0, r0); + + int3x3 a1 = int3x3(428270198, 650270920, 1249238550, 814629680, 1862276471, 143502472, 861733033, 1408932942, 957693145); + int b1 = (607982857); + int3x3 r1 = int3x3(262144, 603983880, 3478528, 537657600, 603985153, 853000, 538771465, 3675144, 538252297); + TestUtils.AreEqual(a1 & b1, r1); + + int3x3 a2 = int3x3(1567715668, 322053683, 1599352836, 208656708, 1272226025, 462670926, 1817145060, 1466722981, 1817277774); + int b2 = (1102952410); + int3x3 r2 = int3x3(1093742928, 19932690, 1091842048, 2986304, 1100259528, 26313802, 1074603712, 1093411456, 1074869578); + TestUtils.AreEqual(a2 & b2, r2); + + int3x3 a3 = int3x3(818900583, 1630437952, 546018772, 872875431, 1143080525, 708719245, 1764446048, 1527981061, 398141788); + int b3 = (772681077); + int3x3 r3 = int3x3(537799781, 537788480, 537527636, 604374309, 67241029, 705568773, 671747424, 167912453, 101329236); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void int3x3_operator_bitwise_and_scalar_wide() + { + int a0 = (1144543590); + int3x3 b0 = int3x3(420346723, 562416448, 1393127318, 1560699552, 851218057, 703880958, 1159378889, 2031211279, 1089518981); + int3x3 r0 = int3x3(547170, 18752, 1074284806, 1140867104, 3672064, 3168358, 1142427968, 1074811142, 1076893956); + TestUtils.AreEqual(a0 & b0, r0); + + int a1 = (270607307); + int3x3 b1 = int3x3(1349288930, 520199596, 1763483957, 1248975349, 236938635, 185023291, 1085233038, 1845693112, 946052961); + int3x3 r1 = int3x3(270533570, 268501384, 8449, 2163137, 74123, 74507, 2163594, 66184, 270598977); + TestUtils.AreEqual(a1 & b1, r1); + + int a2 = (1436238522); + int3x3 b2 = int3x3(2042776519, 56356886, 1770159840, 1872339579, 1439201366, 1233066417, 1214109404, 2255485, 1814885263); + int3x3 r2 = int3x3(1367491202, 18563090, 1099055776, 1167655482, 1434992658, 1092288688, 1075397272, 148024, 1141392010); + TestUtils.AreEqual(a2 & b2, r2); + + int a3 = (1711986588); + int3x3 b3 = int3x3(1286898282, 915476451, 1870138851, 372814411, 1623486506, 211665304, 1668985777, 348112007, 1808619374); + int3x3 r3 = int3x3(1140883976, 637536128, 1711801728, 101224968, 1610633224, 67682712, 1644860304, 67814532, 1644713740); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void int3x3_operator_bitwise_or_wide_wide() + { + int3x3 a0 = int3x3(1731159103, 659068416, 382702471, 1821032196, 1565773438, 1004000514, 948501377, 600951835, 669346222); + int3x3 b0 = int3x3(1583847161, 692672727, 1161585489, 1756207130, 1321374429, 1287357212, 2075767170, 1273513430, 1610830169); + int3x3 r0 = int3x3(2138044159, 793370327, 1476391895, 1823457054, 1607720703, 2147473182, 2075786115, 1811533279, 1743223295); + TestUtils.AreEqual(a0 | b0, r0); + + int3x3 a1 = int3x3(396691477, 2108560248, 2117522137, 330307355, 818676817, 1774459567, 1117506257, 1254511182, 1017865993); + int3x3 b1 = int3x3(1316929125, 511625048, 573925879, 1502255628, 1841676448, 1682928938, 1115131952, 1541423910, 1416096228); + int3x3 r1 = int3x3(1610595957, 2147407736, 2117598207, 1538957087, 2110637297, 1842315183, 1124063985, 1541821294, 2096099309); + TestUtils.AreEqual(a1 | b1, r1); + + int3x3 a2 = int3x3(1883021644, 1140203470, 759288967, 2122744307, 335621148, 715028074, 543305337, 662107399, 1934997335); + int3x3 b2 = int3x3(188606371, 1041599540, 219545389, 560097663, 1087543661, 936383841, 108816721, 1694053551, 452638547); + int3x3 r2 = int3x3(2067654639, 2146934782, 760610735, 2145839615, 1423162749, 1071544171, 645820281, 1744827823, 2080356183); + TestUtils.AreEqual(a2 | b2, r2); + + int3x3 a3 = int3x3(436754869, 1613808671, 362365372, 342908672, 2129231210, 203868172, 32846030, 1057901177, 1537975433); + int3x3 b3 = int3x3(1219534055, 85142537, 1027930490, 2126839395, 2030328147, 2036352209, 1554561114, 1332339254, 480739851); + int3x3 r3 = int3x3(1522064887, 1697901599, 1037957630, 2129985379, 2146270587, 2103889117, 1576909022, 2138040959, 1605346955); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void int3x3_operator_bitwise_or_wide_scalar() + { + int3x3 a0 = int3x3(961259683, 471103264, 1733389229, 1591585258, 386953869, 1148351449, 1048929715, 1814263250, 860336789); + int b0 = (1666102508); + int3x3 r0 = int3x3(2068823279, 2136930284, 1734344685, 2145369582, 2002712301, 1736374269, 2144335359, 1869608446, 1934604029); + TestUtils.AreEqual(a0 | b0, r0); + + int3x3 a1 = int3x3(1637162093, 774029856, 879300408, 1179087439, 797240690, 1977614655, 46921989, 1980838747, 284225881); + int b1 = (1227888278); + int3x3 r1 = int3x3(1773477631, 1865602742, 2105089982, 1333229279, 1874132982, 2112886719, 1274806167, 2133931999, 1508964319); + TestUtils.AreEqual(a1 | b1, r1); + + int3x3 a2 = int3x3(64304104, 1393862490, 1890090886, 521303722, 2021379070, 2055963359, 1511253082, 1775629833, 1142751163); + int b2 = (313591807); + int3x3 r2 = int3x3(334837759, 1404413951, 1924759551, 531855359, 2063323135, 2059110399, 1521739775, 2079717375, 1455292415); + TestUtils.AreEqual(a2 | b2, r2); + + int3x3 a3 = int3x3(1767274359, 1501294791, 485944015, 539526284, 310877895, 1815369493, 529427586, 358352200, 1353013374); + int b3 = (1421981808); + int3x3 r3 = int3x3(2111307639, 1576794359, 1559755519, 1961475324, 1455931127, 2096496501, 1607466226, 1440595320, 1424357502); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void int3x3_operator_bitwise_or_scalar_wide() + { + int a0 = (1213433101); + int3x3 b0 = int3x3(1212928242, 1614462616, 936937728, 764766995, 306352095, 574719481, 1283571271, 2109131012, 979469710); + int3x3 r0 = int3x3(1213978111, 1752940445, 2145094925, 1842867999, 1515425759, 1783858685, 1288945487, 2113391885, 2054391183); + TestUtils.AreEqual(a0 | b0, r0); + + int a1 = (1348323481); + int3x3 b1 = int3x3(1407542578, 697517649, 1059093741, 627815046, 418822515, 83214352, 424663473, 447949225, 527022375); + int3x3 r1 = int3x3(1409150395, 2044710617, 2138963197, 1971321503, 1493170683, 1425918105, 1499453881, 1526720953, 1602091455); + TestUtils.AreEqual(a1 | b1, r1); + + int a2 = (1947148461); + int3x3 b2 = int3x3(305251437, 1254601325, 1752329425, 1592402684, 1587055329, 1088734150, 298563808, 2052547661, 582843231); + int3x3 r2 = int3x3(1983898861, 2127540973, 2088725757, 2129601277, 2124393197, 1961878511, 1976547565, 2120180973, 1992260607); + TestUtils.AreEqual(a2 | b2, r2); + + int a3 = (656983670); + int3x3 b3 = int3x3(1944993640, 1081208038, 829763560, 990961386, 547309556, 1307122961, 263229121, 1518227598, 1098359242); + int3x3 r3 = int3x3(2012151678, 1736044278, 931000318, 1060691710, 666879990, 1877598071, 800640759, 2139019006, 1736435710); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void int3x3_operator_bitwise_xor_wide_wide() + { + int3x3 a0 = int3x3(1556324760, 207002929, 1843444873, 1632079131, 1460334334, 1607815585, 220623650, 38668553, 47193340); + int3x3 b0 = int3x3(1054997548, 1523759632, 251164872, 110472397, 384031112, 1109163205, 535118981, 179106262, 1523031711); + int3x3 r0 = int3x3(1646419380, 1451501345, 1662567489, 1741824470, 1105803126, 499723620, 314783655, 149092575, 1477935715); + TestUtils.AreEqual(a0 ^ b0, r0); + + int3x3 a1 = int3x3(643663548, 1371932564, 94957188, 700973621, 370621508, 2087573076, 351476570, 1340815927, 681577472); + int3x3 b1 = int3x3(1713313372, 1294118730, 520360641, 1040688781, 1020757245, 1143954843, 1281933464, 175288469, 326874157); + int3x3 r1 = int3x3(1078104288, 484747486, 447544389, 399484088, 717273273, 943885263, 1486609346, 1167690402, 1004255277); + TestUtils.AreEqual(a1 ^ b1, r1); + + int3x3 a2 = int3x3(314138777, 446857644, 1368661599, 1672499683, 1259759761, 2049102405, 1972524935, 91962333, 1960780785); + int3x3 b2 = int3x3(1192052687, 1087083643, 1900865484, 1521193463, 569695524, 1622101483, 1340735463, 546583617, 1034420616); + int3x3 r2 = int3x3(1437869910, 1516836311, 551090579, 958119956, 1793242549, 445489070, 981182560, 636424092, 1232544377); + TestUtils.AreEqual(a2 ^ b2, r2); + + int3x3 a3 = int3x3(1303778459, 960040360, 822786011, 2028027011, 170382968, 32554542, 1915830925, 2001025156, 2012451132); + int3x3 b3 = int3x3(262206030, 1834125935, 802756092, 611321886, 316379491, 325882121, 45335181, 1859278043, 1002624300); + int3x3 r3 = int3x3(1108797141, 1416333255, 517186087, 1553020061, 419186459, 312225575, 1887600640, 429354079, 1278297104); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void int3x3_operator_bitwise_xor_wide_scalar() + { + int3x3 a0 = int3x3(2124666952, 177397845, 574879617, 1937385541, 1136545648, 213863690, 535061373, 289301586, 1305234431); + int b0 = (493665894); + int3x3 r0 = int3x3(1674536494, 402546227, 1060063719, 1846973987, 1590882582, 299103084, 42523931, 206756404, 1352725913); + TestUtils.AreEqual(a0 ^ b0, r0); + + int3x3 a1 = int3x3(353786540, 1267729267, 125659640, 1315625690, 1730088797, 116862046, 375757978, 491079274, 191750702); + int b1 = (1308626970); + int3x3 r1 = int3x3(1528187574, 93328233, 1232959970, 6998720, 689905479, 1224162372, 1483050112, 1397053040, 1164833332); + TestUtils.AreEqual(a1 ^ b1, r1); + + int3x3 a2 = int3x3(187129429, 549951551, 653124416, 788984, 1479174924, 1680011736, 447453839, 890841598, 293394300); + int b2 = (967051293); + int3x3 r2 = int3x3(847468104, 425955362, 524938077, 967311845, 1636721425, 1569126853, 588223122, 213721571, 685301601); + TestUtils.AreEqual(a2 ^ b2, r2); + + int3x3 a3 = int3x3(527727631, 1382138962, 1206186973, 1059509471, 744733291, 64097148, 1814786305, 716239, 476052372); + int b3 = (529042816); + int3x3 r3 = int3x3(16576911, 1307134418, 1483505245, 548297055, 871053291, 475694844, 1940126849, 528638031, 64452116); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void int3x3_operator_bitwise_xor_scalar_wide() + { + int a0 = (1288453276); + int3x3 b0 = int3x3(1077599928, 884741329, 212164516, 1585020328, 152985454, 1775851275, 1416249064, 1309317737, 1773918217); + int3x3 r0 = int3x3(217506340, 2020616269, 1080648504, 313868596, 1171416050, 622160791, 413532788, 46573301, 628614293); + TestUtils.AreEqual(a0 ^ b0, r0); + + int a1 = (1509843030); + int3x3 b1 = int3x3(1206045972, 1154916424, 1947871003, 1774252400, 1946113778, 1079717492, 290620937, 1382343363, 939045099); + int3x3 r1 = int3x3(505195842, 489209886, 769935181, 809406758, 704722596, 430263842, 1219290719, 194675349, 1845940413); + TestUtils.AreEqual(a1 ^ b1, r1); + + int a2 = (1309568053); + int3x3 b2 = int3x3(221134131, 885841718, 612068188, 194068085, 1396957881, 573581481, 1813817520, 86594349, 2006985393); + int3x3 r2 = int3x3(1126191366, 2059580163, 1786054505, 1168069184, 491622028, 1816020124, 571655301, 1260863256, 967722628); + TestUtils.AreEqual(a2 ^ b2, r2); + + int a3 = (1431761813); + int3x3 b3 = int3x3(905646837, 1522414781, 192882943, 714832744, 374210759, 215701593, 1573378082, 779254615, 711527976); + int3x3 r3 = int3x3(1622008160, 266913576, 1579801450, 2144176381, 1125708626, 1502456780, 143731639, 2065991874, 2134900157); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void int3x3_operator_left_shift() + { + int3x3 a0 = int3x3(197771193, 622182602, 1283988958, 1327917304, 473415985, 432425717, 870301196, 2058433484, 1200694230); + int b0 = (1321149625); + int3x3 r0 = int3x3(1912602624, -1811939328, -1140850688, -268435456, 1644167168, -369098752, 402653184, -1744830464, -1409286144); + TestUtils.AreEqual(a0 << b0, r0); + + int3x3 a1 = int3x3(1531607705, 1008296534, 1447702302, 1079614371, 35667343, 1664454606, 2045594989, 2077023268, 592678686); + int b1 = (1360008038); + int3x3 r1 = int3x3(-761354688, 106468736, -1836333184, 375843008, -2012257344, -849087616, 2069060416, -214497024, -723269760); + TestUtils.AreEqual(a1 << b1, r1); + + int3x3 a2 = int3x3(297755411, 1161625759, 37265945, 997793693, 1521705181, 263886278, 221147365, 2084190583, 230910816); + int b2 = (1722762487); + int3x3 r2 = int3x3(-1988100096, 1333788672, 209715200, -830472192, 1853882368, -486539264, 1920991232, -1149239296, -1342177280); + TestUtils.AreEqual(a2 << b2, r2); + + int3x3 a3 = int3x3(71403448, 1176038816, 1382694875, 1824729613, 1535276688, 1581610518, 407677878, 1208958192, 740058147); + int b3 = (481375728); + int3x3 r3 = int3x3(-2017984512, -308281344, 1071316992, 705495040, 1989148672, 1981153280, -1414135808, 1022361600, 1680015360); + TestUtils.AreEqual(a3 << b3, r3); + } + + [TestCompiler] + public static void int3x3_operator_right_shift() + { + int3x3 a0 = int3x3(548167301, 1161338299, 1617625829, 1860731847, 713958715, 196552656, 770466193, 1265099998, 572763124); + int b0 = (1266801540); + int3x3 r0 = int3x3(34260456, 72583643, 101101614, 116295740, 44622419, 12284541, 48154137, 79068749, 35797695); + TestUtils.AreEqual(a0 >> b0, r0); + + int3x3 a1 = int3x3(506619530, 2031319045, 701927980, 917785020, 569504877, 185593382, 1102123711, 334005460, 1624751550); + int b1 = (426807581); + int3x3 r1 = int3x3(0, 3, 1, 1, 1, 0, 2, 0, 3); + TestUtils.AreEqual(a1 >> b1, r1); + + int3x3 a2 = int3x3(280138733, 1840564178, 736389149, 1279158873, 408822762, 763607760, 348013684, 1568185874, 774126687); + int b2 = (1598620011); + int3x3 r2 = int3x3(136786, 898712, 359565, 624589, 199620, 372855, 169928, 765715, 377991); + TestUtils.AreEqual(a2 >> b2, r2); + + int3x3 a3 = int3x3(1587054000, 29576474, 1880981389, 352174824, 1164508476, 425441430, 186542511, 1099859381, 1234295294); + int b3 = (600069797); + int3x3 r3 = int3x3(49595437, 924264, 58780668, 11005463, 36390889, 13295044, 5829453, 34370605, 38571727); + TestUtils.AreEqual(a3 >> b3, r3); + } + + [TestCompiler] + public static void int3x3_operator_bitwise_not() + { + int3x3 a0 = int3x3(1403358969, 831360921, 2088190243, 976721016, 878283189, 308994339, 1935567517, 1420884856, 472965491); + int3x3 r0 = int3x3(-1403358970, -831360922, -2088190244, -976721017, -878283190, -308994340, -1935567518, -1420884857, -472965492); + TestUtils.AreEqual(~a0, r0); + + int3x3 a1 = int3x3(771711426, 2061524024, 753208488, 2097179283, 1303022493, 664744603, 1289372466, 1635981125, 1951018596); + int3x3 r1 = int3x3(-771711427, -2061524025, -753208489, -2097179284, -1303022494, -664744604, -1289372467, -1635981126, -1951018597); + TestUtils.AreEqual(~a1, r1); + + int3x3 a2 = int3x3(1545651937, 1284504687, 1342785385, 869629475, 2045854321, 1282546942, 1562433528, 1824824810, 1736570715); + int3x3 r2 = int3x3(-1545651938, -1284504688, -1342785386, -869629476, -2045854322, -1282546943, -1562433529, -1824824811, -1736570716); + TestUtils.AreEqual(~a2, r2); + + int3x3 a3 = int3x3(508906058, 1867418756, 388530274, 695179852, 1766938039, 897923626, 1816190464, 1362906829, 1227946838); + int3x3 r3 = int3x3(-508906059, -1867418757, -388530275, -695179853, -1766938040, -897923627, -1816190465, -1362906830, -1227946839); + TestUtils.AreEqual(~a3, r3); + } + + + } +} diff --git a/package/Tests/Tests/Shared/TestInt3x3.gen.cs.meta b/package/Tests/Tests/Shared/TestInt3x3.gen.cs.meta new file mode 100755 index 000000000..c709a889e --- /dev/null +++ b/package/Tests/Tests/Shared/TestInt3x3.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 1e50b53d0c552004db62a39d61d06297 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/package/Tests/Tests/Shared/TestInt3x4.gen.cs b/package/Tests/Tests/Shared/TestInt3x4.gen.cs new file mode 100755 index 000000000..bb0955ffe --- /dev/null +++ b/package/Tests/Tests/Shared/TestInt3x4.gen.cs @@ -0,0 +1,1233 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using NUnit.Framework; +using static Unity.Mathematics.math; +using Burst.Compiler.IL.Tests; + +namespace Unity.Mathematics.Tests +{ + [TestFixture] + public class TestInt3x4 + { + [TestCompiler] + public static void int3x4_zero() + { + TestUtils.AreEqual(int3x4.zero.c0.x, 0); + TestUtils.AreEqual(int3x4.zero.c0.y, 0); + TestUtils.AreEqual(int3x4.zero.c0.z, 0); + TestUtils.AreEqual(int3x4.zero.c1.x, 0); + TestUtils.AreEqual(int3x4.zero.c1.y, 0); + TestUtils.AreEqual(int3x4.zero.c1.z, 0); + TestUtils.AreEqual(int3x4.zero.c2.x, 0); + TestUtils.AreEqual(int3x4.zero.c2.y, 0); + TestUtils.AreEqual(int3x4.zero.c2.z, 0); + TestUtils.AreEqual(int3x4.zero.c3.x, 0); + TestUtils.AreEqual(int3x4.zero.c3.y, 0); + TestUtils.AreEqual(int3x4.zero.c3.z, 0); + } + + [TestCompiler] + public static void int3x4_operator_equal_wide_wide() + { + int3x4 a0 = int3x4(790229414, 970783976, 1428432738, 1578747135, 1733797753, 2001507228, 1446876437, 1777406370, 1426387268, 1809275021, 1843770816, 1172185222); + int3x4 b0 = int3x4(612337669, 1214209108, 2120643427, 295461214, 1510890331, 1893316566, 921816149, 1834958575, 1482011863, 2062852792, 226398742, 770290735); + bool3x4 r0 = bool3x4(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + int3x4 a1 = int3x4(1469608940, 869874758, 458603090, 581282460, 1948324909, 1129078206, 1638391029, 1135553683, 2079295200, 576232476, 608208235, 11172509); + int3x4 b1 = int3x4(36812057, 543224481, 1565350150, 1909926604, 1619900436, 1849990483, 1261604411, 161864811, 843379453, 1780425458, 215681636, 2123130580); + bool3x4 r1 = bool3x4(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + int3x4 a2 = int3x4(1025529486, 2095601864, 193500113, 1780908384, 1587636094, 1892083815, 1250768669, 1984341771, 929607871, 2092475304, 1940221590, 196567546); + int3x4 b2 = int3x4(708665810, 1902328998, 1808456602, 563830672, 200493241, 1391620681, 1035522654, 168447603, 91580624, 1974459648, 2074899534, 164782857); + bool3x4 r2 = bool3x4(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + int3x4 a3 = int3x4(346458180, 2131041239, 1797649913, 162082500, 25639548, 1665178642, 1617231933, 1716426491, 1986475699, 262354389, 1517004243, 1058579789); + int3x4 b3 = int3x4(1647410210, 1000391363, 1539243411, 1253927304, 894227825, 1897420927, 826437109, 139868307, 565247534, 1437897788, 1891416649, 1043772546); + bool3x4 r3 = bool3x4(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void int3x4_operator_equal_wide_scalar() + { + int3x4 a0 = int3x4(1211464300, 1921862607, 508076684, 1249127920, 1394594555, 746862310, 1733655277, 1884008277, 1682018538, 795585660, 936027116, 927605411); + int b0 = (746972502); + bool3x4 r0 = bool3x4(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + int3x4 a1 = int3x4(672785749, 585324157, 404448210, 969511077, 442746747, 1772925698, 1884034177, 451512860, 425476075, 1370577708, 597010220, 1249636005); + int b1 = (1465584610); + bool3x4 r1 = bool3x4(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + int3x4 a2 = int3x4(211986678, 255635293, 1150443719, 177122433, 511346787, 1442445694, 667984966, 1684122010, 1962874832, 172230876, 496695881, 955604291); + int b2 = (1305479811); + bool3x4 r2 = bool3x4(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + int3x4 a3 = int3x4(872759249, 1604334190, 443527663, 1734064824, 1483978726, 1018945528, 476526026, 564821616, 1368099334, 2134154866, 2136028886, 20195989); + int b3 = (811880239); + bool3x4 r3 = bool3x4(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void int3x4_operator_equal_scalar_wide() + { + int a0 = (1150044438); + int3x4 b0 = int3x4(233855098, 924242519, 1402948791, 601381975, 2120518068, 629187703, 1971977031, 47183124, 1061805787, 1009011238, 312511148, 1460673064); + bool3x4 r0 = bool3x4(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + int a1 = (737210539); + int3x4 b1 = int3x4(1737844479, 1892405453, 2133024000, 455818693, 2003197687, 1276241219, 534746610, 559824292, 1758388240, 1023494292, 719963017, 1883763832); + bool3x4 r1 = bool3x4(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + int a2 = (597498209); + int3x4 b2 = int3x4(367814403, 1839429063, 223575614, 79701214, 1699606118, 759455864, 2017599457, 1395605233, 1191785903, 1156248212, 338891967, 61410415); + bool3x4 r2 = bool3x4(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + int a3 = (1576985758); + int3x4 b3 = int3x4(1066598856, 1070606918, 1295956934, 1391539053, 1206456305, 466211205, 1362213007, 554347592, 361925309, 1122476040, 1118155036, 2074160001); + bool3x4 r3 = bool3x4(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void int3x4_operator_not_equal_wide_wide() + { + int3x4 a0 = int3x4(1660932106, 982847023, 97046264, 1739517447, 1253499180, 1830584069, 1841470429, 1397841646, 1770890135, 1906548631, 169082967, 2099271786); + int3x4 b0 = int3x4(107139049, 75478496, 2055495054, 358586687, 942338347, 111564990, 113811950, 948912488, 1080084121, 1400504872, 1032134499, 1061123400); + bool3x4 r0 = bool3x4(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + int3x4 a1 = int3x4(1909317609, 46519139, 1433204003, 931492669, 670504132, 1551558665, 1204055048, 1623586740, 226381077, 1145987803, 644253929, 475189890); + int3x4 b1 = int3x4(221862069, 858950046, 989094643, 2023070999, 1269317127, 531883744, 687761409, 278427731, 296354221, 536981557, 1134676193, 1749879634); + bool3x4 r1 = bool3x4(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + int3x4 a2 = int3x4(922313145, 2006448607, 1574579050, 1839580033, 155350910, 313644534, 2008975915, 1072866331, 10845678, 1588544505, 709736932, 1892341087); + int3x4 b2 = int3x4(1944210269, 92849031, 164029425, 628797607, 2069207270, 2022667842, 880567401, 264404537, 1954996717, 572153302, 865957902, 1083128726); + bool3x4 r2 = bool3x4(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + int3x4 a3 = int3x4(1603981028, 1174123795, 2033630343, 416869471, 1894155826, 2084120548, 1130129683, 448491949, 1577220741, 376532834, 374116875, 416935463); + int3x4 b3 = int3x4(1628120900, 2020212393, 1562290229, 774641416, 444123152, 1636477381, 838643638, 506474707, 922761058, 1282331425, 1748402545, 1493297323); + bool3x4 r3 = bool3x4(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void int3x4_operator_not_equal_wide_scalar() + { + int3x4 a0 = int3x4(747758183, 1033001286, 1439973882, 2138928797, 1197845089, 1432672459, 950170763, 238704450, 2105962247, 727205263, 1640688041, 276313906); + int b0 = (248693828); + bool3x4 r0 = bool3x4(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + int3x4 a1 = int3x4(2126300423, 2035077187, 1171827730, 1412347883, 1622176923, 768370497, 1072798259, 1808712713, 1497830076, 1582645163, 1876273820, 90244766); + int b1 = (791998981); + bool3x4 r1 = bool3x4(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + int3x4 a2 = int3x4(30493685, 384643370, 11554610, 2016093187, 1515760622, 1596313927, 363921847, 1555396158, 913218907, 1739138988, 1916670251, 1516209113); + int b2 = (904014575); + bool3x4 r2 = bool3x4(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + int3x4 a3 = int3x4(765258490, 1509386069, 1670155205, 6112585, 1942607934, 964072392, 779222124, 409389668, 321500037, 1728722181, 1641292942, 780105497); + int b3 = (668154629); + bool3x4 r3 = bool3x4(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void int3x4_operator_not_equal_scalar_wide() + { + int a0 = (2076921066); + int3x4 b0 = int3x4(2037494727, 1989050616, 48833929, 1897435904, 514354517, 1783749164, 364694471, 754315072, 124108032, 1512967900, 1178825850, 1854793298); + bool3x4 r0 = bool3x4(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + int a1 = (50286949); + int3x4 b1 = int3x4(2100802631, 1640811853, 82110247, 472172806, 266984506, 2003668365, 1826089250, 1041416160, 356140110, 2057237962, 799920703, 1916347720); + bool3x4 r1 = bool3x4(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + int a2 = (510966350); + int3x4 b2 = int3x4(572038024, 1936481966, 1366859342, 1775285431, 604757336, 1047551607, 1311703338, 676012224, 627370253, 1715733805, 699755913, 1875151666); + bool3x4 r2 = bool3x4(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + int a3 = (358894860); + int3x4 b3 = int3x4(1036873378, 214171973, 340364269, 1652250278, 592713982, 806342921, 1264065574, 188560943, 1068608955, 485382245, 57935167, 1002934795); + bool3x4 r3 = bool3x4(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void int3x4_operator_less_wide_wide() + { + int3x4 a0 = int3x4(1182186063, 415538999, 1667335818, 1566618442, 1166180837, 639095188, 1080836365, 771119973, 928263233, 789225474, 665243110, 1003542034); + int3x4 b0 = int3x4(524633529, 1032195686, 760723389, 1505751409, 431962172, 1287906509, 1560084663, 1450178202, 2066166337, 1107069023, 1640077524, 2103263105); + bool3x4 r0 = bool3x4(false, true, false, false, false, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 < b0, r0); + + int3x4 a1 = int3x4(1032480172, 1961336172, 923379558, 21210619, 1089772116, 1707633052, 778986024, 158153146, 336715101, 1839141169, 1706859710, 1928438162); + int3x4 b1 = int3x4(684229139, 1234033624, 1278743281, 1953079347, 1228832942, 2082539723, 1088437561, 1058382082, 207459172, 750531081, 2015788562, 2126542133); + bool3x4 r1 = bool3x4(false, false, true, true, true, true, true, true, false, false, true, true); + TestUtils.AreEqual(a1 < b1, r1); + + int3x4 a2 = int3x4(1638101724, 2044698552, 1543260981, 471462349, 1668575142, 2147199161, 946870864, 582371851, 410751553, 198134393, 1999935258, 671192178); + int3x4 b2 = int3x4(271967348, 1601249324, 1373999400, 1689592186, 459759541, 983106679, 332584818, 2034921203, 833499488, 1999487070, 836063897, 1987309319); + bool3x4 r2 = bool3x4(false, false, false, true, false, false, false, true, true, true, false, true); + TestUtils.AreEqual(a2 < b2, r2); + + int3x4 a3 = int3x4(1908013191, 770353922, 1948420002, 396403395, 903274624, 1743415547, 1381528376, 409818366, 757370593, 413964581, 1088722047, 111511218); + int3x4 b3 = int3x4(1878327039, 457783938, 253010953, 1164175257, 1982277686, 651412210, 567444942, 1863256363, 18040866, 319226483, 1322530114, 4130283); + bool3x4 r3 = bool3x4(false, false, false, true, true, false, false, true, false, false, true, false); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void int3x4_operator_less_wide_scalar() + { + int3x4 a0 = int3x4(608447185, 818840405, 869219329, 2080125385, 1214500548, 1361741203, 1667165786, 1615392341, 840091491, 469591900, 1247103789, 315321650); + int b0 = (1491216667); + bool3x4 r0 = bool3x4(true, true, true, false, true, true, false, false, true, true, true, true); + TestUtils.AreEqual(a0 < b0, r0); + + int3x4 a1 = int3x4(930950514, 933855388, 908563901, 1127696709, 1286331950, 380753337, 971148054, 1827886929, 1056649851, 1579735991, 689044913, 1960894027); + int b1 = (1100560246); + bool3x4 r1 = bool3x4(true, true, true, false, false, true, true, false, true, false, true, false); + TestUtils.AreEqual(a1 < b1, r1); + + int3x4 a2 = int3x4(371987110, 1703747625, 1698536333, 41716206, 243673862, 1274625476, 611065092, 118750042, 1829327996, 452204442, 1645191336, 1829152606); + int b2 = (867559111); + bool3x4 r2 = bool3x4(true, false, false, true, true, false, true, true, false, true, false, false); + TestUtils.AreEqual(a2 < b2, r2); + + int3x4 a3 = int3x4(1891059504, 233590785, 894500093, 92899312, 965973603, 1496873003, 973411415, 694702440, 215973795, 1555455579, 1443255493, 212954934); + int b3 = (1217893177); + bool3x4 r3 = bool3x4(false, true, true, true, true, false, true, true, true, false, false, true); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void int3x4_operator_less_scalar_wide() + { + int a0 = (548436837); + int3x4 b0 = int3x4(282703327, 14370648, 1862117300, 1304793311, 826073259, 988910157, 445132446, 1139670255, 111349251, 1102440676, 112183144, 1594415311); + bool3x4 r0 = bool3x4(false, false, true, true, true, true, false, true, false, true, false, true); + TestUtils.AreEqual(a0 < b0, r0); + + int a1 = (1890019295); + int3x4 b1 = int3x4(2098715503, 608933527, 183989010, 1596056507, 1027318999, 146281093, 358911716, 874278078, 1106057699, 1256807459, 2111973919, 1736480659); + bool3x4 r1 = bool3x4(true, false, false, false, false, false, false, false, false, false, true, false); + TestUtils.AreEqual(a1 < b1, r1); + + int a2 = (810406400); + int3x4 b2 = int3x4(1329939911, 1276652605, 593690439, 771851138, 590897155, 386688344, 1290583204, 1984930954, 743544838, 1473400608, 1300775973, 1351720916); + bool3x4 r2 = bool3x4(true, true, false, false, false, false, true, true, false, true, true, true); + TestUtils.AreEqual(a2 < b2, r2); + + int a3 = (168788814); + int3x4 b3 = int3x4(670661854, 168118205, 894264935, 1763013903, 1647476162, 699045651, 1813273687, 900504872, 1574770031, 1684716245, 1458270033, 685700324); + bool3x4 r3 = bool3x4(true, false, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void int3x4_operator_greater_wide_wide() + { + int3x4 a0 = int3x4(592884447, 2133928932, 918957182, 1284069471, 194584707, 739120780, 241654068, 1340158550, 2099542537, 1182623667, 1399607274, 789301637); + int3x4 b0 = int3x4(138737040, 192863971, 1700841444, 1044631301, 1391589821, 730837695, 253553987, 2078872742, 910845808, 976047676, 202633078, 1223618940); + bool3x4 r0 = bool3x4(true, true, false, true, false, true, false, false, true, true, true, false); + TestUtils.AreEqual(a0 > b0, r0); + + int3x4 a1 = int3x4(180400925, 594688333, 1877031463, 1360073500, 1091782422, 546676424, 348221770, 716039145, 458742739, 1365508046, 1523167942, 1574478622); + int3x4 b1 = int3x4(641600530, 1830470354, 1570701388, 1104256103, 1838646932, 740166101, 1549021845, 1457092873, 1790630950, 907793213, 555122804, 1418910265); + bool3x4 r1 = bool3x4(false, false, true, true, false, false, false, false, false, true, true, true); + TestUtils.AreEqual(a1 > b1, r1); + + int3x4 a2 = int3x4(1295065160, 715285504, 1130323487, 677530432, 1496919050, 12463046, 1106153111, 1315083485, 31516321, 1786538920, 1854361210, 1730650972); + int3x4 b2 = int3x4(335209251, 1094341422, 1465325455, 390251369, 910309992, 277356652, 1601082764, 771366966, 1782348324, 550490783, 599992449, 550520692); + bool3x4 r2 = bool3x4(true, false, false, true, true, false, false, true, false, true, true, true); + TestUtils.AreEqual(a2 > b2, r2); + + int3x4 a3 = int3x4(194806663, 517304937, 984608679, 1847934645, 1214605555, 535405194, 855415884, 2121416263, 1161116500, 1390730698, 1536558799, 350939762); + int3x4 b3 = int3x4(1873014441, 1756459971, 2028992071, 1772761768, 1323261715, 1541822212, 265732078, 1773940614, 156425055, 1585395425, 438682493, 1005143622); + bool3x4 r3 = bool3x4(false, false, false, true, false, false, true, true, true, false, true, false); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void int3x4_operator_greater_wide_scalar() + { + int3x4 a0 = int3x4(1097138316, 211763648, 1883002501, 56406996, 43662641, 1923456111, 1437755186, 1219010035, 2125058448, 304028799, 893125636, 48044515); + int b0 = (438688675); + bool3x4 r0 = bool3x4(true, false, true, false, false, true, true, true, true, false, true, false); + TestUtils.AreEqual(a0 > b0, r0); + + int3x4 a1 = int3x4(711945018, 577943770, 572743717, 1016617211, 2063134811, 1577403353, 64009107, 1462961460, 1143565920, 3715845, 689362811, 263973424); + int b1 = (1035679270); + bool3x4 r1 = bool3x4(false, false, false, false, true, true, false, true, true, false, false, false); + TestUtils.AreEqual(a1 > b1, r1); + + int3x4 a2 = int3x4(1045140419, 524569092, 1183316983, 1107974092, 212839726, 523727054, 112709358, 614746280, 1000986708, 1683117650, 1451781409, 61102732); + int b2 = (1058332184); + bool3x4 r2 = bool3x4(false, false, true, true, false, false, false, false, false, true, true, false); + TestUtils.AreEqual(a2 > b2, r2); + + int3x4 a3 = int3x4(1284938191, 2125085618, 467075658, 1019531089, 2028286621, 940955706, 1037153304, 1184928188, 1260010015, 1456174269, 174216269, 1930086291); + int b3 = (1452639553); + bool3x4 r3 = bool3x4(false, true, false, false, true, false, false, false, false, true, false, true); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void int3x4_operator_greater_scalar_wide() + { + int a0 = (2024896938); + int3x4 b0 = int3x4(599356784, 185671342, 1932327391, 2025591013, 1257191721, 1312388500, 1443698859, 779217735, 691047512, 741776730, 732565983, 668302204); + bool3x4 r0 = bool3x4(true, true, true, false, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 > b0, r0); + + int a1 = (1556466996); + int3x4 b1 = int3x4(858599525, 1896917159, 701542098, 1052151621, 1023307544, 1435392907, 1858177345, 299897686, 632930355, 1387203601, 483722222, 863042711); + bool3x4 r1 = bool3x4(true, false, true, true, true, true, false, true, true, true, true, true); + TestUtils.AreEqual(a1 > b1, r1); + + int a2 = (1713088900); + int3x4 b2 = int3x4(315569296, 292652611, 1002628348, 927789921, 108145064, 425005337, 2093233588, 2063431853, 2079035844, 849337819, 1769234051, 358948261); + bool3x4 r2 = bool3x4(true, true, true, true, true, true, false, false, false, true, false, true); + TestUtils.AreEqual(a2 > b2, r2); + + int a3 = (267985383); + int3x4 b3 = int3x4(126402553, 2055164423, 577620406, 1167389614, 474380256, 1163355187, 1782967398, 1648397169, 845981950, 630459977, 1033887217, 1480829811); + bool3x4 r3 = bool3x4(true, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void int3x4_operator_less_equal_wide_wide() + { + int3x4 a0 = int3x4(1577248162, 2043073061, 1688380407, 176431985, 223299035, 1502802140, 1691709825, 386789394, 117182003, 1665770435, 1958490731, 420032601); + int3x4 b0 = int3x4(903445031, 2108974565, 210822256, 1281704747, 453681718, 66138830, 1229799377, 1620922595, 1715833766, 1366430432, 13102000, 46919981); + bool3x4 r0 = bool3x4(false, true, false, true, true, false, false, true, true, false, false, false); + TestUtils.AreEqual(a0 <= b0, r0); + + int3x4 a1 = int3x4(1251092689, 2011681765, 749743684, 183784440, 1150674774, 1633828822, 1719442172, 336047314, 743733218, 1393995865, 1854442658, 1498138884); + int3x4 b1 = int3x4(486470891, 1709514236, 2145785285, 854254454, 1273278658, 810263315, 1862773824, 201799013, 974166844, 1320622967, 2058099616, 522102017); + bool3x4 r1 = bool3x4(false, false, true, true, true, false, true, false, true, false, true, false); + TestUtils.AreEqual(a1 <= b1, r1); + + int3x4 a2 = int3x4(912169992, 1992682021, 1619593455, 1883313982, 483412430, 857881876, 346624138, 531961063, 269897278, 1062947703, 1743454202, 2048964070); + int3x4 b2 = int3x4(620752145, 1213693681, 1281818305, 1564146162, 1996153080, 1201909516, 614401396, 224997397, 648547686, 418431167, 1724009726, 401891826); + bool3x4 r2 = bool3x4(false, false, false, false, true, true, true, false, true, false, false, false); + TestUtils.AreEqual(a2 <= b2, r2); + + int3x4 a3 = int3x4(1379786452, 622697214, 766589782, 339960970, 1135815654, 797344244, 153103264, 1382144646, 1537448323, 326850885, 1004891948, 2002658522); + int3x4 b3 = int3x4(1463971422, 984323887, 1246893281, 1340476720, 1489579748, 128991539, 1117574406, 2016340116, 69682660, 1870772739, 1281621445, 129331822); + bool3x4 r3 = bool3x4(true, true, true, true, true, false, true, true, false, true, true, false); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void int3x4_operator_less_equal_wide_scalar() + { + int3x4 a0 = int3x4(1722165358, 1219858357, 860410743, 411099660, 348104022, 1963256951, 212084836, 58924407, 1459242706, 1745758438, 532949158, 262559763); + int b0 = (1688048545); + bool3x4 r0 = bool3x4(false, true, true, true, true, false, true, true, true, false, true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + int3x4 a1 = int3x4(690091301, 2091514001, 1857173043, 1617221948, 2017733017, 804204255, 981729559, 2032949254, 910922522, 2079225209, 26179915, 238796519); + int b1 = (1806172431); + bool3x4 r1 = bool3x4(true, false, false, true, false, true, true, false, true, false, true, true); + TestUtils.AreEqual(a1 <= b1, r1); + + int3x4 a2 = int3x4(1917813750, 20607406, 1337879822, 959460446, 1599429457, 1279143037, 1551937606, 626254356, 1162369122, 1021674613, 127839058, 1974631244); + int b2 = (1258115260); + bool3x4 r2 = bool3x4(false, true, false, true, false, false, false, true, true, true, true, false); + TestUtils.AreEqual(a2 <= b2, r2); + + int3x4 a3 = int3x4(426908235, 487782623, 1454736163, 465255784, 686095683, 2012624010, 1427922646, 1129062501, 1896996725, 1609784025, 1413823266, 1483727269); + int b3 = (1818566980); + bool3x4 r3 = bool3x4(true, true, true, true, true, false, true, true, false, true, true, true); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void int3x4_operator_less_equal_scalar_wide() + { + int a0 = (1777585); + int3x4 b0 = int3x4(1181030049, 1787703989, 1729760948, 1816537388, 1359786460, 874999193, 1678863148, 1711365839, 762067160, 11953554, 1131583906, 1175393186); + bool3x4 r0 = bool3x4(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + int a1 = (1293698493); + int3x4 b1 = int3x4(48893340, 66196247, 1958607116, 1576473309, 861890786, 478252419, 957887737, 117849810, 1348693584, 105489302, 259034238, 530713566); + bool3x4 r1 = bool3x4(false, false, true, true, false, false, false, false, true, false, false, false); + TestUtils.AreEqual(a1 <= b1, r1); + + int a2 = (601413850); + int3x4 b2 = int3x4(830430286, 145552297, 1697295044, 1150680564, 2091065664, 1796096704, 1572008712, 1556906486, 205552788, 620963188, 1156705971, 1121867260); + bool3x4 r2 = bool3x4(true, false, true, true, true, true, true, true, false, true, true, true); + TestUtils.AreEqual(a2 <= b2, r2); + + int a3 = (733876180); + int3x4 b3 = int3x4(1570208446, 541165966, 644414754, 734807383, 938714737, 591783460, 56988751, 790541516, 1811299247, 1308256680, 549490410, 1987696011); + bool3x4 r3 = bool3x4(true, false, false, true, true, false, false, true, true, true, false, true); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void int3x4_operator_greater_equal_wide_wide() + { + int3x4 a0 = int3x4(263000030, 744235661, 1893760267, 237248, 1062370984, 1676977687, 816766880, 1089431546, 1394493730, 1176473380, 1193988637, 1703862455); + int3x4 b0 = int3x4(1395535146, 1178373944, 1237373760, 1364855321, 600811864, 362060472, 290870624, 1839067862, 396958580, 1336888643, 1019684398, 1697684196); + bool3x4 r0 = bool3x4(false, false, true, false, true, true, true, false, true, false, true, true); + TestUtils.AreEqual(a0 >= b0, r0); + + int3x4 a1 = int3x4(1806186947, 1253571980, 589397635, 1951842887, 798931197, 808426484, 744869638, 1959531616, 207430702, 1533946595, 1148381840, 2011549474); + int3x4 b1 = int3x4(1227300220, 2044269675, 1898323839, 874509380, 1873505472, 1268843918, 1606949562, 1263896445, 1805518202, 1412091359, 1240330374, 1955056253); + bool3x4 r1 = bool3x4(true, false, false, true, false, false, false, true, false, true, false, true); + TestUtils.AreEqual(a1 >= b1, r1); + + int3x4 a2 = int3x4(605043041, 1707339660, 2038122892, 345761584, 1839156338, 1519670644, 2131285427, 775457686, 796452624, 1710612922, 1629927787, 1094198224); + int3x4 b2 = int3x4(2025187918, 750755999, 869709740, 1390799279, 1194035112, 666460047, 103451220, 1311530792, 802468307, 1090745055, 1968071275, 1935027815); + bool3x4 r2 = bool3x4(false, true, true, false, true, true, true, false, false, true, false, false); + TestUtils.AreEqual(a2 >= b2, r2); + + int3x4 a3 = int3x4(584910611, 1129457941, 1633221450, 549302356, 1363234393, 1439226634, 190984179, 983870135, 1527743888, 1577171227, 87278918, 1280094665); + int3x4 b3 = int3x4(2060060582, 1535954082, 291771096, 565856573, 1445999374, 711693364, 1201086888, 2076705104, 1565110852, 1698318173, 1293071569, 103979482); + bool3x4 r3 = bool3x4(false, false, true, false, false, true, false, false, false, false, false, true); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void int3x4_operator_greater_equal_wide_scalar() + { + int3x4 a0 = int3x4(2112791350, 1043657935, 101764761, 1529909067, 556026890, 281734132, 1186600258, 815093894, 609211196, 1604309397, 829548642, 244604867); + int b0 = (1470533736); + bool3x4 r0 = bool3x4(true, false, false, true, false, false, false, false, false, true, false, false); + TestUtils.AreEqual(a0 >= b0, r0); + + int3x4 a1 = int3x4(1419295004, 1819986195, 1460027917, 1646290021, 196833647, 1596738181, 1905036391, 1771391775, 1584946560, 370941146, 440219668, 1607345862); + int b1 = (471843809); + bool3x4 r1 = bool3x4(true, true, true, true, false, true, true, true, true, false, false, true); + TestUtils.AreEqual(a1 >= b1, r1); + + int3x4 a2 = int3x4(1449142607, 379014762, 1719435169, 258833609, 1389585003, 612593660, 42612027, 1138747386, 1491562090, 917503963, 353608194, 1526792895); + int b2 = (1223010129); + bool3x4 r2 = bool3x4(true, false, true, false, true, false, false, false, true, false, false, true); + TestUtils.AreEqual(a2 >= b2, r2); + + int3x4 a3 = int3x4(192092521, 367754234, 1738737389, 523396822, 594728703, 1332667659, 1627604854, 1542713928, 1997611484, 191413337, 1230701700, 702382564); + int b3 = (909358617); + bool3x4 r3 = bool3x4(false, false, true, false, false, true, true, true, true, false, true, false); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void int3x4_operator_greater_equal_scalar_wide() + { + int a0 = (1525542481); + int3x4 b0 = int3x4(1503244746, 861711266, 817773856, 925984572, 571221723, 683686810, 118252990, 1653952090, 1240253990, 1947039008, 1869136019, 152012637); + bool3x4 r0 = bool3x4(true, true, true, true, true, true, true, false, true, false, false, true); + TestUtils.AreEqual(a0 >= b0, r0); + + int a1 = (1214546726); + int3x4 b1 = int3x4(917376832, 303549425, 2111728811, 945321577, 173706579, 625318949, 519443238, 1583588379, 1026799433, 1713083717, 394922760, 1216218189); + bool3x4 r1 = bool3x4(true, true, false, true, true, true, true, false, true, false, true, false); + TestUtils.AreEqual(a1 >= b1, r1); + + int a2 = (1336522452); + int3x4 b2 = int3x4(233894308, 479913036, 984991199, 172993285, 2121050903, 465645173, 788510727, 337378780, 273010835, 1898553615, 1111540136, 717385513); + bool3x4 r2 = bool3x4(true, true, true, true, false, true, true, true, true, false, true, true); + TestUtils.AreEqual(a2 >= b2, r2); + + int a3 = (474197678); + int3x4 b3 = int3x4(1417152771, 1476091619, 1312849725, 243299324, 1470872301, 1443256118, 1203165035, 2138148138, 1543595760, 186659728, 807288168, 1274079907); + bool3x4 r3 = bool3x4(false, false, false, true, false, false, false, false, false, true, false, false); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void int3x4_operator_add_wide_wide() + { + int3x4 a0 = int3x4(2049228671, 1658660009, 491719392, 937013355, 81108663, 1063894558, 86954702, 843159721, 698977704, 192867135, 1683407172, 137301303); + int3x4 b0 = int3x4(2088751567, 645762023, 306868786, 4360271, 506047997, 2094559874, 1634712736, 1601474440, 1586485231, 908746788, 1812370320, 1247342357); + int3x4 r0 = int3x4(-156987058, -1990545264, 798588178, 941373626, 587156660, -1136512864, 1721667438, -1850333135, -2009504361, 1101613923, -799189804, 1384643660); + TestUtils.AreEqual(a0 + b0, r0); + + int3x4 a1 = int3x4(2103582820, 526139155, 447937230, 2127411006, 1670579390, 1914969141, 997691756, 857841794, 2129024875, 267535529, 978891383, 657092366); + int3x4 b1 = int3x4(2043773873, 223363428, 175115707, 985928617, 507662836, 1231457019, 776127866, 607782424, 1160366210, 1384832242, 702057048, 703554905); + int3x4 r1 = int3x4(-147610603, 749502583, 623052937, -1181627673, -2116725070, -1148541136, 1773819622, 1465624218, -1005576211, 1652367771, 1680948431, 1360647271); + TestUtils.AreEqual(a1 + b1, r1); + + int3x4 a2 = int3x4(941872903, 906908654, 1940071697, 862186205, 1951450264, 689662850, 1928213278, 1703906688, 526120638, 423980484, 1867227242, 603782684); + int3x4 b2 = int3x4(2106992817, 1994483489, 539473, 236858351, 411317652, 595429166, 713649927, 2053476603, 77965941, 1726775513, 1759186349, 2070333485); + int3x4 r2 = int3x4(-1246101576, -1393575153, 1940611170, 1099044556, -1932199380, 1285092016, -1653104091, -537584005, 604086579, -2144211299, -668553705, -1620851127); + TestUtils.AreEqual(a2 + b2, r2); + + int3x4 a3 = int3x4(728643437, 927205560, 1544834791, 268450974, 1386681507, 1428974172, 1415690700, 1193340567, 1792960278, 1427490402, 86465016, 827052793); + int3x4 b3 = int3x4(1732568358, 523040962, 899952708, 1401525772, 1970067897, 488428060, 132927517, 1670039917, 1678110790, 586374104, 262412628, 1415374948); + int3x4 r3 = int3x4(-1833755501, 1450246522, -1850179797, 1669976746, -938217892, 1917402232, 1548618217, -1431586812, -823896228, 2013864506, 348877644, -2052539555); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void int3x4_operator_add_wide_scalar() + { + int3x4 a0 = int3x4(2038218457, 134923711, 875689667, 1338884463, 997710928, 340490871, 1067888129, 70433301, 2003021861, 1635971971, 1160398286, 85446202); + int b0 = (2124409227); + int3x4 r0 = int3x4(-132339612, -2035634358, -1294868402, -831673606, -1172847141, -1830067198, -1102669940, -2100124768, -167536208, -534586098, -1010159783, -2085111867); + TestUtils.AreEqual(a0 + b0, r0); + + int3x4 a1 = int3x4(1068152966, 1497676888, 1727477485, 1095438654, 756559204, 1818718931, 658923552, 1610518921, 1585755398, 692843300, 1068593469, 1704776233); + int b1 = (1239387100); + int3x4 r1 = int3x4(-1987427230, -1557903308, -1328102711, -1960141542, 1995946304, -1236861265, 1898310652, -1445061275, -1469824798, 1932230400, -1986986727, -1350803963); + TestUtils.AreEqual(a1 + b1, r1); + + int3x4 a2 = int3x4(577782260, 711894571, 564257439, 2051736283, 1572837697, 1628006545, 1855700263, 656748782, 272774516, 1917133199, 828322973, 2116810190); + int b2 = (736972565); + int3x4 r2 = int3x4(1314754825, 1448867136, 1301230004, -1506258448, -1985157034, -1929988186, -1702294468, 1393721347, 1009747081, -1640861532, 1565295538, -1441184541); + TestUtils.AreEqual(a2 + b2, r2); + + int3x4 a3 = int3x4(2092767444, 1236931273, 504264449, 794292574, 1518058681, 1604636324, 354873417, 685247897, 227781140, 321182517, 1210575914, 1340503111); + int b3 = (973587865); + int3x4 r3 = int3x4(-1228611987, -2084448158, 1477852314, 1767880439, -1803320750, -1716743107, 1328461282, 1658835762, 1201369005, 1294770382, -2110803517, -1980876320); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void int3x4_operator_add_scalar_wide() + { + int a0 = (391092078); + int3x4 b0 = int3x4(519908870, 851424292, 328314822, 135622204, 740923360, 655394201, 1451896269, 1781697072, 996031825, 1557774949, 779774940, 1111541302); + int3x4 r0 = int3x4(911000948, 1242516370, 719406900, 526714282, 1132015438, 1046486279, 1842988347, -2122178146, 1387123903, 1948867027, 1170867018, 1502633380); + TestUtils.AreEqual(a0 + b0, r0); + + int a1 = (783046445); + int3x4 b1 = int3x4(1130163944, 288279584, 1397683861, 1636583489, 673263339, 1469300874, 14855965, 1116636999, 1488863300, 1600990886, 190651301, 1307459768); + int3x4 r1 = int3x4(1913210389, 1071326029, -2114236990, -1875337362, 1456309784, -2042619977, 797902410, 1899683444, -2023057551, -1910929965, 973697746, 2090506213); + TestUtils.AreEqual(a1 + b1, r1); + + int a2 = (920085839); + int3x4 b2 = int3x4(2082229835, 1992405574, 1213924458, 505841452, 981421162, 1488337699, 1113826640, 1806146508, 1841791222, 206610851, 526971953, 1236359886); + int3x4 r2 = int3x4(-1292651622, -1382475883, 2134010297, 1425927291, 1901507001, -1886543758, 2033912479, -1568734949, -1533090235, 1126696690, 1447057792, -2138521571); + TestUtils.AreEqual(a2 + b2, r2); + + int a3 = (1459523189); + int3x4 b3 = int3x4(965740631, 82842799, 1298403201, 1805809772, 1978864191, 415003386, 1906304148, 722870197, 744248796, 1677223559, 303376031, 1275565021); + int3x4 r3 = int3x4(-1869703476, 1542365988, -1537040906, -1029634335, -856579916, 1874526575, -929139959, -2112573910, -2091195311, -1158220548, 1762899220, -1559879086); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void int3x4_operator_sub_wide_wide() + { + int3x4 a0 = int3x4(1353441118, 797269833, 659988112, 56022121, 365847472, 2062899435, 1380988474, 799885138, 1306058185, 579775276, 1239163824, 344591081); + int3x4 b0 = int3x4(1332656812, 1827794007, 972557431, 2078233689, 1508184327, 1372307701, 810327977, 936799885, 71562303, 1418723328, 1971342989, 1226053395); + int3x4 r0 = int3x4(20784306, -1030524174, -312569319, -2022211568, -1142336855, 690591734, 570660497, -136914747, 1234495882, -838948052, -732179165, -881462314); + TestUtils.AreEqual(a0 - b0, r0); + + int3x4 a1 = int3x4(86359575, 1049709943, 721529513, 1767221271, 7652784, 545192611, 176298787, 1477774126, 1426963688, 2032787858, 2059525977, 445200454); + int3x4 b1 = int3x4(136565478, 1979903295, 600719425, 837912956, 632054793, 711091688, 904695656, 1640069560, 750244414, 1385118097, 1102391291, 1221949855); + int3x4 r1 = int3x4(-50205903, -930193352, 120810088, 929308315, -624402009, -165899077, -728396869, -162295434, 676719274, 647669761, 957134686, -776749401); + TestUtils.AreEqual(a1 - b1, r1); + + int3x4 a2 = int3x4(425848588, 2026967474, 1128492011, 61421784, 988065731, 1741434432, 2070331135, 1356704176, 1888446703, 1364654917, 265135366, 760501098); + int3x4 b2 = int3x4(609588723, 1054324682, 1678086165, 1529581776, 1718700085, 523422634, 223602473, 1912611694, 1224986479, 748933681, 88793450, 401362529); + int3x4 r2 = int3x4(-183740135, 972642792, -549594154, -1468159992, -730634354, 1218011798, 1846728662, -555907518, 663460224, 615721236, 176341916, 359138569); + TestUtils.AreEqual(a2 - b2, r2); + + int3x4 a3 = int3x4(741271824, 2139243287, 2086038778, 1314011065, 1838848671, 1554054707, 721235598, 1856904592, 570633009, 1870509604, 1310744871, 1717222072); + int3x4 b3 = int3x4(1087189363, 488919410, 1106956631, 1131451931, 1975243735, 111940790, 712896589, 477050266, 1163094482, 605082349, 954351492, 1203361215); + int3x4 r3 = int3x4(-345917539, 1650323877, 979082147, 182559134, -136395064, 1442113917, 8339009, 1379854326, -592461473, 1265427255, 356393379, 513860857); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void int3x4_operator_sub_wide_scalar() + { + int3x4 a0 = int3x4(1176369558, 1934521195, 309452150, 1417634074, 108910717, 1306356714, 1502312334, 1451794815, 281174200, 87530840, 1913724431, 2041593336); + int b0 = (462232403); + int3x4 r0 = int3x4(714137155, 1472288792, -152780253, 955401671, -353321686, 844124311, 1040079931, 989562412, -181058203, -374701563, 1451492028, 1579360933); + TestUtils.AreEqual(a0 - b0, r0); + + int3x4 a1 = int3x4(557239990, 1590376732, 819090189, 816382635, 815920639, 1829033117, 1792801932, 1113440549, 1418937976, 1277257189, 2092779398, 642236742); + int b1 = (1119051448); + int3x4 r1 = int3x4(-561811458, 471325284, -299961259, -302668813, -303130809, 709981669, 673750484, -5610899, 299886528, 158205741, 973727950, -476814706); + TestUtils.AreEqual(a1 - b1, r1); + + int3x4 a2 = int3x4(1605250794, 1468003019, 128303186, 553494257, 1017126971, 1999744782, 2017272758, 1817991764, 1280985500, 676974855, 1638032613, 949761204); + int b2 = (819644478); + int3x4 r2 = int3x4(785606316, 648358541, -691341292, -266150221, 197482493, 1180100304, 1197628280, 998347286, 461341022, -142669623, 818388135, 130116726); + TestUtils.AreEqual(a2 - b2, r2); + + int3x4 a3 = int3x4(1835969317, 976947310, 1304246606, 1456780208, 1554022712, 769804365, 2057831687, 758136579, 670433255, 603231411, 1673268965, 941598524); + int b3 = (919015590); + int3x4 r3 = int3x4(916953727, 57931720, 385231016, 537764618, 635007122, -149211225, 1138816097, -160879011, -248582335, -315784179, 754253375, 22582934); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void int3x4_operator_sub_scalar_wide() + { + int a0 = (1691534405); + int3x4 b0 = int3x4(2022393810, 1612688515, 496689713, 887037586, 2097630964, 374934538, 939035482, 935242277, 1789300421, 264712893, 1231856067, 1818112748); + int3x4 r0 = int3x4(-330859405, 78845890, 1194844692, 804496819, -406096559, 1316599867, 752498923, 756292128, -97766016, 1426821512, 459678338, -126578343); + TestUtils.AreEqual(a0 - b0, r0); + + int a1 = (1428436109); + int3x4 b1 = int3x4(1258745460, 1077380396, 1330722719, 518111829, 967128529, 344666254, 1082267918, 907866696, 1816885123, 460340568, 962154498, 557113461); + int3x4 r1 = int3x4(169690649, 351055713, 97713390, 910324280, 461307580, 1083769855, 346168191, 520569413, -388449014, 968095541, 466281611, 871322648); + TestUtils.AreEqual(a1 - b1, r1); + + int a2 = (1701216709); + int3x4 b2 = int3x4(1980098777, 730060552, 1444397827, 853570556, 138836432, 1013190428, 718089530, 506757390, 1216448041, 936312747, 1997286455, 1969982026); + int3x4 r2 = int3x4(-278882068, 971156157, 256818882, 847646153, 1562380277, 688026281, 983127179, 1194459319, 484768668, 764903962, -296069746, -268765317); + TestUtils.AreEqual(a2 - b2, r2); + + int a3 = (902880656); + int3x4 b3 = int3x4(1161220697, 1442464725, 622960765, 730968909, 614823841, 1889779020, 918322352, 133929920, 213123108, 1835450460, 521068072, 2066839749); + int3x4 r3 = int3x4(-258340041, -539584069, 279919891, 171911747, 288056815, -986898364, -15441696, 768950736, 689757548, -932569804, 381812584, -1163959093); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void int3x4_operator_mul_wide_wide() + { + int3x4 a0 = int3x4(245827027, 208934650, 1019478917, 568231809, 877289039, 1585782440, 2111178729, 1186019069, 571481445, 1570087048, 629447153, 619383734); + int3x4 b0 = int3x4(759663997, 350129201, 477450108, 1635735015, 388710278, 757722665, 1509388321, 1841703980, 1826369331, 1524322467, 1605207974, 428419155); + int3x4 r0 = int3x4(-632811769, 1402281434, 332447596, -1932977561, -1670918566, 1455036648, 2128344329, -594088068, -1654168033, 2093463192, -1207506618, -1133560830); + TestUtils.AreEqual(a0 * b0, r0); + + int3x4 a1 = int3x4(2055121568, 700402816, 263414349, 187830569, 2048056680, 546694675, 853585367, 933370718, 990212476, 1915885905, 1984212358, 368146234); + int3x4 b1 = int3x4(1460605791, 1968043860, 771161742, 2037340417, 322304267, 651448359, 1608326767, 1427155898, 1092185338, 665119139, 223634707, 694718952); + int3x4 r1 = int3x4(990589280, -938173952, -1341723466, 1156600361, 649177976, 678952165, 1063621177, -1611682740, -2142428392, -573253741, -1652113678, 1626072720); + TestUtils.AreEqual(a1 * b1, r1); + + int3x4 a2 = int3x4(899438811, 1765718681, 409003054, 2069758852, 140280263, 442491280, 1924530939, 1372320666, 200879709, 857149632, 962693646, 988118613); + int3x4 b2 = int3x4(675813713, 999254223, 1326064110, 788102700, 1927999142, 1706356773, 747671596, 106127297, 1695925670, 1788874462, 534570710, 1110638325); + int3x4 r2 = int3x4(1891467339, 335415735, 1128927428, -1656253776, -1433851638, 479369680, -366628060, -250163942, 48406862, -1997863296, -275121228, -1483457191); + TestUtils.AreEqual(a2 * b2, r2); + + int3x4 a3 = int3x4(892998613, 534109991, 1836805716, 591690444, 1092459557, 1068605049, 1152926708, 1628337363, 400029062, 511168096, 1165835487, 1650108606); + int3x4 b3 = int3x4(142931150, 1684745462, 2101748242, 1831486861, 5683864, 1735084283, 1336059993, 721992570, 1906075622, 1073069872, 1374497592, 242540880); + int3x4 r3 = int3x4(293009766, -617864326, 1179445736, -481780132, -1586128904, 1397450915, 487571412, -405680754, 326598756, 995119616, 638698952, 1153153376); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void int3x4_operator_mul_wide_scalar() + { + int3x4 a0 = int3x4(1762033447, 465343930, 1570757881, 1326409563, 1824319147, 1356578909, 72749215, 154616909, 975743632, 573770299, 1958912969, 971327747); + int b0 = (1476837906); + int3x4 r0 = int3x4(-1313177922, 1326807828, -2138555518, -276153754, -65548794, -1318584182, -1839224530, -1720506518, 1736252960, -1699123674, -1534863838, -1853528010); + TestUtils.AreEqual(a0 * b0, r0); + + int3x4 a1 = int3x4(1818877398, 660611671, 1279757657, 391009467, 1186856590, 890343818, 800117742, 606927173, 1338014500, 1688964615, 1439447294, 387721300); + int b1 = (1324050764); + int3x4 r1 = int3x4(1927061896, 645718228, -588613780, -844440956, -567685080, -1684615432, -1092253528, 133057916, -1582148944, -1029961452, -248833688, 100822256); + TestUtils.AreEqual(a1 * b1, r1); + + int3x4 a2 = int3x4(1192501703, 76318055, 124378112, 970518733, 1370700538, 1978842602, 1451974062, 987919119, 1659987051, 1325430351, 948943118, 1743760648); + int b2 = (1613845584); + int3x4 r2 = int3x4(-394864080, -1335460816, 692371456, 973833232, 1630959136, -1678368480, -191340960, 1516495024, 2027781488, 471196848, -2125435808, 1043640960); + TestUtils.AreEqual(a2 * b2, r2); + + int3x4 a3 = int3x4(227492421, 370371313, 309869840, 1389753586, 1895557060, 1449787207, 1817244670, 2117623142, 1951266912, 206918942, 382686790, 396984449); + int b3 = (217698851); + int3x4 r3 = int3x4(269461871, 1120555251, 1293383984, 1838219542, -1271695412, 1677010101, 1900394426, 512258290, -238570208, -508870886, 1697920914, 1359963043); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void int3x4_operator_mul_scalar_wide() + { + int a0 = (99541948); + int3x4 b0 = int3x4(1764461774, 657072478, 1459784358, 1610646683, 1632058826, 868441654, 1408757883, 335917146, 2105124483, 1178393968, 1963904348, 1409533767); + int3x4 r0 = int3x4(-950398648, -102049016, 1260585960, 1158730452, -1606056, -466153048, 2108402516, 1966690328, 1623617844, -1691554240, -830512240, -1283699420); + TestUtils.AreEqual(a0 * b0, r0); + + int a1 = (243286231); + int3x4 b1 = int3x4(1336308795, 517963367, 1733623488, 459880225, 994616533, 1420531535, 1821413700, 677771573, 2132626845, 1158827713, 640102997, 944551639); + int3x4 r1 = int3x4(-648389235, -1563629439, -401476800, -1314550601, 62369507, -76557479, -1413808100, -328103037, 2038656731, -2070911977, -1476360861, -1549578607); + TestUtils.AreEqual(a1 * b1, r1); + + int a2 = (1323243330); + int3x4 b2 = int3x4(1186460236, 657101857, 1275563580, 1031291523, 1008470115, 1155301041, 1046199281, 2138825098, 1273008873, 1788343477, 1994364082, 597340263); + int3x4 r2 = int3x4(-94024808, 50866050, 1979584376, -2129139002, 2084048518, -630615902, 1987582754, -2107012204, -1274032366, 1909741994, 2131645412, 527678350); + TestUtils.AreEqual(a2 * b2, r2); + + int a3 = (2022856151); + int3x4 b3 = int3x4(1375763101, 1007501105, 1162446628, 96412054, 1676576573, 1763698296, 729299033, 1534484, 1053621089, 1978013043, 796620370, 890235481); + int3x4 r3 = int3x4(-1935205669, -686991577, -1926794436, -1053293830, -653994693, -1849661752, 1198448575, -1186284852, -1561308297, -1930349931, -910321442, 938433983); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void int3x4_operator_div_wide_wide() + { + int3x4 a0 = int3x4(1590198532, 507812502, 126627032, 1058247011, 427387861, 290676154, 1829594484, 1127868739, 499016351, 1341209632, 134906097, 785470242); + int3x4 b0 = int3x4(1434703236, 911965201, 390415521, 128746927, 525835375, 816946613, 878264647, 146789678, 2089524057, 254213018, 1916850021, 1737806518); + int3x4 r0 = int3x4(1, 0, 0, 8, 0, 0, 2, 7, 0, 5, 0, 0); + TestUtils.AreEqual(a0 / b0, r0); + + int3x4 a1 = int3x4(788249865, 1099825433, 1552968283, 1822367139, 1021812060, 1937073018, 645757349, 1097576782, 1246027674, 1152153253, 1900577195, 172149343); + int3x4 b1 = int3x4(1906634983, 437754923, 825037958, 902508708, 896853614, 49452028, 1921327824, 787000669, 1032149621, 858558868, 1422112429, 837098844); + int3x4 r1 = int3x4(0, 2, 1, 2, 1, 39, 0, 1, 1, 1, 1, 0); + TestUtils.AreEqual(a1 / b1, r1); + + int3x4 a2 = int3x4(1735128704, 816492592, 2012272185, 632330092, 649232994, 123715336, 1438073735, 723262291, 850951883, 1942618200, 1088675276, 1648515976); + int3x4 b2 = int3x4(616122946, 2035322800, 1324534444, 1820832158, 917489631, 367475696, 620492088, 1749833550, 1535651093, 932740870, 1078416711, 725172174); + int3x4 r2 = int3x4(2, 0, 1, 0, 0, 0, 2, 0, 0, 2, 1, 2); + TestUtils.AreEqual(a2 / b2, r2); + + int3x4 a3 = int3x4(991947275, 1155668991, 764696768, 1984712970, 1734485640, 850109866, 8545366, 1037720170, 264523522, 1547702681, 1797612488, 1496410581); + int3x4 b3 = int3x4(554208963, 1250240123, 2074395021, 1513621083, 262726589, 936845337, 1934527986, 1844761263, 116240860, 1875751365, 730101086, 625535586); + int3x4 r3 = int3x4(1, 0, 0, 1, 6, 0, 0, 0, 2, 0, 2, 2); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void int3x4_operator_div_wide_scalar() + { + int3x4 a0 = int3x4(560951562, 1218680769, 375341724, 1613542090, 1919409166, 1397425408, 1349573078, 524526253, 341995568, 495895326, 1515313790, 1676971657); + int b0 = (947861580); + int3x4 r0 = int3x4(0, 1, 0, 1, 2, 1, 1, 0, 0, 0, 1, 1); + TestUtils.AreEqual(a0 / b0, r0); + + int3x4 a1 = int3x4(2131487088, 1017891310, 542666029, 1646044372, 1447236569, 107215658, 19616726, 896899915, 707389627, 1249475421, 1486968988, 1738891885); + int b1 = (2105094094); + int3x4 r1 = int3x4(1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); + TestUtils.AreEqual(a1 / b1, r1); + + int3x4 a2 = int3x4(1919705924, 1200843642, 206442634, 1508567412, 1825701056, 1117255783, 929925156, 1725332114, 1949103348, 1383839785, 2136282541, 159847918); + int b2 = (1244966864); + int3x4 r2 = int3x4(1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0); + TestUtils.AreEqual(a2 / b2, r2); + + int3x4 a3 = int3x4(1515555001, 1033495687, 1947230231, 1969254260, 1948672400, 757256792, 2099218773, 455629883, 324433498, 1679339858, 2024651647, 1222061694); + int b3 = (614923813); + int3x4 r3 = int3x4(2, 1, 3, 3, 3, 1, 3, 0, 0, 2, 3, 1); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void int3x4_operator_div_scalar_wide() + { + int a0 = (1161272038); + int3x4 b0 = int3x4(187325733, 1594107378, 2016183849, 1589343709, 388768753, 1417077283, 1773486938, 1154044032, 81831373, 1476877645, 653688843, 45756703); + int3x4 r0 = int3x4(6, 0, 0, 0, 2, 0, 0, 1, 14, 0, 1, 25); + TestUtils.AreEqual(a0 / b0, r0); + + int a1 = (631027637); + int3x4 b1 = int3x4(396671391, 784365696, 1250594097, 1818363859, 1653451772, 270557729, 48974453, 1796936382, 1427856423, 981056957, 1955700573, 705450043); + int3x4 r1 = int3x4(1, 0, 0, 0, 0, 2, 12, 0, 0, 0, 0, 0); + TestUtils.AreEqual(a1 / b1, r1); + + int a2 = (1054404890); + int3x4 b2 = int3x4(351914083, 131970646, 1320586926, 366944102, 1575786200, 257204865, 1582754309, 2114509003, 1266146708, 45105265, 2092444751, 407744534); + int3x4 r2 = int3x4(2, 7, 0, 2, 0, 4, 0, 0, 0, 23, 0, 2); + TestUtils.AreEqual(a2 / b2, r2); + + int a3 = (126616016); + int3x4 b3 = int3x4(1900058250, 523718813, 414718546, 1828540203, 860638950, 1827704212, 182494419, 669579562, 717750865, 560379939, 681272719, 638134699); + int3x4 r3 = int3x4(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void int3x4_operator_mod_wide_wide() + { + int3x4 a0 = int3x4(146150818, 1846543305, 1071447756, 308965362, 659881575, 1002365460, 861198439, 1510617532, 778525078, 1458458044, 101987897, 1249565173); + int3x4 b0 = int3x4(983050390, 771341152, 942375212, 367361754, 749500619, 750718852, 2095151755, 88438806, 769227442, 647214624, 1026513788, 1544950956); + int3x4 r0 = int3x4(146150818, 303861001, 129072544, 308965362, 659881575, 251646608, 861198439, 7157830, 9297636, 164028796, 101987897, 1249565173); + TestUtils.AreEqual(a0 % b0, r0); + + int3x4 a1 = int3x4(938026607, 1692541775, 1518877124, 1806965510, 1325139851, 994457255, 1372400564, 1770508529, 100255877, 452674793, 1545968777, 629019189); + int3x4 b1 = int3x4(160166322, 1099108075, 1158422232, 1798905209, 164686701, 327889784, 1082162785, 1213537518, 608481038, 329133821, 1824387961, 1223426748); + int3x4 r1 = int3x4(137194997, 593433700, 360454892, 8060301, 7646243, 10787903, 290237779, 556971011, 100255877, 123540972, 1545968777, 629019189); + TestUtils.AreEqual(a1 % b1, r1); + + int3x4 a2 = int3x4(1402964707, 2138294579, 1641714420, 1782022072, 1880968864, 1980798192, 1397317084, 995968277, 1090018756, 1573062648, 1100694500, 863521889); + int3x4 b2 = int3x4(798137669, 79717779, 1233582258, 1267120677, 301592349, 911281434, 1357340934, 1648942990, 1350943898, 696511738, 1182727748, 1843845940); + int3x4 r2 = int3x4(604827038, 65632325, 408132162, 514901395, 71414770, 158235324, 39976150, 995968277, 1090018756, 180039172, 1100694500, 863521889); + TestUtils.AreEqual(a2 % b2, r2); + + int3x4 a3 = int3x4(1146202560, 546958747, 573838995, 2146465826, 1678630780, 1843627015, 1167611300, 157190789, 530148276, 594404567, 1248848240, 1963704081); + int3x4 b3 = int3x4(244920526, 1640990506, 920431352, 1261122293, 469115027, 720739455, 1727247731, 91557593, 1874820225, 1070808215, 859227095, 890398590); + int3x4 r3 = int3x4(166520456, 546958747, 573838995, 885343533, 271285699, 402148105, 1167611300, 65633196, 530148276, 594404567, 389621145, 182906901); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void int3x4_operator_mod_wide_scalar() + { + int3x4 a0 = int3x4(164800505, 1062177828, 1898749675, 1701653318, 820393245, 19002208, 128329633, 1464010899, 896587769, 405208598, 1982762194, 959236935); + int b0 = (883951171); + int3x4 r0 = int3x4(164800505, 178226657, 130847333, 817702147, 820393245, 19002208, 128329633, 580059728, 12636598, 405208598, 214859852, 75285764); + TestUtils.AreEqual(a0 % b0, r0); + + int3x4 a1 = int3x4(712321026, 1540068445, 1085897743, 1607489717, 165478511, 647846716, 915707999, 1602830401, 928191283, 1084934806, 488509689, 2087820912); + int b1 = (172564850); + int3x4 r1 = int3x4(22061626, 159549645, 50508643, 54406067, 165478511, 130152166, 52883749, 49746751, 65367033, 49545706, 143379989, 17042712); + TestUtils.AreEqual(a1 % b1, r1); + + int3x4 a2 = int3x4(377501313, 1216011754, 812183417, 1153802502, 1642671870, 1924710742, 665297470, 1568090825, 2050982942, 435886407, 453990946, 1731665372); + int b2 = (1778384846); + int3x4 r2 = int3x4(377501313, 1216011754, 812183417, 1153802502, 1642671870, 146325896, 665297470, 1568090825, 272598096, 435886407, 453990946, 1731665372); + TestUtils.AreEqual(a2 % b2, r2); + + int3x4 a3 = int3x4(586777590, 1585649515, 1414579860, 1891664981, 1262495021, 1400758118, 1529532008, 430295164, 1386414018, 2130346558, 666621411, 1524342239); + int b3 = (1475597526); + int3x4 r3 = int3x4(586777590, 110051989, 1414579860, 416067455, 1262495021, 1400758118, 53934482, 430295164, 1386414018, 654749032, 666621411, 48744713); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void int3x4_operator_mod_scalar_wide() + { + int a0 = (242383789); + int3x4 b0 = int3x4(740000543, 1556450291, 1104736385, 437976569, 1911837205, 1507212038, 1906405167, 247693265, 293460573, 1495295166, 873323603, 530681233); + int3x4 r0 = int3x4(242383789, 242383789, 242383789, 242383789, 242383789, 242383789, 242383789, 242383789, 242383789, 242383789, 242383789, 242383789); + TestUtils.AreEqual(a0 % b0, r0); + + int a1 = (1298102643); + int3x4 b1 = int3x4(2057984657, 1000742091, 1461372131, 1859742342, 797184687, 821888842, 1083192997, 840114986, 1894865954, 615159964, 1485575122, 2028738); + int3x4 r1 = int3x4(1298102643, 297360552, 1298102643, 1298102643, 500917956, 476213801, 214909646, 457987657, 1298102643, 67782715, 1298102643, 1739061); + TestUtils.AreEqual(a1 % b1, r1); + + int a2 = (2122220318); + int3x4 b2 = int3x4(164578061, 730088119, 1444946139, 1305792037, 1110829011, 872723581, 166847388, 1477846418, 511428733, 1642227542, 1962310765, 207128894); + int3x4 r2 = int3x4(147283586, 662044080, 677274179, 816428281, 1011391307, 376773156, 120051662, 644373900, 76505386, 479992776, 159909553, 50931378); + TestUtils.AreEqual(a2 % b2, r2); + + int a3 = (1342085447); + int3x4 b3 = int3x4(448361286, 334667519, 705465751, 753088773, 1146344010, 275140144, 1074480141, 2092749846, 1631900558, 2088387496, 1098441751, 1648646354); + int3x4 r3 = int3x4(445362875, 3415371, 636619696, 588996674, 195741437, 241524871, 267605306, 1342085447, 1342085447, 1342085447, 243643696, 1342085447); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void int3x4_operator_plus() + { + int3x4 a0 = int3x4(1643476803, 907898539, 379615839, 1140483021, 1735287433, 1743199272, 1472881565, 339091479, 401565897, 1287765427, 849339193, 174532915); + int3x4 r0 = int3x4(1643476803, 907898539, 379615839, 1140483021, 1735287433, 1743199272, 1472881565, 339091479, 401565897, 1287765427, 849339193, 174532915); + TestUtils.AreEqual(+a0, r0); + + int3x4 a1 = int3x4(1864850812, 1145639744, 1615499926, 2049663954, 1723005749, 409076474, 591286416, 1706631096, 1079164488, 1808261782, 1201290141, 82958939); + int3x4 r1 = int3x4(1864850812, 1145639744, 1615499926, 2049663954, 1723005749, 409076474, 591286416, 1706631096, 1079164488, 1808261782, 1201290141, 82958939); + TestUtils.AreEqual(+a1, r1); + + int3x4 a2 = int3x4(308695413, 2067379018, 1673126612, 500666137, 640289062, 836003812, 336058393, 829347661, 33442669, 381670450, 277507230, 361395485); + int3x4 r2 = int3x4(308695413, 2067379018, 1673126612, 500666137, 640289062, 836003812, 336058393, 829347661, 33442669, 381670450, 277507230, 361395485); + TestUtils.AreEqual(+a2, r2); + + int3x4 a3 = int3x4(1012749225, 2092803800, 1459040742, 531853559, 2093894901, 1589622197, 1559976318, 619729461, 731886792, 1441425968, 1921783986, 1257555634); + int3x4 r3 = int3x4(1012749225, 2092803800, 1459040742, 531853559, 2093894901, 1589622197, 1559976318, 619729461, 731886792, 1441425968, 1921783986, 1257555634); + TestUtils.AreEqual(+a3, r3); + } + + [TestCompiler] + public static void int3x4_operator_neg() + { + int3x4 a0 = int3x4(1955022112, 662160019, 370300775, 2141283773, 1004505619, 28153593, 33894270, 505708349, 1115028238, 1636274969, 694995093, 1542206286); + int3x4 r0 = int3x4(-1955022112, -662160019, -370300775, -2141283773, -1004505619, -28153593, -33894270, -505708349, -1115028238, -1636274969, -694995093, -1542206286); + TestUtils.AreEqual(-a0, r0); + + int3x4 a1 = int3x4(213087293, 341522275, 841085242, 574159094, 1687250035, 2057919693, 1175014732, 1259809073, 1212465326, 1190569920, 2047955772, 2120729864); + int3x4 r1 = int3x4(-213087293, -341522275, -841085242, -574159094, -1687250035, -2057919693, -1175014732, -1259809073, -1212465326, -1190569920, -2047955772, -2120729864); + TestUtils.AreEqual(-a1, r1); + + int3x4 a2 = int3x4(1440774928, 431666091, 1387601718, 1745651998, 319115626, 1119959806, 739132284, 1954173314, 1709857098, 1836511050, 1662806453, 506144868); + int3x4 r2 = int3x4(-1440774928, -431666091, -1387601718, -1745651998, -319115626, -1119959806, -739132284, -1954173314, -1709857098, -1836511050, -1662806453, -506144868); + TestUtils.AreEqual(-a2, r2); + + int3x4 a3 = int3x4(650922971, 1273997249, 1474445187, 1853826947, 1695573773, 729452512, 345069360, 575867536, 594119038, 1201840609, 1342872551, 1768435578); + int3x4 r3 = int3x4(-650922971, -1273997249, -1474445187, -1853826947, -1695573773, -729452512, -345069360, -575867536, -594119038, -1201840609, -1342872551, -1768435578); + TestUtils.AreEqual(-a3, r3); + } + + [TestCompiler] + public static void int3x4_operator_prefix_inc() + { + int3x4 a0 = int3x4(864455342, 2035793213, 1275443862, 971919915, 411610189, 446210725, 395072276, 115573442, 913293639, 432884105, 1208161871, 1385544935); + int3x4 r0 = int3x4(864455343, 2035793214, 1275443863, 971919916, 411610190, 446210726, 395072277, 115573443, 913293640, 432884106, 1208161872, 1385544936); + TestUtils.AreEqual(++a0, r0); + + int3x4 a1 = int3x4(1835605516, 388229350, 696475402, 1786514683, 993189311, 752093909, 1622410417, 1398865015, 241906003, 1705625817, 609525897, 172599489); + int3x4 r1 = int3x4(1835605517, 388229351, 696475403, 1786514684, 993189312, 752093910, 1622410418, 1398865016, 241906004, 1705625818, 609525898, 172599490); + TestUtils.AreEqual(++a1, r1); + + int3x4 a2 = int3x4(504806865, 281942776, 1541894135, 924683935, 259568871, 1349062584, 1120518661, 65514038, 1495168208, 1321109497, 1366348660, 1777734111); + int3x4 r2 = int3x4(504806866, 281942777, 1541894136, 924683936, 259568872, 1349062585, 1120518662, 65514039, 1495168209, 1321109498, 1366348661, 1777734112); + TestUtils.AreEqual(++a2, r2); + + int3x4 a3 = int3x4(1414867743, 539531120, 886558347, 1733014170, 1586973907, 1145067277, 884064327, 82551838, 1001250037, 924273925, 242241802, 413165245); + int3x4 r3 = int3x4(1414867744, 539531121, 886558348, 1733014171, 1586973908, 1145067278, 884064328, 82551839, 1001250038, 924273926, 242241803, 413165246); + TestUtils.AreEqual(++a3, r3); + } + + [TestCompiler] + public static void int3x4_operator_postfix_inc() + { + int3x4 a0 = int3x4(1751003569, 2063707595, 1500486291, 969189211, 1007848192, 2028651936, 1643023524, 1190630527, 1396179607, 708474528, 177416855, 1524860667); + int3x4 r0 = int3x4(1751003569, 2063707595, 1500486291, 969189211, 1007848192, 2028651936, 1643023524, 1190630527, 1396179607, 708474528, 177416855, 1524860667); + TestUtils.AreEqual(a0++, r0); + + int3x4 a1 = int3x4(1408994706, 1580130369, 1676086778, 717006530, 506142468, 732199129, 2026873940, 130175844, 1513142653, 420613464, 1219979307, 586574160); + int3x4 r1 = int3x4(1408994706, 1580130369, 1676086778, 717006530, 506142468, 732199129, 2026873940, 130175844, 1513142653, 420613464, 1219979307, 586574160); + TestUtils.AreEqual(a1++, r1); + + int3x4 a2 = int3x4(357567451, 1949784665, 1127356901, 101238629, 2131648021, 423320704, 827539403, 1919960927, 840371710, 2010345998, 1047836590, 586887730); + int3x4 r2 = int3x4(357567451, 1949784665, 1127356901, 101238629, 2131648021, 423320704, 827539403, 1919960927, 840371710, 2010345998, 1047836590, 586887730); + TestUtils.AreEqual(a2++, r2); + + int3x4 a3 = int3x4(1209169651, 1479717664, 1874959449, 104723114, 817246348, 1972950889, 1784631804, 1550936382, 718649502, 872906800, 717529320, 1995020676); + int3x4 r3 = int3x4(1209169651, 1479717664, 1874959449, 104723114, 817246348, 1972950889, 1784631804, 1550936382, 718649502, 872906800, 717529320, 1995020676); + TestUtils.AreEqual(a3++, r3); + } + + [TestCompiler] + public static void int3x4_operator_prefix_dec() + { + int3x4 a0 = int3x4(200904609, 871077500, 968578728, 638967721, 1995396216, 435367037, 1782514098, 1589827826, 1434377580, 596759698, 1699290403, 1758478358); + int3x4 r0 = int3x4(200904608, 871077499, 968578727, 638967720, 1995396215, 435367036, 1782514097, 1589827825, 1434377579, 596759697, 1699290402, 1758478357); + TestUtils.AreEqual(--a0, r0); + + int3x4 a1 = int3x4(1914114460, 389120307, 1022184392, 1310293956, 356565557, 18299409, 906734601, 799006218, 1383897383, 1040798388, 1469596990, 1719228297); + int3x4 r1 = int3x4(1914114459, 389120306, 1022184391, 1310293955, 356565556, 18299408, 906734600, 799006217, 1383897382, 1040798387, 1469596989, 1719228296); + TestUtils.AreEqual(--a1, r1); + + int3x4 a2 = int3x4(220897829, 678025545, 14227726, 293093918, 1065286595, 1249415499, 1009503100, 157482354, 965385343, 1797304434, 1083672612, 929765380); + int3x4 r2 = int3x4(220897828, 678025544, 14227725, 293093917, 1065286594, 1249415498, 1009503099, 157482353, 965385342, 1797304433, 1083672611, 929765379); + TestUtils.AreEqual(--a2, r2); + + int3x4 a3 = int3x4(2083512379, 323646560, 1395297406, 583796119, 999841714, 1788073019, 1618852114, 1777032041, 1252764958, 1070818447, 219340317, 767990877); + int3x4 r3 = int3x4(2083512378, 323646559, 1395297405, 583796118, 999841713, 1788073018, 1618852113, 1777032040, 1252764957, 1070818446, 219340316, 767990876); + TestUtils.AreEqual(--a3, r3); + } + + [TestCompiler] + public static void int3x4_operator_postfix_dec() + { + int3x4 a0 = int3x4(283970262, 1109329936, 1073216143, 649439137, 1932646215, 1174104498, 484207852, 524156737, 691209285, 2017728859, 802721301, 377162390); + int3x4 r0 = int3x4(283970262, 1109329936, 1073216143, 649439137, 1932646215, 1174104498, 484207852, 524156737, 691209285, 2017728859, 802721301, 377162390); + TestUtils.AreEqual(a0--, r0); + + int3x4 a1 = int3x4(526366486, 590919177, 60677868, 1867810045, 2095777993, 670715645, 324944916, 242636153, 1659736954, 1316734088, 1030072405, 1751972064); + int3x4 r1 = int3x4(526366486, 590919177, 60677868, 1867810045, 2095777993, 670715645, 324944916, 242636153, 1659736954, 1316734088, 1030072405, 1751972064); + TestUtils.AreEqual(a1--, r1); + + int3x4 a2 = int3x4(1868889881, 1931943579, 175622377, 181847458, 665549439, 530897466, 635466911, 416440036, 1447690298, 1444496274, 296146626, 1209855130); + int3x4 r2 = int3x4(1868889881, 1931943579, 175622377, 181847458, 665549439, 530897466, 635466911, 416440036, 1447690298, 1444496274, 296146626, 1209855130); + TestUtils.AreEqual(a2--, r2); + + int3x4 a3 = int3x4(2016700604, 647102652, 1948542169, 659874422, 2009120584, 1577004911, 1809041177, 518526567, 1464738365, 1815629310, 1216839298, 569144612); + int3x4 r3 = int3x4(2016700604, 647102652, 1948542169, 659874422, 2009120584, 1577004911, 1809041177, 518526567, 1464738365, 1815629310, 1216839298, 569144612); + TestUtils.AreEqual(a3--, r3); + } + + [TestCompiler] + public static void int3x4_operator_bitwise_and_wide_wide() + { + int3x4 a0 = int3x4(779935043, 1097962163, 1939593304, 800599247, 952140918, 782792558, 1608557706, 396446406, 2039894114, 1286974642, 442394124, 1759739564); + int3x4 b0 = int3x4(307705143, 1710882162, 866836769, 532490608, 679371720, 1794035877, 1439832202, 519529812, 23633139, 1209152681, 646737179, 1255867027); + int3x4 r0 = int3x4(39064835, 1097961522, 864731136, 263727168, 675283008, 715673636, 1438646410, 379666500, 16781410, 1209017504, 34366472, 1220739712); + TestUtils.AreEqual(a0 & b0, r0); + + int3x4 a1 = int3x4(233435438, 665207770, 1942050241, 1022352952, 60340400, 329119345, 406517382, 1126764634, 343425836, 1957552749, 1624478957, 341972372); + int3x4 b1 = int3x4(1900854122, 413173763, 1409138251, 2087190272, 563439483, 354579077, 642224854, 1650432515, 755290290, 902865191, 661389406, 2134212586); + int3x4 r1 = int3x4(21541162, 10485762, 1405162561, 1013440000, 26222640, 285241857, 168582, 1107890178, 67125280, 880844837, 541065292, 337646976); + TestUtils.AreEqual(a1 & b1, r1); + + int3x4 a2 = int3x4(181537307, 130347414, 1240828622, 526120460, 695449226, 1477446724, 201628999, 737924014, 1804502415, 1733695477, 1110712857, 113012430); + int3x4 b2 = int3x4(1855189321, 185194029, 810374380, 133197864, 1989578783, 38739182, 387425484, 1690486314, 843085933, 1045118223, 41867329, 1397669260); + int3x4 r2 = int3x4(177340425, 50384900, 4522188, 122712072, 538087434, 3140, 67404868, 549634602, 570425357, 641864965, 36962305, 34352268); + TestUtils.AreEqual(a2 & b2, r2); + + int3x4 a3 = int3x4(1044352152, 865726845, 836668077, 1778871717, 1558881750, 231636456, 1278790837, 846361650, 37319023, 1806613498, 1312261777, 1448803516); + int3x4 b3 = int3x4(1784025774, 1834587481, 856874373, 1719529679, 678478831, 86860920, 837158923, 1397449667, 195921481, 564422246, 1088025452, 2103483999); + int3x4 r3 = int3x4(706085000, 555323737, 823298181, 1644519557, 140542406, 84698216, 2099201, 306339842, 36241481, 564404834, 1074889216, 1413520412); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void int3x4_operator_bitwise_and_wide_scalar() + { + int3x4 a0 = int3x4(443615469, 490057985, 2042441263, 1524760558, 1405175110, 510212004, 1941875181, 1236735839, 1365509729, 428270198, 607982857, 650270920); + int b0 = (93423598); + int3x4 r0 = int3x4(1114348, 85033216, 26281518, 8488942, 25232710, 67176356, 26247660, 26281806, 16778848, 25199206, 68224264, 75497672); + TestUtils.AreEqual(a0 & b0, r0); + + int3x4 a1 = int3x4(1249238550, 1862276471, 143502472, 861733033, 1408932942, 957693145, 1567715668, 1102952410, 322053683, 1599352836, 208656708, 1272226025); + int b1 = (814629680); + int3x4 r1 = int3x4(279056, 536871216, 9175040, 806092832, 277479424, 805568528, 268452112, 9175824, 268567088, 268697600, 934144, 8650784); + TestUtils.AreEqual(a1 & b1, r1); + + int3x4 a2 = int3x4(462670926, 1466722981, 1817277774, 818900583, 772681077, 1630437952, 546018772, 872875431, 1143080525, 708719245, 1764446048, 1527981061); + int b2 = (1817145060); + int3x4 r2 = int3x4(134433860, 1145858724, 1816224836, 542076516, 739126372, 1611530816, 537593028, 604439716, 1140983364, 672014980, 1745571424, 1208165380); + TestUtils.AreEqual(a2 & b2, r2); + + int3x4 a3 = int3x4(398141788, 554819377, 1683835293, 972562207, 393685571, 2118911919, 1503487659, 283854137, 1911282206, 312686024, 384581172, 1826788967); + int b3 = (156911041); + int3x4 r3 = int3x4(18481472, 17843457, 5783937, 156763393, 22151233, 138937729, 152585345, 4867329, 21643264, 132544, 4719616, 138544193); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void int3x4_operator_bitwise_and_scalar_wide() + { + int a0 = (1144543590); + int3x4 b0 = int3x4(420346723, 562416448, 1393127318, 1560699552, 851218057, 703880958, 1159378889, 2031211279, 1089518981, 270607307, 1349288930, 520199596); + int3x4 r0 = int3x4(547170, 18752, 1074284806, 1140867104, 3672064, 3168358, 1142427968, 1074811142, 1076893956, 2097474, 1076363618, 67115300); + TestUtils.AreEqual(a0 & b0, r0); + + int a1 = (1763483957); + int3x4 b1 = int3x4(1248975349, 236938635, 185023291, 1085233038, 1845693112, 946052961, 1436238522, 2042776519, 56356886, 1770159840, 1872339579, 1439201366); + int3x4 r1 = int3x4(1209041205, 136061185, 151265585, 1074528516, 1744830512, 671121697, 1092091952, 1761607941, 18391060, 1761615904, 1763221553, 1091051540); + TestUtils.AreEqual(a1 & b1, r1); + + int a2 = (1233066417); + int3x4 b2 = int3x4(1214109404, 2255485, 1814885263, 1711986588, 1286898282, 915476451, 1870138851, 372814411, 1623486506, 211665304, 1668985777, 348112007); + int3x4 r2 = int3x4(1214058640, 2230321, 1210847617, 1074401680, 1211367456, 1116577, 1232603553, 3674113, 1078202400, 136118672, 1098518961, 4128897); + TestUtils.AreEqual(a2 & b2, r2); + + int a3 = (1808619374); + int3x4 b3 = int3x4(1516730209, 1647041932, 350465899, 1641369007, 1555310928, 857924828, 1980404095, 34923708, 1073528483, 742357726, 1244015681, 1980296380); + int3x4 r3 = int3x4(1246058336, 1644778764, 12650346, 1640318254, 1216610624, 587220044, 1644695918, 33834028, 734795298, 671961678, 1241777216, 1644708908); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void int3x4_operator_bitwise_or_wide_wide() + { + int3x4 a0 = int3x4(1731159103, 659068416, 382702471, 1821032196, 1565773438, 1004000514, 948501377, 600951835, 669346222, 396691477, 2108560248, 2117522137); + int3x4 b0 = int3x4(1583847161, 692672727, 1161585489, 1756207130, 1321374429, 1287357212, 2075767170, 1273513430, 1610830169, 1316929125, 511625048, 573925879); + int3x4 r0 = int3x4(2138044159, 793370327, 1476391895, 1823457054, 1607720703, 2147473182, 2075786115, 1811533279, 1743223295, 1610595957, 2147407736, 2117598207); + TestUtils.AreEqual(a0 | b0, r0); + + int3x4 a1 = int3x4(330307355, 818676817, 1774459567, 1117506257, 1254511182, 1017865993, 1883021644, 1140203470, 759288967, 2122744307, 335621148, 715028074); + int3x4 b1 = int3x4(1502255628, 1841676448, 1682928938, 1115131952, 1541423910, 1416096228, 188606371, 1041599540, 219545389, 560097663, 1087543661, 936383841); + int3x4 r1 = int3x4(1538957087, 2110637297, 1842315183, 1124063985, 1541821294, 2096099309, 2067654639, 2146934782, 760610735, 2145839615, 1423162749, 1071544171); + TestUtils.AreEqual(a1 | b1, r1); + + int3x4 a2 = int3x4(543305337, 662107399, 1934997335, 436754869, 1613808671, 362365372, 342908672, 2129231210, 203868172, 32846030, 1057901177, 1537975433); + int3x4 b2 = int3x4(108816721, 1694053551, 452638547, 1219534055, 85142537, 1027930490, 2126839395, 2030328147, 2036352209, 1554561114, 1332339254, 480739851); + int3x4 r2 = int3x4(645820281, 1744827823, 2080356183, 1522064887, 1697901599, 1037957630, 2129985379, 2146270587, 2103889117, 1576909022, 2138040959, 1605346955); + TestUtils.AreEqual(a2 | b2, r2); + + int3x4 a3 = int3x4(470626699, 557640158, 536364388, 238304731, 787227554, 1298371111, 1020821539, 1327618264, 1104669041, 1949771204, 1973724646, 698690868); + int3x4 b3 = int3x4(1502575584, 1889014859, 1557424474, 1390247341, 2029776623, 1665642846, 1570936353, 801872635, 1945815585, 1797879107, 112272980, 779933219); + int3x4 r3 = int3x4(1569684459, 1908211167, 1610378622, 1593671167, 2130702319, 1869067135, 2113574435, 1877727995, 1946151793, 2134865351, 2008393718, 805175095); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void int3x4_operator_bitwise_or_wide_scalar() + { + int3x4 a0 = int3x4(961259683, 471103264, 1733389229, 1591585258, 386953869, 1148351449, 1048929715, 1814263250, 860336789, 1637162093, 1227888278, 774029856); + int b0 = (1666102508); + int3x4 r0 = int3x4(2068823279, 2136930284, 1734344685, 2145369582, 2002712301, 1736374269, 2144335359, 1869608446, 1934604029, 1675607277, 1803466494, 1869543148); + TestUtils.AreEqual(a0 | b0, r0); + + int3x4 a1 = int3x4(879300408, 797240690, 1977614655, 46921989, 1980838747, 284225881, 64304104, 313591807, 1393862490, 1890090886, 521303722, 2021379070); + int b1 = (1179087439); + int3x4 r1 = int3x4(1987018623, 1875378047, 2011657087, 1188035407, 1985442655, 1459090271, 1205302255, 1459058687, 1465382751, 1995407311, 1599567599, 2122316799); + TestUtils.AreEqual(a1 | b1, r1); + + int3x4 a2 = int3x4(2055963359, 1775629833, 1142751163, 1767274359, 1421981808, 1501294791, 485944015, 539526284, 310877895, 1815369493, 529427586, 358352200); + int b2 = (1511253082); + int3x4 r2 = int3x4(2057037535, 2077750875, 1579155451, 2069362559, 1590951034, 1534850271, 1593306847, 2050745566, 1519910623, 2117597023, 1604316378, 1600120154); + TestUtils.AreEqual(a2 | b2, r2); + + int3x4 a3 = int3x4(1353013374, 1624839772, 1369983151, 666444298, 207757238, 257316089, 409252967, 1919967661, 1452040383, 2012115244, 1149949643, 142082352); + int b3 = (1349149982); + int3x4 r3 = int3x4(1357872510, 1895528286, 1374318015, 2012964638, 1550483390, 1602123263, 1483666815, 1920624063, 1458464191, 2012116286, 1424685023, 1484416318); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void int3x4_operator_bitwise_or_scalar_wide() + { + int a0 = (1213433101); + int3x4 b0 = int3x4(1212928242, 1614462616, 936937728, 764766995, 306352095, 574719481, 1283571271, 2109131012, 979469710, 1348323481, 1407542578, 697517649); + int3x4 r0 = int3x4(1213978111, 1752940445, 2145094925, 1842867999, 1515425759, 1783858685, 1288945487, 2113391885, 2054391183, 1482673565, 1542972735, 1775486813); + TestUtils.AreEqual(a0 | b0, r0); + + int a1 = (1059093741); + int3x4 b1 = int3x4(627815046, 418822515, 83214352, 424663473, 447949225, 527022375, 1947148461, 305251437, 1254601325, 1752329425, 1592402684, 1587055329); + int3x4 r1 = int3x4(1064042223, 1073151487, 1073085693, 1064304125, 1068727789, 1063910895, 2133818605, 1060240621, 2145910509, 2138209533, 2146074365, 2142830317); + TestUtils.AreEqual(a1 | b1, r1); + + int a2 = (1088734150); + int3x4 b2 = int3x4(298563808, 2052547661, 582843231, 656983670, 1944993640, 1081208038, 829763560, 990961386, 547309556, 1307122961, 263229121, 1518227598); + int3x4 r2 = int3x4(1374682086, 2063067087, 1660812255, 1743570934, 1945042926, 1089859558, 1911943150, 2079645678, 1627375606, 1307434967, 1341444039, 1526649806); + TestUtils.AreEqual(a2 | b2, r2); + + int a3 = (1098359242); + int3x4 b3 = int3x4(997941952, 1075751132, 996271847, 623986648, 1091787263, 1548400620, 2022447724, 433714471, 963197960, 1639565037, 1287986616, 1326199854); + int3x4 r3 = int3x4(2071978954, 1098885598, 2071455727, 1702356954, 1098381823, 1568651246, 2046802926, 1509946863, 2038414794, 1644161007, 1308081658, 1333769710); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void int3x4_operator_bitwise_xor_wide_wide() + { + int3x4 a0 = int3x4(1556324760, 207002929, 1843444873, 1632079131, 1460334334, 1607815585, 220623650, 38668553, 47193340, 643663548, 1371932564, 94957188); + int3x4 b0 = int3x4(1054997548, 1523759632, 251164872, 110472397, 384031112, 1109163205, 535118981, 179106262, 1523031711, 1713313372, 1294118730, 520360641); + int3x4 r0 = int3x4(1646419380, 1451501345, 1662567489, 1741824470, 1105803126, 499723620, 314783655, 149092575, 1477935715, 1078104288, 484747486, 447544389); + TestUtils.AreEqual(a0 ^ b0, r0); + + int3x4 a1 = int3x4(700973621, 370621508, 2087573076, 351476570, 1340815927, 681577472, 314138777, 446857644, 1368661599, 1672499683, 1259759761, 2049102405); + int3x4 b1 = int3x4(1040688781, 1020757245, 1143954843, 1281933464, 175288469, 326874157, 1192052687, 1087083643, 1900865484, 1521193463, 569695524, 1622101483); + int3x4 r1 = int3x4(399484088, 717273273, 943885263, 1486609346, 1167690402, 1004255277, 1437869910, 1516836311, 551090579, 958119956, 1793242549, 445489070); + TestUtils.AreEqual(a1 ^ b1, r1); + + int3x4 a2 = int3x4(1972524935, 91962333, 1960780785, 1303778459, 960040360, 822786011, 2028027011, 170382968, 32554542, 1915830925, 2001025156, 2012451132); + int3x4 b2 = int3x4(1340735463, 546583617, 1034420616, 262206030, 1834125935, 802756092, 611321886, 316379491, 325882121, 45335181, 1859278043, 1002624300); + int3x4 r2 = int3x4(981182560, 636424092, 1232544377, 1108797141, 1416333255, 517186087, 1553020061, 419186459, 312225575, 1887600640, 429354079, 1278297104); + TestUtils.AreEqual(a2 ^ b2, r2); + + int3x4 a3 = int3x4(1076174067, 344651773, 1769102694, 1408084527, 1139070023, 1195715957, 1051992510, 1468636326, 1018993657, 1514317444, 369266676, 1206540279); + int3x4 b3 = int3x4(1704063552, 1618550727, 721247372, 131278097, 896003672, 746837613, 1952376600, 306395311, 419371442, 627496489, 1791585199, 757339713); + int3x4 r3 = int3x4(632614579, 1962141754, 1133445610, 1413386046, 1988311583, 1808202520, 1256900262, 1170908169, 608404043, 2133094573, 2093737051, 1791902134); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void int3x4_operator_bitwise_xor_wide_scalar() + { + int3x4 a0 = int3x4(2124666952, 177397845, 574879617, 1937385541, 1136545648, 213863690, 535061373, 289301586, 1305234431, 353786540, 1308626970, 1267729267); + int b0 = (493665894); + int3x4 r0 = int3x4(1674536494, 402546227, 1060063719, 1846973987, 1590882582, 299103084, 42523931, 206756404, 1352725913, 142271690, 1399631484, 1459404053); + TestUtils.AreEqual(a0 ^ b0, r0); + + int3x4 a1 = int3x4(125659640, 1730088797, 116862046, 375757978, 491079274, 191750702, 187129429, 967051293, 549951551, 653124416, 788984, 1479174924); + int b1 = (1315625690); + int3x4 r1 = int3x4(1226289954, 695588231, 1218311812, 1477396032, 1395629232, 1158101236, 1162708111, 2010043079, 1856848613, 1753692570, 1315361570, 373338582); + TestUtils.AreEqual(a1 ^ b1, r1); + + int3x4 a2 = int3x4(1680011736, 890841598, 293394300, 527727631, 529042816, 1382138962, 1206186973, 1059509471, 744733291, 64097148, 1814786305, 716239); + int b2 = (447453839); + int3x4 r2 = int3x4(2122935127, 800240497, 198659571, 98559616, 86185743, 1221222109, 1565485394, 630017616, 919085284, 427397619, 1988160398, 446789440); + TestUtils.AreEqual(a2 ^ b2, r2); + + int3x4 a3 = int3x4(476052372, 2058208914, 41260658, 1316660543, 2113008061, 256229982, 111578612, 1207271814, 2099944258, 1913013312, 870798185, 1771744425); + int b3 = (92561487); + int3x4 r3 = int3x4(433822683, 2133436125, 133297725, 1274987888, 2020970994, 180462097, 52620731, 1114759625, 2024733453, 2005017615, 912470822, 1813957862); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void int3x4_operator_bitwise_xor_scalar_wide() + { + int a0 = (1288453276); + int3x4 b0 = int3x4(1077599928, 884741329, 212164516, 1585020328, 152985454, 1775851275, 1416249064, 1309317737, 1773918217, 1509843030, 1206045972, 1154916424); + int3x4 r0 = int3x4(217506340, 2020616269, 1080648504, 313868596, 1171416050, 622160791, 413532788, 46573301, 628614293, 355622090, 187625864, 135961812); + TestUtils.AreEqual(a0 ^ b0, r0); + + int a1 = (1947871003); + int3x4 b1 = int3x4(1774252400, 1946113778, 1079717492, 290620937, 1382343363, 939045099, 1309568053, 221134131, 885841718, 612068188, 194068085, 1396957881); + int3x4 r1 = int3x4(500881003, 132477417, 876677487, 1699258642, 645842392, 1138923504, 974408494, 2033457704, 1087830061, 1348553799, 2139822446, 660194722); + TestUtils.AreEqual(a1 ^ b1, r1); + + int a2 = (573581481); + int3x4 b2 = int3x4(1813817520, 86594349, 2006985393, 1431761813, 905646837, 1522414781, 192882943, 714832744, 374210759, 215701593, 1573378082, 779254615); + int3x4 r2 = int3x4(1311539225, 655981444, 1435501080, 2003229500, 399194716, 2022579220, 693043286, 145445825, 880683118, 787181808, 2146955403, 205673470); + TestUtils.AreEqual(a2 ^ b2, r2); + + int a3 = (711527976); + int3x4 b3 = int3x4(710611783, 223429246, 593102399, 1444947259, 302938485, 684673240, 1417651941, 1426772271, 948720266, 177752267, 2005602645, 896851285); + int3x4 r3 = int3x4(3284335, 658000982, 154339351, 2085169939, 946304861, 44451568, 2115414221, 2137251591, 317021346, 552683235, 1575100285, 522048381); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void int3x4_operator_left_shift() + { + int3x4 a0 = int3x4(197771193, 622182602, 1283988958, 1327917304, 473415985, 432425717, 870301196, 2058433484, 1200694230, 1531607705, 1360008038, 1008296534); + int b0 = (1321149625); + int3x4 r0 = int3x4(1912602624, -1811939328, -1140850688, -268435456, 1644167168, -369098752, 402653184, -1744830464, -1409286144, 838860800, -872415232, -1409286144); + TestUtils.AreEqual(a0 << b0, r0); + + int3x4 a1 = int3x4(1447702302, 35667343, 1664454606, 2045594989, 2077023268, 592678686, 297755411, 1722762487, 1161625759, 37265945, 997793693, 1521705181); + int b1 = (1079614371); + int3x4 r1 = int3x4(-1303283472, 285338744, 430734960, -815109272, -563683040, 446462192, -1912924008, 897198008, 703071480, 298127560, -607585048, -711260440); + TestUtils.AreEqual(a1 << b1, r1); + + int3x4 a2 = int3x4(263886278, 2084190583, 230910816, 71403448, 481375728, 1176038816, 1382694875, 1824729613, 1535276688, 1581610518, 407677878, 1208958192); + int b2 = (221147365); + int3x4 r2 = int3x4(-145573696, -2025378080, -1200788480, -2010056960, -1775845888, -1021463552, 1296563040, -1738194528, 1884213760, -928070976, 160790208, 31956480); + TestUtils.AreEqual(a2 << b2, r2); + + int3x4 a3 = int3x4(740058147, 880835937, 2063772405, 430594634, 281771991, 1130057990, 1127968177, 1628217625, 979935914, 17663275, 956738326, 1996060114); + int b3 = (946058001); + int3x4 r3 = int3x4(-934936576, -87949312, 1441398784, -1265369088, -5373952, -1576271872, -614334464, 1110573056, 1163132928, 173408256, 1445724160, -341573632); + TestUtils.AreEqual(a3 << b3, r3); + } + + [TestCompiler] + public static void int3x4_operator_right_shift() + { + int3x4 a0 = int3x4(548167301, 1161338299, 1617625829, 1860731847, 713958715, 196552656, 770466193, 1265099998, 572763124, 506619530, 426807581, 2031319045); + int b0 = (1266801540); + int3x4 r0 = int3x4(34260456, 72583643, 101101614, 116295740, 44622419, 12284541, 48154137, 79068749, 35797695, 31663720, 26675473, 126957440); + TestUtils.AreEqual(a0 >> b0, r0); + + int3x4 a1 = int3x4(701927980, 569504877, 185593382, 1102123711, 334005460, 1624751550, 280138733, 1598620011, 1840564178, 736389149, 1279158873, 408822762); + int b1 = (917785020); + int3x4 r1 = int3x4(2, 2, 0, 4, 1, 6, 1, 5, 6, 2, 4, 1); + TestUtils.AreEqual(a1 >> b1, r1); + + int3x4 a2 = int3x4(763607760, 1568185874, 774126687, 1587054000, 600069797, 29576474, 1880981389, 352174824, 1164508476, 425441430, 186542511, 1099859381); + int b2 = (348013684); + int3x4 r2 = int3x4(728, 1495, 738, 1513, 572, 28, 1793, 335, 1110, 405, 177, 1048); + TestUtils.AreEqual(a2 >> b2, r2); + + int3x4 a3 = int3x4(1234295294, 761662151, 1254855819, 903402043, 1180315725, 182990778, 958706431, 1075621082, 1409488892, 1576738052, 700893981, 1435331003); + int b3 = (1028666766); + int3x4 r3 = int3x4(75335, 46488, 76590, 55139, 72040, 11168, 58514, 65650, 86028, 96236, 42779, 87605); + TestUtils.AreEqual(a3 >> b3, r3); + } + + [TestCompiler] + public static void int3x4_operator_bitwise_not() + { + int3x4 a0 = int3x4(1403358969, 831360921, 2088190243, 976721016, 878283189, 308994339, 1935567517, 1420884856, 472965491, 771711426, 627580960, 2061524024); + int3x4 r0 = int3x4(-1403358970, -831360922, -2088190244, -976721017, -878283190, -308994340, -1935567518, -1420884857, -472965492, -771711427, -627580961, -2061524025); + TestUtils.AreEqual(~a0, r0); + + int3x4 a1 = int3x4(753208488, 1303022493, 664744603, 1289372466, 1635981125, 1951018596, 1545651937, 717936457, 1284504687, 1342785385, 869629475, 2045854321); + int3x4 r1 = int3x4(-753208489, -1303022494, -664744604, -1289372467, -1635981126, -1951018597, -1545651938, -717936458, -1284504688, -1342785386, -869629476, -2045854322); + TestUtils.AreEqual(~a1, r1); + + int3x4 a2 = int3x4(1282546942, 1824824810, 1736570715, 508906058, 2060752880, 1867418756, 388530274, 695179852, 1766938039, 897923626, 1816190464, 1362906829); + int3x4 r2 = int3x4(-1282546943, -1824824811, -1736570716, -508906059, -2060752881, -1867418757, -388530275, -695179853, -1766938040, -897923627, -1816190465, -1362906830); + TestUtils.AreEqual(~a2, r2); + + int3x4 a3 = int3x4(1227946838, 189609278, 956441808, 2123488810, 1593014251, 19223061, 1722107954, 1636875694, 1914097392, 1382545027, 1285277010, 722020848); + int3x4 r3 = int3x4(-1227946839, -189609279, -956441809, -2123488811, -1593014252, -19223062, -1722107955, -1636875695, -1914097393, -1382545028, -1285277011, -722020849); + TestUtils.AreEqual(~a3, r3); + } + + + } +} diff --git a/package/Tests/Tests/Shared/TestInt3x4.gen.cs.meta b/package/Tests/Tests/Shared/TestInt3x4.gen.cs.meta new file mode 100755 index 000000000..281cb7b86 --- /dev/null +++ b/package/Tests/Tests/Shared/TestInt3x4.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f6cb6aa9b75ca25439dd64f10fe7d737 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/package/Tests/Tests/Shared/TestInt4.gen.cs b/package/Tests/Tests/Shared/TestInt4.gen.cs new file mode 100755 index 000000000..456e9b7e2 --- /dev/null +++ b/package/Tests/Tests/Shared/TestInt4.gen.cs @@ -0,0 +1,1353 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using NUnit.Framework; +using static Unity.Mathematics.math; +using Burst.Compiler.IL.Tests; + +namespace Unity.Mathematics.Tests +{ + [TestFixture] + public class TestInt4 + { + [TestCompiler] + public static void int4_zero() + { + TestUtils.AreEqual(int4.zero.x, 0); + TestUtils.AreEqual(int4.zero.y, 0); + TestUtils.AreEqual(int4.zero.z, 0); + TestUtils.AreEqual(int4.zero.w, 0); + } + + [TestCompiler] + public static void int4_constructor() + { + int4 a = new int4(1, 2, 3, 4); + TestUtils.AreEqual(a.x, 1); + TestUtils.AreEqual(a.y, 2); + TestUtils.AreEqual(a.z, 3); + TestUtils.AreEqual(a.w, 4); + } + + [TestCompiler] + public static void int4_scalar_constructor() + { + int4 a = new int4(17); + TestUtils.AreEqual(a.x, 17); + TestUtils.AreEqual(a.y, 17); + TestUtils.AreEqual(a.z, 17); + TestUtils.AreEqual(a.w, 17); + } + + [TestCompiler] + public static void int4_static_constructor() + { + int4 a = int4(1, 2, 3, 4); + TestUtils.AreEqual(a.x, 1); + TestUtils.AreEqual(a.y, 2); + TestUtils.AreEqual(a.z, 3); + TestUtils.AreEqual(a.w, 4); + } + + [TestCompiler] + public static void int4_static_scalar_constructor() + { + int4 a = int4(17); + TestUtils.AreEqual(a.x, 17); + TestUtils.AreEqual(a.y, 17); + TestUtils.AreEqual(a.z, 17); + TestUtils.AreEqual(a.w, 17); + } + + [TestCompiler] + public static void int4_operator_equal_wide_wide() + { + int4 a0 = int4(790229414, 970783976, 1428432738, 1578747135); + int4 b0 = int4(612337669, 1214209108, 2120643427, 295461214); + bool4 r0 = bool4(false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + int4 a1 = int4(1733797753, 2001507228, 1446876437, 1777406370); + int4 b1 = int4(1510890331, 1893316566, 921816149, 1834958575); + bool4 r1 = bool4(false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + int4 a2 = int4(1426387268, 1809275021, 1843770816, 1172185222); + int4 b2 = int4(1482011863, 2062852792, 226398742, 770290735); + bool4 r2 = bool4(false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + int4 a3 = int4(1469608940, 869874758, 458603090, 581282460); + int4 b3 = int4(36812057, 543224481, 1565350150, 1909926604); + bool4 r3 = bool4(false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void int4_operator_equal_wide_scalar() + { + int4 a0 = int4(1211464300, 1921862607, 508076684, 1249127920); + int b0 = (746972502); + bool4 r0 = bool4(false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + int4 a1 = int4(1394594555, 1733655277, 1884008277, 1682018538); + int b1 = (746862310); + bool4 r1 = bool4(false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + int4 a2 = int4(795585660, 927605411, 672785749, 1465584610); + int b2 = (936027116); + bool4 r2 = bool4(false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + int4 a3 = int4(585324157, 969511077, 442746747, 1772925698); + int b3 = (404448210); + bool4 r3 = bool4(false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void int4_operator_equal_scalar_wide() + { + int a0 = (1150044438); + int4 b0 = int4(233855098, 924242519, 1402948791, 601381975); + bool4 r0 = bool4(false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + int a1 = (2120518068); + int4 b1 = int4(629187703, 1971977031, 47183124, 1061805787); + bool4 r1 = bool4(false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + int a2 = (1009011238); + int4 b2 = int4(312511148, 1460673064, 737210539, 1737844479); + bool4 r2 = bool4(false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + int a3 = (1892405453); + int4 b3 = int4(2133024000, 455818693, 2003197687, 1276241219); + bool4 r3 = bool4(false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void int4_operator_not_equal_wide_wide() + { + int4 a0 = int4(1660932106, 982847023, 97046264, 1739517447); + int4 b0 = int4(107139049, 75478496, 2055495054, 358586687); + bool4 r0 = bool4(true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + int4 a1 = int4(1253499180, 1830584069, 1841470429, 1397841646); + int4 b1 = int4(942338347, 111564990, 113811950, 948912488); + bool4 r1 = bool4(true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + int4 a2 = int4(1770890135, 1906548631, 169082967, 2099271786); + int4 b2 = int4(1080084121, 1400504872, 1032134499, 1061123400); + bool4 r2 = bool4(true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + int4 a3 = int4(1909317609, 46519139, 1433204003, 931492669); + int4 b3 = int4(221862069, 858950046, 989094643, 2023070999); + bool4 r3 = bool4(true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void int4_operator_not_equal_wide_scalar() + { + int4 a0 = int4(747758183, 1033001286, 1439973882, 2138928797); + int b0 = (248693828); + bool4 r0 = bool4(true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + int4 a1 = int4(1197845089, 950170763, 238704450, 2105962247); + int b1 = (1432672459); + bool4 r1 = bool4(true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + int4 a2 = int4(727205263, 276313906, 2126300423, 791998981); + int b2 = (1640688041); + bool4 r2 = bool4(true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + int4 a3 = int4(2035077187, 1412347883, 1622176923, 768370497); + int b3 = (1171827730); + bool4 r3 = bool4(true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void int4_operator_not_equal_scalar_wide() + { + int a0 = (2076921066); + int4 b0 = int4(2037494727, 1989050616, 48833929, 1897435904); + bool4 r0 = bool4(true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + int a1 = (514354517); + int4 b1 = int4(1783749164, 364694471, 754315072, 124108032); + bool4 r1 = bool4(true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + int a2 = (1512967900); + int4 b2 = int4(1178825850, 1854793298, 50286949, 2100802631); + bool4 r2 = bool4(true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + int a3 = (1640811853); + int4 b3 = int4(82110247, 472172806, 266984506, 2003668365); + bool4 r3 = bool4(true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void int4_operator_less_wide_wide() + { + int4 a0 = int4(1182186063, 415538999, 1667335818, 1566618442); + int4 b0 = int4(524633529, 1032195686, 760723389, 1505751409); + bool4 r0 = bool4(false, true, false, false); + TestUtils.AreEqual(a0 < b0, r0); + + int4 a1 = int4(1166180837, 639095188, 1080836365, 771119973); + int4 b1 = int4(431962172, 1287906509, 1560084663, 1450178202); + bool4 r1 = bool4(false, true, true, true); + TestUtils.AreEqual(a1 < b1, r1); + + int4 a2 = int4(928263233, 789225474, 665243110, 1003542034); + int4 b2 = int4(2066166337, 1107069023, 1640077524, 2103263105); + bool4 r2 = bool4(true, true, true, true); + TestUtils.AreEqual(a2 < b2, r2); + + int4 a3 = int4(1032480172, 1961336172, 923379558, 21210619); + int4 b3 = int4(684229139, 1234033624, 1278743281, 1953079347); + bool4 r3 = bool4(false, false, true, true); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void int4_operator_less_wide_scalar() + { + int4 a0 = int4(608447185, 818840405, 869219329, 2080125385); + int b0 = (1491216667); + bool4 r0 = bool4(true, true, true, false); + TestUtils.AreEqual(a0 < b0, r0); + + int4 a1 = int4(1214500548, 1667165786, 1615392341, 840091491); + int b1 = (1361741203); + bool4 r1 = bool4(true, false, false, true); + TestUtils.AreEqual(a1 < b1, r1); + + int4 a2 = int4(469591900, 315321650, 930950514, 1100560246); + int b2 = (1247103789); + bool4 r2 = bool4(true, true, true, true); + TestUtils.AreEqual(a2 < b2, r2); + + int4 a3 = int4(933855388, 1127696709, 1286331950, 380753337); + int b3 = (908563901); + bool4 r3 = bool4(false, false, false, true); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void int4_operator_less_scalar_wide() + { + int a0 = (548436837); + int4 b0 = int4(282703327, 14370648, 1862117300, 1304793311); + bool4 r0 = bool4(false, false, true, true); + TestUtils.AreEqual(a0 < b0, r0); + + int a1 = (826073259); + int4 b1 = int4(988910157, 445132446, 1139670255, 111349251); + bool4 r1 = bool4(true, false, true, false); + TestUtils.AreEqual(a1 < b1, r1); + + int a2 = (1102440676); + int4 b2 = int4(112183144, 1594415311, 1890019295, 2098715503); + bool4 r2 = bool4(false, true, true, true); + TestUtils.AreEqual(a2 < b2, r2); + + int a3 = (608933527); + int4 b3 = int4(183989010, 1596056507, 1027318999, 146281093); + bool4 r3 = bool4(false, true, true, false); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void int4_operator_greater_wide_wide() + { + int4 a0 = int4(592884447, 2133928932, 918957182, 1284069471); + int4 b0 = int4(138737040, 192863971, 1700841444, 1044631301); + bool4 r0 = bool4(true, true, false, true); + TestUtils.AreEqual(a0 > b0, r0); + + int4 a1 = int4(194584707, 739120780, 241654068, 1340158550); + int4 b1 = int4(1391589821, 730837695, 253553987, 2078872742); + bool4 r1 = bool4(false, true, false, false); + TestUtils.AreEqual(a1 > b1, r1); + + int4 a2 = int4(2099542537, 1182623667, 1399607274, 789301637); + int4 b2 = int4(910845808, 976047676, 202633078, 1223618940); + bool4 r2 = bool4(true, true, true, false); + TestUtils.AreEqual(a2 > b2, r2); + + int4 a3 = int4(180400925, 594688333, 1877031463, 1360073500); + int4 b3 = int4(641600530, 1830470354, 1570701388, 1104256103); + bool4 r3 = bool4(false, false, true, true); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void int4_operator_greater_wide_scalar() + { + int4 a0 = int4(1097138316, 211763648, 1883002501, 56406996); + int b0 = (438688675); + bool4 r0 = bool4(true, false, true, false); + TestUtils.AreEqual(a0 > b0, r0); + + int4 a1 = int4(43662641, 1437755186, 1219010035, 2125058448); + int b1 = (1923456111); + bool4 r1 = bool4(false, false, false, true); + TestUtils.AreEqual(a1 > b1, r1); + + int4 a2 = int4(304028799, 48044515, 711945018, 1035679270); + int b2 = (893125636); + bool4 r2 = bool4(false, false, false, true); + TestUtils.AreEqual(a2 > b2, r2); + + int4 a3 = int4(577943770, 1016617211, 2063134811, 1577403353); + int b3 = (572743717); + bool4 r3 = bool4(true, true, true, true); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void int4_operator_greater_scalar_wide() + { + int a0 = (2024896938); + int4 b0 = int4(599356784, 185671342, 1932327391, 2025591013); + bool4 r0 = bool4(true, true, true, false); + TestUtils.AreEqual(a0 > b0, r0); + + int a1 = (1257191721); + int4 b1 = int4(1312388500, 1443698859, 779217735, 691047512); + bool4 r1 = bool4(false, false, true, true); + TestUtils.AreEqual(a1 > b1, r1); + + int a2 = (741776730); + int4 b2 = int4(732565983, 668302204, 1556466996, 858599525); + bool4 r2 = bool4(true, true, false, false); + TestUtils.AreEqual(a2 > b2, r2); + + int a3 = (1896917159); + int4 b3 = int4(701542098, 1052151621, 1023307544, 1435392907); + bool4 r3 = bool4(true, true, true, true); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void int4_operator_less_equal_wide_wide() + { + int4 a0 = int4(1577248162, 2043073061, 1688380407, 176431985); + int4 b0 = int4(903445031, 2108974565, 210822256, 1281704747); + bool4 r0 = bool4(false, true, false, true); + TestUtils.AreEqual(a0 <= b0, r0); + + int4 a1 = int4(223299035, 1502802140, 1691709825, 386789394); + int4 b1 = int4(453681718, 66138830, 1229799377, 1620922595); + bool4 r1 = bool4(true, false, false, true); + TestUtils.AreEqual(a1 <= b1, r1); + + int4 a2 = int4(117182003, 1665770435, 1958490731, 420032601); + int4 b2 = int4(1715833766, 1366430432, 13102000, 46919981); + bool4 r2 = bool4(true, false, false, false); + TestUtils.AreEqual(a2 <= b2, r2); + + int4 a3 = int4(1251092689, 2011681765, 749743684, 183784440); + int4 b3 = int4(486470891, 1709514236, 2145785285, 854254454); + bool4 r3 = bool4(false, false, true, true); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void int4_operator_less_equal_wide_scalar() + { + int4 a0 = int4(1722165358, 1219858357, 860410743, 411099660); + int b0 = (1688048545); + bool4 r0 = bool4(false, true, true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + int4 a1 = int4(348104022, 212084836, 58924407, 1459242706); + int b1 = (1963256951); + bool4 r1 = bool4(true, true, true, true); + TestUtils.AreEqual(a1 <= b1, r1); + + int4 a2 = int4(1745758438, 262559763, 690091301, 1806172431); + int b2 = (532949158); + bool4 r2 = bool4(false, true, false, false); + TestUtils.AreEqual(a2 <= b2, r2); + + int4 a3 = int4(2091514001, 1617221948, 2017733017, 804204255); + int b3 = (1857173043); + bool4 r3 = bool4(false, true, false, true); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void int4_operator_less_equal_scalar_wide() + { + int a0 = (1777585); + int4 b0 = int4(1181030049, 1787703989, 1729760948, 1816537388); + bool4 r0 = bool4(true, true, true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + int a1 = (1359786460); + int4 b1 = int4(874999193, 1678863148, 1711365839, 762067160); + bool4 r1 = bool4(false, true, true, false); + TestUtils.AreEqual(a1 <= b1, r1); + + int a2 = (11953554); + int4 b2 = int4(1131583906, 1175393186, 1293698493, 48893340); + bool4 r2 = bool4(true, true, true, true); + TestUtils.AreEqual(a2 <= b2, r2); + + int a3 = (66196247); + int4 b3 = int4(1958607116, 1576473309, 861890786, 478252419); + bool4 r3 = bool4(true, true, true, true); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void int4_operator_greater_equal_wide_wide() + { + int4 a0 = int4(263000030, 744235661, 1893760267, 237248); + int4 b0 = int4(1395535146, 1178373944, 1237373760, 1364855321); + bool4 r0 = bool4(false, false, true, false); + TestUtils.AreEqual(a0 >= b0, r0); + + int4 a1 = int4(1062370984, 1676977687, 816766880, 1089431546); + int4 b1 = int4(600811864, 362060472, 290870624, 1839067862); + bool4 r1 = bool4(true, true, true, false); + TestUtils.AreEqual(a1 >= b1, r1); + + int4 a2 = int4(1394493730, 1176473380, 1193988637, 1703862455); + int4 b2 = int4(396958580, 1336888643, 1019684398, 1697684196); + bool4 r2 = bool4(true, false, true, true); + TestUtils.AreEqual(a2 >= b2, r2); + + int4 a3 = int4(1806186947, 1253571980, 589397635, 1951842887); + int4 b3 = int4(1227300220, 2044269675, 1898323839, 874509380); + bool4 r3 = bool4(true, false, false, true); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void int4_operator_greater_equal_wide_scalar() + { + int4 a0 = int4(2112791350, 1043657935, 101764761, 1529909067); + int b0 = (1470533736); + bool4 r0 = bool4(true, false, false, true); + TestUtils.AreEqual(a0 >= b0, r0); + + int4 a1 = int4(556026890, 1186600258, 815093894, 609211196); + int b1 = (281734132); + bool4 r1 = bool4(true, true, true, true); + TestUtils.AreEqual(a1 >= b1, r1); + + int4 a2 = int4(1604309397, 244604867, 1419295004, 471843809); + int b2 = (829548642); + bool4 r2 = bool4(true, false, true, false); + TestUtils.AreEqual(a2 >= b2, r2); + + int4 a3 = int4(1819986195, 1646290021, 196833647, 1596738181); + int b3 = (1460027917); + bool4 r3 = bool4(true, true, false, true); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void int4_operator_greater_equal_scalar_wide() + { + int a0 = (1525542481); + int4 b0 = int4(1503244746, 861711266, 817773856, 925984572); + bool4 r0 = bool4(true, true, true, true); + TestUtils.AreEqual(a0 >= b0, r0); + + int a1 = (571221723); + int4 b1 = int4(683686810, 118252990, 1653952090, 1240253990); + bool4 r1 = bool4(false, true, false, false); + TestUtils.AreEqual(a1 >= b1, r1); + + int a2 = (1947039008); + int4 b2 = int4(1869136019, 152012637, 1214546726, 917376832); + bool4 r2 = bool4(true, true, true, true); + TestUtils.AreEqual(a2 >= b2, r2); + + int a3 = (303549425); + int4 b3 = int4(2111728811, 945321577, 173706579, 625318949); + bool4 r3 = bool4(false, false, true, false); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void int4_operator_add_wide_wide() + { + int4 a0 = int4(2049228671, 1658660009, 491719392, 937013355); + int4 b0 = int4(2088751567, 645762023, 306868786, 4360271); + int4 r0 = int4(-156987058, -1990545264, 798588178, 941373626); + TestUtils.AreEqual(a0 + b0, r0); + + int4 a1 = int4(81108663, 1063894558, 86954702, 843159721); + int4 b1 = int4(506047997, 2094559874, 1634712736, 1601474440); + int4 r1 = int4(587156660, -1136512864, 1721667438, -1850333135); + TestUtils.AreEqual(a1 + b1, r1); + + int4 a2 = int4(698977704, 192867135, 1683407172, 137301303); + int4 b2 = int4(1586485231, 908746788, 1812370320, 1247342357); + int4 r2 = int4(-2009504361, 1101613923, -799189804, 1384643660); + TestUtils.AreEqual(a2 + b2, r2); + + int4 a3 = int4(2103582820, 526139155, 447937230, 2127411006); + int4 b3 = int4(2043773873, 223363428, 175115707, 985928617); + int4 r3 = int4(-147610603, 749502583, 623052937, -1181627673); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void int4_operator_add_wide_scalar() + { + int4 a0 = int4(2038218457, 134923711, 875689667, 1338884463); + int b0 = (2124409227); + int4 r0 = int4(-132339612, -2035634358, -1294868402, -831673606); + TestUtils.AreEqual(a0 + b0, r0); + + int4 a1 = int4(997710928, 1067888129, 70433301, 2003021861); + int b1 = (340490871); + int4 r1 = int4(1338201799, 1408379000, 410924172, -1951454564); + TestUtils.AreEqual(a1 + b1, r1); + + int4 a2 = int4(1635971971, 85446202, 1068152966, 1239387100); + int b2 = (1160398286); + int4 r2 = int4(-1498597039, 1245844488, -2066416044, -1895181910); + TestUtils.AreEqual(a2 + b2, r2); + + int4 a3 = int4(1497676888, 1095438654, 756559204, 1818718931); + int b3 = (1727477485); + int4 r3 = int4(-1069812923, -1472051157, -1810930607, -748770880); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void int4_operator_add_scalar_wide() + { + int a0 = (391092078); + int4 b0 = int4(519908870, 851424292, 328314822, 135622204); + int4 r0 = int4(911000948, 1242516370, 719406900, 526714282); + TestUtils.AreEqual(a0 + b0, r0); + + int a1 = (740923360); + int4 b1 = int4(655394201, 1451896269, 1781697072, 996031825); + int4 r1 = int4(1396317561, -2102147667, -1772346864, 1736955185); + TestUtils.AreEqual(a1 + b1, r1); + + int a2 = (1557774949); + int4 b2 = int4(779774940, 1111541302, 783046445, 1130163944); + int4 r2 = int4(-1957417407, -1625651045, -1954145902, -1607028403); + TestUtils.AreEqual(a2 + b2, r2); + + int a3 = (288279584); + int4 b3 = int4(1397683861, 1636583489, 673263339, 1469300874); + int4 r3 = int4(1685963445, 1924863073, 961542923, 1757580458); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void int4_operator_sub_wide_wide() + { + int4 a0 = int4(1353441118, 797269833, 659988112, 56022121); + int4 b0 = int4(1332656812, 1827794007, 972557431, 2078233689); + int4 r0 = int4(20784306, -1030524174, -312569319, -2022211568); + TestUtils.AreEqual(a0 - b0, r0); + + int4 a1 = int4(365847472, 2062899435, 1380988474, 799885138); + int4 b1 = int4(1508184327, 1372307701, 810327977, 936799885); + int4 r1 = int4(-1142336855, 690591734, 570660497, -136914747); + TestUtils.AreEqual(a1 - b1, r1); + + int4 a2 = int4(1306058185, 579775276, 1239163824, 344591081); + int4 b2 = int4(71562303, 1418723328, 1971342989, 1226053395); + int4 r2 = int4(1234495882, -838948052, -732179165, -881462314); + TestUtils.AreEqual(a2 - b2, r2); + + int4 a3 = int4(86359575, 1049709943, 721529513, 1767221271); + int4 b3 = int4(136565478, 1979903295, 600719425, 837912956); + int4 r3 = int4(-50205903, -930193352, 120810088, 929308315); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void int4_operator_sub_wide_scalar() + { + int4 a0 = int4(1176369558, 1934521195, 309452150, 1417634074); + int b0 = (462232403); + int4 r0 = int4(714137155, 1472288792, -152780253, 955401671); + TestUtils.AreEqual(a0 - b0, r0); + + int4 a1 = int4(108910717, 1502312334, 1451794815, 281174200); + int b1 = (1306356714); + int4 r1 = int4(-1197445997, 195955620, 145438101, -1025182514); + TestUtils.AreEqual(a1 - b1, r1); + + int4 a2 = int4(87530840, 2041593336, 557239990, 1119051448); + int b2 = (1913724431); + int4 r2 = int4(-1826193591, 127868905, -1356484441, -794672983); + TestUtils.AreEqual(a2 - b2, r2); + + int4 a3 = int4(1590376732, 816382635, 815920639, 1829033117); + int b3 = (819090189); + int4 r3 = int4(771286543, -2707554, -3169550, 1009942928); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void int4_operator_sub_scalar_wide() + { + int a0 = (1691534405); + int4 b0 = int4(2022393810, 1612688515, 496689713, 887037586); + int4 r0 = int4(-330859405, 78845890, 1194844692, 804496819); + TestUtils.AreEqual(a0 - b0, r0); + + int a1 = (2097630964); + int4 b1 = int4(374934538, 939035482, 935242277, 1789300421); + int4 r1 = int4(1722696426, 1158595482, 1162388687, 308330543); + TestUtils.AreEqual(a1 - b1, r1); + + int a2 = (264712893); + int4 b2 = int4(1231856067, 1818112748, 1428436109, 1258745460); + int4 r2 = int4(-967143174, -1553399855, -1163723216, -994032567); + TestUtils.AreEqual(a2 - b2, r2); + + int a3 = (1077380396); + int4 b3 = int4(1330722719, 518111829, 967128529, 344666254); + int4 r3 = int4(-253342323, 559268567, 110251867, 732714142); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void int4_operator_mul_wide_wide() + { + int4 a0 = int4(245827027, 208934650, 1019478917, 568231809); + int4 b0 = int4(759663997, 350129201, 477450108, 1635735015); + int4 r0 = int4(-632811769, 1402281434, 332447596, -1932977561); + TestUtils.AreEqual(a0 * b0, r0); + + int4 a1 = int4(877289039, 1585782440, 2111178729, 1186019069); + int4 b1 = int4(388710278, 757722665, 1509388321, 1841703980); + int4 r1 = int4(-1670918566, 1455036648, 2128344329, -594088068); + TestUtils.AreEqual(a1 * b1, r1); + + int4 a2 = int4(571481445, 1570087048, 629447153, 619383734); + int4 b2 = int4(1826369331, 1524322467, 1605207974, 428419155); + int4 r2 = int4(-1654168033, 2093463192, -1207506618, -1133560830); + TestUtils.AreEqual(a2 * b2, r2); + + int4 a3 = int4(2055121568, 700402816, 263414349, 187830569); + int4 b3 = int4(1460605791, 1968043860, 771161742, 2037340417); + int4 r3 = int4(990589280, -938173952, -1341723466, 1156600361); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void int4_operator_mul_wide_scalar() + { + int4 a0 = int4(1762033447, 465343930, 1570757881, 1326409563); + int b0 = (1476837906); + int4 r0 = int4(-1313177922, 1326807828, -2138555518, -276153754); + TestUtils.AreEqual(a0 * b0, r0); + + int4 a1 = int4(1824319147, 72749215, 154616909, 975743632); + int b1 = (1356578909); + int4 r1 = int4(-236385249, 130042307, 1244434425, -1981680048); + TestUtils.AreEqual(a1 * b1, r1); + + int4 a2 = int4(573770299, 971327747, 1818877398, 1324050764); + int b2 = (1958912969); + int4 r2 = int4(-699623085, 583613531, -1685426426, 377032876); + TestUtils.AreEqual(a2 * b2, r2); + + int4 a3 = int4(660611671, 391009467, 1186856590, 890343818); + int b3 = (1279757657); + int4 r3 = int4(-42542273, 1120105475, -22825634, 1972017914); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void int4_operator_mul_scalar_wide() + { + int a0 = (99541948); + int4 b0 = int4(1764461774, 657072478, 1459784358, 1610646683); + int4 r0 = int4(-950398648, -102049016, 1260585960, 1158730452); + TestUtils.AreEqual(a0 * b0, r0); + + int a1 = (1632058826); + int4 b1 = int4(868441654, 1408757883, 335917146, 2105124483); + int4 r1 = int4(-57330532, -1559359474, 712546564, -805332386); + TestUtils.AreEqual(a1 * b1, r1); + + int a2 = (1178393968); + int4 b2 = int4(1963904348, 1409533767, 243286231, 1336308795); + int4 r2 = int4(1196573760, 592673296, 209320208, -352466736); + TestUtils.AreEqual(a2 * b2, r2); + + int a3 = (517963367); + int4 b3 = int4(1733623488, 459880225, 994616533, 1420531535); + int4 r3 = int4(-774570176, -1271501753, 652617651, -1789672759); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void int4_operator_div_wide_wide() + { + int4 a0 = int4(1590198532, 507812502, 126627032, 1058247011); + int4 b0 = int4(1434703236, 911965201, 390415521, 128746927); + int4 r0 = int4(1, 0, 0, 8); + TestUtils.AreEqual(a0 / b0, r0); + + int4 a1 = int4(427387861, 290676154, 1829594484, 1127868739); + int4 b1 = int4(525835375, 816946613, 878264647, 146789678); + int4 r1 = int4(0, 0, 2, 7); + TestUtils.AreEqual(a1 / b1, r1); + + int4 a2 = int4(499016351, 1341209632, 134906097, 785470242); + int4 b2 = int4(2089524057, 254213018, 1916850021, 1737806518); + int4 r2 = int4(0, 5, 0, 0); + TestUtils.AreEqual(a2 / b2, r2); + + int4 a3 = int4(788249865, 1099825433, 1552968283, 1822367139); + int4 b3 = int4(1906634983, 437754923, 825037958, 902508708); + int4 r3 = int4(0, 2, 1, 2); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void int4_operator_div_wide_scalar() + { + int4 a0 = int4(560951562, 1218680769, 375341724, 1613542090); + int b0 = (947861580); + int4 r0 = int4(0, 1, 0, 1); + TestUtils.AreEqual(a0 / b0, r0); + + int4 a1 = int4(1919409166, 1349573078, 524526253, 341995568); + int b1 = (1397425408); + int4 r1 = int4(1, 0, 0, 0); + TestUtils.AreEqual(a1 / b1, r1); + + int4 a2 = int4(495895326, 1676971657, 2131487088, 2105094094); + int b2 = (1515313790); + int4 r2 = int4(0, 1, 1, 1); + TestUtils.AreEqual(a2 / b2, r2); + + int4 a3 = int4(1017891310, 1646044372, 1447236569, 107215658); + int b3 = (542666029); + int4 r3 = int4(1, 3, 2, 0); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void int4_operator_div_scalar_wide() + { + int a0 = (1161272038); + int4 b0 = int4(187325733, 1594107378, 2016183849, 1589343709); + int4 r0 = int4(6, 0, 0, 0); + TestUtils.AreEqual(a0 / b0, r0); + + int a1 = (388768753); + int4 b1 = int4(1417077283, 1773486938, 1154044032, 81831373); + int4 r1 = int4(0, 0, 0, 4); + TestUtils.AreEqual(a1 / b1, r1); + + int a2 = (1476877645); + int4 b2 = int4(653688843, 45756703, 631027637, 396671391); + int4 r2 = int4(2, 32, 2, 3); + TestUtils.AreEqual(a2 / b2, r2); + + int a3 = (784365696); + int4 b3 = int4(1250594097, 1818363859, 1653451772, 270557729); + int4 r3 = int4(0, 0, 0, 2); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void int4_operator_mod_wide_wide() + { + int4 a0 = int4(146150818, 1846543305, 1071447756, 308965362); + int4 b0 = int4(983050390, 771341152, 942375212, 367361754); + int4 r0 = int4(146150818, 303861001, 129072544, 308965362); + TestUtils.AreEqual(a0 % b0, r0); + + int4 a1 = int4(659881575, 1002365460, 861198439, 1510617532); + int4 b1 = int4(749500619, 750718852, 2095151755, 88438806); + int4 r1 = int4(659881575, 251646608, 861198439, 7157830); + TestUtils.AreEqual(a1 % b1, r1); + + int4 a2 = int4(778525078, 1458458044, 101987897, 1249565173); + int4 b2 = int4(769227442, 647214624, 1026513788, 1544950956); + int4 r2 = int4(9297636, 164028796, 101987897, 1249565173); + TestUtils.AreEqual(a2 % b2, r2); + + int4 a3 = int4(938026607, 1692541775, 1518877124, 1806965510); + int4 b3 = int4(160166322, 1099108075, 1158422232, 1798905209); + int4 r3 = int4(137194997, 593433700, 360454892, 8060301); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void int4_operator_mod_wide_scalar() + { + int4 a0 = int4(164800505, 1062177828, 1898749675, 1701653318); + int b0 = (883951171); + int4 r0 = int4(164800505, 178226657, 130847333, 817702147); + TestUtils.AreEqual(a0 % b0, r0); + + int4 a1 = int4(820393245, 128329633, 1464010899, 896587769); + int b1 = (19002208); + int4 r1 = int4(3298301, 14316385, 840883, 3483993); + TestUtils.AreEqual(a1 % b1, r1); + + int4 a2 = int4(405208598, 959236935, 712321026, 172564850); + int b2 = (1982762194); + int4 r2 = int4(405208598, 959236935, 712321026, 172564850); + TestUtils.AreEqual(a2 % b2, r2); + + int4 a3 = int4(1540068445, 1607489717, 165478511, 647846716); + int b3 = (1085897743); + int4 r3 = int4(454170702, 521591974, 165478511, 647846716); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void int4_operator_mod_scalar_wide() + { + int a0 = (242383789); + int4 b0 = int4(740000543, 1556450291, 1104736385, 437976569); + int4 r0 = int4(242383789, 242383789, 242383789, 242383789); + TestUtils.AreEqual(a0 % b0, r0); + + int a1 = (1911837205); + int4 b1 = int4(1507212038, 1906405167, 247693265, 293460573); + int4 r1 = int4(404625167, 5432038, 177984350, 151073767); + TestUtils.AreEqual(a1 % b1, r1); + + int a2 = (1495295166); + int4 b2 = int4(873323603, 530681233, 1298102643, 2057984657); + int4 r2 = int4(621971563, 433932700, 197192523, 1495295166); + TestUtils.AreEqual(a2 % b2, r2); + + int a3 = (1000742091); + int4 b3 = int4(1461372131, 1859742342, 797184687, 821888842); + int4 r3 = int4(1000742091, 1000742091, 203557404, 178853249); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void int4_operator_plus() + { + int4 a0 = int4(1643476803, 907898539, 379615839, 1140483021); + int4 r0 = int4(1643476803, 907898539, 379615839, 1140483021); + TestUtils.AreEqual(+a0, r0); + + int4 a1 = int4(1735287433, 1472881565, 339091479, 401565897); + int4 r1 = int4(1735287433, 1472881565, 339091479, 401565897); + TestUtils.AreEqual(+a1, r1); + + int4 a2 = int4(1287765427, 174532915, 1864850812, 1566098441); + int4 r2 = int4(1287765427, 174532915, 1864850812, 1566098441); + TestUtils.AreEqual(+a2, r2); + + int4 a3 = int4(1145639744, 2049663954, 1723005749, 409076474); + int4 r3 = int4(1145639744, 2049663954, 1723005749, 409076474); + TestUtils.AreEqual(+a3, r3); + } + + [TestCompiler] + public static void int4_operator_neg() + { + int4 a0 = int4(1955022112, 662160019, 370300775, 2141283773); + int4 r0 = int4(-1955022112, -662160019, -370300775, -2141283773); + TestUtils.AreEqual(-a0, r0); + + int4 a1 = int4(1004505619, 33894270, 505708349, 1115028238); + int4 r1 = int4(-1004505619, -33894270, -505708349, -1115028238); + TestUtils.AreEqual(-a1, r1); + + int4 a2 = int4(1636274969, 1542206286, 213087293, 243937487); + int4 r2 = int4(-1636274969, -1542206286, -213087293, -243937487); + TestUtils.AreEqual(-a2, r2); + + int4 a3 = int4(341522275, 574159094, 1687250035, 2057919693); + int4 r3 = int4(-341522275, -574159094, -1687250035, -2057919693); + TestUtils.AreEqual(-a3, r3); + } + + [TestCompiler] + public static void int4_operator_prefix_inc() + { + int4 a0 = int4(864455342, 2035793213, 1275443862, 971919915); + int4 r0 = int4(864455343, 2035793214, 1275443863, 971919916); + TestUtils.AreEqual(++a0, r0); + + int4 a1 = int4(411610189, 395072276, 115573442, 913293639); + int4 r1 = int4(411610190, 395072277, 115573443, 913293640); + TestUtils.AreEqual(++a1, r1); + + int4 a2 = int4(432884105, 1385544935, 1835605516, 831396561); + int4 r2 = int4(432884106, 1385544936, 1835605517, 831396562); + TestUtils.AreEqual(++a2, r2); + + int4 a3 = int4(388229350, 1786514683, 993189311, 752093909); + int4 r3 = int4(388229351, 1786514684, 993189312, 752093910); + TestUtils.AreEqual(++a3, r3); + } + + [TestCompiler] + public static void int4_operator_postfix_inc() + { + int4 a0 = int4(1751003569, 2063707595, 1500486291, 969189211); + int4 r0 = int4(1751003569, 2063707595, 1500486291, 969189211); + TestUtils.AreEqual(a0++, r0); + + int4 a1 = int4(1007848192, 1643023524, 1190630527, 1396179607); + int4 r1 = int4(1007848192, 1643023524, 1190630527, 1396179607); + TestUtils.AreEqual(a1++, r1); + + int4 a2 = int4(708474528, 1524860667, 1408994706, 375284401); + int4 r2 = int4(708474528, 1524860667, 1408994706, 375284401); + TestUtils.AreEqual(a2++, r2); + + int4 a3 = int4(1580130369, 717006530, 506142468, 732199129); + int4 r3 = int4(1580130369, 717006530, 506142468, 732199129); + TestUtils.AreEqual(a3++, r3); + } + + [TestCompiler] + public static void int4_operator_prefix_dec() + { + int4 a0 = int4(200904609, 871077500, 968578728, 638967721); + int4 r0 = int4(200904608, 871077499, 968578727, 638967720); + TestUtils.AreEqual(--a0, r0); + + int4 a1 = int4(1995396216, 1782514098, 1589827826, 1434377580); + int4 r1 = int4(1995396215, 1782514097, 1589827825, 1434377579); + TestUtils.AreEqual(--a1, r1); + + int4 a2 = int4(596759698, 1758478358, 1914114460, 71237375); + int4 r2 = int4(596759697, 1758478357, 1914114459, 71237374); + TestUtils.AreEqual(--a2, r2); + + int4 a3 = int4(389120307, 1310293956, 356565557, 18299409); + int4 r3 = int4(389120306, 1310293955, 356565556, 18299408); + TestUtils.AreEqual(--a3, r3); + } + + [TestCompiler] + public static void int4_operator_postfix_dec() + { + int4 a0 = int4(283970262, 1109329936, 1073216143, 649439137); + int4 r0 = int4(283970262, 1109329936, 1073216143, 649439137); + TestUtils.AreEqual(a0--, r0); + + int4 a1 = int4(1932646215, 484207852, 524156737, 691209285); + int4 r1 = int4(1932646215, 484207852, 524156737, 691209285); + TestUtils.AreEqual(a1--, r1); + + int4 a2 = int4(2017728859, 377162390, 526366486, 1504625034); + int4 r2 = int4(2017728859, 377162390, 526366486, 1504625034); + TestUtils.AreEqual(a2--, r2); + + int4 a3 = int4(590919177, 1867810045, 2095777993, 670715645); + int4 r3 = int4(590919177, 1867810045, 2095777993, 670715645); + TestUtils.AreEqual(a3--, r3); + } + + [TestCompiler] + public static void int4_operator_bitwise_and_wide_wide() + { + int4 a0 = int4(779935043, 1097962163, 1939593304, 800599247); + int4 b0 = int4(307705143, 1710882162, 866836769, 532490608); + int4 r0 = int4(39064835, 1097961522, 864731136, 263727168); + TestUtils.AreEqual(a0 & b0, r0); + + int4 a1 = int4(952140918, 782792558, 1608557706, 396446406); + int4 b1 = int4(679371720, 1794035877, 1439832202, 519529812); + int4 r1 = int4(675283008, 715673636, 1438646410, 379666500); + TestUtils.AreEqual(a1 & b1, r1); + + int4 a2 = int4(2039894114, 1286974642, 442394124, 1759739564); + int4 b2 = int4(23633139, 1209152681, 646737179, 1255867027); + int4 r2 = int4(16781410, 1209017504, 34366472, 1220739712); + TestUtils.AreEqual(a2 & b2, r2); + + int4 a3 = int4(233435438, 665207770, 1942050241, 1022352952); + int4 b3 = int4(1900854122, 413173763, 1409138251, 2087190272); + int4 r3 = int4(21541162, 10485762, 1405162561, 1013440000); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void int4_operator_bitwise_and_wide_scalar() + { + int4 a0 = int4(443615469, 490057985, 2042441263, 1524760558); + int b0 = (93423598); + int4 r0 = int4(1114348, 85033216, 26281518, 8488942); + TestUtils.AreEqual(a0 & b0, r0); + + int4 a1 = int4(1405175110, 1941875181, 1236735839, 1365509729); + int b1 = (510212004); + int4 r1 = int4(306251012, 304619940, 136386308, 274728480); + TestUtils.AreEqual(a1 & b1, r1); + + int4 a2 = int4(428270198, 650270920, 1249238550, 814629680); + int b2 = (607982857); + int4 r2 = int4(262144, 603983880, 3478528, 537657600); + TestUtils.AreEqual(a2 & b2, r2); + + int4 a3 = int4(1862276471, 861733033, 1408932942, 957693145); + int b3 = (143502472); + int4 r3 = int4(134218752, 852104, 8948744, 134556808); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void int4_operator_bitwise_and_scalar_wide() + { + int a0 = (1144543590); + int4 b0 = int4(420346723, 562416448, 1393127318, 1560699552); + int4 r0 = int4(547170, 18752, 1074284806, 1140867104); + TestUtils.AreEqual(a0 & b0, r0); + + int a1 = (851218057); + int4 b1 = int4(703880958, 1159378889, 2031211279, 1089518981); + int4 r1 = int4(548671112, 1607305, 806388233, 11570305); + TestUtils.AreEqual(a1 & b1, r1); + + int a2 = (270607307); + int4 b2 = int4(1349288930, 520199596, 1763483957, 1248975349); + int4 r2 = int4(270533570, 268501384, 8449, 2163137); + TestUtils.AreEqual(a2 & b2, r2); + + int a3 = (236938635); + int4 b3 = int4(185023291, 1085233038, 1845693112, 946052961); + int4 r3 = int4(168239371, 1000842, 235077768, 134415617); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void int4_operator_bitwise_or_wide_wide() + { + int4 a0 = int4(1731159103, 659068416, 382702471, 1821032196); + int4 b0 = int4(1583847161, 692672727, 1161585489, 1756207130); + int4 r0 = int4(2138044159, 793370327, 1476391895, 1823457054); + TestUtils.AreEqual(a0 | b0, r0); + + int4 a1 = int4(1565773438, 1004000514, 948501377, 600951835); + int4 b1 = int4(1321374429, 1287357212, 2075767170, 1273513430); + int4 r1 = int4(1607720703, 2147473182, 2075786115, 1811533279); + TestUtils.AreEqual(a1 | b1, r1); + + int4 a2 = int4(669346222, 396691477, 2108560248, 2117522137); + int4 b2 = int4(1610830169, 1316929125, 511625048, 573925879); + int4 r2 = int4(1743223295, 1610595957, 2147407736, 2117598207); + TestUtils.AreEqual(a2 | b2, r2); + + int4 a3 = int4(330307355, 818676817, 1774459567, 1117506257); + int4 b3 = int4(1502255628, 1841676448, 1682928938, 1115131952); + int4 r3 = int4(1538957087, 2110637297, 1842315183, 1124063985); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void int4_operator_bitwise_or_wide_scalar() + { + int4 a0 = int4(961259683, 471103264, 1733389229, 1591585258); + int b0 = (1666102508); + int4 r0 = int4(2068823279, 2136930284, 1734344685, 2145369582); + TestUtils.AreEqual(a0 | b0, r0); + + int4 a1 = int4(386953869, 1048929715, 1814263250, 860336789); + int b1 = (1148351449); + int4 r1 = int4(1467118557, 2130147323, 1819506651, 2004349917); + TestUtils.AreEqual(a1 | b1, r1); + + int4 a2 = int4(1637162093, 774029856, 879300408, 1179087439); + int b2 = (1227888278); + int4 r2 = int4(1773477631, 1865602742, 2105089982, 1333229279); + TestUtils.AreEqual(a2 | b2, r2); + + int4 a3 = int4(797240690, 46921989, 1980838747, 284225881); + int b3 = (1977614655); + int4 r3 = int4(2145709439, 2011953471, 2012296063, 1978724735); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void int4_operator_bitwise_or_scalar_wide() + { + int a0 = (1213433101); + int4 b0 = int4(1212928242, 1614462616, 936937728, 764766995); + int4 r0 = int4(1213978111, 1752940445, 2145094925, 1842867999); + TestUtils.AreEqual(a0 | b0, r0); + + int a1 = (306352095); + int4 b1 = int4(574719481, 1283571271, 2109131012, 979469710); + int4 r1 = int4(843288575, 1589886943, 2146881503, 979603423); + TestUtils.AreEqual(a1 | b1, r1); + + int a2 = (1348323481); + int4 b2 = int4(1407542578, 697517649, 1059093741, 627815046); + int4 r2 = int4(1409150395, 2044710617, 2138963197, 1971321503); + TestUtils.AreEqual(a2 | b2, r2); + + int a3 = (418822515); + int4 b3 = int4(83214352, 424663473, 447949225, 527022375); + int4 r3 = int4(486013299, 436206067, 452442619, 536852855); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void int4_operator_bitwise_xor_wide_wide() + { + int4 a0 = int4(1556324760, 207002929, 1843444873, 1632079131); + int4 b0 = int4(1054997548, 1523759632, 251164872, 110472397); + int4 r0 = int4(1646419380, 1451501345, 1662567489, 1741824470); + TestUtils.AreEqual(a0 ^ b0, r0); + + int4 a1 = int4(1460334334, 1607815585, 220623650, 38668553); + int4 b1 = int4(384031112, 1109163205, 535118981, 179106262); + int4 r1 = int4(1105803126, 499723620, 314783655, 149092575); + TestUtils.AreEqual(a1 ^ b1, r1); + + int4 a2 = int4(47193340, 643663548, 1371932564, 94957188); + int4 b2 = int4(1523031711, 1713313372, 1294118730, 520360641); + int4 r2 = int4(1477935715, 1078104288, 484747486, 447544389); + TestUtils.AreEqual(a2 ^ b2, r2); + + int4 a3 = int4(700973621, 370621508, 2087573076, 351476570); + int4 b3 = int4(1040688781, 1020757245, 1143954843, 1281933464); + int4 r3 = int4(399484088, 717273273, 943885263, 1486609346); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void int4_operator_bitwise_xor_wide_scalar() + { + int4 a0 = int4(2124666952, 177397845, 574879617, 1937385541); + int b0 = (493665894); + int4 r0 = int4(1674536494, 402546227, 1060063719, 1846973987); + TestUtils.AreEqual(a0 ^ b0, r0); + + int4 a1 = int4(1136545648, 535061373, 289301586, 1305234431); + int b1 = (213863690); + int4 r1 = int4(1325466234, 324742775, 495003992, 1098057461); + TestUtils.AreEqual(a1 ^ b1, r1); + + int4 a2 = int4(353786540, 1267729267, 125659640, 1315625690); + int b2 = (1308626970); + int4 r2 = int4(1528187574, 93328233, 1232959970, 6998720); + TestUtils.AreEqual(a2 ^ b2, r2); + + int4 a3 = int4(1730088797, 375757978, 491079274, 191750702); + int b3 = (116862046); + int4 r3 = int4(1642603267, 278048964, 464677428, 228249200); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void int4_operator_bitwise_xor_scalar_wide() + { + int a0 = (1288453276); + int4 b0 = int4(1077599928, 884741329, 212164516, 1585020328); + int4 r0 = int4(217506340, 2020616269, 1080648504, 313868596); + TestUtils.AreEqual(a0 ^ b0, r0); + + int a1 = (152985454); + int4 b1 = int4(1775851275, 1416249064, 1309317737, 1773918217); + int4 r1 = int4(1623656549, 1567908230, 1192543495, 1621460839); + TestUtils.AreEqual(a1 ^ b1, r1); + + int a2 = (1509843030); + int4 b2 = int4(1206045972, 1154916424, 1947871003, 1774252400); + int4 r2 = int4(505195842, 489209886, 769935181, 809406758); + TestUtils.AreEqual(a2 ^ b2, r2); + + int a3 = (1946113778); + int4 b3 = int4(1079717492, 290620937, 1382343363, 939045099); + int4 r3 = int4(866416774, 1655558395, 563852337, 1141368345); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void int4_operator_left_shift() + { + int4 a0 = int4(197771193, 622182602, 1283988958, 1327917304); + int b0 = (1321149625); + int4 r0 = int4(1912602624, -1811939328, -1140850688, -268435456); + TestUtils.AreEqual(a0 << b0, r0); + + int4 a1 = int4(473415985, 870301196, 2058433484, 1200694230); + int b1 = (432425717); + int4 r1 = int4(639631360, -1048576000, 2038431744, 2059403264); + TestUtils.AreEqual(a1 << b1, r1); + + int4 a2 = int4(1531607705, 1008296534, 1447702302, 1079614371); + int b2 = (1360008038); + int4 r2 = int4(-761354688, 106468736, -1836333184, 375843008); + TestUtils.AreEqual(a2 << b2, r2); + + int4 a3 = int4(35667343, 2045594989, 2077023268, 592678686); + int b3 = (1664454606); + int4 r3 = int4(258195456, 1398489088, 923336704, -473464832); + TestUtils.AreEqual(a3 << b3, r3); + } + + [TestCompiler] + public static void int4_operator_right_shift() + { + int4 a0 = int4(548167301, 1161338299, 1617625829, 1860731847); + int b0 = (1266801540); + int4 r0 = int4(34260456, 72583643, 101101614, 116295740); + TestUtils.AreEqual(a0 >> b0, r0); + + int4 a1 = int4(713958715, 770466193, 1265099998, 572763124); + int b1 = (196552656); + int4 r1 = int4(10894, 11756, 19303, 8739); + TestUtils.AreEqual(a1 >> b1, r1); + + int4 a2 = int4(506619530, 2031319045, 701927980, 917785020); + int b2 = (426807581); + int4 r2 = int4(0, 3, 1, 1); + TestUtils.AreEqual(a2 >> b2, r2); + + int4 a3 = int4(569504877, 1102123711, 334005460, 1624751550); + int b3 = (185593382); + int4 r3 = int4(8898513, 17220682, 5218835, 25386742); + TestUtils.AreEqual(a3 >> b3, r3); + } + + [TestCompiler] + public static void int4_operator_bitwise_not() + { + int4 a0 = int4(1403358969, 831360921, 2088190243, 976721016); + int4 r0 = int4(-1403358970, -831360922, -2088190244, -976721017); + TestUtils.AreEqual(~a0, r0); + + int4 a1 = int4(878283189, 1935567517, 1420884856, 472965491); + int4 r1 = int4(-878283190, -1935567518, -1420884857, -472965492); + TestUtils.AreEqual(~a1, r1); + + int4 a2 = int4(771711426, 2061524024, 753208488, 2097179283); + int4 r2 = int4(-771711427, -2061524025, -753208489, -2097179284); + TestUtils.AreEqual(~a2, r2); + + int4 a3 = int4(1303022493, 1289372466, 1635981125, 1951018596); + int4 r3 = int4(-1303022494, -1289372467, -1635981126, -1951018597); + TestUtils.AreEqual(~a3, r3); + } + + [TestCompiler] + public static void int4_shuffle_result_1() + { + int4 a = int4(0, 1, 2, 3); + int4 b = int4(4, 5, 6, 7); + + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftX), (0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftY), (1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftZ), (2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftW), (3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX), (4)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY), (5)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ), (6)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightW), (7)); + } + + [TestCompiler] + public static void int4_shuffle_result_2() + { + int4 a = int4(0, 1, 2, 3); + int4 b = int4(4, 5, 6, 7); + + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.RightZ), int2(5, 6)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ, ShuffleComponent.RightX), int2(6, 4)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftY, ShuffleComponent.RightX), int2(1, 4)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightW, ShuffleComponent.LeftW), int2(7, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightW, ShuffleComponent.LeftZ), int2(7, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftZ, ShuffleComponent.LeftW), int2(2, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.LeftW), int2(5, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightW, ShuffleComponent.LeftX), int2(7, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ, ShuffleComponent.RightW), int2(6, 7)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.LeftZ), int2(5, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ, ShuffleComponent.RightZ), int2(6, 6)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightW, ShuffleComponent.LeftX), int2(7, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.RightX), int2(5, 4)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightW, ShuffleComponent.RightY), int2(7, 5)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.LeftX), int2(4, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftY, ShuffleComponent.LeftW), int2(1, 3)); + } + + [TestCompiler] + public static void int4_shuffle_result_3() + { + int4 a = int4(0, 1, 2, 3); + int4 b = int4(4, 5, 6, 7); + + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftZ, ShuffleComponent.RightW, ShuffleComponent.RightY), int3(2, 7, 5)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ, ShuffleComponent.LeftX, ShuffleComponent.LeftW), int3(6, 0, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftZ, ShuffleComponent.RightW, ShuffleComponent.RightX), int3(2, 7, 4)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.LeftX, ShuffleComponent.LeftZ), int3(5, 0, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightW, ShuffleComponent.RightZ, ShuffleComponent.LeftZ), int3(7, 6, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftW, ShuffleComponent.LeftY, ShuffleComponent.LeftY), int3(3, 1, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftW, ShuffleComponent.RightY, ShuffleComponent.RightX), int3(3, 5, 4)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftW, ShuffleComponent.LeftY, ShuffleComponent.RightW), int3(3, 1, 7)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ, ShuffleComponent.RightY, ShuffleComponent.RightZ), int3(6, 5, 6)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.RightX, ShuffleComponent.LeftY), int3(5, 4, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightW, ShuffleComponent.RightW, ShuffleComponent.LeftX), int3(7, 7, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ, ShuffleComponent.LeftY, ShuffleComponent.RightY), int3(6, 1, 5)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ, ShuffleComponent.LeftY, ShuffleComponent.RightW), int3(6, 1, 7)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftW, ShuffleComponent.RightY, ShuffleComponent.RightY), int3(3, 5, 5)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ, ShuffleComponent.LeftX, ShuffleComponent.RightY), int3(6, 0, 5)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.LeftY, ShuffleComponent.RightW), int3(5, 1, 7)); + } + + [TestCompiler] + public static void int4_shuffle_result_4() + { + int4 a = int4(0, 1, 2, 3); + int4 b = int4(4, 5, 6, 7); + + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftY, ShuffleComponent.LeftW, ShuffleComponent.RightX, ShuffleComponent.LeftZ), int4(1, 3, 4, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.LeftW, ShuffleComponent.RightZ, ShuffleComponent.RightZ), int4(5, 3, 6, 6)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ, ShuffleComponent.RightZ, ShuffleComponent.RightW, ShuffleComponent.LeftZ), int4(6, 6, 7, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.RightY, ShuffleComponent.LeftZ, ShuffleComponent.LeftZ), int4(4, 5, 2, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ, ShuffleComponent.LeftY, ShuffleComponent.LeftY, ShuffleComponent.LeftX), int4(6, 1, 1, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.RightY, ShuffleComponent.RightY, ShuffleComponent.RightW), int4(4, 5, 5, 7)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftY, ShuffleComponent.RightW, ShuffleComponent.LeftX, ShuffleComponent.RightW), int4(1, 7, 0, 7)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.LeftX, ShuffleComponent.LeftY, ShuffleComponent.LeftX), int4(5, 0, 1, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.RightW, ShuffleComponent.LeftW, ShuffleComponent.LeftY), int4(4, 7, 3, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.RightX, ShuffleComponent.LeftY, ShuffleComponent.RightX), int4(5, 4, 1, 4)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftX, ShuffleComponent.LeftZ, ShuffleComponent.RightZ, ShuffleComponent.LeftX), int4(0, 2, 6, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftZ, ShuffleComponent.RightY, ShuffleComponent.RightW, ShuffleComponent.RightW), int4(2, 5, 7, 7)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftW, ShuffleComponent.RightX, ShuffleComponent.LeftZ, ShuffleComponent.RightX), int4(3, 4, 2, 4)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.LeftX, ShuffleComponent.LeftZ, ShuffleComponent.LeftW), int4(4, 0, 2, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ, ShuffleComponent.RightX, ShuffleComponent.LeftX, ShuffleComponent.RightY), int4(6, 4, 0, 5)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftW, ShuffleComponent.RightW, ShuffleComponent.LeftY, ShuffleComponent.RightY), int4(3, 7, 1, 5)); + } + + + } +} diff --git a/package/Tests/Tests/Shared/TestInt4.gen.cs.meta b/package/Tests/Tests/Shared/TestInt4.gen.cs.meta new file mode 100755 index 000000000..af04e8fca --- /dev/null +++ b/package/Tests/Tests/Shared/TestInt4.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 682471010e9050444948ecc9c69b3b0c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/package/Tests/Tests/Shared/TestInt4x2.gen.cs b/package/Tests/Tests/Shared/TestInt4x2.gen.cs new file mode 100755 index 000000000..627107c11 --- /dev/null +++ b/package/Tests/Tests/Shared/TestInt4x2.gen.cs @@ -0,0 +1,1229 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using NUnit.Framework; +using static Unity.Mathematics.math; +using Burst.Compiler.IL.Tests; + +namespace Unity.Mathematics.Tests +{ + [TestFixture] + public class TestInt4x2 + { + [TestCompiler] + public static void int4x2_zero() + { + TestUtils.AreEqual(int4x2.zero.c0.x, 0); + TestUtils.AreEqual(int4x2.zero.c0.y, 0); + TestUtils.AreEqual(int4x2.zero.c0.z, 0); + TestUtils.AreEqual(int4x2.zero.c0.w, 0); + TestUtils.AreEqual(int4x2.zero.c1.x, 0); + TestUtils.AreEqual(int4x2.zero.c1.y, 0); + TestUtils.AreEqual(int4x2.zero.c1.z, 0); + TestUtils.AreEqual(int4x2.zero.c1.w, 0); + } + + [TestCompiler] + public static void int4x2_operator_equal_wide_wide() + { + int4x2 a0 = int4x2(790229414, 970783976, 1428432738, 1578747135, 1733797753, 2001507228, 1446876437, 1777406370); + int4x2 b0 = int4x2(612337669, 1214209108, 2120643427, 295461214, 1510890331, 1893316566, 921816149, 1834958575); + bool4x2 r0 = bool4x2(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + int4x2 a1 = int4x2(1426387268, 1809275021, 1843770816, 1172185222, 1469608940, 869874758, 458603090, 581282460); + int4x2 b1 = int4x2(1482011863, 2062852792, 226398742, 770290735, 36812057, 543224481, 1565350150, 1909926604); + bool4x2 r1 = bool4x2(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + int4x2 a2 = int4x2(1948324909, 1129078206, 1638391029, 1135553683, 2079295200, 576232476, 608208235, 11172509); + int4x2 b2 = int4x2(1619900436, 1849990483, 1261604411, 161864811, 843379453, 1780425458, 215681636, 2123130580); + bool4x2 r2 = bool4x2(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + int4x2 a3 = int4x2(1025529486, 2095601864, 193500113, 1780908384, 1587636094, 1892083815, 1250768669, 1984341771); + int4x2 b3 = int4x2(708665810, 1902328998, 1808456602, 563830672, 200493241, 1391620681, 1035522654, 168447603); + bool4x2 r3 = bool4x2(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void int4x2_operator_equal_wide_scalar() + { + int4x2 a0 = int4x2(1211464300, 1921862607, 508076684, 1249127920, 1394594555, 746862310, 1733655277, 1884008277); + int b0 = (746972502); + bool4x2 r0 = bool4x2(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + int4x2 a1 = int4x2(1682018538, 936027116, 927605411, 672785749, 1465584610, 585324157, 404448210, 969511077); + int b1 = (795585660); + bool4x2 r1 = bool4x2(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + int4x2 a2 = int4x2(442746747, 1884034177, 451512860, 425476075, 1370577708, 597010220, 1249636005, 211986678); + int b2 = (1772925698); + bool4x2 r2 = bool4x2(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + int4x2 a3 = int4x2(1305479811, 1150443719, 177122433, 511346787, 1442445694, 667984966, 1684122010, 1962874832); + int b3 = (255635293); + bool4x2 r3 = bool4x2(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void int4x2_operator_equal_scalar_wide() + { + int a0 = (1150044438); + int4x2 b0 = int4x2(233855098, 924242519, 1402948791, 601381975, 2120518068, 629187703, 1971977031, 47183124); + bool4x2 r0 = bool4x2(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + int a1 = (1061805787); + int4x2 b1 = int4x2(1009011238, 312511148, 1460673064, 737210539, 1737844479, 1892405453, 2133024000, 455818693); + bool4x2 r1 = bool4x2(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + int a2 = (2003197687); + int4x2 b2 = int4x2(1276241219, 534746610, 559824292, 1758388240, 1023494292, 719963017, 1883763832, 597498209); + bool4x2 r2 = bool4x2(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + int a3 = (367814403); + int4x2 b3 = int4x2(1839429063, 223575614, 79701214, 1699606118, 759455864, 2017599457, 1395605233, 1191785903); + bool4x2 r3 = bool4x2(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void int4x2_operator_not_equal_wide_wide() + { + int4x2 a0 = int4x2(1660932106, 982847023, 97046264, 1739517447, 1253499180, 1830584069, 1841470429, 1397841646); + int4x2 b0 = int4x2(107139049, 75478496, 2055495054, 358586687, 942338347, 111564990, 113811950, 948912488); + bool4x2 r0 = bool4x2(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + int4x2 a1 = int4x2(1770890135, 1906548631, 169082967, 2099271786, 1909317609, 46519139, 1433204003, 931492669); + int4x2 b1 = int4x2(1080084121, 1400504872, 1032134499, 1061123400, 221862069, 858950046, 989094643, 2023070999); + bool4x2 r1 = bool4x2(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + int4x2 a2 = int4x2(670504132, 1551558665, 1204055048, 1623586740, 226381077, 1145987803, 644253929, 475189890); + int4x2 b2 = int4x2(1269317127, 531883744, 687761409, 278427731, 296354221, 536981557, 1134676193, 1749879634); + bool4x2 r2 = bool4x2(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + int4x2 a3 = int4x2(922313145, 2006448607, 1574579050, 1839580033, 155350910, 313644534, 2008975915, 1072866331); + int4x2 b3 = int4x2(1944210269, 92849031, 164029425, 628797607, 2069207270, 2022667842, 880567401, 264404537); + bool4x2 r3 = bool4x2(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void int4x2_operator_not_equal_wide_scalar() + { + int4x2 a0 = int4x2(747758183, 1033001286, 1439973882, 2138928797, 1197845089, 1432672459, 950170763, 238704450); + int b0 = (248693828); + bool4x2 r0 = bool4x2(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + int4x2 a1 = int4x2(2105962247, 1640688041, 276313906, 2126300423, 791998981, 2035077187, 1171827730, 1412347883); + int b1 = (727205263); + bool4x2 r1 = bool4x2(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + int4x2 a2 = int4x2(1622176923, 1072798259, 1808712713, 1497830076, 1582645163, 1876273820, 90244766, 30493685); + int b2 = (768370497); + bool4x2 r2 = bool4x2(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + int4x2 a3 = int4x2(904014575, 11554610, 2016093187, 1515760622, 1596313927, 363921847, 1555396158, 913218907); + int b3 = (384643370); + bool4x2 r3 = bool4x2(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void int4x2_operator_not_equal_scalar_wide() + { + int a0 = (2076921066); + int4x2 b0 = int4x2(2037494727, 1989050616, 48833929, 1897435904, 514354517, 1783749164, 364694471, 754315072); + bool4x2 r0 = bool4x2(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + int a1 = (124108032); + int4x2 b1 = int4x2(1512967900, 1178825850, 1854793298, 50286949, 2100802631, 1640811853, 82110247, 472172806); + bool4x2 r1 = bool4x2(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + int a2 = (266984506); + int4x2 b2 = int4x2(2003668365, 1826089250, 1041416160, 356140110, 2057237962, 799920703, 1916347720, 510966350); + bool4x2 r2 = bool4x2(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + int a3 = (572038024); + int4x2 b3 = int4x2(1936481966, 1366859342, 1775285431, 604757336, 1047551607, 1311703338, 676012224, 627370253); + bool4x2 r3 = bool4x2(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void int4x2_operator_less_wide_wide() + { + int4x2 a0 = int4x2(1182186063, 415538999, 1667335818, 1566618442, 1166180837, 639095188, 1080836365, 771119973); + int4x2 b0 = int4x2(524633529, 1032195686, 760723389, 1505751409, 431962172, 1287906509, 1560084663, 1450178202); + bool4x2 r0 = bool4x2(false, true, false, false, false, true, true, true); + TestUtils.AreEqual(a0 < b0, r0); + + int4x2 a1 = int4x2(928263233, 789225474, 665243110, 1003542034, 1032480172, 1961336172, 923379558, 21210619); + int4x2 b1 = int4x2(2066166337, 1107069023, 1640077524, 2103263105, 684229139, 1234033624, 1278743281, 1953079347); + bool4x2 r1 = bool4x2(true, true, true, true, false, false, true, true); + TestUtils.AreEqual(a1 < b1, r1); + + int4x2 a2 = int4x2(1089772116, 1707633052, 778986024, 158153146, 336715101, 1839141169, 1706859710, 1928438162); + int4x2 b2 = int4x2(1228832942, 2082539723, 1088437561, 1058382082, 207459172, 750531081, 2015788562, 2126542133); + bool4x2 r2 = bool4x2(true, true, true, true, false, false, true, true); + TestUtils.AreEqual(a2 < b2, r2); + + int4x2 a3 = int4x2(1638101724, 2044698552, 1543260981, 471462349, 1668575142, 2147199161, 946870864, 582371851); + int4x2 b3 = int4x2(271967348, 1601249324, 1373999400, 1689592186, 459759541, 983106679, 332584818, 2034921203); + bool4x2 r3 = bool4x2(false, false, false, true, false, false, false, true); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void int4x2_operator_less_wide_scalar() + { + int4x2 a0 = int4x2(608447185, 818840405, 869219329, 2080125385, 1214500548, 1361741203, 1667165786, 1615392341); + int b0 = (1491216667); + bool4x2 r0 = bool4x2(true, true, true, false, true, true, false, false); + TestUtils.AreEqual(a0 < b0, r0); + + int4x2 a1 = int4x2(840091491, 1247103789, 315321650, 930950514, 1100560246, 933855388, 908563901, 1127696709); + int b1 = (469591900); + bool4x2 r1 = bool4x2(false, false, true, false, false, false, false, false); + TestUtils.AreEqual(a1 < b1, r1); + + int4x2 a2 = int4x2(1286331950, 971148054, 1827886929, 1056649851, 1579735991, 689044913, 1960894027, 371987110); + int b2 = (380753337); + bool4x2 r2 = bool4x2(false, false, false, false, false, false, false, true); + TestUtils.AreEqual(a2 < b2, r2); + + int4x2 a3 = int4x2(867559111, 1698536333, 41716206, 243673862, 1274625476, 611065092, 118750042, 1829327996); + int b3 = (1703747625); + bool4x2 r3 = bool4x2(true, true, true, true, true, true, true, false); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void int4x2_operator_less_scalar_wide() + { + int a0 = (548436837); + int4x2 b0 = int4x2(282703327, 14370648, 1862117300, 1304793311, 826073259, 988910157, 445132446, 1139670255); + bool4x2 r0 = bool4x2(false, false, true, true, true, true, false, true); + TestUtils.AreEqual(a0 < b0, r0); + + int a1 = (111349251); + int4x2 b1 = int4x2(1102440676, 112183144, 1594415311, 1890019295, 2098715503, 608933527, 183989010, 1596056507); + bool4x2 r1 = bool4x2(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 < b1, r1); + + int a2 = (1027318999); + int4x2 b2 = int4x2(146281093, 358911716, 874278078, 1106057699, 1256807459, 2111973919, 1736480659, 810406400); + bool4x2 r2 = bool4x2(false, false, false, true, true, true, true, false); + TestUtils.AreEqual(a2 < b2, r2); + + int a3 = (1329939911); + int4x2 b3 = int4x2(1276652605, 593690439, 771851138, 590897155, 386688344, 1290583204, 1984930954, 743544838); + bool4x2 r3 = bool4x2(false, false, false, false, false, false, true, false); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void int4x2_operator_greater_wide_wide() + { + int4x2 a0 = int4x2(592884447, 2133928932, 918957182, 1284069471, 194584707, 739120780, 241654068, 1340158550); + int4x2 b0 = int4x2(138737040, 192863971, 1700841444, 1044631301, 1391589821, 730837695, 253553987, 2078872742); + bool4x2 r0 = bool4x2(true, true, false, true, false, true, false, false); + TestUtils.AreEqual(a0 > b0, r0); + + int4x2 a1 = int4x2(2099542537, 1182623667, 1399607274, 789301637, 180400925, 594688333, 1877031463, 1360073500); + int4x2 b1 = int4x2(910845808, 976047676, 202633078, 1223618940, 641600530, 1830470354, 1570701388, 1104256103); + bool4x2 r1 = bool4x2(true, true, true, false, false, false, true, true); + TestUtils.AreEqual(a1 > b1, r1); + + int4x2 a2 = int4x2(1091782422, 546676424, 348221770, 716039145, 458742739, 1365508046, 1523167942, 1574478622); + int4x2 b2 = int4x2(1838646932, 740166101, 1549021845, 1457092873, 1790630950, 907793213, 555122804, 1418910265); + bool4x2 r2 = bool4x2(false, false, false, false, false, true, true, true); + TestUtils.AreEqual(a2 > b2, r2); + + int4x2 a3 = int4x2(1295065160, 715285504, 1130323487, 677530432, 1496919050, 12463046, 1106153111, 1315083485); + int4x2 b3 = int4x2(335209251, 1094341422, 1465325455, 390251369, 910309992, 277356652, 1601082764, 771366966); + bool4x2 r3 = bool4x2(true, false, false, true, true, false, false, true); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void int4x2_operator_greater_wide_scalar() + { + int4x2 a0 = int4x2(1097138316, 211763648, 1883002501, 56406996, 43662641, 1923456111, 1437755186, 1219010035); + int b0 = (438688675); + bool4x2 r0 = bool4x2(true, false, true, false, false, true, true, true); + TestUtils.AreEqual(a0 > b0, r0); + + int4x2 a1 = int4x2(2125058448, 893125636, 48044515, 711945018, 1035679270, 577943770, 572743717, 1016617211); + int b1 = (304028799); + bool4x2 r1 = bool4x2(true, true, false, true, true, true, true, true); + TestUtils.AreEqual(a1 > b1, r1); + + int4x2 a2 = int4x2(2063134811, 64009107, 1462961460, 1143565920, 3715845, 689362811, 263973424, 1045140419); + int b2 = (1577403353); + bool4x2 r2 = bool4x2(true, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 > b2, r2); + + int4x2 a3 = int4x2(1058332184, 1183316983, 1107974092, 212839726, 523727054, 112709358, 614746280, 1000986708); + int b3 = (524569092); + bool4x2 r3 = bool4x2(true, true, true, false, false, false, true, true); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void int4x2_operator_greater_scalar_wide() + { + int a0 = (2024896938); + int4x2 b0 = int4x2(599356784, 185671342, 1932327391, 2025591013, 1257191721, 1312388500, 1443698859, 779217735); + bool4x2 r0 = bool4x2(true, true, true, false, true, true, true, true); + TestUtils.AreEqual(a0 > b0, r0); + + int a1 = (691047512); + int4x2 b1 = int4x2(741776730, 732565983, 668302204, 1556466996, 858599525, 1896917159, 701542098, 1052151621); + bool4x2 r1 = bool4x2(false, false, true, false, false, false, false, false); + TestUtils.AreEqual(a1 > b1, r1); + + int a2 = (1023307544); + int4x2 b2 = int4x2(1435392907, 1858177345, 299897686, 632930355, 1387203601, 483722222, 863042711, 1713088900); + bool4x2 r2 = bool4x2(false, false, true, true, false, true, true, false); + TestUtils.AreEqual(a2 > b2, r2); + + int a3 = (315569296); + int4x2 b3 = int4x2(292652611, 1002628348, 927789921, 108145064, 425005337, 2093233588, 2063431853, 2079035844); + bool4x2 r3 = bool4x2(true, false, false, true, false, false, false, false); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void int4x2_operator_less_equal_wide_wide() + { + int4x2 a0 = int4x2(1577248162, 2043073061, 1688380407, 176431985, 223299035, 1502802140, 1691709825, 386789394); + int4x2 b0 = int4x2(903445031, 2108974565, 210822256, 1281704747, 453681718, 66138830, 1229799377, 1620922595); + bool4x2 r0 = bool4x2(false, true, false, true, true, false, false, true); + TestUtils.AreEqual(a0 <= b0, r0); + + int4x2 a1 = int4x2(117182003, 1665770435, 1958490731, 420032601, 1251092689, 2011681765, 749743684, 183784440); + int4x2 b1 = int4x2(1715833766, 1366430432, 13102000, 46919981, 486470891, 1709514236, 2145785285, 854254454); + bool4x2 r1 = bool4x2(true, false, false, false, false, false, true, true); + TestUtils.AreEqual(a1 <= b1, r1); + + int4x2 a2 = int4x2(1150674774, 1633828822, 1719442172, 336047314, 743733218, 1393995865, 1854442658, 1498138884); + int4x2 b2 = int4x2(1273278658, 810263315, 1862773824, 201799013, 974166844, 1320622967, 2058099616, 522102017); + bool4x2 r2 = bool4x2(true, false, true, false, true, false, true, false); + TestUtils.AreEqual(a2 <= b2, r2); + + int4x2 a3 = int4x2(912169992, 1992682021, 1619593455, 1883313982, 483412430, 857881876, 346624138, 531961063); + int4x2 b3 = int4x2(620752145, 1213693681, 1281818305, 1564146162, 1996153080, 1201909516, 614401396, 224997397); + bool4x2 r3 = bool4x2(false, false, false, false, true, true, true, false); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void int4x2_operator_less_equal_wide_scalar() + { + int4x2 a0 = int4x2(1722165358, 1219858357, 860410743, 411099660, 348104022, 1963256951, 212084836, 58924407); + int b0 = (1688048545); + bool4x2 r0 = bool4x2(false, true, true, true, true, false, true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + int4x2 a1 = int4x2(1459242706, 532949158, 262559763, 690091301, 1806172431, 2091514001, 1857173043, 1617221948); + int b1 = (1745758438); + bool4x2 r1 = bool4x2(true, true, true, true, false, false, false, true); + TestUtils.AreEqual(a1 <= b1, r1); + + int4x2 a2 = int4x2(2017733017, 981729559, 2032949254, 910922522, 2079225209, 26179915, 238796519, 1917813750); + int b2 = (804204255); + bool4x2 r2 = bool4x2(false, false, false, false, false, true, true, false); + TestUtils.AreEqual(a2 <= b2, r2); + + int4x2 a3 = int4x2(1258115260, 1337879822, 959460446, 1599429457, 1279143037, 1551937606, 626254356, 1162369122); + int b3 = (20607406); + bool4x2 r3 = bool4x2(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void int4x2_operator_less_equal_scalar_wide() + { + int a0 = (1777585); + int4x2 b0 = int4x2(1181030049, 1787703989, 1729760948, 1816537388, 1359786460, 874999193, 1678863148, 1711365839); + bool4x2 r0 = bool4x2(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + int a1 = (762067160); + int4x2 b1 = int4x2(11953554, 1131583906, 1175393186, 1293698493, 48893340, 66196247, 1958607116, 1576473309); + bool4x2 r1 = bool4x2(false, true, true, true, false, false, true, true); + TestUtils.AreEqual(a1 <= b1, r1); + + int a2 = (861890786); + int4x2 b2 = int4x2(478252419, 957887737, 117849810, 1348693584, 105489302, 259034238, 530713566, 601413850); + bool4x2 r2 = bool4x2(false, true, false, true, false, false, false, false); + TestUtils.AreEqual(a2 <= b2, r2); + + int a3 = (830430286); + int4x2 b3 = int4x2(145552297, 1697295044, 1150680564, 2091065664, 1796096704, 1572008712, 1556906486, 205552788); + bool4x2 r3 = bool4x2(false, true, true, true, true, true, true, false); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void int4x2_operator_greater_equal_wide_wide() + { + int4x2 a0 = int4x2(263000030, 744235661, 1893760267, 237248, 1062370984, 1676977687, 816766880, 1089431546); + int4x2 b0 = int4x2(1395535146, 1178373944, 1237373760, 1364855321, 600811864, 362060472, 290870624, 1839067862); + bool4x2 r0 = bool4x2(false, false, true, false, true, true, true, false); + TestUtils.AreEqual(a0 >= b0, r0); + + int4x2 a1 = int4x2(1394493730, 1176473380, 1193988637, 1703862455, 1806186947, 1253571980, 589397635, 1951842887); + int4x2 b1 = int4x2(396958580, 1336888643, 1019684398, 1697684196, 1227300220, 2044269675, 1898323839, 874509380); + bool4x2 r1 = bool4x2(true, false, true, true, true, false, false, true); + TestUtils.AreEqual(a1 >= b1, r1); + + int4x2 a2 = int4x2(798931197, 808426484, 744869638, 1959531616, 207430702, 1533946595, 1148381840, 2011549474); + int4x2 b2 = int4x2(1873505472, 1268843918, 1606949562, 1263896445, 1805518202, 1412091359, 1240330374, 1955056253); + bool4x2 r2 = bool4x2(false, false, false, true, false, true, false, true); + TestUtils.AreEqual(a2 >= b2, r2); + + int4x2 a3 = int4x2(605043041, 1707339660, 2038122892, 345761584, 1839156338, 1519670644, 2131285427, 775457686); + int4x2 b3 = int4x2(2025187918, 750755999, 869709740, 1390799279, 1194035112, 666460047, 103451220, 1311530792); + bool4x2 r3 = bool4x2(false, true, true, false, true, true, true, false); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void int4x2_operator_greater_equal_wide_scalar() + { + int4x2 a0 = int4x2(2112791350, 1043657935, 101764761, 1529909067, 556026890, 281734132, 1186600258, 815093894); + int b0 = (1470533736); + bool4x2 r0 = bool4x2(true, false, false, true, false, false, false, false); + TestUtils.AreEqual(a0 >= b0, r0); + + int4x2 a1 = int4x2(609211196, 829548642, 244604867, 1419295004, 471843809, 1819986195, 1460027917, 1646290021); + int b1 = (1604309397); + bool4x2 r1 = bool4x2(false, false, false, false, false, true, false, true); + TestUtils.AreEqual(a1 >= b1, r1); + + int4x2 a2 = int4x2(196833647, 1905036391, 1771391775, 1584946560, 370941146, 440219668, 1607345862, 1449142607); + int b2 = (1596738181); + bool4x2 r2 = bool4x2(false, true, true, false, false, false, true, false); + TestUtils.AreEqual(a2 >= b2, r2); + + int4x2 a3 = int4x2(1223010129, 1719435169, 258833609, 1389585003, 612593660, 42612027, 1138747386, 1491562090); + int b3 = (379014762); + bool4x2 r3 = bool4x2(true, true, false, true, true, false, true, true); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void int4x2_operator_greater_equal_scalar_wide() + { + int a0 = (1525542481); + int4x2 b0 = int4x2(1503244746, 861711266, 817773856, 925984572, 571221723, 683686810, 118252990, 1653952090); + bool4x2 r0 = bool4x2(true, true, true, true, true, true, true, false); + TestUtils.AreEqual(a0 >= b0, r0); + + int a1 = (1240253990); + int4x2 b1 = int4x2(1947039008, 1869136019, 152012637, 1214546726, 917376832, 303549425, 2111728811, 945321577); + bool4x2 r1 = bool4x2(false, false, true, true, true, true, false, true); + TestUtils.AreEqual(a1 >= b1, r1); + + int a2 = (173706579); + int4x2 b2 = int4x2(625318949, 519443238, 1583588379, 1026799433, 1713083717, 394922760, 1216218189, 1336522452); + bool4x2 r2 = bool4x2(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 >= b2, r2); + + int a3 = (233894308); + int4x2 b3 = int4x2(479913036, 984991199, 172993285, 2121050903, 465645173, 788510727, 337378780, 273010835); + bool4x2 r3 = bool4x2(false, false, true, false, false, false, false, false); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void int4x2_operator_add_wide_wide() + { + int4x2 a0 = int4x2(2049228671, 1658660009, 491719392, 937013355, 81108663, 1063894558, 86954702, 843159721); + int4x2 b0 = int4x2(2088751567, 645762023, 306868786, 4360271, 506047997, 2094559874, 1634712736, 1601474440); + int4x2 r0 = int4x2(-156987058, -1990545264, 798588178, 941373626, 587156660, -1136512864, 1721667438, -1850333135); + TestUtils.AreEqual(a0 + b0, r0); + + int4x2 a1 = int4x2(698977704, 192867135, 1683407172, 137301303, 2103582820, 526139155, 447937230, 2127411006); + int4x2 b1 = int4x2(1586485231, 908746788, 1812370320, 1247342357, 2043773873, 223363428, 175115707, 985928617); + int4x2 r1 = int4x2(-2009504361, 1101613923, -799189804, 1384643660, -147610603, 749502583, 623052937, -1181627673); + TestUtils.AreEqual(a1 + b1, r1); + + int4x2 a2 = int4x2(1670579390, 1914969141, 997691756, 857841794, 2129024875, 267535529, 978891383, 657092366); + int4x2 b2 = int4x2(507662836, 1231457019, 776127866, 607782424, 1160366210, 1384832242, 702057048, 703554905); + int4x2 r2 = int4x2(-2116725070, -1148541136, 1773819622, 1465624218, -1005576211, 1652367771, 1680948431, 1360647271); + TestUtils.AreEqual(a2 + b2, r2); + + int4x2 a3 = int4x2(941872903, 906908654, 1940071697, 862186205, 1951450264, 689662850, 1928213278, 1703906688); + int4x2 b3 = int4x2(2106992817, 1994483489, 539473, 236858351, 411317652, 595429166, 713649927, 2053476603); + int4x2 r3 = int4x2(-1246101576, -1393575153, 1940611170, 1099044556, -1932199380, 1285092016, -1653104091, -537584005); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void int4x2_operator_add_wide_scalar() + { + int4x2 a0 = int4x2(2038218457, 134923711, 875689667, 1338884463, 997710928, 340490871, 1067888129, 70433301); + int b0 = (2124409227); + int4x2 r0 = int4x2(-132339612, -2035634358, -1294868402, -831673606, -1172847141, -1830067198, -1102669940, -2100124768); + TestUtils.AreEqual(a0 + b0, r0); + + int4x2 a1 = int4x2(2003021861, 1160398286, 85446202, 1068152966, 1239387100, 1497676888, 1727477485, 1095438654); + int b1 = (1635971971); + int4x2 r1 = int4x2(-655973464, -1498597039, 1721418173, -1590842359, -1419608225, -1161318437, -931517840, -1563556671); + TestUtils.AreEqual(a1 + b1, r1); + + int4x2 a2 = int4x2(756559204, 658923552, 1610518921, 1585755398, 692843300, 1068593469, 1704776233, 577782260); + int b2 = (1818718931); + int4x2 r2 = int4x2(-1719689161, -1817324813, -865729444, -890492967, -1783405065, -1407654896, -771472132, -1898466105); + TestUtils.AreEqual(a2 + b2, r2); + + int4x2 a3 = int4x2(736972565, 564257439, 2051736283, 1572837697, 1628006545, 1855700263, 656748782, 272774516); + int b3 = (711894571); + int4x2 r3 = int4x2(1448867136, 1276152010, -1531336442, -2010235028, -1955066180, -1727372462, 1368643353, 984669087); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void int4x2_operator_add_scalar_wide() + { + int a0 = (391092078); + int4x2 b0 = int4x2(519908870, 851424292, 328314822, 135622204, 740923360, 655394201, 1451896269, 1781697072); + int4x2 r0 = int4x2(911000948, 1242516370, 719406900, 526714282, 1132015438, 1046486279, 1842988347, -2122178146); + TestUtils.AreEqual(a0 + b0, r0); + + int a1 = (996031825); + int4x2 b1 = int4x2(1557774949, 779774940, 1111541302, 783046445, 1130163944, 288279584, 1397683861, 1636583489); + int4x2 r1 = int4x2(-1741160522, 1775806765, 2107573127, 1779078270, 2126195769, 1284311409, -1901251610, -1662351982); + TestUtils.AreEqual(a1 + b1, r1); + + int a2 = (673263339); + int4x2 b2 = int4x2(1469300874, 14855965, 1116636999, 1488863300, 1600990886, 190651301, 1307459768, 920085839); + int4x2 r2 = int4x2(2142564213, 688119304, 1789900338, -2132840657, -2020713071, 863914640, 1980723107, 1593349178); + TestUtils.AreEqual(a2 + b2, r2); + + int a3 = (2082229835); + int4x2 b3 = int4x2(1992405574, 1213924458, 505841452, 981421162, 1488337699, 1113826640, 1806146508, 1841791222); + int4x2 r3 = int4x2(-220331887, -998813003, -1706896009, -1231316299, -724399762, -1098910821, -406590953, -370946239); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void int4x2_operator_sub_wide_wide() + { + int4x2 a0 = int4x2(1353441118, 797269833, 659988112, 56022121, 365847472, 2062899435, 1380988474, 799885138); + int4x2 b0 = int4x2(1332656812, 1827794007, 972557431, 2078233689, 1508184327, 1372307701, 810327977, 936799885); + int4x2 r0 = int4x2(20784306, -1030524174, -312569319, -2022211568, -1142336855, 690591734, 570660497, -136914747); + TestUtils.AreEqual(a0 - b0, r0); + + int4x2 a1 = int4x2(1306058185, 579775276, 1239163824, 344591081, 86359575, 1049709943, 721529513, 1767221271); + int4x2 b1 = int4x2(71562303, 1418723328, 1971342989, 1226053395, 136565478, 1979903295, 600719425, 837912956); + int4x2 r1 = int4x2(1234495882, -838948052, -732179165, -881462314, -50205903, -930193352, 120810088, 929308315); + TestUtils.AreEqual(a1 - b1, r1); + + int4x2 a2 = int4x2(7652784, 545192611, 176298787, 1477774126, 1426963688, 2032787858, 2059525977, 445200454); + int4x2 b2 = int4x2(632054793, 711091688, 904695656, 1640069560, 750244414, 1385118097, 1102391291, 1221949855); + int4x2 r2 = int4x2(-624402009, -165899077, -728396869, -162295434, 676719274, 647669761, 957134686, -776749401); + TestUtils.AreEqual(a2 - b2, r2); + + int4x2 a3 = int4x2(425848588, 2026967474, 1128492011, 61421784, 988065731, 1741434432, 2070331135, 1356704176); + int4x2 b3 = int4x2(609588723, 1054324682, 1678086165, 1529581776, 1718700085, 523422634, 223602473, 1912611694); + int4x2 r3 = int4x2(-183740135, 972642792, -549594154, -1468159992, -730634354, 1218011798, 1846728662, -555907518); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void int4x2_operator_sub_wide_scalar() + { + int4x2 a0 = int4x2(1176369558, 1934521195, 309452150, 1417634074, 108910717, 1306356714, 1502312334, 1451794815); + int b0 = (462232403); + int4x2 r0 = int4x2(714137155, 1472288792, -152780253, 955401671, -353321686, 844124311, 1040079931, 989562412); + TestUtils.AreEqual(a0 - b0, r0); + + int4x2 a1 = int4x2(281174200, 1913724431, 2041593336, 557239990, 1119051448, 1590376732, 819090189, 816382635); + int b1 = (87530840); + int4x2 r1 = int4x2(193643360, 1826193591, 1954062496, 469709150, 1031520608, 1502845892, 731559349, 728851795); + TestUtils.AreEqual(a1 - b1, r1); + + int4x2 a2 = int4x2(815920639, 1792801932, 1113440549, 1418937976, 1277257189, 2092779398, 642236742, 1605250794); + int b2 = (1829033117); + int4x2 r2 = int4x2(-1013112478, -36231185, -715592568, -410095141, -551775928, 263746281, -1186796375, -223782323); + TestUtils.AreEqual(a2 - b2, r2); + + int4x2 a3 = int4x2(819644478, 128303186, 553494257, 1017126971, 1999744782, 2017272758, 1817991764, 1280985500); + int b3 = (1468003019); + int4x2 r3 = int4x2(-648358541, -1339699833, -914508762, -450876048, 531741763, 549269739, 349988745, -187017519); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void int4x2_operator_sub_scalar_wide() + { + int a0 = (1691534405); + int4x2 b0 = int4x2(2022393810, 1612688515, 496689713, 887037586, 2097630964, 374934538, 939035482, 935242277); + int4x2 r0 = int4x2(-330859405, 78845890, 1194844692, 804496819, -406096559, 1316599867, 752498923, 756292128); + TestUtils.AreEqual(a0 - b0, r0); + + int a1 = (1789300421); + int4x2 b1 = int4x2(264712893, 1231856067, 1818112748, 1428436109, 1258745460, 1077380396, 1330722719, 518111829); + int4x2 r1 = int4x2(1524587528, 557444354, -28812327, 360864312, 530554961, 711920025, 458577702, 1271188592); + TestUtils.AreEqual(a1 - b1, r1); + + int a2 = (967128529); + int4x2 b2 = int4x2(344666254, 1082267918, 907866696, 1816885123, 460340568, 962154498, 557113461, 1701216709); + int4x2 r2 = int4x2(622462275, -115139389, 59261833, -849756594, 506787961, 4974031, 410015068, -734088180); + TestUtils.AreEqual(a2 - b2, r2); + + int a3 = (1980098777); + int4x2 b3 = int4x2(730060552, 1444397827, 853570556, 138836432, 1013190428, 718089530, 506757390, 1216448041); + int4x2 r3 = int4x2(1250038225, 535700950, 1126528221, 1841262345, 966908349, 1262009247, 1473341387, 763650736); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void int4x2_operator_mul_wide_wide() + { + int4x2 a0 = int4x2(245827027, 208934650, 1019478917, 568231809, 877289039, 1585782440, 2111178729, 1186019069); + int4x2 b0 = int4x2(759663997, 350129201, 477450108, 1635735015, 388710278, 757722665, 1509388321, 1841703980); + int4x2 r0 = int4x2(-632811769, 1402281434, 332447596, -1932977561, -1670918566, 1455036648, 2128344329, -594088068); + TestUtils.AreEqual(a0 * b0, r0); + + int4x2 a1 = int4x2(571481445, 1570087048, 629447153, 619383734, 2055121568, 700402816, 263414349, 187830569); + int4x2 b1 = int4x2(1826369331, 1524322467, 1605207974, 428419155, 1460605791, 1968043860, 771161742, 2037340417); + int4x2 r1 = int4x2(-1654168033, 2093463192, -1207506618, -1133560830, 990589280, -938173952, -1341723466, 1156600361); + TestUtils.AreEqual(a1 * b1, r1); + + int4x2 a2 = int4x2(2048056680, 546694675, 853585367, 933370718, 990212476, 1915885905, 1984212358, 368146234); + int4x2 b2 = int4x2(322304267, 651448359, 1608326767, 1427155898, 1092185338, 665119139, 223634707, 694718952); + int4x2 r2 = int4x2(649177976, 678952165, 1063621177, -1611682740, -2142428392, -573253741, -1652113678, 1626072720); + TestUtils.AreEqual(a2 * b2, r2); + + int4x2 a3 = int4x2(899438811, 1765718681, 409003054, 2069758852, 140280263, 442491280, 1924530939, 1372320666); + int4x2 b3 = int4x2(675813713, 999254223, 1326064110, 788102700, 1927999142, 1706356773, 747671596, 106127297); + int4x2 r3 = int4x2(1891467339, 335415735, 1128927428, -1656253776, -1433851638, 479369680, -366628060, -250163942); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void int4x2_operator_mul_wide_scalar() + { + int4x2 a0 = int4x2(1762033447, 465343930, 1570757881, 1326409563, 1824319147, 1356578909, 72749215, 154616909); + int b0 = (1476837906); + int4x2 r0 = int4x2(-1313177922, 1326807828, -2138555518, -276153754, -65548794, -1318584182, -1839224530, -1720506518); + TestUtils.AreEqual(a0 * b0, r0); + + int4x2 a1 = int4x2(975743632, 1958912969, 971327747, 1818877398, 1324050764, 660611671, 1279757657, 391009467); + int b1 = (573770299); + int4x2 r1 = int4x2(414773040, -699623085, 1045098929, -1129153454, 1954692228, 970215437, 1522404739, 631100697); + TestUtils.AreEqual(a1 * b1, r1); + + int4x2 a2 = int4x2(1186856590, 800117742, 606927173, 1338014500, 1688964615, 1439447294, 387721300, 1192501703); + int b2 = (890343818); + int4x2 r2 = int4x2(218605196, 908725324, -805080014, -1528445592, 1365477062, 1262261996, 2040090952, 691203142); + TestUtils.AreEqual(a2 * b2, r2); + + int4x2 a3 = int4x2(1613845584, 124378112, 970518733, 1370700538, 1978842602, 1451974062, 987919119, 1659987051); + int b3 = (76318055); + int4x2 r3 = int4x2(-1335460816, 1256424448, -545299589, 628661398, 357366566, 753276674, 2132219401, -825295347); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void int4x2_operator_mul_scalar_wide() + { + int a0 = (99541948); + int4x2 b0 = int4x2(1764461774, 657072478, 1459784358, 1610646683, 1632058826, 868441654, 1408757883, 335917146); + int4x2 r0 = int4x2(-950398648, -102049016, 1260585960, 1158730452, -1606056, -466153048, 2108402516, 1966690328); + TestUtils.AreEqual(a0 * b0, r0); + + int a1 = (2105124483); + int4x2 b1 = int4x2(1178393968, 1963904348, 1409533767, 243286231, 1336308795, 517963367, 1733623488, 459880225); + int4x2 r1 = int4x2(-1028919216, 2084093460, 1286996821, 910923781, 1886305329, -1039959883, 644799552, 1815059427); + TestUtils.AreEqual(a1 * b1, r1); + + int a2 = (994616533); + int4x2 b2 = int4x2(1420531535, 1821413700, 677771573, 2132626845, 1158827713, 640102997, 944551639, 1323243330); + int4x2 r2 = int4x2(585859259, 2021158292, 1046891801, -1941821535, -738776427, -1715252039, -160572189, 1259643370); + TestUtils.AreEqual(a2 * b2, r2); + + int a3 = (1186460236); + int4x2 b3 = int4x2(657101857, 1275563580, 1031291523, 1008470115, 1155301041, 1046199281, 2138825098, 1273008873); + int4x2 r3 = int4x2(-901633076, -879300144, 1278776548, 1761940324, -675287412, 2049744268, -375297800, -1944395988); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void int4x2_operator_div_wide_wide() + { + int4x2 a0 = int4x2(1590198532, 507812502, 126627032, 1058247011, 427387861, 290676154, 1829594484, 1127868739); + int4x2 b0 = int4x2(1434703236, 911965201, 390415521, 128746927, 525835375, 816946613, 878264647, 146789678); + int4x2 r0 = int4x2(1, 0, 0, 8, 0, 0, 2, 7); + TestUtils.AreEqual(a0 / b0, r0); + + int4x2 a1 = int4x2(499016351, 1341209632, 134906097, 785470242, 788249865, 1099825433, 1552968283, 1822367139); + int4x2 b1 = int4x2(2089524057, 254213018, 1916850021, 1737806518, 1906634983, 437754923, 825037958, 902508708); + int4x2 r1 = int4x2(0, 5, 0, 0, 0, 2, 1, 2); + TestUtils.AreEqual(a1 / b1, r1); + + int4x2 a2 = int4x2(1021812060, 1937073018, 645757349, 1097576782, 1246027674, 1152153253, 1900577195, 172149343); + int4x2 b2 = int4x2(896853614, 49452028, 1921327824, 787000669, 1032149621, 858558868, 1422112429, 837098844); + int4x2 r2 = int4x2(1, 39, 0, 1, 1, 1, 1, 0); + TestUtils.AreEqual(a2 / b2, r2); + + int4x2 a3 = int4x2(1735128704, 816492592, 2012272185, 632330092, 649232994, 123715336, 1438073735, 723262291); + int4x2 b3 = int4x2(616122946, 2035322800, 1324534444, 1820832158, 917489631, 367475696, 620492088, 1749833550); + int4x2 r3 = int4x2(2, 0, 1, 0, 0, 0, 2, 0); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void int4x2_operator_div_wide_scalar() + { + int4x2 a0 = int4x2(560951562, 1218680769, 375341724, 1613542090, 1919409166, 1397425408, 1349573078, 524526253); + int b0 = (947861580); + int4x2 r0 = int4x2(0, 1, 0, 1, 2, 1, 1, 0); + TestUtils.AreEqual(a0 / b0, r0); + + int4x2 a1 = int4x2(341995568, 1515313790, 1676971657, 2131487088, 2105094094, 1017891310, 542666029, 1646044372); + int b1 = (495895326); + int4x2 r1 = int4x2(0, 3, 3, 4, 4, 2, 1, 3); + TestUtils.AreEqual(a1 / b1, r1); + + int4x2 a2 = int4x2(1447236569, 19616726, 896899915, 707389627, 1249475421, 1486968988, 1738891885, 1919705924); + int b2 = (107215658); + int4x2 r2 = int4x2(13, 0, 8, 6, 11, 13, 16, 17); + TestUtils.AreEqual(a2 / b2, r2); + + int4x2 a3 = int4x2(1244966864, 206442634, 1508567412, 1825701056, 1117255783, 929925156, 1725332114, 1949103348); + int b3 = (1200843642); + int4x2 r3 = int4x2(1, 0, 1, 1, 0, 0, 1, 1); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void int4x2_operator_div_scalar_wide() + { + int a0 = (1161272038); + int4x2 b0 = int4x2(187325733, 1594107378, 2016183849, 1589343709, 388768753, 1417077283, 1773486938, 1154044032); + int4x2 r0 = int4x2(6, 0, 0, 0, 2, 0, 0, 1); + TestUtils.AreEqual(a0 / b0, r0); + + int a1 = (81831373); + int4x2 b1 = int4x2(1476877645, 653688843, 45756703, 631027637, 396671391, 784365696, 1250594097, 1818363859); + int4x2 r1 = int4x2(0, 0, 1, 0, 0, 0, 0, 0); + TestUtils.AreEqual(a1 / b1, r1); + + int a2 = (1653451772); + int4x2 b2 = int4x2(270557729, 48974453, 1796936382, 1427856423, 981056957, 1955700573, 705450043, 1054404890); + int4x2 r2 = int4x2(6, 33, 0, 1, 1, 0, 2, 1); + TestUtils.AreEqual(a2 / b2, r2); + + int a3 = (351914083); + int4x2 b3 = int4x2(131970646, 1320586926, 366944102, 1575786200, 257204865, 1582754309, 2114509003, 1266146708); + int4x2 r3 = int4x2(2, 0, 0, 0, 1, 0, 0, 0); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void int4x2_operator_mod_wide_wide() + { + int4x2 a0 = int4x2(146150818, 1846543305, 1071447756, 308965362, 659881575, 1002365460, 861198439, 1510617532); + int4x2 b0 = int4x2(983050390, 771341152, 942375212, 367361754, 749500619, 750718852, 2095151755, 88438806); + int4x2 r0 = int4x2(146150818, 303861001, 129072544, 308965362, 659881575, 251646608, 861198439, 7157830); + TestUtils.AreEqual(a0 % b0, r0); + + int4x2 a1 = int4x2(778525078, 1458458044, 101987897, 1249565173, 938026607, 1692541775, 1518877124, 1806965510); + int4x2 b1 = int4x2(769227442, 647214624, 1026513788, 1544950956, 160166322, 1099108075, 1158422232, 1798905209); + int4x2 r1 = int4x2(9297636, 164028796, 101987897, 1249565173, 137194997, 593433700, 360454892, 8060301); + TestUtils.AreEqual(a1 % b1, r1); + + int4x2 a2 = int4x2(1325139851, 994457255, 1372400564, 1770508529, 100255877, 452674793, 1545968777, 629019189); + int4x2 b2 = int4x2(164686701, 327889784, 1082162785, 1213537518, 608481038, 329133821, 1824387961, 1223426748); + int4x2 r2 = int4x2(7646243, 10787903, 290237779, 556971011, 100255877, 123540972, 1545968777, 629019189); + TestUtils.AreEqual(a2 % b2, r2); + + int4x2 a3 = int4x2(1402964707, 2138294579, 1641714420, 1782022072, 1880968864, 1980798192, 1397317084, 995968277); + int4x2 b3 = int4x2(798137669, 79717779, 1233582258, 1267120677, 301592349, 911281434, 1357340934, 1648942990); + int4x2 r3 = int4x2(604827038, 65632325, 408132162, 514901395, 71414770, 158235324, 39976150, 995968277); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void int4x2_operator_mod_wide_scalar() + { + int4x2 a0 = int4x2(164800505, 1062177828, 1898749675, 1701653318, 820393245, 19002208, 128329633, 1464010899); + int b0 = (883951171); + int4x2 r0 = int4x2(164800505, 178226657, 130847333, 817702147, 820393245, 19002208, 128329633, 580059728); + TestUtils.AreEqual(a0 % b0, r0); + + int4x2 a1 = int4x2(896587769, 1982762194, 959236935, 712321026, 172564850, 1540068445, 1085897743, 1607489717); + int b1 = (405208598); + int4x2 r1 = int4x2(86170573, 361927802, 148819739, 307112428, 172564850, 324442651, 275480547, 391863923); + TestUtils.AreEqual(a1 % b1, r1); + + int4x2 a2 = int4x2(165478511, 915707999, 1602830401, 928191283, 1084934806, 488509689, 2087820912, 377501313); + int b2 = (647846716); + int4x2 r2 = int4x2(165478511, 267861283, 307136969, 280344567, 437088090, 488509689, 144280764, 377501313); + TestUtils.AreEqual(a2 % b2, r2); + + int4x2 a3 = int4x2(1778384846, 812183417, 1153802502, 1642671870, 1924710742, 665297470, 1568090825, 2050982942); + int b3 = (1216011754); + int4x2 r3 = int4x2(562373092, 812183417, 1153802502, 426660116, 708698988, 665297470, 352079071, 834971188); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void int4x2_operator_mod_scalar_wide() + { + int a0 = (242383789); + int4x2 b0 = int4x2(740000543, 1556450291, 1104736385, 437976569, 1911837205, 1507212038, 1906405167, 247693265); + int4x2 r0 = int4x2(242383789, 242383789, 242383789, 242383789, 242383789, 242383789, 242383789, 242383789); + TestUtils.AreEqual(a0 % b0, r0); + + int a1 = (293460573); + int4x2 b1 = int4x2(1495295166, 873323603, 530681233, 1298102643, 2057984657, 1000742091, 1461372131, 1859742342); + int4x2 r1 = int4x2(293460573, 293460573, 293460573, 293460573, 293460573, 293460573, 293460573, 293460573); + TestUtils.AreEqual(a1 % b1, r1); + + int a2 = (797184687); + int4x2 b2 = int4x2(821888842, 1083192997, 840114986, 1894865954, 615159964, 1485575122, 2028738, 2122220318); + int4x2 r2 = int4x2(797184687, 797184687, 797184687, 797184687, 182024723, 797184687, 1919391, 797184687); + TestUtils.AreEqual(a2 % b2, r2); + + int a3 = (164578061); + int4x2 b3 = int4x2(730088119, 1444946139, 1305792037, 1110829011, 872723581, 166847388, 1477846418, 511428733); + int4x2 r3 = int4x2(164578061, 164578061, 164578061, 164578061, 164578061, 164578061, 164578061, 164578061); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void int4x2_operator_plus() + { + int4x2 a0 = int4x2(1643476803, 907898539, 379615839, 1140483021, 1735287433, 1743199272, 1472881565, 339091479); + int4x2 r0 = int4x2(1643476803, 907898539, 379615839, 1140483021, 1735287433, 1743199272, 1472881565, 339091479); + TestUtils.AreEqual(+a0, r0); + + int4x2 a1 = int4x2(401565897, 849339193, 174532915, 1864850812, 1566098441, 1145639744, 1615499926, 2049663954); + int4x2 r1 = int4x2(401565897, 849339193, 174532915, 1864850812, 1566098441, 1145639744, 1615499926, 2049663954); + TestUtils.AreEqual(+a1, r1); + + int4x2 a2 = int4x2(1723005749, 591286416, 1706631096, 1079164488, 1808261782, 1201290141, 82958939, 308695413); + int4x2 r2 = int4x2(1723005749, 591286416, 1706631096, 1079164488, 1808261782, 1201290141, 82958939, 308695413); + TestUtils.AreEqual(+a2, r2); + + int4x2 a3 = int4x2(1575280693, 1673126612, 500666137, 640289062, 836003812, 336058393, 829347661, 33442669); + int4x2 r3 = int4x2(1575280693, 1673126612, 500666137, 640289062, 836003812, 336058393, 829347661, 33442669); + TestUtils.AreEqual(+a3, r3); + } + + [TestCompiler] + public static void int4x2_operator_neg() + { + int4x2 a0 = int4x2(1955022112, 662160019, 370300775, 2141283773, 1004505619, 28153593, 33894270, 505708349); + int4x2 r0 = int4x2(-1955022112, -662160019, -370300775, -2141283773, -1004505619, -28153593, -33894270, -505708349); + TestUtils.AreEqual(-a0, r0); + + int4x2 a1 = int4x2(1115028238, 694995093, 1542206286, 213087293, 243937487, 341522275, 841085242, 574159094); + int4x2 r1 = int4x2(-1115028238, -694995093, -1542206286, -213087293, -243937487, -341522275, -841085242, -574159094); + TestUtils.AreEqual(-a1, r1); + + int4x2 a2 = int4x2(1687250035, 1175014732, 1259809073, 1212465326, 1190569920, 2047955772, 2120729864, 1440774928); + int4x2 r2 = int4x2(-1687250035, -1175014732, -1259809073, -1212465326, -1190569920, -2047955772, -2120729864, -1440774928); + TestUtils.AreEqual(-a2, r2); + + int4x2 a3 = int4x2(1485596454, 1387601718, 1745651998, 319115626, 1119959806, 739132284, 1954173314, 1709857098); + int4x2 r3 = int4x2(-1485596454, -1387601718, -1745651998, -319115626, -1119959806, -739132284, -1954173314, -1709857098); + TestUtils.AreEqual(-a3, r3); + } + + [TestCompiler] + public static void int4x2_operator_prefix_inc() + { + int4x2 a0 = int4x2(864455342, 2035793213, 1275443862, 971919915, 411610189, 446210725, 395072276, 115573442); + int4x2 r0 = int4x2(864455343, 2035793214, 1275443863, 971919916, 411610190, 446210726, 395072277, 115573443); + TestUtils.AreEqual(++a0, r0); + + int4x2 a1 = int4x2(913293639, 1208161871, 1385544935, 1835605516, 831396561, 388229350, 696475402, 1786514683); + int4x2 r1 = int4x2(913293640, 1208161872, 1385544936, 1835605517, 831396562, 388229351, 696475403, 1786514684); + TestUtils.AreEqual(++a1, r1); + + int4x2 a2 = int4x2(993189311, 1622410417, 1398865015, 241906003, 1705625817, 609525897, 172599489, 504806865); + int4x2 r2 = int4x2(993189312, 1622410418, 1398865016, 241906004, 1705625818, 609525898, 172599490, 504806866); + TestUtils.AreEqual(++a2, r2); + + int4x2 a3 = int4x2(519296647, 1541894135, 924683935, 259568871, 1349062584, 1120518661, 65514038, 1495168208); + int4x2 r3 = int4x2(519296648, 1541894136, 924683936, 259568872, 1349062585, 1120518662, 65514039, 1495168209); + TestUtils.AreEqual(++a3, r3); + } + + [TestCompiler] + public static void int4x2_operator_postfix_inc() + { + int4x2 a0 = int4x2(1751003569, 2063707595, 1500486291, 969189211, 1007848192, 2028651936, 1643023524, 1190630527); + int4x2 r0 = int4x2(1751003569, 2063707595, 1500486291, 969189211, 1007848192, 2028651936, 1643023524, 1190630527); + TestUtils.AreEqual(a0++, r0); + + int4x2 a1 = int4x2(1396179607, 177416855, 1524860667, 1408994706, 375284401, 1580130369, 1676086778, 717006530); + int4x2 r1 = int4x2(1396179607, 177416855, 1524860667, 1408994706, 375284401, 1580130369, 1676086778, 717006530); + TestUtils.AreEqual(a1++, r1); + + int4x2 a2 = int4x2(506142468, 2026873940, 130175844, 1513142653, 420613464, 1219979307, 586574160, 357567451); + int4x2 r2 = int4x2(506142468, 2026873940, 130175844, 1513142653, 420613464, 1219979307, 586574160, 357567451); + TestUtils.AreEqual(a2++, r2); + + int4x2 a3 = int4x2(1468020171, 1127356901, 101238629, 2131648021, 423320704, 827539403, 1919960927, 840371710); + int4x2 r3 = int4x2(1468020171, 1127356901, 101238629, 2131648021, 423320704, 827539403, 1919960927, 840371710); + TestUtils.AreEqual(a3++, r3); + } + + [TestCompiler] + public static void int4x2_operator_prefix_dec() + { + int4x2 a0 = int4x2(200904609, 871077500, 968578728, 638967721, 1995396216, 435367037, 1782514098, 1589827826); + int4x2 r0 = int4x2(200904608, 871077499, 968578727, 638967720, 1995396215, 435367036, 1782514097, 1589827825); + TestUtils.AreEqual(--a0, r0); + + int4x2 a1 = int4x2(1434377580, 1699290403, 1758478358, 1914114460, 71237375, 389120307, 1022184392, 1310293956); + int4x2 r1 = int4x2(1434377579, 1699290402, 1758478357, 1914114459, 71237374, 389120306, 1022184391, 1310293955); + TestUtils.AreEqual(--a1, r1); + + int4x2 a2 = int4x2(356565557, 906734601, 799006218, 1383897383, 1040798388, 1469596990, 1719228297, 220897829); + int4x2 r2 = int4x2(356565556, 906734600, 799006217, 1383897382, 1040798387, 1469596989, 1719228296, 220897828); + TestUtils.AreEqual(--a2, r2); + + int4x2 a3 = int4x2(1454322707, 14227726, 293093918, 1065286595, 1249415499, 1009503100, 157482354, 965385343); + int4x2 r3 = int4x2(1454322706, 14227725, 293093917, 1065286594, 1249415498, 1009503099, 157482353, 965385342); + TestUtils.AreEqual(--a3, r3); + } + + [TestCompiler] + public static void int4x2_operator_postfix_dec() + { + int4x2 a0 = int4x2(283970262, 1109329936, 1073216143, 649439137, 1932646215, 1174104498, 484207852, 524156737); + int4x2 r0 = int4x2(283970262, 1109329936, 1073216143, 649439137, 1932646215, 1174104498, 484207852, 524156737); + TestUtils.AreEqual(a0--, r0); + + int4x2 a1 = int4x2(691209285, 802721301, 377162390, 526366486, 1504625034, 590919177, 60677868, 1867810045); + int4x2 r1 = int4x2(691209285, 802721301, 377162390, 526366486, 1504625034, 590919177, 60677868, 1867810045); + TestUtils.AreEqual(a1--, r1); + + int4x2 a2 = int4x2(2095777993, 324944916, 242636153, 1659736954, 1316734088, 1030072405, 1751972064, 1868889881); + int4x2 r2 = int4x2(2095777993, 324944916, 242636153, 1659736954, 1316734088, 1030072405, 1751972064, 1868889881); + TestUtils.AreEqual(a2--, r2); + + int4x2 a3 = int4x2(1726583208, 175622377, 181847458, 665549439, 530897466, 635466911, 416440036, 1447690298); + int4x2 r3 = int4x2(1726583208, 175622377, 181847458, 665549439, 530897466, 635466911, 416440036, 1447690298); + TestUtils.AreEqual(a3--, r3); + } + + [TestCompiler] + public static void int4x2_operator_bitwise_and_wide_wide() + { + int4x2 a0 = int4x2(779935043, 1097962163, 1939593304, 800599247, 952140918, 782792558, 1608557706, 396446406); + int4x2 b0 = int4x2(307705143, 1710882162, 866836769, 532490608, 679371720, 1794035877, 1439832202, 519529812); + int4x2 r0 = int4x2(39064835, 1097961522, 864731136, 263727168, 675283008, 715673636, 1438646410, 379666500); + TestUtils.AreEqual(a0 & b0, r0); + + int4x2 a1 = int4x2(2039894114, 1286974642, 442394124, 1759739564, 233435438, 665207770, 1942050241, 1022352952); + int4x2 b1 = int4x2(23633139, 1209152681, 646737179, 1255867027, 1900854122, 413173763, 1409138251, 2087190272); + int4x2 r1 = int4x2(16781410, 1209017504, 34366472, 1220739712, 21541162, 10485762, 1405162561, 1013440000); + TestUtils.AreEqual(a1 & b1, r1); + + int4x2 a2 = int4x2(60340400, 329119345, 406517382, 1126764634, 343425836, 1957552749, 1624478957, 341972372); + int4x2 b2 = int4x2(563439483, 354579077, 642224854, 1650432515, 755290290, 902865191, 661389406, 2134212586); + int4x2 r2 = int4x2(26222640, 285241857, 168582, 1107890178, 67125280, 880844837, 541065292, 337646976); + TestUtils.AreEqual(a2 & b2, r2); + + int4x2 a3 = int4x2(181537307, 130347414, 1240828622, 526120460, 695449226, 1477446724, 201628999, 737924014); + int4x2 b3 = int4x2(1855189321, 185194029, 810374380, 133197864, 1989578783, 38739182, 387425484, 1690486314); + int4x2 r3 = int4x2(177340425, 50384900, 4522188, 122712072, 538087434, 3140, 67404868, 549634602); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void int4x2_operator_bitwise_and_wide_scalar() + { + int4x2 a0 = int4x2(443615469, 490057985, 2042441263, 1524760558, 1405175110, 510212004, 1941875181, 1236735839); + int b0 = (93423598); + int4x2 r0 = int4x2(1114348, 85033216, 26281518, 8488942, 25232710, 67176356, 26247660, 26281806); + TestUtils.AreEqual(a0 & b0, r0); + + int4x2 a1 = int4x2(1365509729, 607982857, 650270920, 1249238550, 814629680, 1862276471, 143502472, 861733033); + int b1 = (428270198); + int4x2 r1 = int4x2(285475424, 262144, 8536128, 134529558, 277234224, 150995062, 142909440, 285474848); + TestUtils.AreEqual(a1 & b1, r1); + + int4x2 a2 = int4x2(1408932942, 1567715668, 1102952410, 322053683, 1599352836, 208656708, 1272226025, 462670926); + int b2 = (957693145); + int4x2 r2 = int4x2(286268488, 420556880, 18167000, 286270481, 420753408, 134551616, 152314057, 420547656); + TestUtils.AreEqual(a2 & b2, r2); + + int4x2 a3 = int4x2(1817145060, 1817277774, 818900583, 772681077, 1630437952, 546018772, 872875431, 1143080525); + int b3 = (1466722981); + int4x2 r3 = int4x2(1145858724, 1145069572, 273443365, 101460005, 1093403136, 524420, 335806629, 1142948357); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void int4x2_operator_bitwise_and_scalar_wide() + { + int a0 = (1144543590); + int4x2 b0 = int4x2(420346723, 562416448, 1393127318, 1560699552, 851218057, 703880958, 1159378889, 2031211279); + int4x2 r0 = int4x2(547170, 18752, 1074284806, 1140867104, 3672064, 3168358, 1142427968, 1074811142); + TestUtils.AreEqual(a0 & b0, r0); + + int a1 = (1089518981); + int4x2 b1 = int4x2(270607307, 1349288930, 520199596, 1763483957, 1248975349, 236938635, 185023291, 1085233038); + int4x2 r1 = int4x2(2105729, 1080066432, 40324, 1074831621, 1081121157, 1058177, 14593, 1084233092); + TestUtils.AreEqual(a1 & b1, r1); + + int a2 = (1845693112); + int4x2 b2 = int4x2(946052961, 1436238522, 2042776519, 56356886, 1770159840, 1872339579, 1439201366, 1233066417); + int4x2 r2 = int4x2(671287840, 1141047992, 1744964224, 33751056, 1744964256, 1845559864, 1140852752, 1208158384); + TestUtils.AreEqual(a2 & b2, r2); + + int a3 = (1214109404); + int4x2 b3 = int4x2(2255485, 1814885263, 1711986588, 1286898282, 915476451, 1870138851, 372814411, 1623486506); + int4x2 r3 = int4x2(16988, 1208799884, 1074321052, 1209303624, 1115840, 1213727936, 1610312, 1078218760); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void int4x2_operator_bitwise_or_wide_wide() + { + int4x2 a0 = int4x2(1731159103, 659068416, 382702471, 1821032196, 1565773438, 1004000514, 948501377, 600951835); + int4x2 b0 = int4x2(1583847161, 692672727, 1161585489, 1756207130, 1321374429, 1287357212, 2075767170, 1273513430); + int4x2 r0 = int4x2(2138044159, 793370327, 1476391895, 1823457054, 1607720703, 2147473182, 2075786115, 1811533279); + TestUtils.AreEqual(a0 | b0, r0); + + int4x2 a1 = int4x2(669346222, 396691477, 2108560248, 2117522137, 330307355, 818676817, 1774459567, 1117506257); + int4x2 b1 = int4x2(1610830169, 1316929125, 511625048, 573925879, 1502255628, 1841676448, 1682928938, 1115131952); + int4x2 r1 = int4x2(1743223295, 1610595957, 2147407736, 2117598207, 1538957087, 2110637297, 1842315183, 1124063985); + TestUtils.AreEqual(a1 | b1, r1); + + int4x2 a2 = int4x2(1254511182, 1017865993, 1883021644, 1140203470, 759288967, 2122744307, 335621148, 715028074); + int4x2 b2 = int4x2(1541423910, 1416096228, 188606371, 1041599540, 219545389, 560097663, 1087543661, 936383841); + int4x2 r2 = int4x2(1541821294, 2096099309, 2067654639, 2146934782, 760610735, 2145839615, 1423162749, 1071544171); + TestUtils.AreEqual(a2 | b2, r2); + + int4x2 a3 = int4x2(543305337, 662107399, 1934997335, 436754869, 1613808671, 362365372, 342908672, 2129231210); + int4x2 b3 = int4x2(108816721, 1694053551, 452638547, 1219534055, 85142537, 1027930490, 2126839395, 2030328147); + int4x2 r3 = int4x2(645820281, 1744827823, 2080356183, 1522064887, 1697901599, 1037957630, 2129985379, 2146270587); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void int4x2_operator_bitwise_or_wide_scalar() + { + int4x2 a0 = int4x2(961259683, 471103264, 1733389229, 1591585258, 386953869, 1148351449, 1048929715, 1814263250); + int b0 = (1666102508); + int4x2 r0 = int4x2(2068823279, 2136930284, 1734344685, 2145369582, 2002712301, 1736374269, 2144335359, 1869608446); + TestUtils.AreEqual(a0 | b0, r0); + + int4x2 a1 = int4x2(860336789, 1227888278, 774029856, 879300408, 1179087439, 797240690, 1977614655, 46921989); + int b1 = (1637162093); + int4x2 r1 = int4x2(1943518973, 1773477631, 1874321005, 1979522941, 1742175855, 1872100735, 1978998143, 1675623789); + TestUtils.AreEqual(a1 | b1, r1); + + int4x2 a2 = int4x2(1980838747, 64304104, 313591807, 1393862490, 1890090886, 521303722, 2021379070, 2055963359); + int b2 = (284225881); + int4x2 r2 = int4x2(1995567963, 334885881, 317847551, 1408563035, 1895366623, 536016891, 2029779967, 2063332319); + TestUtils.AreEqual(a2 | b2, r2); + + int4x2 a3 = int4x2(1511253082, 1142751163, 1767274359, 1421981808, 1501294791, 485944015, 539526284, 310877895); + int b3 = (1775629833); + int4x2 r3 = int4x2(2077750875, 1843265467, 1775761279, 2111176313, 2046817999, 2113404623, 1778251405, 2077753039); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void int4x2_operator_bitwise_or_scalar_wide() + { + int a0 = (1213433101); + int4x2 b0 = int4x2(1212928242, 1614462616, 936937728, 764766995, 306352095, 574719481, 1283571271, 2109131012); + int4x2 r0 = int4x2(1213978111, 1752940445, 2145094925, 1842867999, 1515425759, 1783858685, 1288945487, 2113391885); + TestUtils.AreEqual(a0 | b0, r0); + + int a1 = (979469710); + int4x2 b1 = int4x2(1348323481, 1407542578, 697517649, 1059093741, 627815046, 418822515, 83214352, 424663473); + int4x2 r1 = int4x2(2055064991, 2078664126, 1005832159, 1063386607, 1064023950, 989314559, 1056294302, 997187007); + TestUtils.AreEqual(a1 | b1, r1); + + int a2 = (447949225); + int4x2 b2 = int4x2(527022375, 1947148461, 305251437, 1254601325, 1752329425, 1592402684, 1587055329, 1088734150); + int4x2 r2 = int4x2(536590767, 2126457261, 447999469, 1526184941, 2062773753, 1593519101, 1589357545, 1526197231); + TestUtils.AreEqual(a2 | b2, r2); + + int a3 = (298563808); + int4x2 b3 = int4x2(2052547661, 582843231, 656983670, 1944993640, 1081208038, 829763560, 990961386, 547309556); + int4x2 r3 = int4x2(2078276845, 872414207, 938213110, 1945092072, 1375468774, 838844392, 1004273386, 836763636); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void int4x2_operator_bitwise_xor_wide_wide() + { + int4x2 a0 = int4x2(1556324760, 207002929, 1843444873, 1632079131, 1460334334, 1607815585, 220623650, 38668553); + int4x2 b0 = int4x2(1054997548, 1523759632, 251164872, 110472397, 384031112, 1109163205, 535118981, 179106262); + int4x2 r0 = int4x2(1646419380, 1451501345, 1662567489, 1741824470, 1105803126, 499723620, 314783655, 149092575); + TestUtils.AreEqual(a0 ^ b0, r0); + + int4x2 a1 = int4x2(47193340, 643663548, 1371932564, 94957188, 700973621, 370621508, 2087573076, 351476570); + int4x2 b1 = int4x2(1523031711, 1713313372, 1294118730, 520360641, 1040688781, 1020757245, 1143954843, 1281933464); + int4x2 r1 = int4x2(1477935715, 1078104288, 484747486, 447544389, 399484088, 717273273, 943885263, 1486609346); + TestUtils.AreEqual(a1 ^ b1, r1); + + int4x2 a2 = int4x2(1340815927, 681577472, 314138777, 446857644, 1368661599, 1672499683, 1259759761, 2049102405); + int4x2 b2 = int4x2(175288469, 326874157, 1192052687, 1087083643, 1900865484, 1521193463, 569695524, 1622101483); + int4x2 r2 = int4x2(1167690402, 1004255277, 1437869910, 1516836311, 551090579, 958119956, 1793242549, 445489070); + TestUtils.AreEqual(a2 ^ b2, r2); + + int4x2 a3 = int4x2(1972524935, 91962333, 1960780785, 1303778459, 960040360, 822786011, 2028027011, 170382968); + int4x2 b3 = int4x2(1340735463, 546583617, 1034420616, 262206030, 1834125935, 802756092, 611321886, 316379491); + int4x2 r3 = int4x2(981182560, 636424092, 1232544377, 1108797141, 1416333255, 517186087, 1553020061, 419186459); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void int4x2_operator_bitwise_xor_wide_scalar() + { + int4x2 a0 = int4x2(2124666952, 177397845, 574879617, 1937385541, 1136545648, 213863690, 535061373, 289301586); + int b0 = (493665894); + int4x2 r0 = int4x2(1674536494, 402546227, 1060063719, 1846973987, 1590882582, 299103084, 42523931, 206756404); + TestUtils.AreEqual(a0 ^ b0, r0); + + int4x2 a1 = int4x2(1305234431, 1308626970, 1267729267, 125659640, 1315625690, 1730088797, 116862046, 375757978); + int b1 = (353786540); + int4x2 r1 = int4x2(1490686291, 1528187574, 1585863135, 309015380, 1534886006, 1913214449, 333543154, 57919030); + TestUtils.AreEqual(a1 ^ b1, r1); + + int4x2 a2 = int4x2(491079274, 187129429, 967051293, 549951551, 653124416, 788984, 1479174924, 1680011736); + int b2 = (191750702); + int4x2 r2 = int4x2(371762244, 4897915, 852093491, 732592657, 763363694, 190966742, 1397197090, 1867453430); + TestUtils.AreEqual(a2 ^ b2, r2); + + int4x2 a3 = int4x2(447453839, 293394300, 527727631, 529042816, 1382138962, 1206186973, 1059509471, 744733291); + int b3 = (890841598); + int4x2 r3 = int4x2(800240497, 610664066, 711808497, 714187902, 1735978412, 1929239075, 171965729, 427463573); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void int4x2_operator_bitwise_xor_scalar_wide() + { + int a0 = (1288453276); + int4x2 b0 = int4x2(1077599928, 884741329, 212164516, 1585020328, 152985454, 1775851275, 1416249064, 1309317737); + int4x2 r0 = int4x2(217506340, 2020616269, 1080648504, 313868596, 1171416050, 622160791, 413532788, 46573301); + TestUtils.AreEqual(a0 ^ b0, r0); + + int a1 = (1773918217); + int4x2 b1 = int4x2(1509843030, 1206045972, 1154916424, 1947871003, 1774252400, 1946113778, 1079717492, 290620937); + int4x2 r1 = int4x2(809875551, 777590045, 762148929, 497155858, 8071545, 440700667, 702609021, 2028559872); + TestUtils.AreEqual(a1 ^ b1, r1); + + int a2 = (1382343363); + int4x2 b2 = int4x2(939045099, 1309568053, 221134131, 885841718, 612068188, 194068085, 1396957881, 573581481); + int4x2 r2 = int4x2(1704743464, 476745462, 1598742512, 1722301941, 1981778335, 1509285046, 19333242, 1884605034); + TestUtils.AreEqual(a2 ^ b2, r2); + + int a3 = (1813817520); + int4x2 b3 = int4x2(86594349, 2006985393, 1431761813, 905646837, 1522414781, 192882943, 714832744, 374210759); + int4x2 r3 = int4x2(1765145501, 465338881, 961174309, 1508358725, 916626445, 1734574159, 1183306712, 2052237431); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void int4x2_operator_left_shift() + { + int4x2 a0 = int4x2(197771193, 622182602, 1283988958, 1327917304, 473415985, 432425717, 870301196, 2058433484); + int b0 = (1321149625); + int4x2 r0 = int4x2(1912602624, -1811939328, -1140850688, -268435456, 1644167168, -369098752, 402653184, -1744830464); + TestUtils.AreEqual(a0 << b0, r0); + + int4x2 a1 = int4x2(1200694230, 1360008038, 1008296534, 1447702302, 1079614371, 35667343, 1664454606, 2045594989); + int b1 = (1531607705); + int4x2 r1 = int4x2(-1409286144, -872415232, -1409286144, 1006632960, 1174405120, 503316480, -1677721600, -637534208); + TestUtils.AreEqual(a1 << b1, r1); + + int4x2 a2 = int4x2(2077023268, 297755411, 1722762487, 1161625759, 37265945, 997793693, 1521705181, 263886278); + int b2 = (592678686); + int4x2 r2 = int4x2(0, -1073741824, -1073741824, -1073741824, 1073741824, 1073741824, 1073741824, -2147483648); + TestUtils.AreEqual(a2 << b2, r2); + + int4x2 a3 = int4x2(221147365, 230910816, 71403448, 481375728, 1176038816, 1382694875, 1824729613, 1535276688); + int b3 = (2084190583); + int4x2 r3 = int4x2(1920991232, -1342177280, -603979776, -134217728, -805306368, -310378496, 109051904, 1207959552); + TestUtils.AreEqual(a3 << b3, r3); + } + + [TestCompiler] + public static void int4x2_operator_right_shift() + { + int4x2 a0 = int4x2(548167301, 1161338299, 1617625829, 1860731847, 713958715, 196552656, 770466193, 1265099998); + int b0 = (1266801540); + int4x2 r0 = int4x2(34260456, 72583643, 101101614, 116295740, 44622419, 12284541, 48154137, 79068749); + TestUtils.AreEqual(a0 >> b0, r0); + + int4x2 a1 = int4x2(572763124, 426807581, 2031319045, 701927980, 917785020, 569504877, 185593382, 1102123711); + int b1 = (506619530); + int4x2 r1 = int4x2(559338, 416804, 1983710, 685476, 896274, 556157, 181243, 1076292); + TestUtils.AreEqual(a1 >> b1, r1); + + int4x2 a2 = int4x2(334005460, 280138733, 1598620011, 1840564178, 736389149, 1279158873, 408822762, 763607760); + int b2 = (1624751550); + int4x2 r2 = int4x2(0, 0, 1, 1, 0, 1, 0, 0); + TestUtils.AreEqual(a2 >> b2, r2); + + int4x2 a3 = int4x2(348013684, 774126687, 1587054000, 600069797, 29576474, 1880981389, 352174824, 1164508476); + int b3 = (1568185874); + int4x2 r3 = int4x2(1327, 2953, 6054, 2289, 112, 7175, 1343, 4442); + TestUtils.AreEqual(a3 >> b3, r3); + } + + [TestCompiler] + public static void int4x2_operator_bitwise_not() + { + int4x2 a0 = int4x2(1403358969, 831360921, 2088190243, 976721016, 878283189, 308994339, 1935567517, 1420884856); + int4x2 r0 = int4x2(-1403358970, -831360922, -2088190244, -976721017, -878283190, -308994340, -1935567518, -1420884857); + TestUtils.AreEqual(~a0, r0); + + int4x2 a1 = int4x2(472965491, 627580960, 2061524024, 753208488, 2097179283, 1303022493, 664744603, 1289372466); + int4x2 r1 = int4x2(-472965492, -627580961, -2061524025, -753208489, -2097179284, -1303022494, -664744604, -1289372467); + TestUtils.AreEqual(~a1, r1); + + int4x2 a2 = int4x2(1635981125, 1545651937, 717936457, 1284504687, 1342785385, 869629475, 2045854321, 1282546942); + int4x2 r2 = int4x2(-1635981126, -1545651938, -717936458, -1284504688, -1342785386, -869629476, -2045854322, -1282546943); + TestUtils.AreEqual(~a2, r2); + + int4x2 a3 = int4x2(1562433528, 1736570715, 508906058, 2060752880, 1867418756, 388530274, 695179852, 1766938039); + int4x2 r3 = int4x2(-1562433529, -1736570716, -508906059, -2060752881, -1867418757, -388530275, -695179853, -1766938040); + TestUtils.AreEqual(~a3, r3); + } + + + } +} diff --git a/package/Tests/Tests/Shared/TestInt4x2.gen.cs.meta b/package/Tests/Tests/Shared/TestInt4x2.gen.cs.meta new file mode 100755 index 000000000..fb8905d4e --- /dev/null +++ b/package/Tests/Tests/Shared/TestInt4x2.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a22ace1f6a955624aa145878a9d31bd2 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/package/Tests/Tests/Shared/TestInt4x3.gen.cs b/package/Tests/Tests/Shared/TestInt4x3.gen.cs new file mode 100755 index 000000000..feabe99cf --- /dev/null +++ b/package/Tests/Tests/Shared/TestInt4x3.gen.cs @@ -0,0 +1,1233 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using NUnit.Framework; +using static Unity.Mathematics.math; +using Burst.Compiler.IL.Tests; + +namespace Unity.Mathematics.Tests +{ + [TestFixture] + public class TestInt4x3 + { + [TestCompiler] + public static void int4x3_zero() + { + TestUtils.AreEqual(int4x3.zero.c0.x, 0); + TestUtils.AreEqual(int4x3.zero.c0.y, 0); + TestUtils.AreEqual(int4x3.zero.c0.z, 0); + TestUtils.AreEqual(int4x3.zero.c0.w, 0); + TestUtils.AreEqual(int4x3.zero.c1.x, 0); + TestUtils.AreEqual(int4x3.zero.c1.y, 0); + TestUtils.AreEqual(int4x3.zero.c1.z, 0); + TestUtils.AreEqual(int4x3.zero.c1.w, 0); + TestUtils.AreEqual(int4x3.zero.c2.x, 0); + TestUtils.AreEqual(int4x3.zero.c2.y, 0); + TestUtils.AreEqual(int4x3.zero.c2.z, 0); + TestUtils.AreEqual(int4x3.zero.c2.w, 0); + } + + [TestCompiler] + public static void int4x3_operator_equal_wide_wide() + { + int4x3 a0 = int4x3(790229414, 970783976, 1428432738, 1578747135, 1733797753, 2001507228, 1446876437, 1777406370, 1426387268, 1809275021, 1843770816, 1172185222); + int4x3 b0 = int4x3(612337669, 1214209108, 2120643427, 295461214, 1510890331, 1893316566, 921816149, 1834958575, 1482011863, 2062852792, 226398742, 770290735); + bool4x3 r0 = bool4x3(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + int4x3 a1 = int4x3(1469608940, 869874758, 458603090, 581282460, 1948324909, 1129078206, 1638391029, 1135553683, 2079295200, 576232476, 608208235, 11172509); + int4x3 b1 = int4x3(36812057, 543224481, 1565350150, 1909926604, 1619900436, 1849990483, 1261604411, 161864811, 843379453, 1780425458, 215681636, 2123130580); + bool4x3 r1 = bool4x3(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + int4x3 a2 = int4x3(1025529486, 2095601864, 193500113, 1780908384, 1587636094, 1892083815, 1250768669, 1984341771, 929607871, 2092475304, 1940221590, 196567546); + int4x3 b2 = int4x3(708665810, 1902328998, 1808456602, 563830672, 200493241, 1391620681, 1035522654, 168447603, 91580624, 1974459648, 2074899534, 164782857); + bool4x3 r2 = bool4x3(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + int4x3 a3 = int4x3(346458180, 2131041239, 1797649913, 162082500, 25639548, 1665178642, 1617231933, 1716426491, 1986475699, 262354389, 1517004243, 1058579789); + int4x3 b3 = int4x3(1647410210, 1000391363, 1539243411, 1253927304, 894227825, 1897420927, 826437109, 139868307, 565247534, 1437897788, 1891416649, 1043772546); + bool4x3 r3 = bool4x3(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void int4x3_operator_equal_wide_scalar() + { + int4x3 a0 = int4x3(1211464300, 1921862607, 508076684, 1249127920, 1394594555, 746862310, 1733655277, 1884008277, 1682018538, 795585660, 936027116, 927605411); + int b0 = (746972502); + bool4x3 r0 = bool4x3(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + int4x3 a1 = int4x3(672785749, 585324157, 404448210, 969511077, 442746747, 1772925698, 1884034177, 451512860, 425476075, 1370577708, 597010220, 1249636005); + int b1 = (1465584610); + bool4x3 r1 = bool4x3(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + int4x3 a2 = int4x3(211986678, 255635293, 1150443719, 177122433, 511346787, 1442445694, 667984966, 1684122010, 1962874832, 172230876, 496695881, 955604291); + int b2 = (1305479811); + bool4x3 r2 = bool4x3(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + int4x3 a3 = int4x3(872759249, 1604334190, 443527663, 1734064824, 1483978726, 1018945528, 476526026, 564821616, 1368099334, 2134154866, 2136028886, 20195989); + int b3 = (811880239); + bool4x3 r3 = bool4x3(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void int4x3_operator_equal_scalar_wide() + { + int a0 = (1150044438); + int4x3 b0 = int4x3(233855098, 924242519, 1402948791, 601381975, 2120518068, 629187703, 1971977031, 47183124, 1061805787, 1009011238, 312511148, 1460673064); + bool4x3 r0 = bool4x3(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + int a1 = (737210539); + int4x3 b1 = int4x3(1737844479, 1892405453, 2133024000, 455818693, 2003197687, 1276241219, 534746610, 559824292, 1758388240, 1023494292, 719963017, 1883763832); + bool4x3 r1 = bool4x3(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + int a2 = (597498209); + int4x3 b2 = int4x3(367814403, 1839429063, 223575614, 79701214, 1699606118, 759455864, 2017599457, 1395605233, 1191785903, 1156248212, 338891967, 61410415); + bool4x3 r2 = bool4x3(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + int a3 = (1576985758); + int4x3 b3 = int4x3(1066598856, 1070606918, 1295956934, 1391539053, 1206456305, 466211205, 1362213007, 554347592, 361925309, 1122476040, 1118155036, 2074160001); + bool4x3 r3 = bool4x3(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void int4x3_operator_not_equal_wide_wide() + { + int4x3 a0 = int4x3(1660932106, 982847023, 97046264, 1739517447, 1253499180, 1830584069, 1841470429, 1397841646, 1770890135, 1906548631, 169082967, 2099271786); + int4x3 b0 = int4x3(107139049, 75478496, 2055495054, 358586687, 942338347, 111564990, 113811950, 948912488, 1080084121, 1400504872, 1032134499, 1061123400); + bool4x3 r0 = bool4x3(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + int4x3 a1 = int4x3(1909317609, 46519139, 1433204003, 931492669, 670504132, 1551558665, 1204055048, 1623586740, 226381077, 1145987803, 644253929, 475189890); + int4x3 b1 = int4x3(221862069, 858950046, 989094643, 2023070999, 1269317127, 531883744, 687761409, 278427731, 296354221, 536981557, 1134676193, 1749879634); + bool4x3 r1 = bool4x3(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + int4x3 a2 = int4x3(922313145, 2006448607, 1574579050, 1839580033, 155350910, 313644534, 2008975915, 1072866331, 10845678, 1588544505, 709736932, 1892341087); + int4x3 b2 = int4x3(1944210269, 92849031, 164029425, 628797607, 2069207270, 2022667842, 880567401, 264404537, 1954996717, 572153302, 865957902, 1083128726); + bool4x3 r2 = bool4x3(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + int4x3 a3 = int4x3(1603981028, 1174123795, 2033630343, 416869471, 1894155826, 2084120548, 1130129683, 448491949, 1577220741, 376532834, 374116875, 416935463); + int4x3 b3 = int4x3(1628120900, 2020212393, 1562290229, 774641416, 444123152, 1636477381, 838643638, 506474707, 922761058, 1282331425, 1748402545, 1493297323); + bool4x3 r3 = bool4x3(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void int4x3_operator_not_equal_wide_scalar() + { + int4x3 a0 = int4x3(747758183, 1033001286, 1439973882, 2138928797, 1197845089, 1432672459, 950170763, 238704450, 2105962247, 727205263, 1640688041, 276313906); + int b0 = (248693828); + bool4x3 r0 = bool4x3(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + int4x3 a1 = int4x3(2126300423, 2035077187, 1171827730, 1412347883, 1622176923, 768370497, 1072798259, 1808712713, 1497830076, 1582645163, 1876273820, 90244766); + int b1 = (791998981); + bool4x3 r1 = bool4x3(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + int4x3 a2 = int4x3(30493685, 384643370, 11554610, 2016093187, 1515760622, 1596313927, 363921847, 1555396158, 913218907, 1739138988, 1916670251, 1516209113); + int b2 = (904014575); + bool4x3 r2 = bool4x3(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + int4x3 a3 = int4x3(765258490, 1509386069, 1670155205, 6112585, 1942607934, 964072392, 779222124, 409389668, 321500037, 1728722181, 1641292942, 780105497); + int b3 = (668154629); + bool4x3 r3 = bool4x3(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void int4x3_operator_not_equal_scalar_wide() + { + int a0 = (2076921066); + int4x3 b0 = int4x3(2037494727, 1989050616, 48833929, 1897435904, 514354517, 1783749164, 364694471, 754315072, 124108032, 1512967900, 1178825850, 1854793298); + bool4x3 r0 = bool4x3(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + int a1 = (50286949); + int4x3 b1 = int4x3(2100802631, 1640811853, 82110247, 472172806, 266984506, 2003668365, 1826089250, 1041416160, 356140110, 2057237962, 799920703, 1916347720); + bool4x3 r1 = bool4x3(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + int a2 = (510966350); + int4x3 b2 = int4x3(572038024, 1936481966, 1366859342, 1775285431, 604757336, 1047551607, 1311703338, 676012224, 627370253, 1715733805, 699755913, 1875151666); + bool4x3 r2 = bool4x3(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + int a3 = (358894860); + int4x3 b3 = int4x3(1036873378, 214171973, 340364269, 1652250278, 592713982, 806342921, 1264065574, 188560943, 1068608955, 485382245, 57935167, 1002934795); + bool4x3 r3 = bool4x3(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void int4x3_operator_less_wide_wide() + { + int4x3 a0 = int4x3(1182186063, 415538999, 1667335818, 1566618442, 1166180837, 639095188, 1080836365, 771119973, 928263233, 789225474, 665243110, 1003542034); + int4x3 b0 = int4x3(524633529, 1032195686, 760723389, 1505751409, 431962172, 1287906509, 1560084663, 1450178202, 2066166337, 1107069023, 1640077524, 2103263105); + bool4x3 r0 = bool4x3(false, true, false, false, false, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 < b0, r0); + + int4x3 a1 = int4x3(1032480172, 1961336172, 923379558, 21210619, 1089772116, 1707633052, 778986024, 158153146, 336715101, 1839141169, 1706859710, 1928438162); + int4x3 b1 = int4x3(684229139, 1234033624, 1278743281, 1953079347, 1228832942, 2082539723, 1088437561, 1058382082, 207459172, 750531081, 2015788562, 2126542133); + bool4x3 r1 = bool4x3(false, false, true, true, true, true, true, true, false, false, true, true); + TestUtils.AreEqual(a1 < b1, r1); + + int4x3 a2 = int4x3(1638101724, 2044698552, 1543260981, 471462349, 1668575142, 2147199161, 946870864, 582371851, 410751553, 198134393, 1999935258, 671192178); + int4x3 b2 = int4x3(271967348, 1601249324, 1373999400, 1689592186, 459759541, 983106679, 332584818, 2034921203, 833499488, 1999487070, 836063897, 1987309319); + bool4x3 r2 = bool4x3(false, false, false, true, false, false, false, true, true, true, false, true); + TestUtils.AreEqual(a2 < b2, r2); + + int4x3 a3 = int4x3(1908013191, 770353922, 1948420002, 396403395, 903274624, 1743415547, 1381528376, 409818366, 757370593, 413964581, 1088722047, 111511218); + int4x3 b3 = int4x3(1878327039, 457783938, 253010953, 1164175257, 1982277686, 651412210, 567444942, 1863256363, 18040866, 319226483, 1322530114, 4130283); + bool4x3 r3 = bool4x3(false, false, false, true, true, false, false, true, false, false, true, false); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void int4x3_operator_less_wide_scalar() + { + int4x3 a0 = int4x3(608447185, 818840405, 869219329, 2080125385, 1214500548, 1361741203, 1667165786, 1615392341, 840091491, 469591900, 1247103789, 315321650); + int b0 = (1491216667); + bool4x3 r0 = bool4x3(true, true, true, false, true, true, false, false, true, true, true, true); + TestUtils.AreEqual(a0 < b0, r0); + + int4x3 a1 = int4x3(930950514, 933855388, 908563901, 1127696709, 1286331950, 380753337, 971148054, 1827886929, 1056649851, 1579735991, 689044913, 1960894027); + int b1 = (1100560246); + bool4x3 r1 = bool4x3(true, true, true, false, false, true, true, false, true, false, true, false); + TestUtils.AreEqual(a1 < b1, r1); + + int4x3 a2 = int4x3(371987110, 1703747625, 1698536333, 41716206, 243673862, 1274625476, 611065092, 118750042, 1829327996, 452204442, 1645191336, 1829152606); + int b2 = (867559111); + bool4x3 r2 = bool4x3(true, false, false, true, true, false, true, true, false, true, false, false); + TestUtils.AreEqual(a2 < b2, r2); + + int4x3 a3 = int4x3(1891059504, 233590785, 894500093, 92899312, 965973603, 1496873003, 973411415, 694702440, 215973795, 1555455579, 1443255493, 212954934); + int b3 = (1217893177); + bool4x3 r3 = bool4x3(false, true, true, true, true, false, true, true, true, false, false, true); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void int4x3_operator_less_scalar_wide() + { + int a0 = (548436837); + int4x3 b0 = int4x3(282703327, 14370648, 1862117300, 1304793311, 826073259, 988910157, 445132446, 1139670255, 111349251, 1102440676, 112183144, 1594415311); + bool4x3 r0 = bool4x3(false, false, true, true, true, true, false, true, false, true, false, true); + TestUtils.AreEqual(a0 < b0, r0); + + int a1 = (1890019295); + int4x3 b1 = int4x3(2098715503, 608933527, 183989010, 1596056507, 1027318999, 146281093, 358911716, 874278078, 1106057699, 1256807459, 2111973919, 1736480659); + bool4x3 r1 = bool4x3(true, false, false, false, false, false, false, false, false, false, true, false); + TestUtils.AreEqual(a1 < b1, r1); + + int a2 = (810406400); + int4x3 b2 = int4x3(1329939911, 1276652605, 593690439, 771851138, 590897155, 386688344, 1290583204, 1984930954, 743544838, 1473400608, 1300775973, 1351720916); + bool4x3 r2 = bool4x3(true, true, false, false, false, false, true, true, false, true, true, true); + TestUtils.AreEqual(a2 < b2, r2); + + int a3 = (168788814); + int4x3 b3 = int4x3(670661854, 168118205, 894264935, 1763013903, 1647476162, 699045651, 1813273687, 900504872, 1574770031, 1684716245, 1458270033, 685700324); + bool4x3 r3 = bool4x3(true, false, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void int4x3_operator_greater_wide_wide() + { + int4x3 a0 = int4x3(592884447, 2133928932, 918957182, 1284069471, 194584707, 739120780, 241654068, 1340158550, 2099542537, 1182623667, 1399607274, 789301637); + int4x3 b0 = int4x3(138737040, 192863971, 1700841444, 1044631301, 1391589821, 730837695, 253553987, 2078872742, 910845808, 976047676, 202633078, 1223618940); + bool4x3 r0 = bool4x3(true, true, false, true, false, true, false, false, true, true, true, false); + TestUtils.AreEqual(a0 > b0, r0); + + int4x3 a1 = int4x3(180400925, 594688333, 1877031463, 1360073500, 1091782422, 546676424, 348221770, 716039145, 458742739, 1365508046, 1523167942, 1574478622); + int4x3 b1 = int4x3(641600530, 1830470354, 1570701388, 1104256103, 1838646932, 740166101, 1549021845, 1457092873, 1790630950, 907793213, 555122804, 1418910265); + bool4x3 r1 = bool4x3(false, false, true, true, false, false, false, false, false, true, true, true); + TestUtils.AreEqual(a1 > b1, r1); + + int4x3 a2 = int4x3(1295065160, 715285504, 1130323487, 677530432, 1496919050, 12463046, 1106153111, 1315083485, 31516321, 1786538920, 1854361210, 1730650972); + int4x3 b2 = int4x3(335209251, 1094341422, 1465325455, 390251369, 910309992, 277356652, 1601082764, 771366966, 1782348324, 550490783, 599992449, 550520692); + bool4x3 r2 = bool4x3(true, false, false, true, true, false, false, true, false, true, true, true); + TestUtils.AreEqual(a2 > b2, r2); + + int4x3 a3 = int4x3(194806663, 517304937, 984608679, 1847934645, 1214605555, 535405194, 855415884, 2121416263, 1161116500, 1390730698, 1536558799, 350939762); + int4x3 b3 = int4x3(1873014441, 1756459971, 2028992071, 1772761768, 1323261715, 1541822212, 265732078, 1773940614, 156425055, 1585395425, 438682493, 1005143622); + bool4x3 r3 = bool4x3(false, false, false, true, false, false, true, true, true, false, true, false); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void int4x3_operator_greater_wide_scalar() + { + int4x3 a0 = int4x3(1097138316, 211763648, 1883002501, 56406996, 43662641, 1923456111, 1437755186, 1219010035, 2125058448, 304028799, 893125636, 48044515); + int b0 = (438688675); + bool4x3 r0 = bool4x3(true, false, true, false, false, true, true, true, true, false, true, false); + TestUtils.AreEqual(a0 > b0, r0); + + int4x3 a1 = int4x3(711945018, 577943770, 572743717, 1016617211, 2063134811, 1577403353, 64009107, 1462961460, 1143565920, 3715845, 689362811, 263973424); + int b1 = (1035679270); + bool4x3 r1 = bool4x3(false, false, false, false, true, true, false, true, true, false, false, false); + TestUtils.AreEqual(a1 > b1, r1); + + int4x3 a2 = int4x3(1045140419, 524569092, 1183316983, 1107974092, 212839726, 523727054, 112709358, 614746280, 1000986708, 1683117650, 1451781409, 61102732); + int b2 = (1058332184); + bool4x3 r2 = bool4x3(false, false, true, true, false, false, false, false, false, true, true, false); + TestUtils.AreEqual(a2 > b2, r2); + + int4x3 a3 = int4x3(1284938191, 2125085618, 467075658, 1019531089, 2028286621, 940955706, 1037153304, 1184928188, 1260010015, 1456174269, 174216269, 1930086291); + int b3 = (1452639553); + bool4x3 r3 = bool4x3(false, true, false, false, true, false, false, false, false, true, false, true); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void int4x3_operator_greater_scalar_wide() + { + int a0 = (2024896938); + int4x3 b0 = int4x3(599356784, 185671342, 1932327391, 2025591013, 1257191721, 1312388500, 1443698859, 779217735, 691047512, 741776730, 732565983, 668302204); + bool4x3 r0 = bool4x3(true, true, true, false, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 > b0, r0); + + int a1 = (1556466996); + int4x3 b1 = int4x3(858599525, 1896917159, 701542098, 1052151621, 1023307544, 1435392907, 1858177345, 299897686, 632930355, 1387203601, 483722222, 863042711); + bool4x3 r1 = bool4x3(true, false, true, true, true, true, false, true, true, true, true, true); + TestUtils.AreEqual(a1 > b1, r1); + + int a2 = (1713088900); + int4x3 b2 = int4x3(315569296, 292652611, 1002628348, 927789921, 108145064, 425005337, 2093233588, 2063431853, 2079035844, 849337819, 1769234051, 358948261); + bool4x3 r2 = bool4x3(true, true, true, true, true, true, false, false, false, true, false, true); + TestUtils.AreEqual(a2 > b2, r2); + + int a3 = (267985383); + int4x3 b3 = int4x3(126402553, 2055164423, 577620406, 1167389614, 474380256, 1163355187, 1782967398, 1648397169, 845981950, 630459977, 1033887217, 1480829811); + bool4x3 r3 = bool4x3(true, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void int4x3_operator_less_equal_wide_wide() + { + int4x3 a0 = int4x3(1577248162, 2043073061, 1688380407, 176431985, 223299035, 1502802140, 1691709825, 386789394, 117182003, 1665770435, 1958490731, 420032601); + int4x3 b0 = int4x3(903445031, 2108974565, 210822256, 1281704747, 453681718, 66138830, 1229799377, 1620922595, 1715833766, 1366430432, 13102000, 46919981); + bool4x3 r0 = bool4x3(false, true, false, true, true, false, false, true, true, false, false, false); + TestUtils.AreEqual(a0 <= b0, r0); + + int4x3 a1 = int4x3(1251092689, 2011681765, 749743684, 183784440, 1150674774, 1633828822, 1719442172, 336047314, 743733218, 1393995865, 1854442658, 1498138884); + int4x3 b1 = int4x3(486470891, 1709514236, 2145785285, 854254454, 1273278658, 810263315, 1862773824, 201799013, 974166844, 1320622967, 2058099616, 522102017); + bool4x3 r1 = bool4x3(false, false, true, true, true, false, true, false, true, false, true, false); + TestUtils.AreEqual(a1 <= b1, r1); + + int4x3 a2 = int4x3(912169992, 1992682021, 1619593455, 1883313982, 483412430, 857881876, 346624138, 531961063, 269897278, 1062947703, 1743454202, 2048964070); + int4x3 b2 = int4x3(620752145, 1213693681, 1281818305, 1564146162, 1996153080, 1201909516, 614401396, 224997397, 648547686, 418431167, 1724009726, 401891826); + bool4x3 r2 = bool4x3(false, false, false, false, true, true, true, false, true, false, false, false); + TestUtils.AreEqual(a2 <= b2, r2); + + int4x3 a3 = int4x3(1379786452, 622697214, 766589782, 339960970, 1135815654, 797344244, 153103264, 1382144646, 1537448323, 326850885, 1004891948, 2002658522); + int4x3 b3 = int4x3(1463971422, 984323887, 1246893281, 1340476720, 1489579748, 128991539, 1117574406, 2016340116, 69682660, 1870772739, 1281621445, 129331822); + bool4x3 r3 = bool4x3(true, true, true, true, true, false, true, true, false, true, true, false); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void int4x3_operator_less_equal_wide_scalar() + { + int4x3 a0 = int4x3(1722165358, 1219858357, 860410743, 411099660, 348104022, 1963256951, 212084836, 58924407, 1459242706, 1745758438, 532949158, 262559763); + int b0 = (1688048545); + bool4x3 r0 = bool4x3(false, true, true, true, true, false, true, true, true, false, true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + int4x3 a1 = int4x3(690091301, 2091514001, 1857173043, 1617221948, 2017733017, 804204255, 981729559, 2032949254, 910922522, 2079225209, 26179915, 238796519); + int b1 = (1806172431); + bool4x3 r1 = bool4x3(true, false, false, true, false, true, true, false, true, false, true, true); + TestUtils.AreEqual(a1 <= b1, r1); + + int4x3 a2 = int4x3(1917813750, 20607406, 1337879822, 959460446, 1599429457, 1279143037, 1551937606, 626254356, 1162369122, 1021674613, 127839058, 1974631244); + int b2 = (1258115260); + bool4x3 r2 = bool4x3(false, true, false, true, false, false, false, true, true, true, true, false); + TestUtils.AreEqual(a2 <= b2, r2); + + int4x3 a3 = int4x3(426908235, 487782623, 1454736163, 465255784, 686095683, 2012624010, 1427922646, 1129062501, 1896996725, 1609784025, 1413823266, 1483727269); + int b3 = (1818566980); + bool4x3 r3 = bool4x3(true, true, true, true, true, false, true, true, false, true, true, true); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void int4x3_operator_less_equal_scalar_wide() + { + int a0 = (1777585); + int4x3 b0 = int4x3(1181030049, 1787703989, 1729760948, 1816537388, 1359786460, 874999193, 1678863148, 1711365839, 762067160, 11953554, 1131583906, 1175393186); + bool4x3 r0 = bool4x3(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + int a1 = (1293698493); + int4x3 b1 = int4x3(48893340, 66196247, 1958607116, 1576473309, 861890786, 478252419, 957887737, 117849810, 1348693584, 105489302, 259034238, 530713566); + bool4x3 r1 = bool4x3(false, false, true, true, false, false, false, false, true, false, false, false); + TestUtils.AreEqual(a1 <= b1, r1); + + int a2 = (601413850); + int4x3 b2 = int4x3(830430286, 145552297, 1697295044, 1150680564, 2091065664, 1796096704, 1572008712, 1556906486, 205552788, 620963188, 1156705971, 1121867260); + bool4x3 r2 = bool4x3(true, false, true, true, true, true, true, true, false, true, true, true); + TestUtils.AreEqual(a2 <= b2, r2); + + int a3 = (733876180); + int4x3 b3 = int4x3(1570208446, 541165966, 644414754, 734807383, 938714737, 591783460, 56988751, 790541516, 1811299247, 1308256680, 549490410, 1987696011); + bool4x3 r3 = bool4x3(true, false, false, true, true, false, false, true, true, true, false, true); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void int4x3_operator_greater_equal_wide_wide() + { + int4x3 a0 = int4x3(263000030, 744235661, 1893760267, 237248, 1062370984, 1676977687, 816766880, 1089431546, 1394493730, 1176473380, 1193988637, 1703862455); + int4x3 b0 = int4x3(1395535146, 1178373944, 1237373760, 1364855321, 600811864, 362060472, 290870624, 1839067862, 396958580, 1336888643, 1019684398, 1697684196); + bool4x3 r0 = bool4x3(false, false, true, false, true, true, true, false, true, false, true, true); + TestUtils.AreEqual(a0 >= b0, r0); + + int4x3 a1 = int4x3(1806186947, 1253571980, 589397635, 1951842887, 798931197, 808426484, 744869638, 1959531616, 207430702, 1533946595, 1148381840, 2011549474); + int4x3 b1 = int4x3(1227300220, 2044269675, 1898323839, 874509380, 1873505472, 1268843918, 1606949562, 1263896445, 1805518202, 1412091359, 1240330374, 1955056253); + bool4x3 r1 = bool4x3(true, false, false, true, false, false, false, true, false, true, false, true); + TestUtils.AreEqual(a1 >= b1, r1); + + int4x3 a2 = int4x3(605043041, 1707339660, 2038122892, 345761584, 1839156338, 1519670644, 2131285427, 775457686, 796452624, 1710612922, 1629927787, 1094198224); + int4x3 b2 = int4x3(2025187918, 750755999, 869709740, 1390799279, 1194035112, 666460047, 103451220, 1311530792, 802468307, 1090745055, 1968071275, 1935027815); + bool4x3 r2 = bool4x3(false, true, true, false, true, true, true, false, false, true, false, false); + TestUtils.AreEqual(a2 >= b2, r2); + + int4x3 a3 = int4x3(584910611, 1129457941, 1633221450, 549302356, 1363234393, 1439226634, 190984179, 983870135, 1527743888, 1577171227, 87278918, 1280094665); + int4x3 b3 = int4x3(2060060582, 1535954082, 291771096, 565856573, 1445999374, 711693364, 1201086888, 2076705104, 1565110852, 1698318173, 1293071569, 103979482); + bool4x3 r3 = bool4x3(false, false, true, false, false, true, false, false, false, false, false, true); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void int4x3_operator_greater_equal_wide_scalar() + { + int4x3 a0 = int4x3(2112791350, 1043657935, 101764761, 1529909067, 556026890, 281734132, 1186600258, 815093894, 609211196, 1604309397, 829548642, 244604867); + int b0 = (1470533736); + bool4x3 r0 = bool4x3(true, false, false, true, false, false, false, false, false, true, false, false); + TestUtils.AreEqual(a0 >= b0, r0); + + int4x3 a1 = int4x3(1419295004, 1819986195, 1460027917, 1646290021, 196833647, 1596738181, 1905036391, 1771391775, 1584946560, 370941146, 440219668, 1607345862); + int b1 = (471843809); + bool4x3 r1 = bool4x3(true, true, true, true, false, true, true, true, true, false, false, true); + TestUtils.AreEqual(a1 >= b1, r1); + + int4x3 a2 = int4x3(1449142607, 379014762, 1719435169, 258833609, 1389585003, 612593660, 42612027, 1138747386, 1491562090, 917503963, 353608194, 1526792895); + int b2 = (1223010129); + bool4x3 r2 = bool4x3(true, false, true, false, true, false, false, false, true, false, false, true); + TestUtils.AreEqual(a2 >= b2, r2); + + int4x3 a3 = int4x3(192092521, 367754234, 1738737389, 523396822, 594728703, 1332667659, 1627604854, 1542713928, 1997611484, 191413337, 1230701700, 702382564); + int b3 = (909358617); + bool4x3 r3 = bool4x3(false, false, true, false, false, true, true, true, true, false, true, false); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void int4x3_operator_greater_equal_scalar_wide() + { + int a0 = (1525542481); + int4x3 b0 = int4x3(1503244746, 861711266, 817773856, 925984572, 571221723, 683686810, 118252990, 1653952090, 1240253990, 1947039008, 1869136019, 152012637); + bool4x3 r0 = bool4x3(true, true, true, true, true, true, true, false, true, false, false, true); + TestUtils.AreEqual(a0 >= b0, r0); + + int a1 = (1214546726); + int4x3 b1 = int4x3(917376832, 303549425, 2111728811, 945321577, 173706579, 625318949, 519443238, 1583588379, 1026799433, 1713083717, 394922760, 1216218189); + bool4x3 r1 = bool4x3(true, true, false, true, true, true, true, false, true, false, true, false); + TestUtils.AreEqual(a1 >= b1, r1); + + int a2 = (1336522452); + int4x3 b2 = int4x3(233894308, 479913036, 984991199, 172993285, 2121050903, 465645173, 788510727, 337378780, 273010835, 1898553615, 1111540136, 717385513); + bool4x3 r2 = bool4x3(true, true, true, true, false, true, true, true, true, false, true, true); + TestUtils.AreEqual(a2 >= b2, r2); + + int a3 = (474197678); + int4x3 b3 = int4x3(1417152771, 1476091619, 1312849725, 243299324, 1470872301, 1443256118, 1203165035, 2138148138, 1543595760, 186659728, 807288168, 1274079907); + bool4x3 r3 = bool4x3(false, false, false, true, false, false, false, false, false, true, false, false); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void int4x3_operator_add_wide_wide() + { + int4x3 a0 = int4x3(2049228671, 1658660009, 491719392, 937013355, 81108663, 1063894558, 86954702, 843159721, 698977704, 192867135, 1683407172, 137301303); + int4x3 b0 = int4x3(2088751567, 645762023, 306868786, 4360271, 506047997, 2094559874, 1634712736, 1601474440, 1586485231, 908746788, 1812370320, 1247342357); + int4x3 r0 = int4x3(-156987058, -1990545264, 798588178, 941373626, 587156660, -1136512864, 1721667438, -1850333135, -2009504361, 1101613923, -799189804, 1384643660); + TestUtils.AreEqual(a0 + b0, r0); + + int4x3 a1 = int4x3(2103582820, 526139155, 447937230, 2127411006, 1670579390, 1914969141, 997691756, 857841794, 2129024875, 267535529, 978891383, 657092366); + int4x3 b1 = int4x3(2043773873, 223363428, 175115707, 985928617, 507662836, 1231457019, 776127866, 607782424, 1160366210, 1384832242, 702057048, 703554905); + int4x3 r1 = int4x3(-147610603, 749502583, 623052937, -1181627673, -2116725070, -1148541136, 1773819622, 1465624218, -1005576211, 1652367771, 1680948431, 1360647271); + TestUtils.AreEqual(a1 + b1, r1); + + int4x3 a2 = int4x3(941872903, 906908654, 1940071697, 862186205, 1951450264, 689662850, 1928213278, 1703906688, 526120638, 423980484, 1867227242, 603782684); + int4x3 b2 = int4x3(2106992817, 1994483489, 539473, 236858351, 411317652, 595429166, 713649927, 2053476603, 77965941, 1726775513, 1759186349, 2070333485); + int4x3 r2 = int4x3(-1246101576, -1393575153, 1940611170, 1099044556, -1932199380, 1285092016, -1653104091, -537584005, 604086579, -2144211299, -668553705, -1620851127); + TestUtils.AreEqual(a2 + b2, r2); + + int4x3 a3 = int4x3(728643437, 927205560, 1544834791, 268450974, 1386681507, 1428974172, 1415690700, 1193340567, 1792960278, 1427490402, 86465016, 827052793); + int4x3 b3 = int4x3(1732568358, 523040962, 899952708, 1401525772, 1970067897, 488428060, 132927517, 1670039917, 1678110790, 586374104, 262412628, 1415374948); + int4x3 r3 = int4x3(-1833755501, 1450246522, -1850179797, 1669976746, -938217892, 1917402232, 1548618217, -1431586812, -823896228, 2013864506, 348877644, -2052539555); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void int4x3_operator_add_wide_scalar() + { + int4x3 a0 = int4x3(2038218457, 134923711, 875689667, 1338884463, 997710928, 340490871, 1067888129, 70433301, 2003021861, 1635971971, 1160398286, 85446202); + int b0 = (2124409227); + int4x3 r0 = int4x3(-132339612, -2035634358, -1294868402, -831673606, -1172847141, -1830067198, -1102669940, -2100124768, -167536208, -534586098, -1010159783, -2085111867); + TestUtils.AreEqual(a0 + b0, r0); + + int4x3 a1 = int4x3(1068152966, 1497676888, 1727477485, 1095438654, 756559204, 1818718931, 658923552, 1610518921, 1585755398, 692843300, 1068593469, 1704776233); + int b1 = (1239387100); + int4x3 r1 = int4x3(-1987427230, -1557903308, -1328102711, -1960141542, 1995946304, -1236861265, 1898310652, -1445061275, -1469824798, 1932230400, -1986986727, -1350803963); + TestUtils.AreEqual(a1 + b1, r1); + + int4x3 a2 = int4x3(577782260, 711894571, 564257439, 2051736283, 1572837697, 1628006545, 1855700263, 656748782, 272774516, 1917133199, 828322973, 2116810190); + int b2 = (736972565); + int4x3 r2 = int4x3(1314754825, 1448867136, 1301230004, -1506258448, -1985157034, -1929988186, -1702294468, 1393721347, 1009747081, -1640861532, 1565295538, -1441184541); + TestUtils.AreEqual(a2 + b2, r2); + + int4x3 a3 = int4x3(2092767444, 1236931273, 504264449, 794292574, 1518058681, 1604636324, 354873417, 685247897, 227781140, 321182517, 1210575914, 1340503111); + int b3 = (973587865); + int4x3 r3 = int4x3(-1228611987, -2084448158, 1477852314, 1767880439, -1803320750, -1716743107, 1328461282, 1658835762, 1201369005, 1294770382, -2110803517, -1980876320); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void int4x3_operator_add_scalar_wide() + { + int a0 = (391092078); + int4x3 b0 = int4x3(519908870, 851424292, 328314822, 135622204, 740923360, 655394201, 1451896269, 1781697072, 996031825, 1557774949, 779774940, 1111541302); + int4x3 r0 = int4x3(911000948, 1242516370, 719406900, 526714282, 1132015438, 1046486279, 1842988347, -2122178146, 1387123903, 1948867027, 1170867018, 1502633380); + TestUtils.AreEqual(a0 + b0, r0); + + int a1 = (783046445); + int4x3 b1 = int4x3(1130163944, 288279584, 1397683861, 1636583489, 673263339, 1469300874, 14855965, 1116636999, 1488863300, 1600990886, 190651301, 1307459768); + int4x3 r1 = int4x3(1913210389, 1071326029, -2114236990, -1875337362, 1456309784, -2042619977, 797902410, 1899683444, -2023057551, -1910929965, 973697746, 2090506213); + TestUtils.AreEqual(a1 + b1, r1); + + int a2 = (920085839); + int4x3 b2 = int4x3(2082229835, 1992405574, 1213924458, 505841452, 981421162, 1488337699, 1113826640, 1806146508, 1841791222, 206610851, 526971953, 1236359886); + int4x3 r2 = int4x3(-1292651622, -1382475883, 2134010297, 1425927291, 1901507001, -1886543758, 2033912479, -1568734949, -1533090235, 1126696690, 1447057792, -2138521571); + TestUtils.AreEqual(a2 + b2, r2); + + int a3 = (1459523189); + int4x3 b3 = int4x3(965740631, 82842799, 1298403201, 1805809772, 1978864191, 415003386, 1906304148, 722870197, 744248796, 1677223559, 303376031, 1275565021); + int4x3 r3 = int4x3(-1869703476, 1542365988, -1537040906, -1029634335, -856579916, 1874526575, -929139959, -2112573910, -2091195311, -1158220548, 1762899220, -1559879086); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void int4x3_operator_sub_wide_wide() + { + int4x3 a0 = int4x3(1353441118, 797269833, 659988112, 56022121, 365847472, 2062899435, 1380988474, 799885138, 1306058185, 579775276, 1239163824, 344591081); + int4x3 b0 = int4x3(1332656812, 1827794007, 972557431, 2078233689, 1508184327, 1372307701, 810327977, 936799885, 71562303, 1418723328, 1971342989, 1226053395); + int4x3 r0 = int4x3(20784306, -1030524174, -312569319, -2022211568, -1142336855, 690591734, 570660497, -136914747, 1234495882, -838948052, -732179165, -881462314); + TestUtils.AreEqual(a0 - b0, r0); + + int4x3 a1 = int4x3(86359575, 1049709943, 721529513, 1767221271, 7652784, 545192611, 176298787, 1477774126, 1426963688, 2032787858, 2059525977, 445200454); + int4x3 b1 = int4x3(136565478, 1979903295, 600719425, 837912956, 632054793, 711091688, 904695656, 1640069560, 750244414, 1385118097, 1102391291, 1221949855); + int4x3 r1 = int4x3(-50205903, -930193352, 120810088, 929308315, -624402009, -165899077, -728396869, -162295434, 676719274, 647669761, 957134686, -776749401); + TestUtils.AreEqual(a1 - b1, r1); + + int4x3 a2 = int4x3(425848588, 2026967474, 1128492011, 61421784, 988065731, 1741434432, 2070331135, 1356704176, 1888446703, 1364654917, 265135366, 760501098); + int4x3 b2 = int4x3(609588723, 1054324682, 1678086165, 1529581776, 1718700085, 523422634, 223602473, 1912611694, 1224986479, 748933681, 88793450, 401362529); + int4x3 r2 = int4x3(-183740135, 972642792, -549594154, -1468159992, -730634354, 1218011798, 1846728662, -555907518, 663460224, 615721236, 176341916, 359138569); + TestUtils.AreEqual(a2 - b2, r2); + + int4x3 a3 = int4x3(741271824, 2139243287, 2086038778, 1314011065, 1838848671, 1554054707, 721235598, 1856904592, 570633009, 1870509604, 1310744871, 1717222072); + int4x3 b3 = int4x3(1087189363, 488919410, 1106956631, 1131451931, 1975243735, 111940790, 712896589, 477050266, 1163094482, 605082349, 954351492, 1203361215); + int4x3 r3 = int4x3(-345917539, 1650323877, 979082147, 182559134, -136395064, 1442113917, 8339009, 1379854326, -592461473, 1265427255, 356393379, 513860857); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void int4x3_operator_sub_wide_scalar() + { + int4x3 a0 = int4x3(1176369558, 1934521195, 309452150, 1417634074, 108910717, 1306356714, 1502312334, 1451794815, 281174200, 87530840, 1913724431, 2041593336); + int b0 = (462232403); + int4x3 r0 = int4x3(714137155, 1472288792, -152780253, 955401671, -353321686, 844124311, 1040079931, 989562412, -181058203, -374701563, 1451492028, 1579360933); + TestUtils.AreEqual(a0 - b0, r0); + + int4x3 a1 = int4x3(557239990, 1590376732, 819090189, 816382635, 815920639, 1829033117, 1792801932, 1113440549, 1418937976, 1277257189, 2092779398, 642236742); + int b1 = (1119051448); + int4x3 r1 = int4x3(-561811458, 471325284, -299961259, -302668813, -303130809, 709981669, 673750484, -5610899, 299886528, 158205741, 973727950, -476814706); + TestUtils.AreEqual(a1 - b1, r1); + + int4x3 a2 = int4x3(1605250794, 1468003019, 128303186, 553494257, 1017126971, 1999744782, 2017272758, 1817991764, 1280985500, 676974855, 1638032613, 949761204); + int b2 = (819644478); + int4x3 r2 = int4x3(785606316, 648358541, -691341292, -266150221, 197482493, 1180100304, 1197628280, 998347286, 461341022, -142669623, 818388135, 130116726); + TestUtils.AreEqual(a2 - b2, r2); + + int4x3 a3 = int4x3(1835969317, 976947310, 1304246606, 1456780208, 1554022712, 769804365, 2057831687, 758136579, 670433255, 603231411, 1673268965, 941598524); + int b3 = (919015590); + int4x3 r3 = int4x3(916953727, 57931720, 385231016, 537764618, 635007122, -149211225, 1138816097, -160879011, -248582335, -315784179, 754253375, 22582934); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void int4x3_operator_sub_scalar_wide() + { + int a0 = (1691534405); + int4x3 b0 = int4x3(2022393810, 1612688515, 496689713, 887037586, 2097630964, 374934538, 939035482, 935242277, 1789300421, 264712893, 1231856067, 1818112748); + int4x3 r0 = int4x3(-330859405, 78845890, 1194844692, 804496819, -406096559, 1316599867, 752498923, 756292128, -97766016, 1426821512, 459678338, -126578343); + TestUtils.AreEqual(a0 - b0, r0); + + int a1 = (1428436109); + int4x3 b1 = int4x3(1258745460, 1077380396, 1330722719, 518111829, 967128529, 344666254, 1082267918, 907866696, 1816885123, 460340568, 962154498, 557113461); + int4x3 r1 = int4x3(169690649, 351055713, 97713390, 910324280, 461307580, 1083769855, 346168191, 520569413, -388449014, 968095541, 466281611, 871322648); + TestUtils.AreEqual(a1 - b1, r1); + + int a2 = (1701216709); + int4x3 b2 = int4x3(1980098777, 730060552, 1444397827, 853570556, 138836432, 1013190428, 718089530, 506757390, 1216448041, 936312747, 1997286455, 1969982026); + int4x3 r2 = int4x3(-278882068, 971156157, 256818882, 847646153, 1562380277, 688026281, 983127179, 1194459319, 484768668, 764903962, -296069746, -268765317); + TestUtils.AreEqual(a2 - b2, r2); + + int a3 = (902880656); + int4x3 b3 = int4x3(1161220697, 1442464725, 622960765, 730968909, 614823841, 1889779020, 918322352, 133929920, 213123108, 1835450460, 521068072, 2066839749); + int4x3 r3 = int4x3(-258340041, -539584069, 279919891, 171911747, 288056815, -986898364, -15441696, 768950736, 689757548, -932569804, 381812584, -1163959093); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void int4x3_operator_mul_wide_wide() + { + int4x3 a0 = int4x3(245827027, 208934650, 1019478917, 568231809, 877289039, 1585782440, 2111178729, 1186019069, 571481445, 1570087048, 629447153, 619383734); + int4x3 b0 = int4x3(759663997, 350129201, 477450108, 1635735015, 388710278, 757722665, 1509388321, 1841703980, 1826369331, 1524322467, 1605207974, 428419155); + int4x3 r0 = int4x3(-632811769, 1402281434, 332447596, -1932977561, -1670918566, 1455036648, 2128344329, -594088068, -1654168033, 2093463192, -1207506618, -1133560830); + TestUtils.AreEqual(a0 * b0, r0); + + int4x3 a1 = int4x3(2055121568, 700402816, 263414349, 187830569, 2048056680, 546694675, 853585367, 933370718, 990212476, 1915885905, 1984212358, 368146234); + int4x3 b1 = int4x3(1460605791, 1968043860, 771161742, 2037340417, 322304267, 651448359, 1608326767, 1427155898, 1092185338, 665119139, 223634707, 694718952); + int4x3 r1 = int4x3(990589280, -938173952, -1341723466, 1156600361, 649177976, 678952165, 1063621177, -1611682740, -2142428392, -573253741, -1652113678, 1626072720); + TestUtils.AreEqual(a1 * b1, r1); + + int4x3 a2 = int4x3(899438811, 1765718681, 409003054, 2069758852, 140280263, 442491280, 1924530939, 1372320666, 200879709, 857149632, 962693646, 988118613); + int4x3 b2 = int4x3(675813713, 999254223, 1326064110, 788102700, 1927999142, 1706356773, 747671596, 106127297, 1695925670, 1788874462, 534570710, 1110638325); + int4x3 r2 = int4x3(1891467339, 335415735, 1128927428, -1656253776, -1433851638, 479369680, -366628060, -250163942, 48406862, -1997863296, -275121228, -1483457191); + TestUtils.AreEqual(a2 * b2, r2); + + int4x3 a3 = int4x3(892998613, 534109991, 1836805716, 591690444, 1092459557, 1068605049, 1152926708, 1628337363, 400029062, 511168096, 1165835487, 1650108606); + int4x3 b3 = int4x3(142931150, 1684745462, 2101748242, 1831486861, 5683864, 1735084283, 1336059993, 721992570, 1906075622, 1073069872, 1374497592, 242540880); + int4x3 r3 = int4x3(293009766, -617864326, 1179445736, -481780132, -1586128904, 1397450915, 487571412, -405680754, 326598756, 995119616, 638698952, 1153153376); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void int4x3_operator_mul_wide_scalar() + { + int4x3 a0 = int4x3(1762033447, 465343930, 1570757881, 1326409563, 1824319147, 1356578909, 72749215, 154616909, 975743632, 573770299, 1958912969, 971327747); + int b0 = (1476837906); + int4x3 r0 = int4x3(-1313177922, 1326807828, -2138555518, -276153754, -65548794, -1318584182, -1839224530, -1720506518, 1736252960, -1699123674, -1534863838, -1853528010); + TestUtils.AreEqual(a0 * b0, r0); + + int4x3 a1 = int4x3(1818877398, 660611671, 1279757657, 391009467, 1186856590, 890343818, 800117742, 606927173, 1338014500, 1688964615, 1439447294, 387721300); + int b1 = (1324050764); + int4x3 r1 = int4x3(1927061896, 645718228, -588613780, -844440956, -567685080, -1684615432, -1092253528, 133057916, -1582148944, -1029961452, -248833688, 100822256); + TestUtils.AreEqual(a1 * b1, r1); + + int4x3 a2 = int4x3(1192501703, 76318055, 124378112, 970518733, 1370700538, 1978842602, 1451974062, 987919119, 1659987051, 1325430351, 948943118, 1743760648); + int b2 = (1613845584); + int4x3 r2 = int4x3(-394864080, -1335460816, 692371456, 973833232, 1630959136, -1678368480, -191340960, 1516495024, 2027781488, 471196848, -2125435808, 1043640960); + TestUtils.AreEqual(a2 * b2, r2); + + int4x3 a3 = int4x3(227492421, 370371313, 309869840, 1389753586, 1895557060, 1449787207, 1817244670, 2117623142, 1951266912, 206918942, 382686790, 396984449); + int b3 = (217698851); + int4x3 r3 = int4x3(269461871, 1120555251, 1293383984, 1838219542, -1271695412, 1677010101, 1900394426, 512258290, -238570208, -508870886, 1697920914, 1359963043); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void int4x3_operator_mul_scalar_wide() + { + int a0 = (99541948); + int4x3 b0 = int4x3(1764461774, 657072478, 1459784358, 1610646683, 1632058826, 868441654, 1408757883, 335917146, 2105124483, 1178393968, 1963904348, 1409533767); + int4x3 r0 = int4x3(-950398648, -102049016, 1260585960, 1158730452, -1606056, -466153048, 2108402516, 1966690328, 1623617844, -1691554240, -830512240, -1283699420); + TestUtils.AreEqual(a0 * b0, r0); + + int a1 = (243286231); + int4x3 b1 = int4x3(1336308795, 517963367, 1733623488, 459880225, 994616533, 1420531535, 1821413700, 677771573, 2132626845, 1158827713, 640102997, 944551639); + int4x3 r1 = int4x3(-648389235, -1563629439, -401476800, -1314550601, 62369507, -76557479, -1413808100, -328103037, 2038656731, -2070911977, -1476360861, -1549578607); + TestUtils.AreEqual(a1 * b1, r1); + + int a2 = (1323243330); + int4x3 b2 = int4x3(1186460236, 657101857, 1275563580, 1031291523, 1008470115, 1155301041, 1046199281, 2138825098, 1273008873, 1788343477, 1994364082, 597340263); + int4x3 r2 = int4x3(-94024808, 50866050, 1979584376, -2129139002, 2084048518, -630615902, 1987582754, -2107012204, -1274032366, 1909741994, 2131645412, 527678350); + TestUtils.AreEqual(a2 * b2, r2); + + int a3 = (2022856151); + int4x3 b3 = int4x3(1375763101, 1007501105, 1162446628, 96412054, 1676576573, 1763698296, 729299033, 1534484, 1053621089, 1978013043, 796620370, 890235481); + int4x3 r3 = int4x3(-1935205669, -686991577, -1926794436, -1053293830, -653994693, -1849661752, 1198448575, -1186284852, -1561308297, -1930349931, -910321442, 938433983); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void int4x3_operator_div_wide_wide() + { + int4x3 a0 = int4x3(1590198532, 507812502, 126627032, 1058247011, 427387861, 290676154, 1829594484, 1127868739, 499016351, 1341209632, 134906097, 785470242); + int4x3 b0 = int4x3(1434703236, 911965201, 390415521, 128746927, 525835375, 816946613, 878264647, 146789678, 2089524057, 254213018, 1916850021, 1737806518); + int4x3 r0 = int4x3(1, 0, 0, 8, 0, 0, 2, 7, 0, 5, 0, 0); + TestUtils.AreEqual(a0 / b0, r0); + + int4x3 a1 = int4x3(788249865, 1099825433, 1552968283, 1822367139, 1021812060, 1937073018, 645757349, 1097576782, 1246027674, 1152153253, 1900577195, 172149343); + int4x3 b1 = int4x3(1906634983, 437754923, 825037958, 902508708, 896853614, 49452028, 1921327824, 787000669, 1032149621, 858558868, 1422112429, 837098844); + int4x3 r1 = int4x3(0, 2, 1, 2, 1, 39, 0, 1, 1, 1, 1, 0); + TestUtils.AreEqual(a1 / b1, r1); + + int4x3 a2 = int4x3(1735128704, 816492592, 2012272185, 632330092, 649232994, 123715336, 1438073735, 723262291, 850951883, 1942618200, 1088675276, 1648515976); + int4x3 b2 = int4x3(616122946, 2035322800, 1324534444, 1820832158, 917489631, 367475696, 620492088, 1749833550, 1535651093, 932740870, 1078416711, 725172174); + int4x3 r2 = int4x3(2, 0, 1, 0, 0, 0, 2, 0, 0, 2, 1, 2); + TestUtils.AreEqual(a2 / b2, r2); + + int4x3 a3 = int4x3(991947275, 1155668991, 764696768, 1984712970, 1734485640, 850109866, 8545366, 1037720170, 264523522, 1547702681, 1797612488, 1496410581); + int4x3 b3 = int4x3(554208963, 1250240123, 2074395021, 1513621083, 262726589, 936845337, 1934527986, 1844761263, 116240860, 1875751365, 730101086, 625535586); + int4x3 r3 = int4x3(1, 0, 0, 1, 6, 0, 0, 0, 2, 0, 2, 2); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void int4x3_operator_div_wide_scalar() + { + int4x3 a0 = int4x3(560951562, 1218680769, 375341724, 1613542090, 1919409166, 1397425408, 1349573078, 524526253, 341995568, 495895326, 1515313790, 1676971657); + int b0 = (947861580); + int4x3 r0 = int4x3(0, 1, 0, 1, 2, 1, 1, 0, 0, 0, 1, 1); + TestUtils.AreEqual(a0 / b0, r0); + + int4x3 a1 = int4x3(2131487088, 1017891310, 542666029, 1646044372, 1447236569, 107215658, 19616726, 896899915, 707389627, 1249475421, 1486968988, 1738891885); + int b1 = (2105094094); + int4x3 r1 = int4x3(1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); + TestUtils.AreEqual(a1 / b1, r1); + + int4x3 a2 = int4x3(1919705924, 1200843642, 206442634, 1508567412, 1825701056, 1117255783, 929925156, 1725332114, 1949103348, 1383839785, 2136282541, 159847918); + int b2 = (1244966864); + int4x3 r2 = int4x3(1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0); + TestUtils.AreEqual(a2 / b2, r2); + + int4x3 a3 = int4x3(1515555001, 1033495687, 1947230231, 1969254260, 1948672400, 757256792, 2099218773, 455629883, 324433498, 1679339858, 2024651647, 1222061694); + int b3 = (614923813); + int4x3 r3 = int4x3(2, 1, 3, 3, 3, 1, 3, 0, 0, 2, 3, 1); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void int4x3_operator_div_scalar_wide() + { + int a0 = (1161272038); + int4x3 b0 = int4x3(187325733, 1594107378, 2016183849, 1589343709, 388768753, 1417077283, 1773486938, 1154044032, 81831373, 1476877645, 653688843, 45756703); + int4x3 r0 = int4x3(6, 0, 0, 0, 2, 0, 0, 1, 14, 0, 1, 25); + TestUtils.AreEqual(a0 / b0, r0); + + int a1 = (631027637); + int4x3 b1 = int4x3(396671391, 784365696, 1250594097, 1818363859, 1653451772, 270557729, 48974453, 1796936382, 1427856423, 981056957, 1955700573, 705450043); + int4x3 r1 = int4x3(1, 0, 0, 0, 0, 2, 12, 0, 0, 0, 0, 0); + TestUtils.AreEqual(a1 / b1, r1); + + int a2 = (1054404890); + int4x3 b2 = int4x3(351914083, 131970646, 1320586926, 366944102, 1575786200, 257204865, 1582754309, 2114509003, 1266146708, 45105265, 2092444751, 407744534); + int4x3 r2 = int4x3(2, 7, 0, 2, 0, 4, 0, 0, 0, 23, 0, 2); + TestUtils.AreEqual(a2 / b2, r2); + + int a3 = (126616016); + int4x3 b3 = int4x3(1900058250, 523718813, 414718546, 1828540203, 860638950, 1827704212, 182494419, 669579562, 717750865, 560379939, 681272719, 638134699); + int4x3 r3 = int4x3(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void int4x3_operator_mod_wide_wide() + { + int4x3 a0 = int4x3(146150818, 1846543305, 1071447756, 308965362, 659881575, 1002365460, 861198439, 1510617532, 778525078, 1458458044, 101987897, 1249565173); + int4x3 b0 = int4x3(983050390, 771341152, 942375212, 367361754, 749500619, 750718852, 2095151755, 88438806, 769227442, 647214624, 1026513788, 1544950956); + int4x3 r0 = int4x3(146150818, 303861001, 129072544, 308965362, 659881575, 251646608, 861198439, 7157830, 9297636, 164028796, 101987897, 1249565173); + TestUtils.AreEqual(a0 % b0, r0); + + int4x3 a1 = int4x3(938026607, 1692541775, 1518877124, 1806965510, 1325139851, 994457255, 1372400564, 1770508529, 100255877, 452674793, 1545968777, 629019189); + int4x3 b1 = int4x3(160166322, 1099108075, 1158422232, 1798905209, 164686701, 327889784, 1082162785, 1213537518, 608481038, 329133821, 1824387961, 1223426748); + int4x3 r1 = int4x3(137194997, 593433700, 360454892, 8060301, 7646243, 10787903, 290237779, 556971011, 100255877, 123540972, 1545968777, 629019189); + TestUtils.AreEqual(a1 % b1, r1); + + int4x3 a2 = int4x3(1402964707, 2138294579, 1641714420, 1782022072, 1880968864, 1980798192, 1397317084, 995968277, 1090018756, 1573062648, 1100694500, 863521889); + int4x3 b2 = int4x3(798137669, 79717779, 1233582258, 1267120677, 301592349, 911281434, 1357340934, 1648942990, 1350943898, 696511738, 1182727748, 1843845940); + int4x3 r2 = int4x3(604827038, 65632325, 408132162, 514901395, 71414770, 158235324, 39976150, 995968277, 1090018756, 180039172, 1100694500, 863521889); + TestUtils.AreEqual(a2 % b2, r2); + + int4x3 a3 = int4x3(1146202560, 546958747, 573838995, 2146465826, 1678630780, 1843627015, 1167611300, 157190789, 530148276, 594404567, 1248848240, 1963704081); + int4x3 b3 = int4x3(244920526, 1640990506, 920431352, 1261122293, 469115027, 720739455, 1727247731, 91557593, 1874820225, 1070808215, 859227095, 890398590); + int4x3 r3 = int4x3(166520456, 546958747, 573838995, 885343533, 271285699, 402148105, 1167611300, 65633196, 530148276, 594404567, 389621145, 182906901); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void int4x3_operator_mod_wide_scalar() + { + int4x3 a0 = int4x3(164800505, 1062177828, 1898749675, 1701653318, 820393245, 19002208, 128329633, 1464010899, 896587769, 405208598, 1982762194, 959236935); + int b0 = (883951171); + int4x3 r0 = int4x3(164800505, 178226657, 130847333, 817702147, 820393245, 19002208, 128329633, 580059728, 12636598, 405208598, 214859852, 75285764); + TestUtils.AreEqual(a0 % b0, r0); + + int4x3 a1 = int4x3(712321026, 1540068445, 1085897743, 1607489717, 165478511, 647846716, 915707999, 1602830401, 928191283, 1084934806, 488509689, 2087820912); + int b1 = (172564850); + int4x3 r1 = int4x3(22061626, 159549645, 50508643, 54406067, 165478511, 130152166, 52883749, 49746751, 65367033, 49545706, 143379989, 17042712); + TestUtils.AreEqual(a1 % b1, r1); + + int4x3 a2 = int4x3(377501313, 1216011754, 812183417, 1153802502, 1642671870, 1924710742, 665297470, 1568090825, 2050982942, 435886407, 453990946, 1731665372); + int b2 = (1778384846); + int4x3 r2 = int4x3(377501313, 1216011754, 812183417, 1153802502, 1642671870, 146325896, 665297470, 1568090825, 272598096, 435886407, 453990946, 1731665372); + TestUtils.AreEqual(a2 % b2, r2); + + int4x3 a3 = int4x3(586777590, 1585649515, 1414579860, 1891664981, 1262495021, 1400758118, 1529532008, 430295164, 1386414018, 2130346558, 666621411, 1524342239); + int b3 = (1475597526); + int4x3 r3 = int4x3(586777590, 110051989, 1414579860, 416067455, 1262495021, 1400758118, 53934482, 430295164, 1386414018, 654749032, 666621411, 48744713); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void int4x3_operator_mod_scalar_wide() + { + int a0 = (242383789); + int4x3 b0 = int4x3(740000543, 1556450291, 1104736385, 437976569, 1911837205, 1507212038, 1906405167, 247693265, 293460573, 1495295166, 873323603, 530681233); + int4x3 r0 = int4x3(242383789, 242383789, 242383789, 242383789, 242383789, 242383789, 242383789, 242383789, 242383789, 242383789, 242383789, 242383789); + TestUtils.AreEqual(a0 % b0, r0); + + int a1 = (1298102643); + int4x3 b1 = int4x3(2057984657, 1000742091, 1461372131, 1859742342, 797184687, 821888842, 1083192997, 840114986, 1894865954, 615159964, 1485575122, 2028738); + int4x3 r1 = int4x3(1298102643, 297360552, 1298102643, 1298102643, 500917956, 476213801, 214909646, 457987657, 1298102643, 67782715, 1298102643, 1739061); + TestUtils.AreEqual(a1 % b1, r1); + + int a2 = (2122220318); + int4x3 b2 = int4x3(164578061, 730088119, 1444946139, 1305792037, 1110829011, 872723581, 166847388, 1477846418, 511428733, 1642227542, 1962310765, 207128894); + int4x3 r2 = int4x3(147283586, 662044080, 677274179, 816428281, 1011391307, 376773156, 120051662, 644373900, 76505386, 479992776, 159909553, 50931378); + TestUtils.AreEqual(a2 % b2, r2); + + int a3 = (1342085447); + int4x3 b3 = int4x3(448361286, 334667519, 705465751, 753088773, 1146344010, 275140144, 1074480141, 2092749846, 1631900558, 2088387496, 1098441751, 1648646354); + int4x3 r3 = int4x3(445362875, 3415371, 636619696, 588996674, 195741437, 241524871, 267605306, 1342085447, 1342085447, 1342085447, 243643696, 1342085447); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void int4x3_operator_plus() + { + int4x3 a0 = int4x3(1643476803, 907898539, 379615839, 1140483021, 1735287433, 1743199272, 1472881565, 339091479, 401565897, 1287765427, 849339193, 174532915); + int4x3 r0 = int4x3(1643476803, 907898539, 379615839, 1140483021, 1735287433, 1743199272, 1472881565, 339091479, 401565897, 1287765427, 849339193, 174532915); + TestUtils.AreEqual(+a0, r0); + + int4x3 a1 = int4x3(1864850812, 1145639744, 1615499926, 2049663954, 1723005749, 409076474, 591286416, 1706631096, 1079164488, 1808261782, 1201290141, 82958939); + int4x3 r1 = int4x3(1864850812, 1145639744, 1615499926, 2049663954, 1723005749, 409076474, 591286416, 1706631096, 1079164488, 1808261782, 1201290141, 82958939); + TestUtils.AreEqual(+a1, r1); + + int4x3 a2 = int4x3(308695413, 2067379018, 1673126612, 500666137, 640289062, 836003812, 336058393, 829347661, 33442669, 381670450, 277507230, 361395485); + int4x3 r2 = int4x3(308695413, 2067379018, 1673126612, 500666137, 640289062, 836003812, 336058393, 829347661, 33442669, 381670450, 277507230, 361395485); + TestUtils.AreEqual(+a2, r2); + + int4x3 a3 = int4x3(1012749225, 2092803800, 1459040742, 531853559, 2093894901, 1589622197, 1559976318, 619729461, 731886792, 1441425968, 1921783986, 1257555634); + int4x3 r3 = int4x3(1012749225, 2092803800, 1459040742, 531853559, 2093894901, 1589622197, 1559976318, 619729461, 731886792, 1441425968, 1921783986, 1257555634); + TestUtils.AreEqual(+a3, r3); + } + + [TestCompiler] + public static void int4x3_operator_neg() + { + int4x3 a0 = int4x3(1955022112, 662160019, 370300775, 2141283773, 1004505619, 28153593, 33894270, 505708349, 1115028238, 1636274969, 694995093, 1542206286); + int4x3 r0 = int4x3(-1955022112, -662160019, -370300775, -2141283773, -1004505619, -28153593, -33894270, -505708349, -1115028238, -1636274969, -694995093, -1542206286); + TestUtils.AreEqual(-a0, r0); + + int4x3 a1 = int4x3(213087293, 341522275, 841085242, 574159094, 1687250035, 2057919693, 1175014732, 1259809073, 1212465326, 1190569920, 2047955772, 2120729864); + int4x3 r1 = int4x3(-213087293, -341522275, -841085242, -574159094, -1687250035, -2057919693, -1175014732, -1259809073, -1212465326, -1190569920, -2047955772, -2120729864); + TestUtils.AreEqual(-a1, r1); + + int4x3 a2 = int4x3(1440774928, 431666091, 1387601718, 1745651998, 319115626, 1119959806, 739132284, 1954173314, 1709857098, 1836511050, 1662806453, 506144868); + int4x3 r2 = int4x3(-1440774928, -431666091, -1387601718, -1745651998, -319115626, -1119959806, -739132284, -1954173314, -1709857098, -1836511050, -1662806453, -506144868); + TestUtils.AreEqual(-a2, r2); + + int4x3 a3 = int4x3(650922971, 1273997249, 1474445187, 1853826947, 1695573773, 729452512, 345069360, 575867536, 594119038, 1201840609, 1342872551, 1768435578); + int4x3 r3 = int4x3(-650922971, -1273997249, -1474445187, -1853826947, -1695573773, -729452512, -345069360, -575867536, -594119038, -1201840609, -1342872551, -1768435578); + TestUtils.AreEqual(-a3, r3); + } + + [TestCompiler] + public static void int4x3_operator_prefix_inc() + { + int4x3 a0 = int4x3(864455342, 2035793213, 1275443862, 971919915, 411610189, 446210725, 395072276, 115573442, 913293639, 432884105, 1208161871, 1385544935); + int4x3 r0 = int4x3(864455343, 2035793214, 1275443863, 971919916, 411610190, 446210726, 395072277, 115573443, 913293640, 432884106, 1208161872, 1385544936); + TestUtils.AreEqual(++a0, r0); + + int4x3 a1 = int4x3(1835605516, 388229350, 696475402, 1786514683, 993189311, 752093909, 1622410417, 1398865015, 241906003, 1705625817, 609525897, 172599489); + int4x3 r1 = int4x3(1835605517, 388229351, 696475403, 1786514684, 993189312, 752093910, 1622410418, 1398865016, 241906004, 1705625818, 609525898, 172599490); + TestUtils.AreEqual(++a1, r1); + + int4x3 a2 = int4x3(504806865, 281942776, 1541894135, 924683935, 259568871, 1349062584, 1120518661, 65514038, 1495168208, 1321109497, 1366348660, 1777734111); + int4x3 r2 = int4x3(504806866, 281942777, 1541894136, 924683936, 259568872, 1349062585, 1120518662, 65514039, 1495168209, 1321109498, 1366348661, 1777734112); + TestUtils.AreEqual(++a2, r2); + + int4x3 a3 = int4x3(1414867743, 539531120, 886558347, 1733014170, 1586973907, 1145067277, 884064327, 82551838, 1001250037, 924273925, 242241802, 413165245); + int4x3 r3 = int4x3(1414867744, 539531121, 886558348, 1733014171, 1586973908, 1145067278, 884064328, 82551839, 1001250038, 924273926, 242241803, 413165246); + TestUtils.AreEqual(++a3, r3); + } + + [TestCompiler] + public static void int4x3_operator_postfix_inc() + { + int4x3 a0 = int4x3(1751003569, 2063707595, 1500486291, 969189211, 1007848192, 2028651936, 1643023524, 1190630527, 1396179607, 708474528, 177416855, 1524860667); + int4x3 r0 = int4x3(1751003569, 2063707595, 1500486291, 969189211, 1007848192, 2028651936, 1643023524, 1190630527, 1396179607, 708474528, 177416855, 1524860667); + TestUtils.AreEqual(a0++, r0); + + int4x3 a1 = int4x3(1408994706, 1580130369, 1676086778, 717006530, 506142468, 732199129, 2026873940, 130175844, 1513142653, 420613464, 1219979307, 586574160); + int4x3 r1 = int4x3(1408994706, 1580130369, 1676086778, 717006530, 506142468, 732199129, 2026873940, 130175844, 1513142653, 420613464, 1219979307, 586574160); + TestUtils.AreEqual(a1++, r1); + + int4x3 a2 = int4x3(357567451, 1949784665, 1127356901, 101238629, 2131648021, 423320704, 827539403, 1919960927, 840371710, 2010345998, 1047836590, 586887730); + int4x3 r2 = int4x3(357567451, 1949784665, 1127356901, 101238629, 2131648021, 423320704, 827539403, 1919960927, 840371710, 2010345998, 1047836590, 586887730); + TestUtils.AreEqual(a2++, r2); + + int4x3 a3 = int4x3(1209169651, 1479717664, 1874959449, 104723114, 817246348, 1972950889, 1784631804, 1550936382, 718649502, 872906800, 717529320, 1995020676); + int4x3 r3 = int4x3(1209169651, 1479717664, 1874959449, 104723114, 817246348, 1972950889, 1784631804, 1550936382, 718649502, 872906800, 717529320, 1995020676); + TestUtils.AreEqual(a3++, r3); + } + + [TestCompiler] + public static void int4x3_operator_prefix_dec() + { + int4x3 a0 = int4x3(200904609, 871077500, 968578728, 638967721, 1995396216, 435367037, 1782514098, 1589827826, 1434377580, 596759698, 1699290403, 1758478358); + int4x3 r0 = int4x3(200904608, 871077499, 968578727, 638967720, 1995396215, 435367036, 1782514097, 1589827825, 1434377579, 596759697, 1699290402, 1758478357); + TestUtils.AreEqual(--a0, r0); + + int4x3 a1 = int4x3(1914114460, 389120307, 1022184392, 1310293956, 356565557, 18299409, 906734601, 799006218, 1383897383, 1040798388, 1469596990, 1719228297); + int4x3 r1 = int4x3(1914114459, 389120306, 1022184391, 1310293955, 356565556, 18299408, 906734600, 799006217, 1383897382, 1040798387, 1469596989, 1719228296); + TestUtils.AreEqual(--a1, r1); + + int4x3 a2 = int4x3(220897829, 678025545, 14227726, 293093918, 1065286595, 1249415499, 1009503100, 157482354, 965385343, 1797304434, 1083672612, 929765380); + int4x3 r2 = int4x3(220897828, 678025544, 14227725, 293093917, 1065286594, 1249415498, 1009503099, 157482353, 965385342, 1797304433, 1083672611, 929765379); + TestUtils.AreEqual(--a2, r2); + + int4x3 a3 = int4x3(2083512379, 323646560, 1395297406, 583796119, 999841714, 1788073019, 1618852114, 1777032041, 1252764958, 1070818447, 219340317, 767990877); + int4x3 r3 = int4x3(2083512378, 323646559, 1395297405, 583796118, 999841713, 1788073018, 1618852113, 1777032040, 1252764957, 1070818446, 219340316, 767990876); + TestUtils.AreEqual(--a3, r3); + } + + [TestCompiler] + public static void int4x3_operator_postfix_dec() + { + int4x3 a0 = int4x3(283970262, 1109329936, 1073216143, 649439137, 1932646215, 1174104498, 484207852, 524156737, 691209285, 2017728859, 802721301, 377162390); + int4x3 r0 = int4x3(283970262, 1109329936, 1073216143, 649439137, 1932646215, 1174104498, 484207852, 524156737, 691209285, 2017728859, 802721301, 377162390); + TestUtils.AreEqual(a0--, r0); + + int4x3 a1 = int4x3(526366486, 590919177, 60677868, 1867810045, 2095777993, 670715645, 324944916, 242636153, 1659736954, 1316734088, 1030072405, 1751972064); + int4x3 r1 = int4x3(526366486, 590919177, 60677868, 1867810045, 2095777993, 670715645, 324944916, 242636153, 1659736954, 1316734088, 1030072405, 1751972064); + TestUtils.AreEqual(a1--, r1); + + int4x3 a2 = int4x3(1868889881, 1931943579, 175622377, 181847458, 665549439, 530897466, 635466911, 416440036, 1447690298, 1444496274, 296146626, 1209855130); + int4x3 r2 = int4x3(1868889881, 1931943579, 175622377, 181847458, 665549439, 530897466, 635466911, 416440036, 1447690298, 1444496274, 296146626, 1209855130); + TestUtils.AreEqual(a2--, r2); + + int4x3 a3 = int4x3(2016700604, 647102652, 1948542169, 659874422, 2009120584, 1577004911, 1809041177, 518526567, 1464738365, 1815629310, 1216839298, 569144612); + int4x3 r3 = int4x3(2016700604, 647102652, 1948542169, 659874422, 2009120584, 1577004911, 1809041177, 518526567, 1464738365, 1815629310, 1216839298, 569144612); + TestUtils.AreEqual(a3--, r3); + } + + [TestCompiler] + public static void int4x3_operator_bitwise_and_wide_wide() + { + int4x3 a0 = int4x3(779935043, 1097962163, 1939593304, 800599247, 952140918, 782792558, 1608557706, 396446406, 2039894114, 1286974642, 442394124, 1759739564); + int4x3 b0 = int4x3(307705143, 1710882162, 866836769, 532490608, 679371720, 1794035877, 1439832202, 519529812, 23633139, 1209152681, 646737179, 1255867027); + int4x3 r0 = int4x3(39064835, 1097961522, 864731136, 263727168, 675283008, 715673636, 1438646410, 379666500, 16781410, 1209017504, 34366472, 1220739712); + TestUtils.AreEqual(a0 & b0, r0); + + int4x3 a1 = int4x3(233435438, 665207770, 1942050241, 1022352952, 60340400, 329119345, 406517382, 1126764634, 343425836, 1957552749, 1624478957, 341972372); + int4x3 b1 = int4x3(1900854122, 413173763, 1409138251, 2087190272, 563439483, 354579077, 642224854, 1650432515, 755290290, 902865191, 661389406, 2134212586); + int4x3 r1 = int4x3(21541162, 10485762, 1405162561, 1013440000, 26222640, 285241857, 168582, 1107890178, 67125280, 880844837, 541065292, 337646976); + TestUtils.AreEqual(a1 & b1, r1); + + int4x3 a2 = int4x3(181537307, 130347414, 1240828622, 526120460, 695449226, 1477446724, 201628999, 737924014, 1804502415, 1733695477, 1110712857, 113012430); + int4x3 b2 = int4x3(1855189321, 185194029, 810374380, 133197864, 1989578783, 38739182, 387425484, 1690486314, 843085933, 1045118223, 41867329, 1397669260); + int4x3 r2 = int4x3(177340425, 50384900, 4522188, 122712072, 538087434, 3140, 67404868, 549634602, 570425357, 641864965, 36962305, 34352268); + TestUtils.AreEqual(a2 & b2, r2); + + int4x3 a3 = int4x3(1044352152, 865726845, 836668077, 1778871717, 1558881750, 231636456, 1278790837, 846361650, 37319023, 1806613498, 1312261777, 1448803516); + int4x3 b3 = int4x3(1784025774, 1834587481, 856874373, 1719529679, 678478831, 86860920, 837158923, 1397449667, 195921481, 564422246, 1088025452, 2103483999); + int4x3 r3 = int4x3(706085000, 555323737, 823298181, 1644519557, 140542406, 84698216, 2099201, 306339842, 36241481, 564404834, 1074889216, 1413520412); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void int4x3_operator_bitwise_and_wide_scalar() + { + int4x3 a0 = int4x3(443615469, 490057985, 2042441263, 1524760558, 1405175110, 510212004, 1941875181, 1236735839, 1365509729, 428270198, 607982857, 650270920); + int b0 = (93423598); + int4x3 r0 = int4x3(1114348, 85033216, 26281518, 8488942, 25232710, 67176356, 26247660, 26281806, 16778848, 25199206, 68224264, 75497672); + TestUtils.AreEqual(a0 & b0, r0); + + int4x3 a1 = int4x3(1249238550, 1862276471, 143502472, 861733033, 1408932942, 957693145, 1567715668, 1102952410, 322053683, 1599352836, 208656708, 1272226025); + int b1 = (814629680); + int4x3 r1 = int4x3(279056, 536871216, 9175040, 806092832, 277479424, 805568528, 268452112, 9175824, 268567088, 268697600, 934144, 8650784); + TestUtils.AreEqual(a1 & b1, r1); + + int4x3 a2 = int4x3(462670926, 1466722981, 1817277774, 818900583, 772681077, 1630437952, 546018772, 872875431, 1143080525, 708719245, 1764446048, 1527981061); + int b2 = (1817145060); + int4x3 r2 = int4x3(134433860, 1145858724, 1816224836, 542076516, 739126372, 1611530816, 537593028, 604439716, 1140983364, 672014980, 1745571424, 1208165380); + TestUtils.AreEqual(a2 & b2, r2); + + int4x3 a3 = int4x3(398141788, 554819377, 1683835293, 972562207, 393685571, 2118911919, 1503487659, 283854137, 1911282206, 312686024, 384581172, 1826788967); + int b3 = (156911041); + int4x3 r3 = int4x3(18481472, 17843457, 5783937, 156763393, 22151233, 138937729, 152585345, 4867329, 21643264, 132544, 4719616, 138544193); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void int4x3_operator_bitwise_and_scalar_wide() + { + int a0 = (1144543590); + int4x3 b0 = int4x3(420346723, 562416448, 1393127318, 1560699552, 851218057, 703880958, 1159378889, 2031211279, 1089518981, 270607307, 1349288930, 520199596); + int4x3 r0 = int4x3(547170, 18752, 1074284806, 1140867104, 3672064, 3168358, 1142427968, 1074811142, 1076893956, 2097474, 1076363618, 67115300); + TestUtils.AreEqual(a0 & b0, r0); + + int a1 = (1763483957); + int4x3 b1 = int4x3(1248975349, 236938635, 185023291, 1085233038, 1845693112, 946052961, 1436238522, 2042776519, 56356886, 1770159840, 1872339579, 1439201366); + int4x3 r1 = int4x3(1209041205, 136061185, 151265585, 1074528516, 1744830512, 671121697, 1092091952, 1761607941, 18391060, 1761615904, 1763221553, 1091051540); + TestUtils.AreEqual(a1 & b1, r1); + + int a2 = (1233066417); + int4x3 b2 = int4x3(1214109404, 2255485, 1814885263, 1711986588, 1286898282, 915476451, 1870138851, 372814411, 1623486506, 211665304, 1668985777, 348112007); + int4x3 r2 = int4x3(1214058640, 2230321, 1210847617, 1074401680, 1211367456, 1116577, 1232603553, 3674113, 1078202400, 136118672, 1098518961, 4128897); + TestUtils.AreEqual(a2 & b2, r2); + + int a3 = (1808619374); + int4x3 b3 = int4x3(1516730209, 1647041932, 350465899, 1641369007, 1555310928, 857924828, 1980404095, 34923708, 1073528483, 742357726, 1244015681, 1980296380); + int4x3 r3 = int4x3(1246058336, 1644778764, 12650346, 1640318254, 1216610624, 587220044, 1644695918, 33834028, 734795298, 671961678, 1241777216, 1644708908); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void int4x3_operator_bitwise_or_wide_wide() + { + int4x3 a0 = int4x3(1731159103, 659068416, 382702471, 1821032196, 1565773438, 1004000514, 948501377, 600951835, 669346222, 396691477, 2108560248, 2117522137); + int4x3 b0 = int4x3(1583847161, 692672727, 1161585489, 1756207130, 1321374429, 1287357212, 2075767170, 1273513430, 1610830169, 1316929125, 511625048, 573925879); + int4x3 r0 = int4x3(2138044159, 793370327, 1476391895, 1823457054, 1607720703, 2147473182, 2075786115, 1811533279, 1743223295, 1610595957, 2147407736, 2117598207); + TestUtils.AreEqual(a0 | b0, r0); + + int4x3 a1 = int4x3(330307355, 818676817, 1774459567, 1117506257, 1254511182, 1017865993, 1883021644, 1140203470, 759288967, 2122744307, 335621148, 715028074); + int4x3 b1 = int4x3(1502255628, 1841676448, 1682928938, 1115131952, 1541423910, 1416096228, 188606371, 1041599540, 219545389, 560097663, 1087543661, 936383841); + int4x3 r1 = int4x3(1538957087, 2110637297, 1842315183, 1124063985, 1541821294, 2096099309, 2067654639, 2146934782, 760610735, 2145839615, 1423162749, 1071544171); + TestUtils.AreEqual(a1 | b1, r1); + + int4x3 a2 = int4x3(543305337, 662107399, 1934997335, 436754869, 1613808671, 362365372, 342908672, 2129231210, 203868172, 32846030, 1057901177, 1537975433); + int4x3 b2 = int4x3(108816721, 1694053551, 452638547, 1219534055, 85142537, 1027930490, 2126839395, 2030328147, 2036352209, 1554561114, 1332339254, 480739851); + int4x3 r2 = int4x3(645820281, 1744827823, 2080356183, 1522064887, 1697901599, 1037957630, 2129985379, 2146270587, 2103889117, 1576909022, 2138040959, 1605346955); + TestUtils.AreEqual(a2 | b2, r2); + + int4x3 a3 = int4x3(470626699, 557640158, 536364388, 238304731, 787227554, 1298371111, 1020821539, 1327618264, 1104669041, 1949771204, 1973724646, 698690868); + int4x3 b3 = int4x3(1502575584, 1889014859, 1557424474, 1390247341, 2029776623, 1665642846, 1570936353, 801872635, 1945815585, 1797879107, 112272980, 779933219); + int4x3 r3 = int4x3(1569684459, 1908211167, 1610378622, 1593671167, 2130702319, 1869067135, 2113574435, 1877727995, 1946151793, 2134865351, 2008393718, 805175095); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void int4x3_operator_bitwise_or_wide_scalar() + { + int4x3 a0 = int4x3(961259683, 471103264, 1733389229, 1591585258, 386953869, 1148351449, 1048929715, 1814263250, 860336789, 1637162093, 1227888278, 774029856); + int b0 = (1666102508); + int4x3 r0 = int4x3(2068823279, 2136930284, 1734344685, 2145369582, 2002712301, 1736374269, 2144335359, 1869608446, 1934604029, 1675607277, 1803466494, 1869543148); + TestUtils.AreEqual(a0 | b0, r0); + + int4x3 a1 = int4x3(879300408, 797240690, 1977614655, 46921989, 1980838747, 284225881, 64304104, 313591807, 1393862490, 1890090886, 521303722, 2021379070); + int b1 = (1179087439); + int4x3 r1 = int4x3(1987018623, 1875378047, 2011657087, 1188035407, 1985442655, 1459090271, 1205302255, 1459058687, 1465382751, 1995407311, 1599567599, 2122316799); + TestUtils.AreEqual(a1 | b1, r1); + + int4x3 a2 = int4x3(2055963359, 1775629833, 1142751163, 1767274359, 1421981808, 1501294791, 485944015, 539526284, 310877895, 1815369493, 529427586, 358352200); + int b2 = (1511253082); + int4x3 r2 = int4x3(2057037535, 2077750875, 1579155451, 2069362559, 1590951034, 1534850271, 1593306847, 2050745566, 1519910623, 2117597023, 1604316378, 1600120154); + TestUtils.AreEqual(a2 | b2, r2); + + int4x3 a3 = int4x3(1353013374, 1624839772, 1369983151, 666444298, 207757238, 257316089, 409252967, 1919967661, 1452040383, 2012115244, 1149949643, 142082352); + int b3 = (1349149982); + int4x3 r3 = int4x3(1357872510, 1895528286, 1374318015, 2012964638, 1550483390, 1602123263, 1483666815, 1920624063, 1458464191, 2012116286, 1424685023, 1484416318); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void int4x3_operator_bitwise_or_scalar_wide() + { + int a0 = (1213433101); + int4x3 b0 = int4x3(1212928242, 1614462616, 936937728, 764766995, 306352095, 574719481, 1283571271, 2109131012, 979469710, 1348323481, 1407542578, 697517649); + int4x3 r0 = int4x3(1213978111, 1752940445, 2145094925, 1842867999, 1515425759, 1783858685, 1288945487, 2113391885, 2054391183, 1482673565, 1542972735, 1775486813); + TestUtils.AreEqual(a0 | b0, r0); + + int a1 = (1059093741); + int4x3 b1 = int4x3(627815046, 418822515, 83214352, 424663473, 447949225, 527022375, 1947148461, 305251437, 1254601325, 1752329425, 1592402684, 1587055329); + int4x3 r1 = int4x3(1064042223, 1073151487, 1073085693, 1064304125, 1068727789, 1063910895, 2133818605, 1060240621, 2145910509, 2138209533, 2146074365, 2142830317); + TestUtils.AreEqual(a1 | b1, r1); + + int a2 = (1088734150); + int4x3 b2 = int4x3(298563808, 2052547661, 582843231, 656983670, 1944993640, 1081208038, 829763560, 990961386, 547309556, 1307122961, 263229121, 1518227598); + int4x3 r2 = int4x3(1374682086, 2063067087, 1660812255, 1743570934, 1945042926, 1089859558, 1911943150, 2079645678, 1627375606, 1307434967, 1341444039, 1526649806); + TestUtils.AreEqual(a2 | b2, r2); + + int a3 = (1098359242); + int4x3 b3 = int4x3(997941952, 1075751132, 996271847, 623986648, 1091787263, 1548400620, 2022447724, 433714471, 963197960, 1639565037, 1287986616, 1326199854); + int4x3 r3 = int4x3(2071978954, 1098885598, 2071455727, 1702356954, 1098381823, 1568651246, 2046802926, 1509946863, 2038414794, 1644161007, 1308081658, 1333769710); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void int4x3_operator_bitwise_xor_wide_wide() + { + int4x3 a0 = int4x3(1556324760, 207002929, 1843444873, 1632079131, 1460334334, 1607815585, 220623650, 38668553, 47193340, 643663548, 1371932564, 94957188); + int4x3 b0 = int4x3(1054997548, 1523759632, 251164872, 110472397, 384031112, 1109163205, 535118981, 179106262, 1523031711, 1713313372, 1294118730, 520360641); + int4x3 r0 = int4x3(1646419380, 1451501345, 1662567489, 1741824470, 1105803126, 499723620, 314783655, 149092575, 1477935715, 1078104288, 484747486, 447544389); + TestUtils.AreEqual(a0 ^ b0, r0); + + int4x3 a1 = int4x3(700973621, 370621508, 2087573076, 351476570, 1340815927, 681577472, 314138777, 446857644, 1368661599, 1672499683, 1259759761, 2049102405); + int4x3 b1 = int4x3(1040688781, 1020757245, 1143954843, 1281933464, 175288469, 326874157, 1192052687, 1087083643, 1900865484, 1521193463, 569695524, 1622101483); + int4x3 r1 = int4x3(399484088, 717273273, 943885263, 1486609346, 1167690402, 1004255277, 1437869910, 1516836311, 551090579, 958119956, 1793242549, 445489070); + TestUtils.AreEqual(a1 ^ b1, r1); + + int4x3 a2 = int4x3(1972524935, 91962333, 1960780785, 1303778459, 960040360, 822786011, 2028027011, 170382968, 32554542, 1915830925, 2001025156, 2012451132); + int4x3 b2 = int4x3(1340735463, 546583617, 1034420616, 262206030, 1834125935, 802756092, 611321886, 316379491, 325882121, 45335181, 1859278043, 1002624300); + int4x3 r2 = int4x3(981182560, 636424092, 1232544377, 1108797141, 1416333255, 517186087, 1553020061, 419186459, 312225575, 1887600640, 429354079, 1278297104); + TestUtils.AreEqual(a2 ^ b2, r2); + + int4x3 a3 = int4x3(1076174067, 344651773, 1769102694, 1408084527, 1139070023, 1195715957, 1051992510, 1468636326, 1018993657, 1514317444, 369266676, 1206540279); + int4x3 b3 = int4x3(1704063552, 1618550727, 721247372, 131278097, 896003672, 746837613, 1952376600, 306395311, 419371442, 627496489, 1791585199, 757339713); + int4x3 r3 = int4x3(632614579, 1962141754, 1133445610, 1413386046, 1988311583, 1808202520, 1256900262, 1170908169, 608404043, 2133094573, 2093737051, 1791902134); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void int4x3_operator_bitwise_xor_wide_scalar() + { + int4x3 a0 = int4x3(2124666952, 177397845, 574879617, 1937385541, 1136545648, 213863690, 535061373, 289301586, 1305234431, 353786540, 1308626970, 1267729267); + int b0 = (493665894); + int4x3 r0 = int4x3(1674536494, 402546227, 1060063719, 1846973987, 1590882582, 299103084, 42523931, 206756404, 1352725913, 142271690, 1399631484, 1459404053); + TestUtils.AreEqual(a0 ^ b0, r0); + + int4x3 a1 = int4x3(125659640, 1730088797, 116862046, 375757978, 491079274, 191750702, 187129429, 967051293, 549951551, 653124416, 788984, 1479174924); + int b1 = (1315625690); + int4x3 r1 = int4x3(1226289954, 695588231, 1218311812, 1477396032, 1395629232, 1158101236, 1162708111, 2010043079, 1856848613, 1753692570, 1315361570, 373338582); + TestUtils.AreEqual(a1 ^ b1, r1); + + int4x3 a2 = int4x3(1680011736, 890841598, 293394300, 527727631, 529042816, 1382138962, 1206186973, 1059509471, 744733291, 64097148, 1814786305, 716239); + int b2 = (447453839); + int4x3 r2 = int4x3(2122935127, 800240497, 198659571, 98559616, 86185743, 1221222109, 1565485394, 630017616, 919085284, 427397619, 1988160398, 446789440); + TestUtils.AreEqual(a2 ^ b2, r2); + + int4x3 a3 = int4x3(476052372, 2058208914, 41260658, 1316660543, 2113008061, 256229982, 111578612, 1207271814, 2099944258, 1913013312, 870798185, 1771744425); + int b3 = (92561487); + int4x3 r3 = int4x3(433822683, 2133436125, 133297725, 1274987888, 2020970994, 180462097, 52620731, 1114759625, 2024733453, 2005017615, 912470822, 1813957862); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void int4x3_operator_bitwise_xor_scalar_wide() + { + int a0 = (1288453276); + int4x3 b0 = int4x3(1077599928, 884741329, 212164516, 1585020328, 152985454, 1775851275, 1416249064, 1309317737, 1773918217, 1509843030, 1206045972, 1154916424); + int4x3 r0 = int4x3(217506340, 2020616269, 1080648504, 313868596, 1171416050, 622160791, 413532788, 46573301, 628614293, 355622090, 187625864, 135961812); + TestUtils.AreEqual(a0 ^ b0, r0); + + int a1 = (1947871003); + int4x3 b1 = int4x3(1774252400, 1946113778, 1079717492, 290620937, 1382343363, 939045099, 1309568053, 221134131, 885841718, 612068188, 194068085, 1396957881); + int4x3 r1 = int4x3(500881003, 132477417, 876677487, 1699258642, 645842392, 1138923504, 974408494, 2033457704, 1087830061, 1348553799, 2139822446, 660194722); + TestUtils.AreEqual(a1 ^ b1, r1); + + int a2 = (573581481); + int4x3 b2 = int4x3(1813817520, 86594349, 2006985393, 1431761813, 905646837, 1522414781, 192882943, 714832744, 374210759, 215701593, 1573378082, 779254615); + int4x3 r2 = int4x3(1311539225, 655981444, 1435501080, 2003229500, 399194716, 2022579220, 693043286, 145445825, 880683118, 787181808, 2146955403, 205673470); + TestUtils.AreEqual(a2 ^ b2, r2); + + int a3 = (711527976); + int4x3 b3 = int4x3(710611783, 223429246, 593102399, 1444947259, 302938485, 684673240, 1417651941, 1426772271, 948720266, 177752267, 2005602645, 896851285); + int4x3 r3 = int4x3(3284335, 658000982, 154339351, 2085169939, 946304861, 44451568, 2115414221, 2137251591, 317021346, 552683235, 1575100285, 522048381); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void int4x3_operator_left_shift() + { + int4x3 a0 = int4x3(197771193, 622182602, 1283988958, 1327917304, 473415985, 432425717, 870301196, 2058433484, 1200694230, 1531607705, 1360008038, 1008296534); + int b0 = (1321149625); + int4x3 r0 = int4x3(1912602624, -1811939328, -1140850688, -268435456, 1644167168, -369098752, 402653184, -1744830464, -1409286144, 838860800, -872415232, -1409286144); + TestUtils.AreEqual(a0 << b0, r0); + + int4x3 a1 = int4x3(1447702302, 35667343, 1664454606, 2045594989, 2077023268, 592678686, 297755411, 1722762487, 1161625759, 37265945, 997793693, 1521705181); + int b1 = (1079614371); + int4x3 r1 = int4x3(-1303283472, 285338744, 430734960, -815109272, -563683040, 446462192, -1912924008, 897198008, 703071480, 298127560, -607585048, -711260440); + TestUtils.AreEqual(a1 << b1, r1); + + int4x3 a2 = int4x3(263886278, 2084190583, 230910816, 71403448, 481375728, 1176038816, 1382694875, 1824729613, 1535276688, 1581610518, 407677878, 1208958192); + int b2 = (221147365); + int4x3 r2 = int4x3(-145573696, -2025378080, -1200788480, -2010056960, -1775845888, -1021463552, 1296563040, -1738194528, 1884213760, -928070976, 160790208, 31956480); + TestUtils.AreEqual(a2 << b2, r2); + + int4x3 a3 = int4x3(740058147, 880835937, 2063772405, 430594634, 281771991, 1130057990, 1127968177, 1628217625, 979935914, 17663275, 956738326, 1996060114); + int b3 = (946058001); + int4x3 r3 = int4x3(-934936576, -87949312, 1441398784, -1265369088, -5373952, -1576271872, -614334464, 1110573056, 1163132928, 173408256, 1445724160, -341573632); + TestUtils.AreEqual(a3 << b3, r3); + } + + [TestCompiler] + public static void int4x3_operator_right_shift() + { + int4x3 a0 = int4x3(548167301, 1161338299, 1617625829, 1860731847, 713958715, 196552656, 770466193, 1265099998, 572763124, 506619530, 426807581, 2031319045); + int b0 = (1266801540); + int4x3 r0 = int4x3(34260456, 72583643, 101101614, 116295740, 44622419, 12284541, 48154137, 79068749, 35797695, 31663720, 26675473, 126957440); + TestUtils.AreEqual(a0 >> b0, r0); + + int4x3 a1 = int4x3(701927980, 569504877, 185593382, 1102123711, 334005460, 1624751550, 280138733, 1598620011, 1840564178, 736389149, 1279158873, 408822762); + int b1 = (917785020); + int4x3 r1 = int4x3(2, 2, 0, 4, 1, 6, 1, 5, 6, 2, 4, 1); + TestUtils.AreEqual(a1 >> b1, r1); + + int4x3 a2 = int4x3(763607760, 1568185874, 774126687, 1587054000, 600069797, 29576474, 1880981389, 352174824, 1164508476, 425441430, 186542511, 1099859381); + int b2 = (348013684); + int4x3 r2 = int4x3(728, 1495, 738, 1513, 572, 28, 1793, 335, 1110, 405, 177, 1048); + TestUtils.AreEqual(a2 >> b2, r2); + + int4x3 a3 = int4x3(1234295294, 761662151, 1254855819, 903402043, 1180315725, 182990778, 958706431, 1075621082, 1409488892, 1576738052, 700893981, 1435331003); + int b3 = (1028666766); + int4x3 r3 = int4x3(75335, 46488, 76590, 55139, 72040, 11168, 58514, 65650, 86028, 96236, 42779, 87605); + TestUtils.AreEqual(a3 >> b3, r3); + } + + [TestCompiler] + public static void int4x3_operator_bitwise_not() + { + int4x3 a0 = int4x3(1403358969, 831360921, 2088190243, 976721016, 878283189, 308994339, 1935567517, 1420884856, 472965491, 771711426, 627580960, 2061524024); + int4x3 r0 = int4x3(-1403358970, -831360922, -2088190244, -976721017, -878283190, -308994340, -1935567518, -1420884857, -472965492, -771711427, -627580961, -2061524025); + TestUtils.AreEqual(~a0, r0); + + int4x3 a1 = int4x3(753208488, 1303022493, 664744603, 1289372466, 1635981125, 1951018596, 1545651937, 717936457, 1284504687, 1342785385, 869629475, 2045854321); + int4x3 r1 = int4x3(-753208489, -1303022494, -664744604, -1289372467, -1635981126, -1951018597, -1545651938, -717936458, -1284504688, -1342785386, -869629476, -2045854322); + TestUtils.AreEqual(~a1, r1); + + int4x3 a2 = int4x3(1282546942, 1824824810, 1736570715, 508906058, 2060752880, 1867418756, 388530274, 695179852, 1766938039, 897923626, 1816190464, 1362906829); + int4x3 r2 = int4x3(-1282546943, -1824824811, -1736570716, -508906059, -2060752881, -1867418757, -388530275, -695179853, -1766938040, -897923627, -1816190465, -1362906830); + TestUtils.AreEqual(~a2, r2); + + int4x3 a3 = int4x3(1227946838, 189609278, 956441808, 2123488810, 1593014251, 19223061, 1722107954, 1636875694, 1914097392, 1382545027, 1285277010, 722020848); + int4x3 r3 = int4x3(-1227946839, -189609279, -956441809, -2123488811, -1593014252, -19223062, -1722107955, -1636875695, -1914097393, -1382545028, -1285277011, -722020849); + TestUtils.AreEqual(~a3, r3); + } + + + } +} diff --git a/package/Tests/Tests/Shared/TestInt4x3.gen.cs.meta b/package/Tests/Tests/Shared/TestInt4x3.gen.cs.meta new file mode 100755 index 000000000..2a973318b --- /dev/null +++ b/package/Tests/Tests/Shared/TestInt4x3.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 5ffba8e003136db4abab4542f240e632 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/package/Tests/Tests/Shared/TestInt4x4.gen.cs b/package/Tests/Tests/Shared/TestInt4x4.gen.cs new file mode 100755 index 000000000..61036b7b4 --- /dev/null +++ b/package/Tests/Tests/Shared/TestInt4x4.gen.cs @@ -0,0 +1,1258 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using NUnit.Framework; +using static Unity.Mathematics.math; +using Burst.Compiler.IL.Tests; + +namespace Unity.Mathematics.Tests +{ + [TestFixture] + public class TestInt4x4 + { + [TestCompiler] + public static void int4x4_zero() + { + TestUtils.AreEqual(int4x4.zero.c0.x, 0); + TestUtils.AreEqual(int4x4.zero.c0.y, 0); + TestUtils.AreEqual(int4x4.zero.c0.z, 0); + TestUtils.AreEqual(int4x4.zero.c0.w, 0); + TestUtils.AreEqual(int4x4.zero.c1.x, 0); + TestUtils.AreEqual(int4x4.zero.c1.y, 0); + TestUtils.AreEqual(int4x4.zero.c1.z, 0); + TestUtils.AreEqual(int4x4.zero.c1.w, 0); + TestUtils.AreEqual(int4x4.zero.c2.x, 0); + TestUtils.AreEqual(int4x4.zero.c2.y, 0); + TestUtils.AreEqual(int4x4.zero.c2.z, 0); + TestUtils.AreEqual(int4x4.zero.c2.w, 0); + TestUtils.AreEqual(int4x4.zero.c3.x, 0); + TestUtils.AreEqual(int4x4.zero.c3.y, 0); + TestUtils.AreEqual(int4x4.zero.c3.z, 0); + TestUtils.AreEqual(int4x4.zero.c3.w, 0); + } + + [TestCompiler] + public static void int4x4_identity() + { + TestUtils.AreEqual(int4x4.identity.c0.x, 1); + TestUtils.AreEqual(int4x4.identity.c0.y, 0); + TestUtils.AreEqual(int4x4.identity.c0.z, 0); + TestUtils.AreEqual(int4x4.identity.c0.w, 0); + TestUtils.AreEqual(int4x4.identity.c1.x, 0); + TestUtils.AreEqual(int4x4.identity.c1.y, 1); + TestUtils.AreEqual(int4x4.identity.c1.z, 0); + TestUtils.AreEqual(int4x4.identity.c1.w, 0); + TestUtils.AreEqual(int4x4.identity.c2.x, 0); + TestUtils.AreEqual(int4x4.identity.c2.y, 0); + TestUtils.AreEqual(int4x4.identity.c2.z, 1); + TestUtils.AreEqual(int4x4.identity.c2.w, 0); + TestUtils.AreEqual(int4x4.identity.c3.x, 0); + TestUtils.AreEqual(int4x4.identity.c3.y, 0); + TestUtils.AreEqual(int4x4.identity.c3.z, 0); + TestUtils.AreEqual(int4x4.identity.c3.w, 1); + } + + [TestCompiler] + public static void int4x4_operator_equal_wide_wide() + { + int4x4 a0 = int4x4(790229414, 970783976, 1428432738, 1578747135, 1733797753, 2001507228, 1446876437, 1777406370, 1426387268, 1809275021, 1843770816, 1172185222, 1469608940, 869874758, 458603090, 581282460); + int4x4 b0 = int4x4(612337669, 1214209108, 2120643427, 295461214, 1510890331, 1893316566, 921816149, 1834958575, 1482011863, 2062852792, 226398742, 770290735, 36812057, 543224481, 1565350150, 1909926604); + bool4x4 r0 = bool4x4(false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + int4x4 a1 = int4x4(1948324909, 1129078206, 1638391029, 1135553683, 2079295200, 576232476, 608208235, 11172509, 1025529486, 2095601864, 193500113, 1780908384, 1587636094, 1892083815, 1250768669, 1984341771); + int4x4 b1 = int4x4(1619900436, 1849990483, 1261604411, 161864811, 843379453, 1780425458, 215681636, 2123130580, 708665810, 1902328998, 1808456602, 563830672, 200493241, 1391620681, 1035522654, 168447603); + bool4x4 r1 = bool4x4(false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + int4x4 a2 = int4x4(929607871, 2092475304, 1940221590, 196567546, 346458180, 2131041239, 1797649913, 162082500, 25639548, 1665178642, 1617231933, 1716426491, 1986475699, 262354389, 1517004243, 1058579789); + int4x4 b2 = int4x4(91580624, 1974459648, 2074899534, 164782857, 1647410210, 1000391363, 1539243411, 1253927304, 894227825, 1897420927, 826437109, 139868307, 565247534, 1437897788, 1891416649, 1043772546); + bool4x4 r2 = bool4x4(false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + int4x4 a3 = int4x4(1006521329, 850817587, 270689979, 182908990, 512098264, 1555870818, 1824899010, 913664406, 38410741, 1365981133, 1517827659, 698699317, 522637780, 2135467596, 1812545145, 795262261); + int4x4 b3 = int4x4(407784873, 516627611, 184196508, 1098113599, 1930819007, 693573550, 780517021, 48392683, 638156511, 356540844, 86920844, 103170762, 1952606997, 1374974056, 906153405, 602525178); + bool4x4 r3 = bool4x4(false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void int4x4_operator_equal_wide_scalar() + { + int4x4 a0 = int4x4(1211464300, 1921862607, 508076684, 1249127920, 1394594555, 746862310, 1733655277, 1884008277, 1682018538, 795585660, 936027116, 927605411, 672785749, 1465584610, 585324157, 404448210); + int b0 = (746972502); + bool4x4 r0 = bool4x4(false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + int4x4 a1 = int4x4(969511077, 1772925698, 1884034177, 451512860, 425476075, 1370577708, 597010220, 1249636005, 211986678, 1305479811, 255635293, 1150443719, 177122433, 511346787, 1442445694, 667984966); + int b1 = (442746747); + bool4x4 r1 = bool4x4(false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + int4x4 a2 = int4x4(1684122010, 172230876, 496695881, 955604291, 872759249, 811880239, 1604334190, 443527663, 1734064824, 1483978726, 1018945528, 476526026, 564821616, 1368099334, 2134154866, 2136028886); + int b2 = (1962874832); + bool4x4 r2 = bool4x4(false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + int4x4 a3 = int4x4(20195989, 1256964339, 165389004, 759951440, 321496427, 551284899, 2058550111, 2146975562, 1182607877, 1588866146, 1478019984, 733564558, 1504896105, 284238873, 1641065069, 259620445); + int b3 = (550465422); + bool4x4 r3 = bool4x4(false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void int4x4_operator_equal_scalar_wide() + { + int a0 = (1150044438); + int4x4 b0 = int4x4(233855098, 924242519, 1402948791, 601381975, 2120518068, 629187703, 1971977031, 47183124, 1061805787, 1009011238, 312511148, 1460673064, 737210539, 1737844479, 1892405453, 2133024000); + bool4x4 r0 = bool4x4(false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + int a1 = (455818693); + int4x4 b1 = int4x4(2003197687, 1276241219, 534746610, 559824292, 1758388240, 1023494292, 719963017, 1883763832, 597498209, 367814403, 1839429063, 223575614, 79701214, 1699606118, 759455864, 2017599457); + bool4x4 r1 = bool4x4(false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + int a2 = (1395605233); + int4x4 b2 = int4x4(1191785903, 1156248212, 338891967, 61410415, 1576985758, 1066598856, 1070606918, 1295956934, 1391539053, 1206456305, 466211205, 1362213007, 554347592, 361925309, 1122476040, 1118155036); + bool4x4 r2 = bool4x4(false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + int a3 = (2074160001); + int4x4 b3 = int4x4(211145132, 1330427155, 231737739, 590220146, 622950505, 2048231874, 682985774, 865101790, 1523019859, 261373300, 132547968, 1971091157, 982104573, 1456888767, 1700538931, 1590557254); + bool4x4 r3 = bool4x4(false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void int4x4_operator_not_equal_wide_wide() + { + int4x4 a0 = int4x4(1660932106, 982847023, 97046264, 1739517447, 1253499180, 1830584069, 1841470429, 1397841646, 1770890135, 1906548631, 169082967, 2099271786, 1909317609, 46519139, 1433204003, 931492669); + int4x4 b0 = int4x4(107139049, 75478496, 2055495054, 358586687, 942338347, 111564990, 113811950, 948912488, 1080084121, 1400504872, 1032134499, 1061123400, 221862069, 858950046, 989094643, 2023070999); + bool4x4 r0 = bool4x4(true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + int4x4 a1 = int4x4(670504132, 1551558665, 1204055048, 1623586740, 226381077, 1145987803, 644253929, 475189890, 922313145, 2006448607, 1574579050, 1839580033, 155350910, 313644534, 2008975915, 1072866331); + int4x4 b1 = int4x4(1269317127, 531883744, 687761409, 278427731, 296354221, 536981557, 1134676193, 1749879634, 1944210269, 92849031, 164029425, 628797607, 2069207270, 2022667842, 880567401, 264404537); + bool4x4 r1 = bool4x4(true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + int4x4 a2 = int4x4(10845678, 1588544505, 709736932, 1892341087, 1603981028, 1174123795, 2033630343, 416869471, 1894155826, 2084120548, 1130129683, 448491949, 1577220741, 376532834, 374116875, 416935463); + int4x4 b2 = int4x4(1954996717, 572153302, 865957902, 1083128726, 1628120900, 2020212393, 1562290229, 774641416, 444123152, 1636477381, 838643638, 506474707, 922761058, 1282331425, 1748402545, 1493297323); + bool4x4 r2 = bool4x4(true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + int4x4 a3 = int4x4(1370971537, 526135879, 1693615335, 1040142702, 51869182, 636351650, 1137389277, 742650911, 1652337799, 128512016, 943930500, 1281758501, 1506504768, 1142416208, 489425068, 709011851); + int4x4 b3 = int4x4(881583266, 836740859, 2050520235, 56355243, 923319881, 2093941797, 1966851287, 740544328, 1686486765, 1564852763, 1583872597, 1319685687, 1082069798, 1934459521, 610009662, 2003062130); + bool4x4 r3 = bool4x4(true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void int4x4_operator_not_equal_wide_scalar() + { + int4x4 a0 = int4x4(747758183, 1033001286, 1439973882, 2138928797, 1197845089, 1432672459, 950170763, 238704450, 2105962247, 727205263, 1640688041, 276313906, 2126300423, 791998981, 2035077187, 1171827730); + int b0 = (248693828); + bool4x4 r0 = bool4x4(true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + int4x4 a1 = int4x4(1412347883, 768370497, 1072798259, 1808712713, 1497830076, 1582645163, 1876273820, 90244766, 30493685, 904014575, 384643370, 11554610, 2016093187, 1515760622, 1596313927, 363921847); + int b1 = (1622176923); + bool4x4 r1 = bool4x4(true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + int4x4 a2 = int4x4(1555396158, 1739138988, 1916670251, 1516209113, 765258490, 668154629, 1509386069, 1670155205, 6112585, 1942607934, 964072392, 779222124, 409389668, 321500037, 1728722181, 1641292942); + int b2 = (913218907); + bool4x4 r2 = bool4x4(true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + int4x4 a3 = int4x4(780105497, 1311007738, 2079744789, 1086529117, 898347399, 1597839770, 1711183709, 2048684031, 1167351404, 528657884, 565527393, 227149840, 89869060, 1358928288, 44374114, 2059875706); + int b3 = (1302143939); + bool4x4 r3 = bool4x4(true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void int4x4_operator_not_equal_scalar_wide() + { + int a0 = (2076921066); + int4x4 b0 = int4x4(2037494727, 1989050616, 48833929, 1897435904, 514354517, 1783749164, 364694471, 754315072, 124108032, 1512967900, 1178825850, 1854793298, 50286949, 2100802631, 1640811853, 82110247); + bool4x4 r0 = bool4x4(true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + int a1 = (472172806); + int4x4 b1 = int4x4(266984506, 2003668365, 1826089250, 1041416160, 356140110, 2057237962, 799920703, 1916347720, 510966350, 572038024, 1936481966, 1366859342, 1775285431, 604757336, 1047551607, 1311703338); + bool4x4 r1 = bool4x4(true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + int a2 = (676012224); + int4x4 b2 = int4x4(627370253, 1715733805, 699755913, 1875151666, 358894860, 1036873378, 214171973, 340364269, 1652250278, 592713982, 806342921, 1264065574, 188560943, 1068608955, 485382245, 57935167); + bool4x4 r2 = bool4x4(true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + int a3 = (1002934795); + int4x4 b3 = int4x4(1859322106, 1990390938, 1674000894, 1035504906, 1681354617, 2079296301, 1396396873, 2128571831, 3388167, 1211711140, 575696152, 1534939377, 496306248, 908210564, 131274243, 543089960); + bool4x4 r3 = bool4x4(true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void int4x4_operator_less_wide_wide() + { + int4x4 a0 = int4x4(1182186063, 415538999, 1667335818, 1566618442, 1166180837, 639095188, 1080836365, 771119973, 928263233, 789225474, 665243110, 1003542034, 1032480172, 1961336172, 923379558, 21210619); + int4x4 b0 = int4x4(524633529, 1032195686, 760723389, 1505751409, 431962172, 1287906509, 1560084663, 1450178202, 2066166337, 1107069023, 1640077524, 2103263105, 684229139, 1234033624, 1278743281, 1953079347); + bool4x4 r0 = bool4x4(false, true, false, false, false, true, true, true, true, true, true, true, false, false, true, true); + TestUtils.AreEqual(a0 < b0, r0); + + int4x4 a1 = int4x4(1089772116, 1707633052, 778986024, 158153146, 336715101, 1839141169, 1706859710, 1928438162, 1638101724, 2044698552, 1543260981, 471462349, 1668575142, 2147199161, 946870864, 582371851); + int4x4 b1 = int4x4(1228832942, 2082539723, 1088437561, 1058382082, 207459172, 750531081, 2015788562, 2126542133, 271967348, 1601249324, 1373999400, 1689592186, 459759541, 983106679, 332584818, 2034921203); + bool4x4 r1 = bool4x4(true, true, true, true, false, false, true, true, false, false, false, true, false, false, false, true); + TestUtils.AreEqual(a1 < b1, r1); + + int4x4 a2 = int4x4(410751553, 198134393, 1999935258, 671192178, 1908013191, 770353922, 1948420002, 396403395, 903274624, 1743415547, 1381528376, 409818366, 757370593, 413964581, 1088722047, 111511218); + int4x4 b2 = int4x4(833499488, 1999487070, 836063897, 1987309319, 1878327039, 457783938, 253010953, 1164175257, 1982277686, 651412210, 567444942, 1863256363, 18040866, 319226483, 1322530114, 4130283); + bool4x4 r2 = bool4x4(true, true, false, true, false, false, false, true, true, false, false, true, false, false, true, false); + TestUtils.AreEqual(a2 < b2, r2); + + int4x4 a3 = int4x4(1772570968, 339779528, 1817654169, 126606875, 1748258817, 1840719780, 603645478, 1888655831, 63356146, 79832055, 736652918, 653392827, 423681122, 1242116477, 422099316, 898587272); + int4x4 b3 = int4x4(1951703613, 873360222, 2076434739, 802037827, 57389233, 1812417589, 13678411, 1415564189, 983023904, 1112076825, 2078443288, 1990790258, 482361677, 1981894392, 351965695, 585483077); + bool4x4 r3 = bool4x4(true, true, true, true, false, false, false, false, true, true, true, true, true, true, false, false); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void int4x4_operator_less_wide_scalar() + { + int4x4 a0 = int4x4(608447185, 818840405, 869219329, 2080125385, 1214500548, 1361741203, 1667165786, 1615392341, 840091491, 469591900, 1247103789, 315321650, 930950514, 1100560246, 933855388, 908563901); + int b0 = (1491216667); + bool4x4 r0 = bool4x4(true, true, true, false, true, true, false, false, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 < b0, r0); + + int4x4 a1 = int4x4(1127696709, 380753337, 971148054, 1827886929, 1056649851, 1579735991, 689044913, 1960894027, 371987110, 867559111, 1703747625, 1698536333, 41716206, 243673862, 1274625476, 611065092); + int b1 = (1286331950); + bool4x4 r1 = bool4x4(true, true, true, false, true, false, true, false, true, true, false, false, true, true, true, true); + TestUtils.AreEqual(a1 < b1, r1); + + int4x4 a2 = int4x4(118750042, 452204442, 1645191336, 1829152606, 1891059504, 1217893177, 233590785, 894500093, 92899312, 965973603, 1496873003, 973411415, 694702440, 215973795, 1555455579, 1443255493); + int b2 = (1829327996); + bool4x4 r2 = bool4x4(true, true, true, true, false, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 < b2, r2); + + int4x4 a3 = int4x4(212954934, 1031281872, 1389987778, 928043903, 434566816, 1386588061, 180174416, 119231358, 842513438, 494182092, 2110901808, 2064339655, 798375285, 225918038, 2119961960, 1851740205); + int b3 = (519181838); + bool4x4 r3 = bool4x4(true, false, false, false, true, false, true, true, false, true, false, false, false, true, false, false); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void int4x4_operator_less_scalar_wide() + { + int a0 = (548436837); + int4x4 b0 = int4x4(282703327, 14370648, 1862117300, 1304793311, 826073259, 988910157, 445132446, 1139670255, 111349251, 1102440676, 112183144, 1594415311, 1890019295, 2098715503, 608933527, 183989010); + bool4x4 r0 = bool4x4(false, false, true, true, true, true, false, true, false, true, false, true, true, true, true, false); + TestUtils.AreEqual(a0 < b0, r0); + + int a1 = (1596056507); + int4x4 b1 = int4x4(1027318999, 146281093, 358911716, 874278078, 1106057699, 1256807459, 2111973919, 1736480659, 810406400, 1329939911, 1276652605, 593690439, 771851138, 590897155, 386688344, 1290583204); + bool4x4 r1 = bool4x4(false, false, false, false, false, false, true, true, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 < b1, r1); + + int a2 = (1984930954); + int4x4 b2 = int4x4(743544838, 1473400608, 1300775973, 1351720916, 168788814, 670661854, 168118205, 894264935, 1763013903, 1647476162, 699045651, 1813273687, 900504872, 1574770031, 1684716245, 1458270033); + bool4x4 r2 = bool4x4(false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 < b2, r2); + + int a3 = (685700324); + int4x4 b3 = int4x4(697607066, 378454814, 1198070277, 1821642406, 1324129275, 905046836, 1897627028, 1715796299, 15666859, 1806453893, 1315963488, 545979816, 1486981760, 511543521, 1872978447, 303832107); + bool4x4 r3 = bool4x4(true, false, true, true, true, true, true, true, false, true, true, false, true, false, true, false); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void int4x4_operator_greater_wide_wide() + { + int4x4 a0 = int4x4(592884447, 2133928932, 918957182, 1284069471, 194584707, 739120780, 241654068, 1340158550, 2099542537, 1182623667, 1399607274, 789301637, 180400925, 594688333, 1877031463, 1360073500); + int4x4 b0 = int4x4(138737040, 192863971, 1700841444, 1044631301, 1391589821, 730837695, 253553987, 2078872742, 910845808, 976047676, 202633078, 1223618940, 641600530, 1830470354, 1570701388, 1104256103); + bool4x4 r0 = bool4x4(true, true, false, true, false, true, false, false, true, true, true, false, false, false, true, true); + TestUtils.AreEqual(a0 > b0, r0); + + int4x4 a1 = int4x4(1091782422, 546676424, 348221770, 716039145, 458742739, 1365508046, 1523167942, 1574478622, 1295065160, 715285504, 1130323487, 677530432, 1496919050, 12463046, 1106153111, 1315083485); + int4x4 b1 = int4x4(1838646932, 740166101, 1549021845, 1457092873, 1790630950, 907793213, 555122804, 1418910265, 335209251, 1094341422, 1465325455, 390251369, 910309992, 277356652, 1601082764, 771366966); + bool4x4 r1 = bool4x4(false, false, false, false, false, true, true, true, true, false, false, true, true, false, false, true); + TestUtils.AreEqual(a1 > b1, r1); + + int4x4 a2 = int4x4(31516321, 1786538920, 1854361210, 1730650972, 194806663, 517304937, 984608679, 1847934645, 1214605555, 535405194, 855415884, 2121416263, 1161116500, 1390730698, 1536558799, 350939762); + int4x4 b2 = int4x4(1782348324, 550490783, 599992449, 550520692, 1873014441, 1756459971, 2028992071, 1772761768, 1323261715, 1541822212, 265732078, 1773940614, 156425055, 1585395425, 438682493, 1005143622); + bool4x4 r2 = bool4x4(false, true, true, true, false, false, false, true, false, false, true, true, true, false, true, false); + TestUtils.AreEqual(a2 > b2, r2); + + int4x4 a3 = int4x4(475547465, 876276892, 916067531, 1712032702, 752041926, 899534759, 948020518, 1553126337, 1209858994, 1210234744, 1065677570, 2063434729, 1808415708, 1536857930, 1356745398, 1161445540); + int4x4 b3 = int4x4(594141080, 1888303265, 1023987839, 695072711, 164764812, 1404792693, 1068554108, 1615410626, 387184925, 1930375043, 1920744920, 1913267890, 12598306, 1697936155, 145255547, 1903607817); + bool4x4 r3 = bool4x4(false, false, false, true, true, false, false, false, true, false, false, true, true, false, true, false); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void int4x4_operator_greater_wide_scalar() + { + int4x4 a0 = int4x4(1097138316, 211763648, 1883002501, 56406996, 43662641, 1923456111, 1437755186, 1219010035, 2125058448, 304028799, 893125636, 48044515, 711945018, 1035679270, 577943770, 572743717); + int b0 = (438688675); + bool4x4 r0 = bool4x4(true, false, true, false, false, true, true, true, true, false, true, false, true, true, true, true); + TestUtils.AreEqual(a0 > b0, r0); + + int4x4 a1 = int4x4(1016617211, 1577403353, 64009107, 1462961460, 1143565920, 3715845, 689362811, 263973424, 1045140419, 1058332184, 524569092, 1183316983, 1107974092, 212839726, 523727054, 112709358); + int b1 = (2063134811); + bool4x4 r1 = bool4x4(false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 > b1, r1); + + int4x4 a2 = int4x4(614746280, 1683117650, 1451781409, 61102732, 1284938191, 1452639553, 2125085618, 467075658, 1019531089, 2028286621, 940955706, 1037153304, 1184928188, 1260010015, 1456174269, 174216269); + int b2 = (1000986708); + bool4x4 r2 = bool4x4(false, true, true, false, true, true, true, false, true, true, false, true, true, true, true, false); + TestUtils.AreEqual(a2 > b2, r2); + + int4x4 a3 = int4x4(1930086291, 2112194236, 1797322269, 1781660503, 1442606402, 208047803, 1193639690, 1939917219, 1146005869, 865123927, 913186094, 35693052, 1017084356, 91189073, 369398582, 2082818804); + int b3 = (108635332); + bool4x4 r3 = bool4x4(true, true, true, true, true, true, true, true, true, true, true, false, true, false, true, true); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void int4x4_operator_greater_scalar_wide() + { + int a0 = (2024896938); + int4x4 b0 = int4x4(599356784, 185671342, 1932327391, 2025591013, 1257191721, 1312388500, 1443698859, 779217735, 691047512, 741776730, 732565983, 668302204, 1556466996, 858599525, 1896917159, 701542098); + bool4x4 r0 = bool4x4(true, true, true, false, true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 > b0, r0); + + int a1 = (1052151621); + int4x4 b1 = int4x4(1023307544, 1435392907, 1858177345, 299897686, 632930355, 1387203601, 483722222, 863042711, 1713088900, 315569296, 292652611, 1002628348, 927789921, 108145064, 425005337, 2093233588); + bool4x4 r1 = bool4x4(true, false, false, true, true, false, true, true, false, true, true, true, true, true, true, false); + TestUtils.AreEqual(a1 > b1, r1); + + int a2 = (2063431853); + int4x4 b2 = int4x4(2079035844, 849337819, 1769234051, 358948261, 267985383, 126402553, 2055164423, 577620406, 1167389614, 474380256, 1163355187, 1782967398, 1648397169, 845981950, 630459977, 1033887217); + bool4x4 r2 = bool4x4(false, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 > b2, r2); + + int a3 = (1480829811); + int4x4 b3 = int4x4(1903710461, 402220631, 266619022, 1724999252, 2113910076, 945951388, 1448605169, 1162548302, 1691586468, 996819204, 1151046248, 1924073034, 1910741238, 633631666, 307560646, 722552263); + bool4x4 r3 = bool4x4(false, true, true, false, false, true, true, true, false, true, true, false, false, true, true, true); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void int4x4_operator_less_equal_wide_wide() + { + int4x4 a0 = int4x4(1577248162, 2043073061, 1688380407, 176431985, 223299035, 1502802140, 1691709825, 386789394, 117182003, 1665770435, 1958490731, 420032601, 1251092689, 2011681765, 749743684, 183784440); + int4x4 b0 = int4x4(903445031, 2108974565, 210822256, 1281704747, 453681718, 66138830, 1229799377, 1620922595, 1715833766, 1366430432, 13102000, 46919981, 486470891, 1709514236, 2145785285, 854254454); + bool4x4 r0 = bool4x4(false, true, false, true, true, false, false, true, true, false, false, false, false, false, true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + int4x4 a1 = int4x4(1150674774, 1633828822, 1719442172, 336047314, 743733218, 1393995865, 1854442658, 1498138884, 912169992, 1992682021, 1619593455, 1883313982, 483412430, 857881876, 346624138, 531961063); + int4x4 b1 = int4x4(1273278658, 810263315, 1862773824, 201799013, 974166844, 1320622967, 2058099616, 522102017, 620752145, 1213693681, 1281818305, 1564146162, 1996153080, 1201909516, 614401396, 224997397); + bool4x4 r1 = bool4x4(true, false, true, false, true, false, true, false, false, false, false, false, true, true, true, false); + TestUtils.AreEqual(a1 <= b1, r1); + + int4x4 a2 = int4x4(269897278, 1062947703, 1743454202, 2048964070, 1379786452, 622697214, 766589782, 339960970, 1135815654, 797344244, 153103264, 1382144646, 1537448323, 326850885, 1004891948, 2002658522); + int4x4 b2 = int4x4(648547686, 418431167, 1724009726, 401891826, 1463971422, 984323887, 1246893281, 1340476720, 1489579748, 128991539, 1117574406, 2016340116, 69682660, 1870772739, 1281621445, 129331822); + bool4x4 r2 = bool4x4(true, false, false, false, true, true, true, true, true, false, true, true, false, true, true, false); + TestUtils.AreEqual(a2 <= b2, r2); + + int4x4 a3 = int4x4(442205781, 1050725689, 995151913, 926131462, 719271722, 1981390876, 659121091, 797556380, 1656192110, 66093862, 1964540799, 71894133, 1413886687, 1028466491, 1397158841, 1544483525); + int4x4 b3 = int4x4(1168998468, 1205894972, 1079707717, 1335643913, 1590790195, 155622033, 898990095, 1384002796, 1664888803, 1004528037, 402969524, 1299806519, 1194091234, 1673771542, 178191331, 98165007); + bool4x4 r3 = bool4x4(true, true, true, true, true, false, true, true, true, true, false, true, false, true, false, false); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void int4x4_operator_less_equal_wide_scalar() + { + int4x4 a0 = int4x4(1722165358, 1219858357, 860410743, 411099660, 348104022, 1963256951, 212084836, 58924407, 1459242706, 1745758438, 532949158, 262559763, 690091301, 1806172431, 2091514001, 1857173043); + int b0 = (1688048545); + bool4x4 r0 = bool4x4(false, true, true, true, true, false, true, true, true, false, true, true, true, false, false, false); + TestUtils.AreEqual(a0 <= b0, r0); + + int4x4 a1 = int4x4(1617221948, 804204255, 981729559, 2032949254, 910922522, 2079225209, 26179915, 238796519, 1917813750, 1258115260, 20607406, 1337879822, 959460446, 1599429457, 1279143037, 1551937606); + int b1 = (2017733017); + bool4x4 r1 = bool4x4(true, true, true, false, true, false, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 <= b1, r1); + + int4x4 a2 = int4x4(626254356, 1021674613, 127839058, 1974631244, 426908235, 1818566980, 487782623, 1454736163, 465255784, 686095683, 2012624010, 1427922646, 1129062501, 1896996725, 1609784025, 1413823266); + int b2 = (1162369122); + bool4x4 r2 = bool4x4(true, true, true, false, true, false, true, false, true, true, false, false, true, false, false, false); + TestUtils.AreEqual(a2 <= b2, r2); + + int4x4 a3 = int4x4(1483727269, 1823599046, 1379007149, 1836699751, 777126023, 1288116795, 834230828, 172303141, 577773919, 705141691, 191477430, 868528232, 499782260, 146328981, 1401289768, 858105804); + int b3 = (2045244870); + bool4x4 r3 = bool4x4(true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void int4x4_operator_less_equal_scalar_wide() + { + int a0 = (1777585); + int4x4 b0 = int4x4(1181030049, 1787703989, 1729760948, 1816537388, 1359786460, 874999193, 1678863148, 1711365839, 762067160, 11953554, 1131583906, 1175393186, 1293698493, 48893340, 66196247, 1958607116); + bool4x4 r0 = bool4x4(true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + int a1 = (1576473309); + int4x4 b1 = int4x4(861890786, 478252419, 957887737, 117849810, 1348693584, 105489302, 259034238, 530713566, 601413850, 830430286, 145552297, 1697295044, 1150680564, 2091065664, 1796096704, 1572008712); + bool4x4 r1 = bool4x4(false, false, false, false, false, false, false, false, false, false, false, true, false, true, true, false); + TestUtils.AreEqual(a1 <= b1, r1); + + int a2 = (1556906486); + int4x4 b2 = int4x4(205552788, 620963188, 1156705971, 1121867260, 733876180, 1570208446, 541165966, 644414754, 734807383, 938714737, 591783460, 56988751, 790541516, 1811299247, 1308256680, 549490410); + bool4x4 r2 = bool4x4(false, false, false, false, false, true, false, false, false, false, false, false, false, true, false, false); + TestUtils.AreEqual(a2 <= b2, r2); + + int a3 = (1987696011); + int4x4 b3 = int4x4(1079808067, 363499438, 1873483674, 2031411422, 1979820112, 1682214687, 1470726710, 1285823822, 758372610, 44568907, 1533310851, 14070795, 1758870243, 68371537, 1482970849, 1750868121); + bool4x4 r3 = bool4x4(false, false, false, true, false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void int4x4_operator_greater_equal_wide_wide() + { + int4x4 a0 = int4x4(263000030, 744235661, 1893760267, 237248, 1062370984, 1676977687, 816766880, 1089431546, 1394493730, 1176473380, 1193988637, 1703862455, 1806186947, 1253571980, 589397635, 1951842887); + int4x4 b0 = int4x4(1395535146, 1178373944, 1237373760, 1364855321, 600811864, 362060472, 290870624, 1839067862, 396958580, 1336888643, 1019684398, 1697684196, 1227300220, 2044269675, 1898323839, 874509380); + bool4x4 r0 = bool4x4(false, false, true, false, true, true, true, false, true, false, true, true, true, false, false, true); + TestUtils.AreEqual(a0 >= b0, r0); + + int4x4 a1 = int4x4(798931197, 808426484, 744869638, 1959531616, 207430702, 1533946595, 1148381840, 2011549474, 605043041, 1707339660, 2038122892, 345761584, 1839156338, 1519670644, 2131285427, 775457686); + int4x4 b1 = int4x4(1873505472, 1268843918, 1606949562, 1263896445, 1805518202, 1412091359, 1240330374, 1955056253, 2025187918, 750755999, 869709740, 1390799279, 1194035112, 666460047, 103451220, 1311530792); + bool4x4 r1 = bool4x4(false, false, false, true, false, true, false, true, false, true, true, false, true, true, true, false); + TestUtils.AreEqual(a1 >= b1, r1); + + int4x4 a2 = int4x4(796452624, 1710612922, 1629927787, 1094198224, 584910611, 1129457941, 1633221450, 549302356, 1363234393, 1439226634, 190984179, 983870135, 1527743888, 1577171227, 87278918, 1280094665); + int4x4 b2 = int4x4(802468307, 1090745055, 1968071275, 1935027815, 2060060582, 1535954082, 291771096, 565856573, 1445999374, 711693364, 1201086888, 2076705104, 1565110852, 1698318173, 1293071569, 103979482); + bool4x4 r2 = bool4x4(false, true, false, false, false, false, true, false, false, true, false, false, false, false, false, true); + TestUtils.AreEqual(a2 >= b2, r2); + + int4x4 a3 = int4x4(1030060516, 615638735, 1677201099, 325128466, 930989694, 165845388, 1887735446, 1905061476, 644732756, 1450709301, 811708233, 1120546613, 1966081819, 1710484814, 390900048, 1847748897); + int4x4 b3 = int4x4(222415803, 345913533, 920804419, 784455413, 1919795492, 2125545957, 957291149, 1547385242, 953814071, 685286053, 63764322, 1742849383, 1781391465, 64816935, 1543363698, 1439322689); + bool4x4 r3 = bool4x4(true, true, true, false, false, false, true, true, false, true, true, false, true, true, false, true); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void int4x4_operator_greater_equal_wide_scalar() + { + int4x4 a0 = int4x4(2112791350, 1043657935, 101764761, 1529909067, 556026890, 281734132, 1186600258, 815093894, 609211196, 1604309397, 829548642, 244604867, 1419295004, 471843809, 1819986195, 1460027917); + int b0 = (1470533736); + bool4x4 r0 = bool4x4(true, false, false, true, false, false, false, false, false, true, false, false, false, false, true, false); + TestUtils.AreEqual(a0 >= b0, r0); + + int4x4 a1 = int4x4(1646290021, 1596738181, 1905036391, 1771391775, 1584946560, 370941146, 440219668, 1607345862, 1449142607, 1223010129, 379014762, 1719435169, 258833609, 1389585003, 612593660, 42612027); + int b1 = (196833647); + bool4x4 r1 = bool4x4(true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, false); + TestUtils.AreEqual(a1 >= b1, r1); + + int4x4 a2 = int4x4(1138747386, 917503963, 353608194, 1526792895, 192092521, 909358617, 367754234, 1738737389, 523396822, 594728703, 1332667659, 1627604854, 1542713928, 1997611484, 191413337, 1230701700); + int b2 = (1491562090); + bool4x4 r2 = bool4x4(false, false, false, true, false, false, false, true, false, false, false, true, true, true, false, false); + TestUtils.AreEqual(a2 >= b2, r2); + + int4x4 a3 = int4x4(702382564, 1013770865, 1420374964, 341399575, 2033070823, 672716789, 1809028740, 2070046852, 1254367930, 1206207650, 807585496, 1243142372, 350377587, 214724394, 216954982, 201992840); + int b3 = (2086058548); + bool4x4 r3 = bool4x4(false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void int4x4_operator_greater_equal_scalar_wide() + { + int a0 = (1525542481); + int4x4 b0 = int4x4(1503244746, 861711266, 817773856, 925984572, 571221723, 683686810, 118252990, 1653952090, 1240253990, 1947039008, 1869136019, 152012637, 1214546726, 917376832, 303549425, 2111728811); + bool4x4 r0 = bool4x4(true, true, true, true, true, true, true, false, true, false, false, true, true, true, true, false); + TestUtils.AreEqual(a0 >= b0, r0); + + int a1 = (945321577); + int4x4 b1 = int4x4(173706579, 625318949, 519443238, 1583588379, 1026799433, 1713083717, 394922760, 1216218189, 1336522452, 233894308, 479913036, 984991199, 172993285, 2121050903, 465645173, 788510727); + bool4x4 r1 = bool4x4(true, true, true, false, false, false, true, false, false, true, true, false, true, false, true, true); + TestUtils.AreEqual(a1 >= b1, r1); + + int a2 = (337378780); + int4x4 b2 = int4x4(273010835, 1898553615, 1111540136, 717385513, 474197678, 1417152771, 1476091619, 1312849725, 243299324, 1470872301, 1443256118, 1203165035, 2138148138, 1543595760, 186659728, 807288168); + bool4x4 r2 = bool4x4(true, false, false, false, false, false, false, false, true, false, false, false, false, false, true, false); + TestUtils.AreEqual(a2 >= b2, r2); + + int a3 = (1274079907); + int4x4 b3 = int4x4(1834102381, 22983902, 1733648920, 2089437749, 476445313, 1296111196, 422851096, 1857250030, 1382182918, 449792502, 1785823601, 668960891, 1067260705, 1973471752, 1403490846, 1510985557); + bool4x4 r3 = bool4x4(false, true, false, false, true, false, true, false, false, true, false, true, true, false, false, false); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void int4x4_operator_add_wide_wide() + { + int4x4 a0 = int4x4(2049228671, 1658660009, 491719392, 937013355, 81108663, 1063894558, 86954702, 843159721, 698977704, 192867135, 1683407172, 137301303, 2103582820, 526139155, 447937230, 2127411006); + int4x4 b0 = int4x4(2088751567, 645762023, 306868786, 4360271, 506047997, 2094559874, 1634712736, 1601474440, 1586485231, 908746788, 1812370320, 1247342357, 2043773873, 223363428, 175115707, 985928617); + int4x4 r0 = int4x4(-156987058, -1990545264, 798588178, 941373626, 587156660, -1136512864, 1721667438, -1850333135, -2009504361, 1101613923, -799189804, 1384643660, -147610603, 749502583, 623052937, -1181627673); + TestUtils.AreEqual(a0 + b0, r0); + + int4x4 a1 = int4x4(1670579390, 1914969141, 997691756, 857841794, 2129024875, 267535529, 978891383, 657092366, 941872903, 906908654, 1940071697, 862186205, 1951450264, 689662850, 1928213278, 1703906688); + int4x4 b1 = int4x4(507662836, 1231457019, 776127866, 607782424, 1160366210, 1384832242, 702057048, 703554905, 2106992817, 1994483489, 539473, 236858351, 411317652, 595429166, 713649927, 2053476603); + int4x4 r1 = int4x4(-2116725070, -1148541136, 1773819622, 1465624218, -1005576211, 1652367771, 1680948431, 1360647271, -1246101576, -1393575153, 1940611170, 1099044556, -1932199380, 1285092016, -1653104091, -537584005); + TestUtils.AreEqual(a1 + b1, r1); + + int4x4 a2 = int4x4(526120638, 423980484, 1867227242, 603782684, 728643437, 927205560, 1544834791, 268450974, 1386681507, 1428974172, 1415690700, 1193340567, 1792960278, 1427490402, 86465016, 827052793); + int4x4 b2 = int4x4(77965941, 1726775513, 1759186349, 2070333485, 1732568358, 523040962, 899952708, 1401525772, 1970067897, 488428060, 132927517, 1670039917, 1678110790, 586374104, 262412628, 1415374948); + int4x4 r2 = int4x4(604086579, -2144211299, -668553705, -1620851127, -1833755501, 1450246522, -1850179797, 1669976746, -938217892, 1917402232, 1548618217, -1431586812, -823896228, 2013864506, 348877644, -2052539555); + TestUtils.AreEqual(a2 + b2, r2); + + int4x4 a3 = int4x4(1603943169, 858711604, 278076564, 983811310, 1503210133, 1265840052, 1220817560, 839507207, 142866678, 1356231306, 1432159402, 637785903, 1032109021, 2081298882, 331695947, 1983868469); + int4x4 b3 = int4x4(361542573, 900925442, 1077800500, 1330170201, 984058816, 207503339, 339145243, 1051497556, 1435620725, 2105629028, 1215478628, 393193121, 901424214, 189116452, 17408580, 466230809); + int4x4 r3 = int4x4(1965485742, 1759637046, 1355877064, -1980985785, -1807698347, 1473343391, 1559962803, 1891004763, 1578487403, -833106962, -1647329266, 1030979024, 1933533235, -2024551962, 349104527, -1844868018); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void int4x4_operator_add_wide_scalar() + { + int4x4 a0 = int4x4(2038218457, 134923711, 875689667, 1338884463, 997710928, 340490871, 1067888129, 70433301, 2003021861, 1635971971, 1160398286, 85446202, 1068152966, 1239387100, 1497676888, 1727477485); + int b0 = (2124409227); + int4x4 r0 = int4x4(-132339612, -2035634358, -1294868402, -831673606, -1172847141, -1830067198, -1102669940, -2100124768, -167536208, -534586098, -1010159783, -2085111867, -1102405103, -931170969, -672881181, -443080584); + TestUtils.AreEqual(a0 + b0, r0); + + int4x4 a1 = int4x4(1095438654, 1818718931, 658923552, 1610518921, 1585755398, 692843300, 1068593469, 1704776233, 577782260, 736972565, 711894571, 564257439, 2051736283, 1572837697, 1628006545, 1855700263); + int b1 = (756559204); + int4x4 r1 = int4x4(1851997858, -1719689161, 1415482756, -1927889171, -1952652694, 1449402504, 1825152673, -1833631859, 1334341464, 1493531769, 1468453775, 1320816643, -1486671809, -1965570395, -1910401547, -1682707829); + TestUtils.AreEqual(a1 + b1, r1); + + int4x4 a2 = int4x4(656748782, 1917133199, 828322973, 2116810190, 2092767444, 973587865, 1236931273, 504264449, 794292574, 1518058681, 1604636324, 354873417, 685247897, 227781140, 321182517, 1210575914); + int b2 = (272774516); + int4x4 r2 = int4x4(929523298, -2105059581, 1101097489, -1905382590, -1929425336, 1246362381, 1509705789, 777038965, 1067067090, 1790833197, 1877410840, 627647933, 958022413, 500555656, 593957033, 1483350430); + TestUtils.AreEqual(a2 + b2, r2); + + int4x4 a3 = int4x4(1340503111, 1979965576, 1988286575, 427699536, 538653829, 1589564058, 1954579845, 1781591877, 419928668, 1751001953, 355993558, 1653659509, 2098769225, 63134274, 1679875388, 377229586); + int b3 = (838567468); + int4x4 r3 = int4x4(-2115896717, -1476434252, -1468113253, 1266267004, 1377221297, -1866835770, -1501819983, -1674807951, 1258496136, -1705397875, 1194561026, -1802740319, -1357630603, 901701742, -1776524440, 1215797054); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void int4x4_operator_add_scalar_wide() + { + int a0 = (391092078); + int4x4 b0 = int4x4(519908870, 851424292, 328314822, 135622204, 740923360, 655394201, 1451896269, 1781697072, 996031825, 1557774949, 779774940, 1111541302, 783046445, 1130163944, 288279584, 1397683861); + int4x4 r0 = int4x4(911000948, 1242516370, 719406900, 526714282, 1132015438, 1046486279, 1842988347, -2122178146, 1387123903, 1948867027, 1170867018, 1502633380, 1174138523, 1521256022, 679371662, 1788775939); + TestUtils.AreEqual(a0 + b0, r0); + + int a1 = (1636583489); + int4x4 b1 = int4x4(673263339, 1469300874, 14855965, 1116636999, 1488863300, 1600990886, 190651301, 1307459768, 920085839, 2082229835, 1992405574, 1213924458, 505841452, 981421162, 1488337699, 1113826640); + int4x4 r1 = int4x4(-1985120468, -1189082933, 1651439454, -1541746808, -1169520507, -1057392921, 1827234790, -1350924039, -1738297968, -576153972, -665978233, -1444459349, 2142424941, -1676962645, -1170046108, -1544557167); + TestUtils.AreEqual(a1 + b1, r1); + + int a2 = (1806146508); + int4x4 b2 = int4x4(1841791222, 206610851, 526971953, 1236359886, 1459523189, 965740631, 82842799, 1298403201, 1805809772, 1978864191, 415003386, 1906304148, 722870197, 744248796, 1677223559, 303376031); + int4x4 r2 = int4x4(-647029566, 2012757359, -1961848835, -1252460902, -1029297599, -1523080157, 1888989307, -1190417587, -683011016, -509956597, -2073817402, -582516640, -1765950591, -1744571992, -811597229, 2109522539); + TestUtils.AreEqual(a2 + b2, r2); + + int a3 = (1275565021); + int4x4 b3 = int4x4(1518386617, 233426699, 1128986758, 1421938726, 1178529217, 1397917053, 137663521, 975646083, 1968321168, 720648013, 1606974342, 567772614, 490190373, 576353787, 1438920888, 2145198309); + int4x4 r3 = int4x4(-1501015658, 1508991720, -1890415517, -1597463549, -1840873058, -1621485222, 1413228542, -2043756192, -1051081107, 1996213034, -1412427933, 1843337635, 1765755394, 1851918808, -1580481387, -874203966); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void int4x4_operator_sub_wide_wide() + { + int4x4 a0 = int4x4(1353441118, 797269833, 659988112, 56022121, 365847472, 2062899435, 1380988474, 799885138, 1306058185, 579775276, 1239163824, 344591081, 86359575, 1049709943, 721529513, 1767221271); + int4x4 b0 = int4x4(1332656812, 1827794007, 972557431, 2078233689, 1508184327, 1372307701, 810327977, 936799885, 71562303, 1418723328, 1971342989, 1226053395, 136565478, 1979903295, 600719425, 837912956); + int4x4 r0 = int4x4(20784306, -1030524174, -312569319, -2022211568, -1142336855, 690591734, 570660497, -136914747, 1234495882, -838948052, -732179165, -881462314, -50205903, -930193352, 120810088, 929308315); + TestUtils.AreEqual(a0 - b0, r0); + + int4x4 a1 = int4x4(7652784, 545192611, 176298787, 1477774126, 1426963688, 2032787858, 2059525977, 445200454, 425848588, 2026967474, 1128492011, 61421784, 988065731, 1741434432, 2070331135, 1356704176); + int4x4 b1 = int4x4(632054793, 711091688, 904695656, 1640069560, 750244414, 1385118097, 1102391291, 1221949855, 609588723, 1054324682, 1678086165, 1529581776, 1718700085, 523422634, 223602473, 1912611694); + int4x4 r1 = int4x4(-624402009, -165899077, -728396869, -162295434, 676719274, 647669761, 957134686, -776749401, -183740135, 972642792, -549594154, -1468159992, -730634354, 1218011798, 1846728662, -555907518); + TestUtils.AreEqual(a1 - b1, r1); + + int4x4 a2 = int4x4(1888446703, 1364654917, 265135366, 760501098, 741271824, 2139243287, 2086038778, 1314011065, 1838848671, 1554054707, 721235598, 1856904592, 570633009, 1870509604, 1310744871, 1717222072); + int4x4 b2 = int4x4(1224986479, 748933681, 88793450, 401362529, 1087189363, 488919410, 1106956631, 1131451931, 1975243735, 111940790, 712896589, 477050266, 1163094482, 605082349, 954351492, 1203361215); + int4x4 r2 = int4x4(663460224, 615721236, 176341916, 359138569, -345917539, 1650323877, 979082147, 182559134, -136395064, 1442113917, 8339009, 1379854326, -592461473, 1265427255, 356393379, 513860857); + TestUtils.AreEqual(a2 - b2, r2); + + int4x4 a3 = int4x4(1541023885, 1644155041, 1885220021, 956814489, 1996571272, 313052858, 1686326525, 1591026645, 404689020, 832057610, 817031413, 1191376096, 1515565534, 178300672, 365767493, 1238101305); + int4x4 b3 = int4x4(120176164, 834539498, 1843750420, 337055138, 1625604945, 41302648, 1719986021, 2028592747, 609982501, 95087400, 1244763386, 1175550114, 887604651, 1249524531, 155418749, 1934403979); + int4x4 r3 = int4x4(1420847721, 809615543, 41469601, 619759351, 370966327, 271750210, -33659496, -437566102, -205293481, 736970210, -427731973, 15825982, 627960883, -1071223859, 210348744, -696302674); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void int4x4_operator_sub_wide_scalar() + { + int4x4 a0 = int4x4(1176369558, 1934521195, 309452150, 1417634074, 108910717, 1306356714, 1502312334, 1451794815, 281174200, 87530840, 1913724431, 2041593336, 557239990, 1119051448, 1590376732, 819090189); + int b0 = (462232403); + int4x4 r0 = int4x4(714137155, 1472288792, -152780253, 955401671, -353321686, 844124311, 1040079931, 989562412, -181058203, -374701563, 1451492028, 1579360933, 95007587, 656819045, 1128144329, 356857786); + TestUtils.AreEqual(a0 - b0, r0); + + int4x4 a1 = int4x4(816382635, 1829033117, 1792801932, 1113440549, 1418937976, 1277257189, 2092779398, 642236742, 1605250794, 819644478, 1468003019, 128303186, 553494257, 1017126971, 1999744782, 2017272758); + int b1 = (815920639); + int4x4 r1 = int4x4(461996, 1013112478, 976881293, 297519910, 603017337, 461336550, 1276858759, -173683897, 789330155, 3723839, 652082380, -687617453, -262426382, 201206332, 1183824143, 1201352119); + TestUtils.AreEqual(a1 - b1, r1); + + int4x4 a2 = int4x4(1817991764, 676974855, 1638032613, 949761204, 1835969317, 919015590, 976947310, 1304246606, 1456780208, 1554022712, 769804365, 2057831687, 758136579, 670433255, 603231411, 1673268965); + int b2 = (1280985500); + int4x4 r2 = int4x4(537006264, -604010645, 357047113, -331224296, 554983817, -361969910, -304038190, 23261106, 175794708, 273037212, -511181135, 776846187, -522848921, -610552245, -677754089, 392283465); + TestUtils.AreEqual(a2 - b2, r2); + + int4x4 a3 = int4x4(941598524, 1394256067, 1267352835, 62929009, 1190778074, 657264006, 364156399, 775397332, 651143570, 486712236, 34309315, 1323491629, 1875163590, 1217887516, 2061463296, 24320578); + int b3 = (2122131631); + int4x4 r3 = int4x4(-1180533107, -727875564, -854778796, -2059202622, -931353557, -1464867625, -1757975232, -1346734299, -1470988061, -1635419395, -2087822316, -798640002, -246968041, -904244115, -60668335, -2097811053); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void int4x4_operator_sub_scalar_wide() + { + int a0 = (1691534405); + int4x4 b0 = int4x4(2022393810, 1612688515, 496689713, 887037586, 2097630964, 374934538, 939035482, 935242277, 1789300421, 264712893, 1231856067, 1818112748, 1428436109, 1258745460, 1077380396, 1330722719); + int4x4 r0 = int4x4(-330859405, 78845890, 1194844692, 804496819, -406096559, 1316599867, 752498923, 756292128, -97766016, 1426821512, 459678338, -126578343, 263098296, 432788945, 614154009, 360811686); + TestUtils.AreEqual(a0 - b0, r0); + + int a1 = (518111829); + int4x4 b1 = int4x4(967128529, 344666254, 1082267918, 907866696, 1816885123, 460340568, 962154498, 557113461, 1701216709, 1980098777, 730060552, 1444397827, 853570556, 138836432, 1013190428, 718089530); + int4x4 r1 = int4x4(-449016700, 173445575, -564156089, -389754867, -1298773294, 57771261, -444042669, -39001632, -1183104880, -1461986948, -211948723, -926285998, -335458727, 379275397, -495078599, -199977701); + TestUtils.AreEqual(a1 - b1, r1); + + int a2 = (506757390); + int4x4 b2 = int4x4(1216448041, 936312747, 1997286455, 1969982026, 902880656, 1161220697, 1442464725, 622960765, 730968909, 614823841, 1889779020, 918322352, 133929920, 213123108, 1835450460, 521068072); + int4x4 r2 = int4x4(-709690651, -429555357, -1490529065, -1463224636, -396123266, -654463307, -935707335, -116203375, -224211519, -108066451, -1383021630, -411564962, 372827470, 293634282, -1328693070, -14310682); + TestUtils.AreEqual(a2 - b2, r2); + + int a3 = (2066839749); + int4x4 b3 = int4x4(1982717309, 1580139939, 136826185, 783667709, 205508687, 1152347947, 1682018862, 329924125, 396414255, 542319408, 208974930, 1638328097, 935729865, 125876461, 218665639, 1100023218); + int4x4 r3 = int4x4(84122440, 486699810, 1930013564, 1283172040, 1861331062, 914491802, 384820887, 1736915624, 1670425494, 1524520341, 1857864819, 428511652, 1131109884, 1940963288, 1848174110, 966816531); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void int4x4_operator_mul_wide_wide() + { + int4x4 a0 = int4x4(245827027, 208934650, 1019478917, 568231809, 877289039, 1585782440, 2111178729, 1186019069, 571481445, 1570087048, 629447153, 619383734, 2055121568, 700402816, 263414349, 187830569); + int4x4 b0 = int4x4(759663997, 350129201, 477450108, 1635735015, 388710278, 757722665, 1509388321, 1841703980, 1826369331, 1524322467, 1605207974, 428419155, 1460605791, 1968043860, 771161742, 2037340417); + int4x4 r0 = int4x4(-632811769, 1402281434, 332447596, -1932977561, -1670918566, 1455036648, 2128344329, -594088068, -1654168033, 2093463192, -1207506618, -1133560830, 990589280, -938173952, -1341723466, 1156600361); + TestUtils.AreEqual(a0 * b0, r0); + + int4x4 a1 = int4x4(2048056680, 546694675, 853585367, 933370718, 990212476, 1915885905, 1984212358, 368146234, 899438811, 1765718681, 409003054, 2069758852, 140280263, 442491280, 1924530939, 1372320666); + int4x4 b1 = int4x4(322304267, 651448359, 1608326767, 1427155898, 1092185338, 665119139, 223634707, 694718952, 675813713, 999254223, 1326064110, 788102700, 1927999142, 1706356773, 747671596, 106127297); + int4x4 r1 = int4x4(649177976, 678952165, 1063621177, -1611682740, -2142428392, -573253741, -1652113678, 1626072720, 1891467339, 335415735, 1128927428, -1656253776, -1433851638, 479369680, -366628060, -250163942); + TestUtils.AreEqual(a1 * b1, r1); + + int4x4 a2 = int4x4(200879709, 857149632, 962693646, 988118613, 892998613, 534109991, 1836805716, 591690444, 1092459557, 1068605049, 1152926708, 1628337363, 400029062, 511168096, 1165835487, 1650108606); + int4x4 b2 = int4x4(1695925670, 1788874462, 534570710, 1110638325, 142931150, 1684745462, 2101748242, 1831486861, 5683864, 1735084283, 1336059993, 721992570, 1906075622, 1073069872, 1374497592, 242540880); + int4x4 r2 = int4x4(48406862, -1997863296, -275121228, -1483457191, 293009766, -617864326, 1179445736, -481780132, -1586128904, 1397450915, 487571412, -405680754, 326598756, 995119616, 638698952, 1153153376); + TestUtils.AreEqual(a2 * b2, r2); + + int4x4 a3 = int4x4(1867348319, 464239430, 1513968722, 1879508953, 1835178747, 106255610, 791954119, 1098780631, 1336308698, 613897216, 1826550194, 1100684236, 67588307, 1388845400, 23402614, 2092286485); + int4x4 b3 = int4x4(1809758608, 288286688, 726755419, 364868101, 655080356, 266071904, 385013390, 186015668, 758488066, 1918847075, 1784720030, 1012303363, 135157062, 1204101671, 2062532388, 1665984668); + int4x4 r3 = int4x4(-1918112656, 2027161408, 1912621350, -108476099, 2728396, 1647526848, 418210914, 1845357612, 1544011700, -500859904, -1797693476, 468065124, -1956632398, 412191848, -1314817384, 1944145100); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void int4x4_operator_mul_wide_scalar() + { + int4x4 a0 = int4x4(1762033447, 465343930, 1570757881, 1326409563, 1824319147, 1356578909, 72749215, 154616909, 975743632, 573770299, 1958912969, 971327747, 1818877398, 1324050764, 660611671, 1279757657); + int b0 = (1476837906); + int4x4 r0 = int4x4(-1313177922, 1326807828, -2138555518, -276153754, -65548794, -1318584182, -1839224530, -1720506518, 1736252960, -1699123674, -1534863838, -1853528010, -1668168436, -1977548968, 1423071262, 2117820994); + TestUtils.AreEqual(a0 * b0, r0); + + int4x4 a1 = int4x4(391009467, 890343818, 800117742, 606927173, 1338014500, 1688964615, 1439447294, 387721300, 1192501703, 1613845584, 76318055, 124378112, 970518733, 1370700538, 1978842602, 1451974062); + int b1 = (1186856590); + int4x4 r1 = int4x4(1435732410, 218605196, 1896985092, -1774863802, -125434376, -750863902, -1084645148, 2141566616, -1063702942, 1813259360, -1722207966, -1862268928, 714733494, 209765036, 1993704396, 95853188); + TestUtils.AreEqual(a1 * b1, r1); + + int4x4 a2 = int4x4(987919119, 1325430351, 948943118, 1743760648, 227492421, 217698851, 370371313, 309869840, 1389753586, 1895557060, 1449787207, 1817244670, 2117623142, 1951266912, 206918942, 382686790); + int b2 = (1659987051); + int4x4 r2 = int4x4(548860741, -775467259, 1518981338, 88896088, 1840817879, 997425313, -1094396229, 1277937072, 1861085478, -682201364, 98332333, -750570710, -1089412702, -1543745504, 438848394, -1975359678); + TestUtils.AreEqual(a2 * b2, r2); + + int4x4 a3 = int4x4(396984449, 352046491, 1513331645, 1155106274, 138823406, 923862962, 131310587, 938688263, 631817444, 1890216972, 2143914807, 30238797, 5224899, 1350553408, 2127554014, 1666837332); + int b3 = (474729765); + int4x4 r3 = int4x4(-382607451, -596453785, -1450517679, 349983658, 1219417702, 1371907770, 443527751, 447592195, 903547124, -1196738116, -1447482893, -1178289119, -1553465297, -1288752064, 1864957718, 2131576612); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void int4x4_operator_mul_scalar_wide() + { + int a0 = (99541948); + int4x4 b0 = int4x4(1764461774, 657072478, 1459784358, 1610646683, 1632058826, 868441654, 1408757883, 335917146, 2105124483, 1178393968, 1963904348, 1409533767, 243286231, 1336308795, 517963367, 1733623488); + int4x4 r0 = int4x4(-950398648, -102049016, 1260585960, 1158730452, -1606056, -466153048, 2108402516, 1966690328, 1623617844, -1691554240, -830512240, -1283699420, -628079900, 1294445652, 1610098852, -691055360); + TestUtils.AreEqual(a0 * b0, r0); + + int a1 = (459880225); + int4x4 b1 = int4x4(994616533, 1420531535, 1821413700, 677771573, 2132626845, 1158827713, 640102997, 944551639, 1323243330, 1186460236, 657101857, 1275563580, 1031291523, 1008470115, 1155301041, 1046199281); + int4x4 r1 = int4x4(1378091637, 738687535, -826518076, -345210155, 316193853, 2121309665, -222642187, 1750778551, -1730990718, 133205964, 1859727169, 388250044, -611993629, -1492821565, -516072495, 1074594065); + TestUtils.AreEqual(a1 * b1, r1); + + int a2 = (2138825098); + int4x4 b2 = int4x4(1273008873, 1788343477, 1994364082, 597340263, 2022856151, 1375763101, 1007501105, 1162446628, 96412054, 1676576573, 1763698296, 729299033, 1534484, 1053621089, 1978013043, 796620370); + int4x4 r2 = int4x4(1965095578, 1643380370, 1438423540, 15376006, -2086585114, 1819612578, -1355210390, -1011516056, -1566641956, -1061125150, -127290192, 1377278202, -2072591672, -368393398, 572695294, -1561208268); + TestUtils.AreEqual(a2 * b2, r2); + + int a3 = (890235481); + int4x4 b3 = int4x4(1880345584, 1882904983, 267128787, 1569254022, 1779318576, 1645728412, 819681361, 666095044, 308815496, 1829465065, 751656026, 1207837213, 1073832960, 169923853, 808603307, 363334486); + int4x4 r3 = int4x4(-1302641040, -768431233, -337289637, 651297942, -2004494416, -2081501124, 1824177705, -904679132, 56997192, -381518335, 1427464010, 1396399637, 1642316800, -1259670651, -1066752141, -1714254618); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void int4x4_operator_div_wide_wide() + { + int4x4 a0 = int4x4(1590198532, 507812502, 126627032, 1058247011, 427387861, 290676154, 1829594484, 1127868739, 499016351, 1341209632, 134906097, 785470242, 788249865, 1099825433, 1552968283, 1822367139); + int4x4 b0 = int4x4(1434703236, 911965201, 390415521, 128746927, 525835375, 816946613, 878264647, 146789678, 2089524057, 254213018, 1916850021, 1737806518, 1906634983, 437754923, 825037958, 902508708); + int4x4 r0 = int4x4(1, 0, 0, 8, 0, 0, 2, 7, 0, 5, 0, 0, 0, 2, 1, 2); + TestUtils.AreEqual(a0 / b0, r0); + + int4x4 a1 = int4x4(1021812060, 1937073018, 645757349, 1097576782, 1246027674, 1152153253, 1900577195, 172149343, 1735128704, 816492592, 2012272185, 632330092, 649232994, 123715336, 1438073735, 723262291); + int4x4 b1 = int4x4(896853614, 49452028, 1921327824, 787000669, 1032149621, 858558868, 1422112429, 837098844, 616122946, 2035322800, 1324534444, 1820832158, 917489631, 367475696, 620492088, 1749833550); + int4x4 r1 = int4x4(1, 39, 0, 1, 1, 1, 1, 0, 2, 0, 1, 0, 0, 0, 2, 0); + TestUtils.AreEqual(a1 / b1, r1); + + int4x4 a2 = int4x4(850951883, 1942618200, 1088675276, 1648515976, 991947275, 1155668991, 764696768, 1984712970, 1734485640, 850109866, 8545366, 1037720170, 264523522, 1547702681, 1797612488, 1496410581); + int4x4 b2 = int4x4(1535651093, 932740870, 1078416711, 725172174, 554208963, 1250240123, 2074395021, 1513621083, 262726589, 936845337, 1934527986, 1844761263, 116240860, 1875751365, 730101086, 625535586); + int4x4 r2 = int4x4(0, 2, 1, 2, 1, 0, 0, 1, 6, 0, 0, 0, 2, 0, 2, 2); + TestUtils.AreEqual(a2 / b2, r2); + + int4x4 a3 = int4x4(308887330, 7606985, 1626977876, 1895907215, 1115090617, 1043375525, 168865453, 1056135390, 1080260308, 780473703, 1917865869, 1741288184, 497930923, 668217348, 1678197677, 1075043333); + int4x4 b3 = int4x4(1549803350, 364926102, 1386892120, 656711993, 91320418, 1458063222, 1529573616, 722321620, 757577900, 1175347146, 1933900601, 1063907544, 97856937, 972434416, 1920248258, 261846189); + int4x4 r3 = int4x4(0, 0, 1, 2, 12, 0, 0, 1, 1, 0, 0, 1, 5, 0, 0, 4); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void int4x4_operator_div_wide_scalar() + { + int4x4 a0 = int4x4(560951562, 1218680769, 375341724, 1613542090, 1919409166, 1397425408, 1349573078, 524526253, 341995568, 495895326, 1515313790, 1676971657, 2131487088, 2105094094, 1017891310, 542666029); + int b0 = (947861580); + int4x4 r0 = int4x4(0, 1, 0, 1, 2, 1, 1, 0, 0, 0, 1, 1, 2, 2, 1, 0); + TestUtils.AreEqual(a0 / b0, r0); + + int4x4 a1 = int4x4(1646044372, 107215658, 19616726, 896899915, 707389627, 1249475421, 1486968988, 1738891885, 1919705924, 1244966864, 1200843642, 206442634, 1508567412, 1825701056, 1117255783, 929925156); + int b1 = (1447236569); + int4x4 r1 = int4x4(1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0); + TestUtils.AreEqual(a1 / b1, r1); + + int4x4 a2 = int4x4(1725332114, 1383839785, 2136282541, 159847918, 1515555001, 614923813, 1033495687, 1947230231, 1969254260, 1948672400, 757256792, 2099218773, 455629883, 324433498, 1679339858, 2024651647); + int b2 = (1949103348); + int4x4 r2 = int4x4(0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1); + TestUtils.AreEqual(a2 / b2, r2); + + int4x4 a3 = int4x4(1222061694, 1966139194, 1303421248, 1811535294, 240471953, 2116688995, 1035856383, 2022133852, 2147186889, 152458544, 148729436, 318083619, 980911803, 817677917, 398058007, 747046501); + int b3 = (579280546); + int4x4 r3 = int4x4(2, 3, 2, 3, 0, 3, 1, 3, 3, 0, 0, 0, 1, 1, 0, 1); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void int4x4_operator_div_scalar_wide() + { + int a0 = (1161272038); + int4x4 b0 = int4x4(187325733, 1594107378, 2016183849, 1589343709, 388768753, 1417077283, 1773486938, 1154044032, 81831373, 1476877645, 653688843, 45756703, 631027637, 396671391, 784365696, 1250594097); + int4x4 r0 = int4x4(6, 0, 0, 0, 2, 0, 0, 1, 14, 0, 1, 25, 1, 2, 1, 0); + TestUtils.AreEqual(a0 / b0, r0); + + int a1 = (1818363859); + int4x4 b1 = int4x4(1653451772, 270557729, 48974453, 1796936382, 1427856423, 981056957, 1955700573, 705450043, 1054404890, 351914083, 131970646, 1320586926, 366944102, 1575786200, 257204865, 1582754309); + int4x4 r1 = int4x4(1, 6, 37, 1, 1, 1, 0, 2, 1, 5, 13, 1, 4, 1, 7, 1); + TestUtils.AreEqual(a1 / b1, r1); + + int a2 = (2114509003); + int4x4 b2 = int4x4(1266146708, 45105265, 2092444751, 407744534, 126616016, 1900058250, 523718813, 414718546, 1828540203, 860638950, 1827704212, 182494419, 669579562, 717750865, 560379939, 681272719); + int4x4 r2 = int4x4(1, 46, 1, 5, 16, 1, 4, 5, 1, 2, 1, 11, 3, 2, 3, 3); + TestUtils.AreEqual(a2 / b2, r2); + + int a3 = (638134699); + int4x4 b3 = int4x4(297472499, 1196796276, 815483831, 1511819303, 906952957, 613050421, 60483276, 883893666, 1481847510, 1065163200, 1641516292, 1980940753, 1862370918, 2048575092, 396483978, 610486041); + int4x4 r3 = int4x4(2, 0, 0, 0, 0, 1, 10, 0, 0, 0, 0, 0, 0, 0, 1, 1); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void int4x4_operator_mod_wide_wide() + { + int4x4 a0 = int4x4(146150818, 1846543305, 1071447756, 308965362, 659881575, 1002365460, 861198439, 1510617532, 778525078, 1458458044, 101987897, 1249565173, 938026607, 1692541775, 1518877124, 1806965510); + int4x4 b0 = int4x4(983050390, 771341152, 942375212, 367361754, 749500619, 750718852, 2095151755, 88438806, 769227442, 647214624, 1026513788, 1544950956, 160166322, 1099108075, 1158422232, 1798905209); + int4x4 r0 = int4x4(146150818, 303861001, 129072544, 308965362, 659881575, 251646608, 861198439, 7157830, 9297636, 164028796, 101987897, 1249565173, 137194997, 593433700, 360454892, 8060301); + TestUtils.AreEqual(a0 % b0, r0); + + int4x4 a1 = int4x4(1325139851, 994457255, 1372400564, 1770508529, 100255877, 452674793, 1545968777, 629019189, 1402964707, 2138294579, 1641714420, 1782022072, 1880968864, 1980798192, 1397317084, 995968277); + int4x4 b1 = int4x4(164686701, 327889784, 1082162785, 1213537518, 608481038, 329133821, 1824387961, 1223426748, 798137669, 79717779, 1233582258, 1267120677, 301592349, 911281434, 1357340934, 1648942990); + int4x4 r1 = int4x4(7646243, 10787903, 290237779, 556971011, 100255877, 123540972, 1545968777, 629019189, 604827038, 65632325, 408132162, 514901395, 71414770, 158235324, 39976150, 995968277); + TestUtils.AreEqual(a1 % b1, r1); + + int4x4 a2 = int4x4(1090018756, 1573062648, 1100694500, 863521889, 1146202560, 546958747, 573838995, 2146465826, 1678630780, 1843627015, 1167611300, 157190789, 530148276, 594404567, 1248848240, 1963704081); + int4x4 b2 = int4x4(1350943898, 696511738, 1182727748, 1843845940, 244920526, 1640990506, 920431352, 1261122293, 469115027, 720739455, 1727247731, 91557593, 1874820225, 1070808215, 859227095, 890398590); + int4x4 r2 = int4x4(1090018756, 180039172, 1100694500, 863521889, 166520456, 546958747, 573838995, 885343533, 271285699, 402148105, 1167611300, 65633196, 530148276, 594404567, 389621145, 182906901); + TestUtils.AreEqual(a2 % b2, r2); + + int4x4 a3 = int4x4(1759996408, 1386598712, 251325313, 122732248, 2082099427, 1080998866, 686623511, 693281682, 302610170, 1380134301, 1661197566, 481331690, 1193753109, 166363462, 588323181, 594997700); + int4x4 b3 = int4x4(951215450, 195024879, 2079991098, 220236959, 294448639, 1396793894, 141031566, 960537512, 719675899, 928202057, 275228822, 1510254672, 1481505055, 1373357922, 1940197321, 286975465); + int4x4 r3 = int4x4(808780958, 21424559, 251325313, 122732248, 20958954, 1080998866, 122497247, 693281682, 302610170, 451932244, 9824634, 481331690, 1193753109, 166363462, 588323181, 21046770); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void int4x4_operator_mod_wide_scalar() + { + int4x4 a0 = int4x4(164800505, 1062177828, 1898749675, 1701653318, 820393245, 19002208, 128329633, 1464010899, 896587769, 405208598, 1982762194, 959236935, 712321026, 172564850, 1540068445, 1085897743); + int b0 = (883951171); + int4x4 r0 = int4x4(164800505, 178226657, 130847333, 817702147, 820393245, 19002208, 128329633, 580059728, 12636598, 405208598, 214859852, 75285764, 712321026, 172564850, 656117274, 201946572); + TestUtils.AreEqual(a0 % b0, r0); + + int4x4 a1 = int4x4(1607489717, 647846716, 915707999, 1602830401, 928191283, 1084934806, 488509689, 2087820912, 377501313, 1778384846, 1216011754, 812183417, 1153802502, 1642671870, 1924710742, 665297470); + int b1 = (165478511); + int4x4 r1 = int4x4(118183118, 151411183, 88315444, 113523802, 100798728, 92063740, 157552667, 102078780, 46544291, 123599736, 57662177, 150269373, 160931436, 153365271, 104447121, 3383426); + TestUtils.AreEqual(a1 % b1, r1); + + int4x4 a2 = int4x4(1568090825, 435886407, 453990946, 1731665372, 586777590, 1475597526, 1585649515, 1414579860, 1891664981, 1262495021, 1400758118, 1529532008, 430295164, 1386414018, 2130346558, 666621411); + int b2 = (2050982942); + int4x4 r2 = int4x4(1568090825, 435886407, 453990946, 1731665372, 586777590, 1475597526, 1585649515, 1414579860, 1891664981, 1262495021, 1400758118, 1529532008, 430295164, 1386414018, 79363616, 666621411); + TestUtils.AreEqual(a2 % b2, r2); + + int4x4 a3 = int4x4(1524342239, 1547690684, 857915601, 709453751, 2103243535, 2124726669, 1410239986, 1761316053, 442891932, 388101009, 1059801526, 651827482, 1890268914, 910020375, 58051452, 293939465); + int b3 = (1490592900); + int4x4 r3 = int4x4(33749339, 57097784, 857915601, 709453751, 612650635, 634133769, 1410239986, 270723153, 442891932, 388101009, 1059801526, 651827482, 399676014, 910020375, 58051452, 293939465); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void int4x4_operator_mod_scalar_wide() + { + int a0 = (242383789); + int4x4 b0 = int4x4(740000543, 1556450291, 1104736385, 437976569, 1911837205, 1507212038, 1906405167, 247693265, 293460573, 1495295166, 873323603, 530681233, 1298102643, 2057984657, 1000742091, 1461372131); + int4x4 r0 = int4x4(242383789, 242383789, 242383789, 242383789, 242383789, 242383789, 242383789, 242383789, 242383789, 242383789, 242383789, 242383789, 242383789, 242383789, 242383789, 242383789); + TestUtils.AreEqual(a0 % b0, r0); + + int a1 = (1859742342); + int4x4 b1 = int4x4(797184687, 821888842, 1083192997, 840114986, 1894865954, 615159964, 1485575122, 2028738, 2122220318, 164578061, 730088119, 1444946139, 1305792037, 1110829011, 872723581, 166847388); + int4x4 r1 = int4x4(265372968, 215964658, 776549345, 179512370, 1859742342, 14262450, 374167220, 1418334, 1859742342, 49383671, 399566104, 414796203, 553950305, 748913331, 114295180, 24421074); + TestUtils.AreEqual(a1 % b1, r1); + + int a2 = (1477846418); + int4x4 b2 = int4x4(511428733, 1642227542, 1962310765, 207128894, 1342085447, 448361286, 334667519, 705465751, 753088773, 1146344010, 275140144, 1074480141, 2092749846, 1631900558, 2088387496, 1098441751); + int4x4 r2 = int4x4(454988952, 1477846418, 1477846418, 27944160, 135760971, 132762560, 139176342, 66914916, 724757645, 331502408, 102145698, 403366277, 1477846418, 1477846418, 1477846418, 379404667); + TestUtils.AreEqual(a2 % b2, r2); + + int a3 = (1648646354); + int4x4 b3 = int4x4(1730303822, 859376331, 889118656, 1549752450, 992618236, 941290327, 1766644910, 435947831, 1937100534, 1342633977, 1176317048, 950230773, 1135152183, 384466155, 600022, 363833845); + int4x4 r3 = int4x4(1648646354, 789270023, 759527698, 98893904, 656028118, 707356027, 1648646354, 340802861, 1648646354, 306012377, 472329306, 698415581, 513494171, 110781734, 385920, 193310974); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void int4x4_operator_plus() + { + int4x4 a0 = int4x4(1643476803, 907898539, 379615839, 1140483021, 1735287433, 1743199272, 1472881565, 339091479, 401565897, 1287765427, 849339193, 174532915, 1864850812, 1566098441, 1145639744, 1615499926); + int4x4 r0 = int4x4(1643476803, 907898539, 379615839, 1140483021, 1735287433, 1743199272, 1472881565, 339091479, 401565897, 1287765427, 849339193, 174532915, 1864850812, 1566098441, 1145639744, 1615499926); + TestUtils.AreEqual(+a0, r0); + + int4x4 a1 = int4x4(2049663954, 409076474, 591286416, 1706631096, 1079164488, 1808261782, 1201290141, 82958939, 308695413, 1575280693, 2067379018, 1673126612, 500666137, 640289062, 836003812, 336058393); + int4x4 r1 = int4x4(2049663954, 409076474, 591286416, 1706631096, 1079164488, 1808261782, 1201290141, 82958939, 308695413, 1575280693, 2067379018, 1673126612, 500666137, 640289062, 836003812, 336058393); + TestUtils.AreEqual(+a1, r1); + + int4x4 a2 = int4x4(829347661, 381670450, 277507230, 361395485, 1012749225, 1204186973, 2092803800, 1459040742, 531853559, 2093894901, 1589622197, 1559976318, 619729461, 731886792, 1441425968, 1921783986); + int4x4 r2 = int4x4(829347661, 381670450, 277507230, 361395485, 1012749225, 1204186973, 2092803800, 1459040742, 531853559, 2093894901, 1589622197, 1559976318, 619729461, 731886792, 1441425968, 1921783986); + TestUtils.AreEqual(+a2, r2); + + int4x4 a3 = int4x4(1257555634, 578585280, 1087392044, 2084329354, 300198860, 1247120404, 1325809345, 1057524082, 1426592020, 167918579, 1552986194, 813448514, 2048383407, 647476365, 13335381, 1985958169); + int4x4 r3 = int4x4(1257555634, 578585280, 1087392044, 2084329354, 300198860, 1247120404, 1325809345, 1057524082, 1426592020, 167918579, 1552986194, 813448514, 2048383407, 647476365, 13335381, 1985958169); + TestUtils.AreEqual(+a3, r3); + } + + [TestCompiler] + public static void int4x4_operator_neg() + { + int4x4 a0 = int4x4(1955022112, 662160019, 370300775, 2141283773, 1004505619, 28153593, 33894270, 505708349, 1115028238, 1636274969, 694995093, 1542206286, 213087293, 243937487, 341522275, 841085242); + int4x4 r0 = int4x4(-1955022112, -662160019, -370300775, -2141283773, -1004505619, -28153593, -33894270, -505708349, -1115028238, -1636274969, -694995093, -1542206286, -213087293, -243937487, -341522275, -841085242); + TestUtils.AreEqual(-a0, r0); + + int4x4 a1 = int4x4(574159094, 2057919693, 1175014732, 1259809073, 1212465326, 1190569920, 2047955772, 2120729864, 1440774928, 1485596454, 431666091, 1387601718, 1745651998, 319115626, 1119959806, 739132284); + int4x4 r1 = int4x4(-574159094, -2057919693, -1175014732, -1259809073, -1212465326, -1190569920, -2047955772, -2120729864, -1440774928, -1485596454, -431666091, -1387601718, -1745651998, -319115626, -1119959806, -739132284); + TestUtils.AreEqual(-a1, r1); + + int4x4 a2 = int4x4(1954173314, 1836511050, 1662806453, 506144868, 650922971, 1755382554, 1273997249, 1474445187, 1853826947, 1695573773, 729452512, 345069360, 575867536, 594119038, 1201840609, 1342872551); + int4x4 r2 = int4x4(-1954173314, -1836511050, -1662806453, -506144868, -650922971, -1755382554, -1273997249, -1474445187, -1853826947, -1695573773, -729452512, -345069360, -575867536, -594119038, -1201840609, -1342872551); + TestUtils.AreEqual(-a2, r2); + + int4x4 a3 = int4x4(1768435578, 23008237, 1410502890, 695213039, 1342131852, 1619073746, 469828650, 20553909, 1711214338, 690040786, 1749711826, 1265590278, 1516859887, 1317159343, 1722518934, 803074002); + int4x4 r3 = int4x4(-1768435578, -23008237, -1410502890, -695213039, -1342131852, -1619073746, -469828650, -20553909, -1711214338, -690040786, -1749711826, -1265590278, -1516859887, -1317159343, -1722518934, -803074002); + TestUtils.AreEqual(-a3, r3); + } + + [TestCompiler] + public static void int4x4_operator_prefix_inc() + { + int4x4 a0 = int4x4(864455342, 2035793213, 1275443862, 971919915, 411610189, 446210725, 395072276, 115573442, 913293639, 432884105, 1208161871, 1385544935, 1835605516, 831396561, 388229350, 696475402); + int4x4 r0 = int4x4(864455343, 2035793214, 1275443863, 971919916, 411610190, 446210726, 395072277, 115573443, 913293640, 432884106, 1208161872, 1385544936, 1835605517, 831396562, 388229351, 696475403); + TestUtils.AreEqual(++a0, r0); + + int4x4 a1 = int4x4(1786514683, 752093909, 1622410417, 1398865015, 241906003, 1705625817, 609525897, 172599489, 504806865, 519296647, 281942776, 1541894135, 924683935, 259568871, 1349062584, 1120518661); + int4x4 r1 = int4x4(1786514684, 752093910, 1622410418, 1398865016, 241906004, 1705625818, 609525898, 172599490, 504806866, 519296648, 281942777, 1541894136, 924683936, 259568872, 1349062585, 1120518662); + TestUtils.AreEqual(++a1, r1); + + int4x4 a2 = int4x4(65514038, 1321109497, 1366348660, 1777734111, 1414867743, 536776365, 539531120, 886558347, 1733014170, 1586973907, 1145067277, 884064327, 82551838, 1001250037, 924273925, 242241802); + int4x4 r2 = int4x4(65514039, 1321109498, 1366348661, 1777734112, 1414867744, 536776366, 539531121, 886558348, 1733014171, 1586973908, 1145067278, 884064328, 82551839, 1001250038, 924273926, 242241803); + TestUtils.AreEqual(++a2, r2); + + int4x4 a3 = int4x4(413165245, 1206806909, 2069192976, 1613073974, 1342402025, 330167396, 665917965, 799320426, 2054286971, 2074397725, 113129500, 721162954, 2136093351, 173315234, 2006582934, 265026274); + int4x4 r3 = int4x4(413165246, 1206806910, 2069192977, 1613073975, 1342402026, 330167397, 665917966, 799320427, 2054286972, 2074397726, 113129501, 721162955, 2136093352, 173315235, 2006582935, 265026275); + TestUtils.AreEqual(++a3, r3); + } + + [TestCompiler] + public static void int4x4_operator_postfix_inc() + { + int4x4 a0 = int4x4(1751003569, 2063707595, 1500486291, 969189211, 1007848192, 2028651936, 1643023524, 1190630527, 1396179607, 708474528, 177416855, 1524860667, 1408994706, 375284401, 1580130369, 1676086778); + int4x4 r0 = int4x4(1751003569, 2063707595, 1500486291, 969189211, 1007848192, 2028651936, 1643023524, 1190630527, 1396179607, 708474528, 177416855, 1524860667, 1408994706, 375284401, 1580130369, 1676086778); + TestUtils.AreEqual(a0++, r0); + + int4x4 a1 = int4x4(717006530, 732199129, 2026873940, 130175844, 1513142653, 420613464, 1219979307, 586574160, 357567451, 1468020171, 1949784665, 1127356901, 101238629, 2131648021, 423320704, 827539403); + int4x4 r1 = int4x4(717006530, 732199129, 2026873940, 130175844, 1513142653, 420613464, 1219979307, 586574160, 357567451, 1468020171, 1949784665, 1127356901, 101238629, 2131648021, 423320704, 827539403); + TestUtils.AreEqual(a1++, r1); + + int4x4 a2 = int4x4(1919960927, 2010345998, 1047836590, 586887730, 1209169651, 1051531454, 1479717664, 1874959449, 104723114, 817246348, 1972950889, 1784631804, 1550936382, 718649502, 872906800, 717529320); + int4x4 r2 = int4x4(1919960927, 2010345998, 1047836590, 586887730, 1209169651, 1051531454, 1479717664, 1874959449, 104723114, 817246348, 1972950889, 1784631804, 1550936382, 718649502, 872906800, 717529320); + TestUtils.AreEqual(a2++, r2); + + int4x4 a3 = int4x4(1995020676, 183815949, 1207670946, 1620827725, 1809811548, 1643094131, 280506984, 382615051, 650280741, 560631765, 1840722506, 63273626, 1294940978, 724310154, 1901579798, 697321264); + int4x4 r3 = int4x4(1995020676, 183815949, 1207670946, 1620827725, 1809811548, 1643094131, 280506984, 382615051, 650280741, 560631765, 1840722506, 63273626, 1294940978, 724310154, 1901579798, 697321264); + TestUtils.AreEqual(a3++, r3); + } + + [TestCompiler] + public static void int4x4_operator_prefix_dec() + { + int4x4 a0 = int4x4(200904609, 871077500, 968578728, 638967721, 1995396216, 435367037, 1782514098, 1589827826, 1434377580, 596759698, 1699290403, 1758478358, 1914114460, 71237375, 389120307, 1022184392); + int4x4 r0 = int4x4(200904608, 871077499, 968578727, 638967720, 1995396215, 435367036, 1782514097, 1589827825, 1434377579, 596759697, 1699290402, 1758478357, 1914114459, 71237374, 389120306, 1022184391); + TestUtils.AreEqual(--a0, r0); + + int4x4 a1 = int4x4(1310293956, 18299409, 906734601, 799006218, 1383897383, 1040798388, 1469596990, 1719228297, 220897829, 1454322707, 678025545, 14227726, 293093918, 1065286595, 1249415499, 1009503100); + int4x4 r1 = int4x4(1310293955, 18299408, 906734600, 799006217, 1383897382, 1040798387, 1469596989, 1719228296, 220897828, 1454322706, 678025544, 14227725, 293093917, 1065286594, 1249415498, 1009503099); + TestUtils.AreEqual(--a1, r1); + + int4x4 a2 = int4x4(157482354, 1797304434, 1083672612, 929765380, 2083512379, 2045544045, 323646560, 1395297406, 583796119, 999841714, 1788073019, 1618852114, 1777032041, 1252764958, 1070818447, 219340317); + int4x4 r2 = int4x4(157482353, 1797304433, 1083672611, 929765379, 2083512378, 2045544044, 323646559, 1395297405, 583796118, 999841713, 1788073018, 1618852113, 1777032040, 1252764957, 1070818446, 219340316); + TestUtils.AreEqual(--a2, r2); + + int4x4 a3 = int4x4(767990877, 366067423, 99249400, 1549382038, 1105868582, 1977762759, 1646465385, 1067223071, 1774498387, 1128527977, 1104488553, 1575600100, 1141283662, 1678956750, 449874904, 748975258); + int4x4 r3 = int4x4(767990876, 366067422, 99249399, 1549382037, 1105868581, 1977762758, 1646465384, 1067223070, 1774498386, 1128527976, 1104488552, 1575600099, 1141283661, 1678956749, 449874903, 748975257); + TestUtils.AreEqual(--a3, r3); + } + + [TestCompiler] + public static void int4x4_operator_postfix_dec() + { + int4x4 a0 = int4x4(283970262, 1109329936, 1073216143, 649439137, 1932646215, 1174104498, 484207852, 524156737, 691209285, 2017728859, 802721301, 377162390, 526366486, 1504625034, 590919177, 60677868); + int4x4 r0 = int4x4(283970262, 1109329936, 1073216143, 649439137, 1932646215, 1174104498, 484207852, 524156737, 691209285, 2017728859, 802721301, 377162390, 526366486, 1504625034, 590919177, 60677868); + TestUtils.AreEqual(a0--, r0); + + int4x4 a1 = int4x4(1867810045, 670715645, 324944916, 242636153, 1659736954, 1316734088, 1030072405, 1751972064, 1868889881, 1726583208, 1931943579, 175622377, 181847458, 665549439, 530897466, 635466911); + int4x4 r1 = int4x4(1867810045, 670715645, 324944916, 242636153, 1659736954, 1316734088, 1030072405, 1751972064, 1868889881, 1726583208, 1931943579, 175622377, 181847458, 665549439, 530897466, 635466911); + TestUtils.AreEqual(a1--, r1); + + int4x4 a2 = int4x4(416440036, 1444496274, 296146626, 1209855130, 2016700604, 838640502, 647102652, 1948542169, 659874422, 2009120584, 1577004911, 1809041177, 518526567, 1464738365, 1815629310, 1216839298); + int4x4 r2 = int4x4(416440036, 1444496274, 296146626, 1209855130, 2016700604, 838640502, 647102652, 1948542169, 659874422, 2009120584, 1577004911, 1809041177, 518526567, 1464738365, 1815629310, 1216839298); + TestUtils.AreEqual(a2--, r2); + + int4x4 a3 = int4x4(569144612, 509007463, 860240975, 41334109, 10321636, 1940079495, 43143738, 1044950720, 63756334, 1595004937, 699747920, 348534360, 509361827, 1352179420, 271823835, 1889179126); + int4x4 r3 = int4x4(569144612, 509007463, 860240975, 41334109, 10321636, 1940079495, 43143738, 1044950720, 63756334, 1595004937, 699747920, 348534360, 509361827, 1352179420, 271823835, 1889179126); + TestUtils.AreEqual(a3--, r3); + } + + [TestCompiler] + public static void int4x4_operator_bitwise_and_wide_wide() + { + int4x4 a0 = int4x4(779935043, 1097962163, 1939593304, 800599247, 952140918, 782792558, 1608557706, 396446406, 2039894114, 1286974642, 442394124, 1759739564, 233435438, 665207770, 1942050241, 1022352952); + int4x4 b0 = int4x4(307705143, 1710882162, 866836769, 532490608, 679371720, 1794035877, 1439832202, 519529812, 23633139, 1209152681, 646737179, 1255867027, 1900854122, 413173763, 1409138251, 2087190272); + int4x4 r0 = int4x4(39064835, 1097961522, 864731136, 263727168, 675283008, 715673636, 1438646410, 379666500, 16781410, 1209017504, 34366472, 1220739712, 21541162, 10485762, 1405162561, 1013440000); + TestUtils.AreEqual(a0 & b0, r0); + + int4x4 a1 = int4x4(60340400, 329119345, 406517382, 1126764634, 343425836, 1957552749, 1624478957, 341972372, 181537307, 130347414, 1240828622, 526120460, 695449226, 1477446724, 201628999, 737924014); + int4x4 b1 = int4x4(563439483, 354579077, 642224854, 1650432515, 755290290, 902865191, 661389406, 2134212586, 1855189321, 185194029, 810374380, 133197864, 1989578783, 38739182, 387425484, 1690486314); + int4x4 r1 = int4x4(26222640, 285241857, 168582, 1107890178, 67125280, 880844837, 541065292, 337646976, 177340425, 50384900, 4522188, 122712072, 538087434, 3140, 67404868, 549634602); + TestUtils.AreEqual(a1 & b1, r1); + + int4x4 a2 = int4x4(1804502415, 1733695477, 1110712857, 113012430, 1044352152, 865726845, 836668077, 1778871717, 1558881750, 231636456, 1278790837, 846361650, 37319023, 1806613498, 1312261777, 1448803516); + int4x4 b2 = int4x4(843085933, 1045118223, 41867329, 1397669260, 1784025774, 1834587481, 856874373, 1719529679, 678478831, 86860920, 837158923, 1397449667, 195921481, 564422246, 1088025452, 2103483999); + int4x4 r2 = int4x4(570425357, 641864965, 36962305, 34352268, 706085000, 555323737, 823298181, 1644519557, 140542406, 84698216, 2099201, 306339842, 36241481, 564404834, 1074889216, 1413520412); + TestUtils.AreEqual(a2 & b2, r2); + + int4x4 a3 = int4x4(17366276, 1245846423, 1075177576, 1023499729, 1742176891, 1288325524, 2092131182, 1444013434, 210707066, 627341079, 155789028, 411695477, 2144207930, 1007799200, 382737478, 85407483); + int4x4 b3 = int4x4(267066435, 781393024, 1444337796, 139669978, 880161801, 1604286495, 839016626, 1986058500, 1905400692, 1670633815, 651063094, 967343492, 336245810, 914791376, 1696073831, 2103810347); + int4x4 r3 = int4x4(17308672, 167909504, 1075103744, 134287824, 609615881, 1284130836, 805462050, 1442889984, 8520304, 553668887, 4728356, 411597060, 336200754, 872450944, 68159558, 84217899); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void int4x4_operator_bitwise_and_wide_scalar() + { + int4x4 a0 = int4x4(443615469, 490057985, 2042441263, 1524760558, 1405175110, 510212004, 1941875181, 1236735839, 1365509729, 428270198, 607982857, 650270920, 1249238550, 814629680, 1862276471, 143502472); + int b0 = (93423598); + int4x4 r0 = int4x4(1114348, 85033216, 26281518, 8488942, 25232710, 67176356, 26247660, 26281806, 16778848, 25199206, 68224264, 75497672, 1148422, 8389408, 83887462, 8488072); + TestUtils.AreEqual(a0 & b0, r0); + + int4x4 a1 = int4x4(861733033, 957693145, 1567715668, 1102952410, 322053683, 1599352836, 208656708, 1272226025, 462670926, 1817145060, 1466722981, 1817277774, 818900583, 772681077, 1630437952, 546018772); + int b1 = (1408932942); + int4x4 r1 = int4x4(324534280, 286268488, 1366298692, 1102615626, 322044930, 1397755908, 6985796, 1137737800, 328371278, 1078594628, 1399326724, 1078989902, 281676870, 34212932, 1093304384, 9081924); + TestUtils.AreEqual(a1 & b1, r1); + + int4x4 a2 = int4x4(872875431, 708719245, 1764446048, 1527981061, 398141788, 156911041, 554819377, 1683835293, 972562207, 393685571, 2118911919, 1503487659, 283854137, 1911282206, 312686024, 384581172); + int b2 = (1143080525); + int4x4 r2 = int4x4(67240965, 2228749, 1075971648, 1073873925, 69337164, 132161, 1537, 1140850701, 2098701, 69337665, 1140852237, 1073743369, 2229257, 1075970572, 2229320, 69207556); + TestUtils.AreEqual(a2 & b2, r2); + + int4x4 a3 = int4x4(1826788967, 3292432, 225233484, 1488146706, 1918853562, 1038188796, 1833784555, 252534533, 942504184, 840550591, 475152200, 1566941712, 546609146, 1803072768, 1125028552, 104252148); + int b3 = (150752148); + int4x4 r3 = int4x4(148898308, 3148048, 141314564, 145768720, 6046096, 148897940, 139214976, 135023364, 137119888, 1591444, 139463424, 140771856, 9700240, 142082304, 787072, 3424916); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void int4x4_operator_bitwise_and_scalar_wide() + { + int a0 = (1144543590); + int4x4 b0 = int4x4(420346723, 562416448, 1393127318, 1560699552, 851218057, 703880958, 1159378889, 2031211279, 1089518981, 270607307, 1349288930, 520199596, 1763483957, 1248975349, 236938635, 185023291); + int4x4 r0 = int4x4(547170, 18752, 1074284806, 1140867104, 3672064, 3168358, 1142427968, 1074811142, 1076893956, 2097474, 1076363618, 67115300, 1075314980, 1076910436, 68698370, 6434); + TestUtils.AreEqual(a0 & b0, r0); + + int a1 = (1085233038); + int4x4 b1 = int4x4(1845693112, 946052961, 1436238522, 2042776519, 56356886, 1770159840, 1872339579, 1439201366, 1233066417, 1214109404, 2255485, 1814885263, 1711986588, 1286898282, 915476451, 1870138851); + int4x4 r1 = int4x4(1073939080, 2299648, 1082868362, 1082278790, 741382, 1082283648, 1082720778, 1082675206, 1076826496, 1074615948, 2245132, 1076646798, 1074419596, 1084490250, 8456066, 1076364674); + TestUtils.AreEqual(a1 & b1, r1); + + int a2 = (372814411); + int4x4 b2 = int4x4(1623486506, 211665304, 1668985777, 348112007, 1808619374, 1516730209, 1647041932, 350465899, 1641369007, 1555310928, 857924828, 1980404095, 34923708, 1073528483, 742357726, 1244015681); + int4x4 r2 = int4x4(12298, 68714504, 37270017, 339247107, 34083402, 304099905, 36212744, 337683019, 1048587, 338698304, 304128072, 369659979, 34643976, 372814339, 70791754, 35659841); + TestUtils.AreEqual(a2 & b2, r2); + + int a3 = (1980296380); + int4x4 b3 = int4x4(1295368015, 859181113, 1741688223, 1249250718, 363989837, 939740255, 1668271386, 121498186, 1765635287, 1637255201, 1157123404, 216326016, 1525016040, 1131192672, 433812479, 797544392); + int4x4 r3 = int4x4(1140894732, 838860856, 1711279260, 1107299484, 335546380, 805325852, 1644743704, 101246984, 1611162772, 1610647584, 1141394444, 67161216, 1375790248, 1107861536, 268984508, 638094472); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void int4x4_operator_bitwise_or_wide_wide() + { + int4x4 a0 = int4x4(1731159103, 659068416, 382702471, 1821032196, 1565773438, 1004000514, 948501377, 600951835, 669346222, 396691477, 2108560248, 2117522137, 330307355, 818676817, 1774459567, 1117506257); + int4x4 b0 = int4x4(1583847161, 692672727, 1161585489, 1756207130, 1321374429, 1287357212, 2075767170, 1273513430, 1610830169, 1316929125, 511625048, 573925879, 1502255628, 1841676448, 1682928938, 1115131952); + int4x4 r0 = int4x4(2138044159, 793370327, 1476391895, 1823457054, 1607720703, 2147473182, 2075786115, 1811533279, 1743223295, 1610595957, 2147407736, 2117598207, 1538957087, 2110637297, 1842315183, 1124063985); + TestUtils.AreEqual(a0 | b0, r0); + + int4x4 a1 = int4x4(1254511182, 1017865993, 1883021644, 1140203470, 759288967, 2122744307, 335621148, 715028074, 543305337, 662107399, 1934997335, 436754869, 1613808671, 362365372, 342908672, 2129231210); + int4x4 b1 = int4x4(1541423910, 1416096228, 188606371, 1041599540, 219545389, 560097663, 1087543661, 936383841, 108816721, 1694053551, 452638547, 1219534055, 85142537, 1027930490, 2126839395, 2030328147); + int4x4 r1 = int4x4(1541821294, 2096099309, 2067654639, 2146934782, 760610735, 2145839615, 1423162749, 1071544171, 645820281, 1744827823, 2080356183, 1522064887, 1697901599, 1037957630, 2129985379, 2146270587); + TestUtils.AreEqual(a1 | b1, r1); + + int4x4 a2 = int4x4(203868172, 32846030, 1057901177, 1537975433, 470626699, 557640158, 536364388, 238304731, 787227554, 1298371111, 1020821539, 1327618264, 1104669041, 1949771204, 1973724646, 698690868); + int4x4 b2 = int4x4(2036352209, 1554561114, 1332339254, 480739851, 1502575584, 1889014859, 1557424474, 1390247341, 2029776623, 1665642846, 1570936353, 801872635, 1945815585, 1797879107, 112272980, 779933219); + int4x4 r2 = int4x4(2103889117, 1576909022, 2138040959, 1605346955, 1569684459, 1908211167, 1610378622, 1593671167, 2130702319, 1869067135, 2113574435, 1877727995, 1946151793, 2134865351, 2008393718, 805175095); + TestUtils.AreEqual(a2 | b2, r2); + + int4x4 a3 = int4x4(237797826, 356229491, 1054697631, 2025966311, 718324935, 1223426852, 2042482036, 683169667, 1994321453, 240702936, 828468284, 1009506608, 708733945, 449892073, 1530051697, 654498852); + int4x4 b3 = int4x4(92416160, 446752586, 1307950607, 1358449730, 181367548, 432421751, 695223657, 56384197, 1119601678, 460615696, 463588364, 780415466, 1378457042, 1259569239, 1887579973, 358353719); + int4x4 r3 = int4x4(263104994, 532408187, 2147352223, 2029637351, 719320831, 1508785015, 2046676349, 737959879, 1996484143, 528283096, 1004661820, 1051720186, 2051014651, 1540607743, 2075311989, 928964407); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void int4x4_operator_bitwise_or_wide_scalar() + { + int4x4 a0 = int4x4(961259683, 471103264, 1733389229, 1591585258, 386953869, 1148351449, 1048929715, 1814263250, 860336789, 1637162093, 1227888278, 774029856, 879300408, 1179087439, 797240690, 1977614655); + int b0 = (1666102508); + int4x4 r0 = int4x4(2068823279, 2136930284, 1734344685, 2145369582, 2002712301, 1736374269, 2144335359, 1869608446, 1934604029, 1675607277, 1803466494, 1869543148, 2003812348, 1733293807, 1875836414, 2012132863); + TestUtils.AreEqual(a0 | b0, r0); + + int4x4 a1 = int4x4(46921989, 284225881, 64304104, 313591807, 1393862490, 1890090886, 521303722, 2021379070, 2055963359, 1511253082, 1775629833, 1142751163, 1767274359, 1421981808, 1501294791, 485944015); + int b1 = (1980838747); + int4x4 r1 = int4x4(1994128223, 1995567963, 2010461179, 1991325695, 1997911899, 1991868383, 2131982331, 2122054655, 2124133343, 2115237723, 2144728923, 1981677563, 2136438655, 1993456507, 2138829791, 2130181087); + TestUtils.AreEqual(a1 | b1, r1); + + int4x4 a2 = int4x4(539526284, 1815369493, 529427586, 358352200, 1353013374, 1349149982, 1624839772, 1369983151, 666444298, 207757238, 257316089, 409252967, 1919967661, 1452040383, 2012115244, 1149949643); + int b2 = (310877895); + int4x4 r2 = int4x4(850370255, 2125979607, 529530567, 400531407, 1386733311, 1391460319, 1927257823, 1404034799, 935313103, 518496247, 534241023, 451395303, 1928855535, 1452277503, 2012217327, 1452269263); + TestUtils.AreEqual(a2 | b2, r2); + + int4x4 a3 = int4x4(142082352, 1052987078, 1551897284, 647667876, 272240018, 728496025, 1212085507, 1717689835, 478474157, 1784582014, 1420783529, 671512087, 1240546077, 215180285, 1874077134, 288085841); + int b3 = (1760023655); + int4x4 r3 = int4x4(1761596791, 2129125095, 2095568615, 1862268135, 2030034423, 1810888703, 1761604967, 1860689391, 2095579119, 1795153791, 2096103407, 1760032375, 1777860479, 1828190207, 1878521327, 2045761399); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void int4x4_operator_bitwise_or_scalar_wide() + { + int a0 = (1213433101); + int4x4 b0 = int4x4(1212928242, 1614462616, 936937728, 764766995, 306352095, 574719481, 1283571271, 2109131012, 979469710, 1348323481, 1407542578, 697517649, 1059093741, 627815046, 418822515, 83214352); + int4x4 r0 = int4x4(1213978111, 1752940445, 2145094925, 1842867999, 1515425759, 1783858685, 1288945487, 2113391885, 2054391183, 1482673565, 1542972735, 1775486813, 2138308077, 1836824463, 1492630911, 1291306269); + TestUtils.AreEqual(a0 | b0, r0); + + int a1 = (424663473); + int4x4 b1 = int4x4(447949225, 527022375, 1947148461, 305251437, 1254601325, 1752329425, 1592402684, 1587055329, 1088734150, 298563808, 2052547661, 582843231, 656983670, 1944993640, 1081208038, 829763560); + int4x4 r1 = int4x4(469760441, 527432119, 2102393277, 461364733, 1540357117, 2038431217, 1609563133, 1608506353, 1508891639, 433060337, 2069888509, 1006631935, 1064296439, 2079326201, 1501560311, 964689913); + TestUtils.AreEqual(a1 | b1, r1); + + int a2 = (990961386); + int4x4 b2 = int4x4(547309556, 1307122961, 263229121, 1518227598, 1098359242, 997941952, 1075751132, 996271847, 623986648, 1091787263, 1548400620, 2022447724, 433714471, 963197960, 1639565037, 1287986616); + int4x4 r2 = int4x4(1000333310, 2147082235, 1068556011, 2071912174, 2071461866, 997981930, 2065628926, 997326575, 1060233210, 2064900095, 2136670190, 2073878254, 1004142575, 997850858, 2075778799, 2144722938); + TestUtils.AreEqual(a2 | b2, r2); + + int a3 = (1326199854); + int4x4 b3 = int4x4(1949398395, 2027606165, 1750615303, 908181664, 2105810564, 2009616838, 1492018691, 1325195313, 1365101592, 276155673, 1378507257, 1526287781, 322486040, 1550813488, 326334540, 2015237736); + int4x4 r3 = int4x4(2134734207, 2145318079, 1868330287, 2133718190, 2139897518, 2144105966, 1609463343, 1341977663, 1599994942, 1602092351, 1596882431, 1610448303, 1597816638, 1601158462, 1602190446, 2132686446); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void int4x4_operator_bitwise_xor_wide_wide() + { + int4x4 a0 = int4x4(1556324760, 207002929, 1843444873, 1632079131, 1460334334, 1607815585, 220623650, 38668553, 47193340, 643663548, 1371932564, 94957188, 700973621, 370621508, 2087573076, 351476570); + int4x4 b0 = int4x4(1054997548, 1523759632, 251164872, 110472397, 384031112, 1109163205, 535118981, 179106262, 1523031711, 1713313372, 1294118730, 520360641, 1040688781, 1020757245, 1143954843, 1281933464); + int4x4 r0 = int4x4(1646419380, 1451501345, 1662567489, 1741824470, 1105803126, 499723620, 314783655, 149092575, 1477935715, 1078104288, 484747486, 447544389, 399484088, 717273273, 943885263, 1486609346); + TestUtils.AreEqual(a0 ^ b0, r0); + + int4x4 a1 = int4x4(1340815927, 681577472, 314138777, 446857644, 1368661599, 1672499683, 1259759761, 2049102405, 1972524935, 91962333, 1960780785, 1303778459, 960040360, 822786011, 2028027011, 170382968); + int4x4 b1 = int4x4(175288469, 326874157, 1192052687, 1087083643, 1900865484, 1521193463, 569695524, 1622101483, 1340735463, 546583617, 1034420616, 262206030, 1834125935, 802756092, 611321886, 316379491); + int4x4 r1 = int4x4(1167690402, 1004255277, 1437869910, 1516836311, 551090579, 958119956, 1793242549, 445489070, 981182560, 636424092, 1232544377, 1108797141, 1416333255, 517186087, 1553020061, 419186459); + TestUtils.AreEqual(a1 ^ b1, r1); + + int4x4 a2 = int4x4(32554542, 1915830925, 2001025156, 2012451132, 1076174067, 344651773, 1769102694, 1408084527, 1139070023, 1195715957, 1051992510, 1468636326, 1018993657, 1514317444, 369266676, 1206540279); + int4x4 b2 = int4x4(325882121, 45335181, 1859278043, 1002624300, 1704063552, 1618550727, 721247372, 131278097, 896003672, 746837613, 1952376600, 306395311, 419371442, 627496489, 1791585199, 757339713); + int4x4 r2 = int4x4(312225575, 1887600640, 429354079, 1278297104, 632614579, 1962141754, 1133445610, 1413386046, 1988311583, 1808202520, 1256900262, 1170908169, 608404043, 2133094573, 2093737051, 1791902134); + TestUtils.AreEqual(a2 ^ b2, r2); + + int4x4 a3 = int4x4(1730482516, 1488638921, 801348246, 1768559974, 1475767978, 1617893197, 689768843, 640586983, 426041408, 1811169716, 1563089576, 1411870628, 1004729442, 1173825171, 344960599, 633357624); + int4x4 b3 = int4x4(1356120192, 933877640, 2003767224, 113246892, 1236821680, 256717233, 1832711379, 238792988, 691507914, 1132023339, 1571029002, 227661589, 1609435614, 1581653714, 1384954643, 1432072515); + int4x4 r3 = int4x4(938594772, 1863517249, 1487705390, 1873418186, 508430362, 1864509180, 1143078232, 672474619, 810775178, 680333215, 9362082, 1505147057, 1678572988, 464599105, 1174607172, 1889268859); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void int4x4_operator_bitwise_xor_wide_scalar() + { + int4x4 a0 = int4x4(2124666952, 177397845, 574879617, 1937385541, 1136545648, 213863690, 535061373, 289301586, 1305234431, 353786540, 1308626970, 1267729267, 125659640, 1315625690, 1730088797, 116862046); + int b0 = (493665894); + int4x4 r0 = int4x4(1674536494, 402546227, 1060063719, 1846973987, 1590882582, 299103084, 42523931, 206756404, 1352725913, 142271690, 1399631484, 1459404053, 437376926, 1392927932, 2054402363, 463180344); + TestUtils.AreEqual(a0 ^ b0, r0); + + int4x4 a1 = int4x4(375757978, 191750702, 187129429, 967051293, 549951551, 653124416, 788984, 1479174924, 1680011736, 447453839, 890841598, 293394300, 527727631, 529042816, 1382138962, 1206186973); + int b1 = (491079274); + int4x4 r1 = int4x4(186702576, 371762244, 375527487, 618745463, 1031986773, 1000908074, 491343762, 1164914022, 2036840370, 133094629, 677146516, 205099286, 36780645, 47041514, 1327792696, 1520547255); + TestUtils.AreEqual(a1 ^ b1, r1); + + int4x4 a2 = int4x4(1059509471, 64097148, 1814786305, 716239, 476052372, 92561487, 2058208914, 41260658, 1316660543, 2113008061, 256229982, 111578612, 1207271814, 2099944258, 1913013312, 870798185); + int b2 = (744733291); + int4x4 r2 = int4x4(323317428, 800174359, 1078512490, 745101220, 809255423, 703060516, 1456372985, 773205017, 1645813588, 1368542166, 589723701, 717567903, 1805007853, 1363747113, 1583742507, 528804098); + TestUtils.AreEqual(a2 ^ b2, r2); + + int4x4 a3 = int4x4(1771744425, 1026064492, 275465401, 1157615659, 2091197990, 1671757076, 574090633, 458210617, 1604017559, 1913893498, 1791703422, 2143390933, 777506800, 1972227371, 2073971655, 61542294); + int b3 = (75727457); + int4x4 r3 = int4x4(1830366920, 967508493, 350799576, 1081889354, 2015798343, 1730641781, 649359336, 533479256, 1528356854, 1989160987, 1850260255, 2067926708, 718556561, 1896763210, 2132658598, 120098295); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void int4x4_operator_bitwise_xor_scalar_wide() + { + int a0 = (1288453276); + int4x4 b0 = int4x4(1077599928, 884741329, 212164516, 1585020328, 152985454, 1775851275, 1416249064, 1309317737, 1773918217, 1509843030, 1206045972, 1154916424, 1947871003, 1774252400, 1946113778, 1079717492); + int4x4 r0 = int4x4(217506340, 2020616269, 1080648504, 313868596, 1171416050, 622160791, 413532788, 46573301, 628614293, 355622090, 187625864, 135961812, 953555847, 621596140, 1060334190, 211227368); + TestUtils.AreEqual(a0 ^ b0, r0); + + int a1 = (290620937); + int4x4 b1 = int4x4(1382343363, 939045099, 1309568053, 221134131, 885841718, 612068188, 194068085, 1396957881, 573581481, 1813817520, 86594349, 2006985393, 1431761813, 905646837, 1522414781, 192882943); + int4x4 r1 = int4x4(1127638218, 648689378, 1599924796, 477936442, 631134527, 891940181, 449034364, 1108436144, 862105248, 2102275769, 343659812, 1727179960, 1141142940, 615093500, 1273803444, 439201526); + TestUtils.AreEqual(a1 ^ b1, r1); + + int a2 = (714832744); + int4x4 b2 = int4x4(374210759, 215701593, 1573378082, 779254615, 711527976, 710611783, 223429246, 593102399, 1444947259, 302938485, 684673240, 1417651941, 1426772271, 948720266, 177752267, 2005602645); + int4x4 r2 = int4x4(1020623791, 641737521, 2002559818, 82378815, 15889728, 12609583, 667564310, 163675479, 2092654163, 949289501, 39072688, 2128928141, 2140252743, 303507938, 537080739, 1561356861); + TestUtils.AreEqual(a2 ^ b2, r2); + + int a3 = (896851285); + int4x4 b3 = int4x4(1187420887, 536338211, 874727301, 1067319145, 191758210, 272673141, 18096431, 188062447, 1726887620, 2109517402, 1329654715, 1449815991, 342156404, 604196193, 1831114838, 962033481); + int4x4 r3 = int4x4(1941063554, 713228918, 22518480, 183050812, 1041834711, 624194592, 878771322, 1044465594, 1402661777, 1221096207, 2050242286, 1662956258, 554711329, 293048372, 1481655555, 203663900); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void int4x4_operator_left_shift() + { + int4x4 a0 = int4x4(197771193, 622182602, 1283988958, 1327917304, 473415985, 432425717, 870301196, 2058433484, 1200694230, 1531607705, 1360008038, 1008296534, 1447702302, 1079614371, 35667343, 1664454606); + int b0 = (1321149625); + int4x4 r0 = int4x4(1912602624, -1811939328, -1140850688, -268435456, 1644167168, -369098752, 402653184, -1744830464, -1409286144, 838860800, -872415232, -1409286144, 1006632960, 1174405120, 503316480, -1677721600); + TestUtils.AreEqual(a0 << b0, r0); + + int4x4 a1 = int4x4(2045594989, 592678686, 297755411, 1722762487, 1161625759, 37265945, 997793693, 1521705181, 263886278, 221147365, 2084190583, 230910816, 71403448, 481375728, 1176038816, 1382694875); + int b1 = (2077023268); + int4x4 r1 = int4x4(-1630218544, 892924384, 469119280, 1794396016, 1406142960, 596255120, -1215170096, -1422520880, -72786848, -756609456, -1012689040, -600394240, 1142455168, -887922944, 1636751872, 648281520); + TestUtils.AreEqual(a1 << b1, r1); + + int4x4 a2 = int4x4(1824729613, 1581610518, 407677878, 1208958192, 740058147, 946058001, 880835937, 2063772405, 430594634, 281771991, 1130057990, 1127968177, 1628217625, 979935914, 17663275, 956738326); + int b2 = (1535276688); + int4x4 r2 = int4x4(705495040, 1981153280, -1414135808, 1022361600, 1680015360, -1290731520, 2103508992, -1426784256, 1514799104, 2144796672, 1359347712, 1840316416, -1592197120, -1565917184, -2060779520, -1424621568); + TestUtils.AreEqual(a2 << b2, r2); + + int4x4 a3 = int4x4(1996060114, 542942787, 65869628, 622492353, 159523866, 584916657, 286195265, 1953695770, 209529707, 211278352, 933594260, 1827522668, 1129290782, 1050231977, 183969222, 1773085306); + int b3 = (927390277); + int4x4 r3 = int4x4(-550585792, 194300000, 2107828096, -1555081184, 809796416, 1537463840, 568313888, -1906244800, -1884983968, -1829027328, -189754752, -1648816768, 1777566656, -752315104, 1592047808, 904154944); + TestUtils.AreEqual(a3 << b3, r3); + } + + [TestCompiler] + public static void int4x4_operator_right_shift() + { + int4x4 a0 = int4x4(548167301, 1161338299, 1617625829, 1860731847, 713958715, 196552656, 770466193, 1265099998, 572763124, 506619530, 426807581, 2031319045, 701927980, 917785020, 569504877, 185593382); + int b0 = (1266801540); + int4x4 r0 = int4x4(34260456, 72583643, 101101614, 116295740, 44622419, 12284541, 48154137, 79068749, 35797695, 31663720, 26675473, 126957440, 43870498, 57361563, 35594054, 11599586); + TestUtils.AreEqual(a0 >> b0, r0); + + int4x4 a1 = int4x4(1102123711, 1624751550, 280138733, 1598620011, 1840564178, 736389149, 1279158873, 408822762, 763607760, 348013684, 1568185874, 774126687, 1587054000, 600069797, 29576474, 1880981389); + int b1 = (334005460); + int4x4 r1 = int4x4(1051, 1549, 267, 1524, 1755, 702, 1219, 389, 728, 331, 1495, 738, 1513, 572, 28, 1793); + TestUtils.AreEqual(a1 >> b1, r1); + + int4x4 a2 = int4x4(352174824, 425441430, 186542511, 1099859381, 1234295294, 1028666766, 761662151, 1254855819, 903402043, 1180315725, 182990778, 958706431, 1075621082, 1409488892, 1576738052, 700893981); + int b2 = (1164508476); + int4x4 r2 = int4x4(1, 1, 0, 4, 4, 3, 2, 4, 3, 4, 0, 3, 4, 5, 5, 2); + TestUtils.AreEqual(a2 >> b2, r2); + + int4x4 a3 = int4x4(1435331003, 1447204571, 494777716, 1097030937, 1573721009, 424949150, 338466956, 1451909085, 2097834602, 1996022619, 1349763966, 490973311, 1133192771, 2054033380, 397231107, 150337656); + int b3 = (1759616654); + int4x4 r3 = int4x4(87605, 88330, 30198, 66957, 96052, 25936, 20658, 88617, 128041, 121827, 82383, 29966, 69164, 125368, 24245, 9175); + TestUtils.AreEqual(a3 >> b3, r3); + } + + [TestCompiler] + public static void int4x4_operator_bitwise_not() + { + int4x4 a0 = int4x4(1403358969, 831360921, 2088190243, 976721016, 878283189, 308994339, 1935567517, 1420884856, 472965491, 771711426, 627580960, 2061524024, 753208488, 2097179283, 1303022493, 664744603); + int4x4 r0 = int4x4(-1403358970, -831360922, -2088190244, -976721017, -878283190, -308994340, -1935567518, -1420884857, -472965492, -771711427, -627580961, -2061524025, -753208489, -2097179284, -1303022494, -664744604); + TestUtils.AreEqual(~a0, r0); + + int4x4 a1 = int4x4(1289372466, 1951018596, 1545651937, 717936457, 1284504687, 1342785385, 869629475, 2045854321, 1282546942, 1562433528, 1824824810, 1736570715, 508906058, 2060752880, 1867418756, 388530274); + int4x4 r1 = int4x4(-1289372467, -1951018597, -1545651938, -717936458, -1284504688, -1342785386, -869629476, -2045854322, -1282546943, -1562433529, -1824824811, -1736570716, -508906059, -2060752881, -1867418757, -388530275); + TestUtils.AreEqual(~a1, r1); + + int4x4 a2 = int4x4(695179852, 897923626, 1816190464, 1362906829, 1227946838, 700158434, 189609278, 956441808, 2123488810, 1593014251, 19223061, 1722107954, 1636875694, 1914097392, 1382545027, 1285277010); + int4x4 r2 = int4x4(-695179853, -897923627, -1816190465, -1362906830, -1227946839, -700158435, -189609279, -956441809, -2123488811, -1593014252, -19223062, -1722107955, -1636875695, -1914097393, -1382545028, -1285277011); + TestUtils.AreEqual(~a2, r2); + + int4x4 a3 = int4x4(722020848, 183545104, 2006881282, 685422512, 70717710, 1636059183, 1218560768, 1078350342, 1743219894, 894044458, 110742707, 1831797788, 2111543080, 858442193, 907645851, 1672993750); + int4x4 r3 = int4x4(-722020849, -183545105, -2006881283, -685422513, -70717711, -1636059184, -1218560769, -1078350343, -1743219895, -894044459, -110742708, -1831797789, -2111543081, -858442194, -907645852, -1672993751); + TestUtils.AreEqual(~a3, r3); + } + + + } +} diff --git a/package/Tests/Tests/Shared/TestInt4x4.gen.cs.meta b/package/Tests/Tests/Shared/TestInt4x4.gen.cs.meta new file mode 100755 index 000000000..e4939a30e --- /dev/null +++ b/package/Tests/Tests/Shared/TestInt4x4.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 17b4cf050aaf4e44e965ec9de78ce8bd +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/package/Tests/Tests/Shared/TestMath.cs b/package/Tests/Tests/Shared/TestMath.cs new file mode 100755 index 000000000..992624e13 --- /dev/null +++ b/package/Tests/Tests/Shared/TestMath.cs @@ -0,0 +1,3005 @@ +using NUnit.Framework; +using static Unity.Mathematics.math; +using Burst.Compiler.IL.Tests; +using System; + +namespace Unity.Mathematics.Tests +{ + [TestFixture] + public partial class TestMath + { + [TestCompiler] + public static void asint_uint() + { + TestUtils.AreEqual(asint(0u), 0); + TestUtils.AreEqual(asint(0x12345678u), 0x12345678); + TestUtils.AreEqual(asint(0x7FFFFFFFu), 0x7FFFFFFF); + TestUtils.AreEqual(asint(0x80000000u), -2147483648); + TestUtils.AreEqual(asint(0x87654321u), -2023406815); + TestUtils.AreEqual(asint(0xFFFFFFFFu), -1); + } + + [TestCompiler] + public static void asint_uint2() + { + TestUtils.AreEqual(asint(uint2(0u, 0x12345678u)), int2(0, 0x12345678)); + TestUtils.AreEqual(asint(uint2(0x7FFFFFFFu, 0x80000000u)), int2(0x7FFFFFFF, -2147483648)); + TestUtils.AreEqual(asint(uint2(0x87654321u, 0xFFFFFFFFu)), int2(-2023406815, -1)); + } + + [TestCompiler] + public static void asint_uint3() + { + TestUtils.AreEqual(asint(uint3(0u, 0x12345678u, 0x7FFFFFFFu)), int3(0, 0x12345678, 0x7FFFFFFF)); + TestUtils.AreEqual(asint(uint3(0x80000000u, 0x87654321u, 0xFFFFFFFFu)), int3(-2147483648, -2023406815, -1)); + } + + [TestCompiler] + public static void asint_uint4() + { + TestUtils.AreEqual(asint(uint4(0u, 0x12345678u, 0x7FFFFFFFu, 0x80000000u)), int4(0, 0x12345678, 0x7FFFFFFF, -2147483648)); + TestUtils.AreEqual(asint(uint4(0x87654321u, 0xFFFFFFFFu, 0u, 0u)), int4(-2023406815, -1, 0, 0)); + } + + [TestCompiler] + public static void asint_float() + { + TestUtils.AreEqual(asint(0.0f), 0); + TestUtils.AreEqual(asint(1.0f), 0x3F800000); + TestUtils.AreEqual(asint(1234.56f), 0x449A51EC); + TestUtils.AreEqual(asint(float.PositiveInfinity), 0x7F800000); + TestUtils.AreEqual(asint(float.NaN), unchecked((int)0xFFC00000)); + + TestUtils.AreEqual(asint(-1.0f), unchecked((int)0xBF800000)); + TestUtils.AreEqual(asint(-1234.56f), unchecked((int)0xC49A51EC)); + TestUtils.AreEqual(asint(float.NegativeInfinity), unchecked((int)0xFF800000)); + } + + [TestCompiler] + [WindowsOnly("Mono on linux ignores signed zero.")] + public static void asint_float_signed_zero() + { + TestUtils.AreEqual(asint(-0.0f), unchecked((int)0x80000000)); + } + + [TestCompiler] + public static void asint_float2() + { + TestUtils.AreEqual(asint(float2(0.0f, 1.0f)), int2(0, 0x3F800000)); + TestUtils.AreEqual(asint(float2(1234.56f, float.PositiveInfinity)), int2(0x449A51EC, 0x7F800000)); + TestUtils.AreEqual(asint(float2(float.NaN, -1.0f)), int2(unchecked((int)0xFFC00000), unchecked((int)0xBF800000))); + + TestUtils.AreEqual(asint(float2(-1234.56f, float.NegativeInfinity)), int2(unchecked((int)0xC49A51EC), unchecked((int)0xFF800000))); + TestUtils.AreEqual(asint(float2(0.0f, 0.0f)), int2(0, 0)); + } + + [TestCompiler] + [WindowsOnly("Mono on linux ignores signed zero.")] + public static void asint_float2_signed_zero() + { + TestUtils.AreEqual(asint(float2(-0.0f, -0.0f)), int2(unchecked((int)0x80000000), unchecked((int)0x80000000))); + } + + [TestCompiler] + public static void asint_float3() + { + TestUtils.AreEqual(asint(float3(0.0f, 1.0f, 1234.56f)), int3(0, 0x3F800000, 0x449A51EC)); + TestUtils.AreEqual(asint(float3(float.PositiveInfinity, float.NaN, -1.0f)), int3(0x7F800000, unchecked((int)0xFFC00000), unchecked((int)0xBF800000))); + TestUtils.AreEqual(asint(float3(-1234.56f, float.NegativeInfinity, 0.0f)), int3(unchecked((int)0xC49A51EC), unchecked((int)0xFF800000), 0)); + } + + [TestCompiler] + [WindowsOnly("Mono on linux ignores signed zero.")] + public static void asint_float3_signed_zero() + { + TestUtils.AreEqual(asint(float3(-0.0f, -0.0f, -0.0f)), int3(unchecked((int)0x80000000), unchecked((int)0x80000000), unchecked((int)0x80000000))); + } + + [TestCompiler] + public static void asint_float4() + { + TestUtils.AreEqual(asint(float4(0.0f, 1.0f, 1234.56f, float.PositiveInfinity)), int4(0, 0x3F800000, 0x449A51EC, 0x7F800000)); + TestUtils.AreEqual(asint(float4(float.NaN, -1.0f, -1234.56f, float.NegativeInfinity)), int4(unchecked((int)0xFFC00000), unchecked((int)0xBF800000), unchecked((int)0xC49A51EC), unchecked((int)0xFF800000))); + } + + [TestCompiler] + [WindowsOnly("Mono on linux ignores signed zero.")] + public static void asint_float4_signed_zero() + { + TestUtils.AreEqual(asint(float4(-0.0f, -0.0f, -0.0f, -0.0f)), int4(unchecked((int)0x80000000), unchecked((int)0x80000000), unchecked((int)0x80000000), unchecked((int)0x80000000))); + } + + [TestCompiler] + public static void asuint_int() + { + TestUtils.AreEqual(asuint(0), 0u); + TestUtils.AreEqual(asuint(0x12345678), 0x12345678u); + TestUtils.AreEqual(asuint(0x7FFFFFFF), 0x7FFFFFFFu); + TestUtils.AreEqual(asuint(-2147483648), 0x80000000u); + TestUtils.AreEqual(asuint(-2023406815), 0x87654321u); + TestUtils.AreEqual(asuint(-1), 0xFFFFFFFFu); + } + + [TestCompiler] + public static void asuint_int2() + { + TestUtils.AreEqual(asuint(int2(0, 0x12345678)), uint2(0u, 0x12345678u)); + TestUtils.AreEqual(asuint(int2(0x7FFFFFFF, -2147483648)), uint2(0x7FFFFFFFu, 0x80000000u)); + TestUtils.AreEqual(asuint(int2(-2023406815, -1)), uint2(0x87654321u, 0xFFFFFFFFu)); + } + + [TestCompiler] + public static void asuint_int3() + { + TestUtils.AreEqual(asuint(int3(0, 0x12345678, 0x7FFFFFFF)), uint3(0u, 0x12345678u, 0x7FFFFFFFu)); + TestUtils.AreEqual(asuint(int3(-2147483648, -2023406815, -1)), uint3(0x80000000u, 0x87654321u, 0xFFFFFFFFu)); + } + + [TestCompiler] + public static void asuint_int4() + { + TestUtils.AreEqual(asuint(int4(0, 0x12345678, 0x7FFFFFFF, -2147483648)), uint4(0u, 0x12345678u, 0x7FFFFFFFu, 0x80000000u)); + TestUtils.AreEqual(asuint(int4(-2023406815, -1, 0, 0)), uint4(0x87654321u, 0xFFFFFFFFu, 0u, 0u)); + } + + [TestCompiler] + public static void asuint_float() + { + TestUtils.AreEqual(asuint(0.0f), 0u); + TestUtils.AreEqual(asuint(1.0f), 0x3F800000u); + TestUtils.AreEqual(asuint(1234.56f), 0x449A51ECu); + TestUtils.AreEqual(asuint(float.PositiveInfinity), 0x7F800000u); + TestUtils.AreEqual(asuint(float.NaN), 0xFFC00000u); + + TestUtils.AreEqual(asuint(-1.0f), 0xBF800000u); + TestUtils.AreEqual(asuint(-1234.56f), 0xC49A51ECu); + TestUtils.AreEqual(asuint(float.NegativeInfinity), 0xFF800000u); + } + + [TestCompiler] + [WindowsOnly("Mono on linux ignores signed zero.")] + public static void asuint_float_signed_zero() + { + TestUtils.AreEqual(asuint(-0.0f), 0x80000000u); + } + + [TestCompiler] + public static void asuint_float2() + { + TestUtils.AreEqual(asuint(float2(0.0f, 1.0f)), uint2(0u, 0x3F800000u)); + TestUtils.AreEqual(asuint(float2(1234.56f, float.PositiveInfinity)), uint2(0x449A51Ecu, 0x7F800000u)); + TestUtils.AreEqual(asuint(float2(float.NaN, -1.0f)), uint2(0xFFC00000u, 0xBF800000u)); + + TestUtils.AreEqual(asuint(float2(-1234.56f, float.NegativeInfinity)), uint2(0xC49A51ECu, 0xFF800000u)); + } + + [TestCompiler] + [WindowsOnly("Mono on linux ignores signed zero.")] + public static void asuint_float2_signed_zero() + { + TestUtils.AreEqual(asuint(float2(-0.0f, -0.0f)), uint2(0x80000000u, 0x80000000u)); + } + + [TestCompiler] + public static void asuint_float3() + { + TestUtils.AreEqual(asuint(float3(0.0f, 1.0f, 1234.56f)), uint3(0u, 0x3F800000u, 0x449A51ECu)); + TestUtils.AreEqual(asuint(float3(float.PositiveInfinity, float.NaN, -1.0f)), uint3(0x7F800000u, 0xFFC00000u, 0xBF800000u)); + TestUtils.AreEqual(asuint(float3(-1234.56f, float.NegativeInfinity, 0.0f)), uint3(0xC49A51ECu, 0xff800000u, 0u)); + } + + [TestCompiler] + [WindowsOnly("Mono on linux ignores signed zero.")] + public static void asuint_float3_signed_zero() + { + TestUtils.AreEqual(asuint(float3(-0.0f, -0.0f, -0.0f)), uint3(0x80000000u, 0x80000000u, 0x80000000u)); + } + + [TestCompiler] + public static void asuint_float4() + { + TestUtils.AreEqual(asuint(float4(0.0f, 1.0f, 1234.56f, float.PositiveInfinity)), uint4(0u, 0x3F800000u, 0x449A51ECu, 0x7F800000u)); + TestUtils.AreEqual(asuint(float4(float.NaN, -1.0f, -1234.56f, float.NegativeInfinity)), uint4(0xFFC00000u, 0xBF800000u, 0xC49A51ECu, 0xFF800000u)); + } + + [TestCompiler] + [WindowsOnly("Mono on linux ignores signed zero.")] + public static void asuint_float4_singed_zero() + { + TestUtils.AreEqual(asuint(float4(-0.0f, -0.0f, -0.0f, -0.0f)), uint4(0x80000000u, 0x80000000u, 0x80000000u, 0x80000000u)); + } + + [TestCompiler] + public static void aslong_ulong() + { + TestUtils.AreEqual(aslong(0ul), 0L); + TestUtils.AreEqual(aslong(0x0123456789ABCDEFul), 0x0123456789ABCDEFL); + TestUtils.AreEqual(aslong(0x7FFFFFFFFFFFFFFFul), 0x7FFFFFFFFFFFFFFFL); + TestUtils.AreEqual(aslong(0x8000000000000000ul), -9223372036854775808L); + TestUtils.AreEqual(aslong(0xFEDCBA9876543210ul), -81985529216486896L); + TestUtils.AreEqual(aslong(0xFFFFFFFFFFFFFFFFul), -1L); + } + + [TestCompiler] + public static void aslong_double() + { + TestUtils.AreEqual(aslong(0.0), 0L); + TestUtils.AreEqual(aslong(1.0), 0x3FF0000000000000L); + TestUtils.AreEqual(aslong(1234.56), 0x40934A3D70A3D70AL); + TestUtils.AreEqual(aslong(double.PositiveInfinity), 0x7FF0000000000000L); + TestUtils.AreEqual(aslong(double.NaN), unchecked((long)0xFFF8000000000000UL)); + + TestUtils.AreEqual(aslong(-1.0), unchecked((long)0xBFF0000000000000UL)); + TestUtils.AreEqual(aslong(-1234.56), unchecked((long)0xC0934A3D70A3D70AUL)); + TestUtils.AreEqual(aslong(double.NegativeInfinity), unchecked((long)0xFFF0000000000000UL)); + } + + [TestCompiler] + [WindowsOnly("Mono on linux ignores signed zero.")] + public static void aslong_double_signed_zero() + { + TestUtils.AreEqual(aslong(-0.0), unchecked((long)0x8000000000000000UL)); + } + + [TestCompiler] + public static void asulong_long() + { + TestUtils.AreEqual(asulong(0L), 0ul); + TestUtils.AreEqual(asulong(0x0123456789ABCDEFL), 0x0123456789ABCDEFul); + TestUtils.AreEqual(asulong(0x7FFFFFFFFFFFFFFFL), 0x7FFFFFFFFFFFFFFFul); + TestUtils.AreEqual(asulong(-9223372036854775808L), 0x8000000000000000ul); + TestUtils.AreEqual(asulong(-81985529216486896L), 0xFEDCBA9876543210ul); + TestUtils.AreEqual(asulong(-1L), 0xFFFFFFFFFFFFFFFFul); + } + + [TestCompiler] + public static void asulong_double() + { + TestUtils.AreEqual(asulong(0.0), 0UL); + TestUtils.AreEqual(asulong(1.0), 0x3FF0000000000000UL); + TestUtils.AreEqual(asulong(1234.56), 0x40934A3D70A3D70AUL); + TestUtils.AreEqual(asulong(double.PositiveInfinity), 0x7FF0000000000000UL); + TestUtils.AreEqual(asulong(double.NaN), 0xFFF8000000000000UL); + + TestUtils.AreEqual(asulong(-1.0), 0xBFF0000000000000UL); + TestUtils.AreEqual(asulong(-1234.56), 0xC0934A3D70A3D70AUL); + TestUtils.AreEqual(asulong(double.NegativeInfinity), 0xFFF0000000000000UL); + } + + [TestCompiler] + [WindowsOnly("Mono on linux ignores signed zero.")] + public static void asulong_double_signed_zero() + { + TestUtils.AreEqual(asulong(-0.0), 0x8000000000000000UL); + } + + [TestCompiler] + public static void asfloat_int() + { + TestUtils.AreEqual(asfloat(0), 0.0f); + TestUtils.AreEqual(asfloat(0x3F800000), 1.0f); + TestUtils.AreEqual(asfloat(0x449A51EC), 1234.56f); + TestUtils.AreEqual(asfloat(0x7F800000), float.PositiveInfinity); + TestUtils.AreEqual(asfloat(unchecked((int)0x80000000)), -0.0f); + TestUtils.AreEqual(asfloat(unchecked((int)0xBF800000)), -1.0f); + TestUtils.AreEqual(asfloat(unchecked((int)0xC49A51EC)), -1234.56f); + TestUtils.AreEqual(asfloat(unchecked((int)0xFF800000)), float.NegativeInfinity); + + TestUtils.AreEqual(asuint(asfloat(unchecked((int)0xFFC00000))), asuint(float.NaN)); + } + + [TestCompiler] + public static void asfloat_int2() + { + TestUtils.AreEqual(asfloat(int2(0, 0x3F800000)), float2(0.0f, 1.0f)); + TestUtils.AreEqual(asfloat(int2(0x449A51EC, 0x7F800000)), float2(1234.56f, float.PositiveInfinity)); + TestUtils.AreEqual(asfloat(int2(unchecked((int)0x80000000), unchecked((int)0xBF800000))), float2(-0.0f, -1.0f)); + + TestUtils.AreEqual(asfloat(int2(unchecked((int)0xC49A51EC), unchecked((int)0xFF800000))), float2(-1234.56f, float.NegativeInfinity)); + TestUtils.AreEqual(asuint(asfloat(int2(unchecked((int)0xFFC00000), unchecked((int)0xFFC00000)))), asuint(float2(float.NaN, float.NaN))); + } + + [TestCompiler] + public static void asfloat_int3() + { + TestUtils.AreEqual(asfloat(int3(0, 0x3F800000, 0x449A51EC)), float3(0.0f, 1.0f, 1234.56f)); + TestUtils.AreEqual(asfloat(int3(0x7F800000, unchecked((int)0x80000000), unchecked((int)0xBF800000))), float3(float.PositiveInfinity, -0.0f, -1.0f)); + + TestUtils.AreEqual(asfloat(int3(unchecked((int)0xC49A51EC), unchecked((int)0xFF800000), 0)), float3(-1234.56f, float.NegativeInfinity, 0.0f)); + TestUtils.AreEqual(asuint(asfloat(int3(unchecked((int)0xFFC00000), unchecked((int)0xFFC00000), unchecked((int)0xFFC00000)))), asuint(float3(float.NaN, float.NaN, float.NaN))); + } + + [TestCompiler] + public static void asfloat_int4() + { + TestUtils.AreEqual(asfloat(int4(0, 0x3F800000, 0x449A51EC, 0x7F800000)), float4(0.0f, 1.0f, 1234.56f, float.PositiveInfinity)); + TestUtils.AreEqual(asfloat(int4(unchecked((int)0x80000000), unchecked((int)0xBF800000), unchecked((int)0xC49A51EC), unchecked((int)0xFF800000))), float4(-0.0f, -1.0f, -1234.56f, float.NegativeInfinity)); + + TestUtils.AreEqual(asuint(asfloat(int4(unchecked((int)0xFFC00000), unchecked((int)0xFFC00000), unchecked((int)0xFFC00000), unchecked((int)0xFFC00000)))), asuint(float4(float.NaN, float.NaN, float.NaN, float.NaN))); + } + + [TestCompiler] + public static void asfloat_uint() + { + TestUtils.AreEqual(asfloat(0u), 0.0f); + TestUtils.AreEqual(asfloat(0x3F800000u), 1.0f); + TestUtils.AreEqual(asfloat(0x449A51ECu), 1234.56f); + TestUtils.AreEqual(asfloat(0x7F800000u), float.PositiveInfinity); + TestUtils.AreEqual(asfloat(0x80000000u), -0.0f); + TestUtils.AreEqual(asfloat(0xBF800000u), -1.0f); + TestUtils.AreEqual(asfloat(0xC49A51ECu), -1234.56f); + TestUtils.AreEqual(asfloat(0xFF800000u), float.NegativeInfinity); + + TestUtils.AreEqual(asuint(asfloat(0xFFC00000u)), asuint(float.NaN)); + } + + [TestCompiler] + public static void asfloat_uint2() + { + TestUtils.AreEqual(asfloat(uint2(0u, 0x3F800000u)), float2(0.0f, 1.0f)); + TestUtils.AreEqual(asfloat(uint2(0x449A51ECu, 0x7F800000u)), float2(1234.56f, float.PositiveInfinity)); + TestUtils.AreEqual(asfloat(uint2(0x80000000u, 0xBF800000u)), float2(-0.0f, -1.0f)); + + TestUtils.AreEqual(asfloat(uint2(0xC49A51ECu, 0xFF800000u)), float2(-1234.56f, float.NegativeInfinity)); + TestUtils.AreEqual(asuint(asfloat(uint2(0xFFC00000u, 0xFFC00000u))), asuint(float2(float.NaN, float.NaN))); + } + + [TestCompiler] + public static void asfloat_uint3() + { + TestUtils.AreEqual(asfloat(uint3(0u, 0x3F800000u, 0x449A51ECu)), float3(0.0f, 1.0f, 1234.56f)); + TestUtils.AreEqual(asfloat(uint3(0x7F800000u, 0x80000000u, 0xBF800000u)), float3(float.PositiveInfinity, -0.0f, -1.0f)); + + TestUtils.AreEqual(asfloat(uint3(0xC49A51ECu, 0xFF800000u, 0u)), float3(-1234.56f, float.NegativeInfinity, 0.0f)); + TestUtils.AreEqual(asuint(asfloat(uint3(0xFFC00000u, 0xFFC00000u, 0xFFC00000u))), asuint(float3(float.NaN, float.NaN, float.NaN))); + } + + [TestCompiler] + public static void asfloat_uint4() + { + TestUtils.AreEqual(asfloat(uint4(0u, 0x3F800000u, 0x449A51ECu, 0x7F800000u)), float4(0.0f, 1.0f, 1234.56f, float.PositiveInfinity)); + TestUtils.AreEqual(asfloat(uint4(0x80000000u, 0xBF800000u, 0xC49A51ECu, 0xFF800000u)), float4(-0.0f, -1.0f, -1234.56f, float.NegativeInfinity)); + + TestUtils.AreEqual(asuint(asfloat(uint4(0xFFC00000u, 0xFFC00000u, 0xFFC00000u, 0xFFC00000u))), asuint(float4(float.NaN, float.NaN, float.NaN, float.NaN))); + } + + [TestCompiler] + public static void asdouble_long() + { + TestUtils.AreEqual(asdouble(0L), 0.0); + TestUtils.AreEqual(asdouble(0x3FF0000000000000L), 1.0); + TestUtils.AreEqual(asdouble(0x40934A3D70A3D70AL), 1234.56); + TestUtils.AreEqual(asdouble(0x7FF0000000000000L), double.PositiveInfinity); + TestUtils.AreEqual(asdouble(unchecked((long)0xFFF8000000000000UL)), double.NaN); + + TestUtils.AreEqual(asdouble(unchecked((long)0x8000000000000000UL)), -0.0); + TestUtils.AreEqual(asdouble(unchecked((long)0xBFF0000000000000UL)), -1.0); + TestUtils.AreEqual(asdouble(unchecked((long)0xC0934A3D70A3D70AUL)), -1234.56); + TestUtils.AreEqual(asdouble(unchecked((long)0xFFF0000000000000UL)), double.NegativeInfinity); + } + + [TestCompiler] + public static void asdouble_ulong() + { + TestUtils.AreEqual(asdouble(0UL), 0.0); + TestUtils.AreEqual(asdouble(0x3FF0000000000000UL), 1.0); + TestUtils.AreEqual(asdouble(0x40934A3D70A3D70AUL), 1234.56); + TestUtils.AreEqual(asdouble(0x7FF0000000000000UL), double.PositiveInfinity); + TestUtils.AreEqual(asdouble(0xFFF8000000000000UL), double.NaN); + + TestUtils.AreEqual(asdouble(0x8000000000000000UL), -0.0); + TestUtils.AreEqual(asdouble(0xBFF0000000000000UL), -1.0); + TestUtils.AreEqual(asdouble(0xC0934A3D70A3D70AUL), -1234.56); + TestUtils.AreEqual(asdouble(0xFFF0000000000000UL), double.NegativeInfinity); + } + + [TestCompiler] + public static void faceforward_float2() + { + TestUtils.AreEqual(faceforward(float2(3.5f, -4.5f), float2(1.0f, -2.0f), float2(3.0f, -4.0f)), float2(-3.5f, 4.5f)); + TestUtils.AreEqual(faceforward(float2(3.5f, -4.5f), float2(1.0f, -2.0f), float2(-3.0f, 4.0f)), float2(3.5f, -4.5f)); + TestUtils.AreEqual(faceforward(float2(3.5f, -4.5f), float2(1.0f, -2.0f), float2(0.0f, 0.0f)), float2(-3.5f, 4.5f)); + } + + [TestCompiler] + public static void faceforward_float3() + { + TestUtils.AreEqual(faceforward(float3(3.5f, -4.5f, 5.5f), float3(1.0f, -2.0f, 3.0f), float3(3.0f, -4.0f, 5.0f)), float3(-3.5f, 4.5f, -5.5f)); + TestUtils.AreEqual(faceforward(float3(3.5f, -4.5f, 5.5f), float3(1.0f, -2.0f, 3.0f), float3(-3.0f, 4.0f, -5.0f)), float3(3.5f, -4.5f, 5.5f)); + TestUtils.AreEqual(faceforward(float3(3.5f, -4.5f, 5.5f), float3(1.0f, -2.0f, 3.0f), float3(0.0f, 0.0f, 0.0f)), float3(-3.5f, 4.5f, -5.5f)); + } + + [TestCompiler] + public static void faceforward_float4() + { + TestUtils.AreEqual(faceforward(float4(3.5f, -4.5f, 5.5f, -6.5f), float4(1.0f, -2.0f, 3.0f, -4.0f), float4(3.0f, -4.0f, 5.0f, -6.0f)), float4(-3.5f, 4.5f, -5.5f, 6.5f)); + TestUtils.AreEqual(faceforward(float4(3.5f, -4.5f, 5.5f, -6.5f), float4(1.0f, -2.0f, 3.0f, -4.0f), float4(-3.0f, 4.0f, -5.0f, 6.0f)), float4(3.5f, -4.5f, 5.5f, -6.5f)); + TestUtils.AreEqual(faceforward(float4(3.5f, -4.5f, 5.5f, -6.5f), float4(1.0f, -2.0f, 3.0f, -4.0f), float4(0.0f, 0.0f, 0.0f, 0.0f)), float4(-3.5f, 4.5f, -5.5f, 6.5f)); + } + + [TestCompiler] + public static void faceforward_double2() + { + TestUtils.AreEqual(faceforward(double2(3.5, -4.5), double2(1.0, -2.0), double2(3.0, -4.0)), double2(-3.5, 4.5)); + TestUtils.AreEqual(faceforward(double2(3.5, -4.5), double2(1.0, -2.0), double2(-3.0, 4.0)), double2(3.5, -4.5)); + TestUtils.AreEqual(faceforward(double2(3.5, -4.5), double2(1.0, -2.0), double2(0.0, 0.0)), double2(-3.5, 4.5)); + } + + [TestCompiler] + public static void faceforward_double3() + { + TestUtils.AreEqual(faceforward(double3(3.5, -4.5, 5.5), double3(1.0, -2.0, 3.0), double3(3.0, -4.0, 5.0)), double3(-3.5, 4.5, -5.5)); + TestUtils.AreEqual(faceforward(double3(3.5, -4.5, 5.5), double3(1.0, -2.0, 3.0), double3(-3.0, 4.0, -5.0)), double3(3.5, -4.5, 5.5)); + TestUtils.AreEqual(faceforward(double3(3.5, -4.5, 5.5), double3(1.0, -2.0, 3.0), double3(0.0, 0.0, 0.0)), double3(-3.5, 4.5, -5.5)); + } + + [TestCompiler] + public static void faceforward_double4() + { + TestUtils.AreEqual(faceforward(double4(3.5, -4.5, 5.5, -6.5), double4(1.0, -2.0, 3.0, -4.0), double4(3.0, -4.0, 5.0, -6.0)), double4(-3.5, 4.5, -5.5, 6.5)); + TestUtils.AreEqual(faceforward(double4(3.5, -4.5, 5.5, -6.5), double4(1.0, -2.0, 3.0, -4.0), double4(-3.0, 4.0, -5.0, 6.0)), double4(3.5, -4.5, 5.5, -6.5)); + TestUtils.AreEqual(faceforward(double4(3.5, -4.5, 5.5, -6.5), double4(1.0, -2.0, 3.0, -4.0), double4(0.0, 0.0, 0.0, 0.0)), double4(-3.5, 4.5, -5.5, 6.5)); + } + + [TestCompiler] + public static void modf_float() + { + float f, i; + f = modf(313.75f, out i); + TestUtils.AreEqual(i, 313.0f); + TestUtils.AreEqual(f, 0.75f); + + f = modf(-313.25f, out i); + TestUtils.AreEqual(i, -313.0f); + TestUtils.AreEqual(f, -0.25f); + + f = modf(-314.0f, out i); + TestUtils.AreEqual(i, -314.0f); + TestUtils.AreEqual(f, 0.0f); + } + + [TestCompiler] + public static void modf_float2() + { + float2 f, i; + f = modf(float2(313.75f, -313.25f), out i); + TestUtils.AreEqual(i, float2(313.0f, -313.0f)); + TestUtils.AreEqual(f, float2(0.75f, -0.25f)); + + f = modf(float2(-314.0f, 7.5f), out i); + TestUtils.AreEqual(i, float2(-314.0f, 7.0f)); + TestUtils.AreEqual(f, float2(0.0f, 0.5f)); + } + + [TestCompiler] + public static void modf_float3() + { + float3 f, i; + f = modf(float3(313.75f, -313.25f, -314.0f), out i); + TestUtils.AreEqual(i, float3(313.0f, -313.0f, -314.0f)); + TestUtils.AreEqual(f, float3(0.75f, -0.25f, 0.0f)); + } + + [TestCompiler] + public static void modf_float4() + { + float4 f, i; + f = modf(float4(313.75f, -313.25f, -314.0f, 7.5f), out i); + TestUtils.AreEqual(i, float4(313.0f, -313.0f, -314.0f, 7.0f)); + TestUtils.AreEqual(f, float4(0.75f, -0.25f, 0.0f, 0.5f)); + } + + [TestCompiler] + public static void modf_double() + { + double f, i; + f = modf(313.75, out i); + TestUtils.AreEqual(i, 313.0); + TestUtils.AreEqual(f, 0.75); + + f = modf(-313.25, out i); + TestUtils.AreEqual(i, -313.0); + TestUtils.AreEqual(f, -0.25); + + f = modf(-314.0, out i); + TestUtils.AreEqual(i, -314.0); + TestUtils.AreEqual(f, 0.0); + } + + [TestCompiler] + public static void modf_double2() + { + double2 f, i; + f = modf(double2(313.75, -313.25), out i); + TestUtils.AreEqual(i, double2(313.0, -313.0)); + TestUtils.AreEqual(f, double2(0.75, -0.25)); + + f = modf(double2(-314.0, 7.5), out i); + TestUtils.AreEqual(i, double2(-314.0, 7.0)); + TestUtils.AreEqual(f, double2(0.0, 0.5)); + } + + [TestCompiler] + public static void modf_double3() + { + double3 f, i; + f = modf(double3(313.75, -313.25, -314.0), out i); + TestUtils.AreEqual(i, double3(313.0, -313.0, -314.0)); + TestUtils.AreEqual(f, double3(0.75, -0.25, 0.0)); + } + + [TestCompiler] + public static void modf_double4() + { + double4 f, i; + f = modf(double4(313.75, -313.25, -314.0, 7.5), out i); + TestUtils.AreEqual(i, double4(313.0, -313.0, -314.0, 7.0)); + TestUtils.AreEqual(f, double4(0.75, -0.25, 0.0, 0.5f)); + } + + [TestCompiler] + public static void normalize_float2() + { + TestUtils.AreEqual(normalize(float2(3.1f, -5.3f)), float2(0.504883f, -0.863188f), 0.0001f); + TestUtils.AreEqual(all(isnan(normalize(float2(0.0f, 0.0f)))), true); + } + + [TestCompiler] + public static void normalize_float3() + { + TestUtils.AreEqual(normalizesafe(float3(3.1f, -5.3f, 2.6f)), float3(0.464916f, -0.794861f, 0.389932f), 0.0001f); + TestUtils.AreEqual(all(isnan(normalize(float3(0.0f, 0.0f, 0.0f)))), true); + } + + [TestCompiler] + public static void normalize_float4() + { + TestUtils.AreEqual(normalizesafe(float4(3.1f, -5.3f, 2.6f, 11.4f)), float4(0.234727f, -0.401308f, 0.196868f, 0.863191f), 0.0001f); + TestUtils.AreEqual(all(isnan(normalize(float4(0.0f, 0.0f, 0.0f, 0.0f)))), true); + } + + + [TestCompiler] + public static void normalize_double2() + { + TestUtils.AreEqual(normalize(double2(3.1, -5.3)), double2(0.504883, -0.863188), 0.0001); + TestUtils.AreEqual(all(isnan(normalize(double2(0.0, 0.0)))), true); + } + + [TestCompiler] + public static void normalize_double3() + { + TestUtils.AreEqual(normalizesafe(double3(3.1, -5.3, 2.6)), double3(0.464916, -0.794861, 0.389932), 0.0001); + TestUtils.AreEqual(all(isnan(normalize(double3(0.0, 0.0, 0.0)))), true); + } + + [TestCompiler] + public static void normalize_double4() + { + TestUtils.AreEqual(normalizesafe(double4(3.1, -5.3, 2.6, 11.4)), double4(0.234727, -0.401308, 0.196868, 0.863191), 0.0001); + TestUtils.AreEqual(all(isnan(normalize(double4(0.0, 0.0, 0.0, 0.0f)))), true); + } + + [TestCompiler] + public static void normalize_quaternion() + { + TestUtils.AreEqual(normalizesafe(quaternion(3.1f, -5.3f, 2.6f, 11.4f)), quaternion(0.234727f, -0.401308f, 0.196868f, 0.863191f), 0.0001f); + TestUtils.AreEqual(all(isnan(normalize(quaternion(0.0f, 0.0f, 0.0f, 0.0f)).value)), true); + } + + + [TestCompiler] + public static void normalizesafe_float2() + { + TestUtils.AreEqual(normalizesafe(float2(3.1f, -5.3f)), float2(0.504883f, -0.863188f), 0.0001f); + TestUtils.AreEqual(normalizesafe(float2(0.0f, 0.0f)), float2(0.0f, 0.0f)); + TestUtils.AreEqual(normalizesafe(float2(0.0f, 0.0f), float2(1.0f, 2.0f)), float2(1.0f, 2.0f)); + TestUtils.AreEqual(normalizesafe(float2(1e-18f, 2e-18f)), float2(0.447214f, 0.894427f), 0.0001f); + TestUtils.AreEqual(normalizesafe(float2(7.66e-20f, 7.66e-20f), float2(1.0f, 2.0f)), float2(1.0f, 2.0f)); + } + + [TestCompiler] + public static void normalizesafe_float3() + { + TestUtils.AreEqual(normalizesafe(float3(3.1f, -5.3f, 2.6f)), float3(0.464916f, -0.794861f, 0.389932f), 0.0001f); + TestUtils.AreEqual(normalizesafe(float3(0.0f, 0.0f, 0.0f)), float3(0.0f, 0.0f, 0.0f)); + TestUtils.AreEqual(normalizesafe(float3(0.0f, 0.0f, 0.0f), float3(1.0f, 2.0f, 3.0f)), float3(1.0f, 2.0f, 3.0f)); + TestUtils.AreEqual(normalizesafe(float3(1e-19f, 2e-19f, 3e-19f)), float3(0.267261f, 0.534523f, 0.801784f), 0.0001f); + TestUtils.AreEqual(normalizesafe(float3(6.25e-20f, 6.25e-20f, 6.25e-20f), float3(1.0f, 2.0f, 3.0f)), float3(1.0f, 2.0f, 3.0f)); + } + + [TestCompiler] + public static void normalizesafe_float4() + { + TestUtils.AreEqual(normalizesafe(float4(3.1f, -5.3f, 2.6f, 11.4f)), float4(0.234727f, -0.401308f, 0.196868f, 0.863191f), 0.0001f); + TestUtils.AreEqual(normalizesafe(float4(0.0f, 0.0f, 0.0f, 0.0f)), float4(0.0f, 0.0f, 0.0f, 0.0f)); + TestUtils.AreEqual(normalizesafe(float4(0.0f, 0.0f, 0.0f, 0.0f), float4(1.0f, 2.0f, 3.0f, 4.0f)), float4(1.0f, 2.0f, 3.0f, 4.0f)); + TestUtils.AreEqual(normalizesafe(float4(1e-19f, 2e-19f, 3e-19f, 4e-19f)), float4(0.182574f, 0.3651484f, 0.547723f, 0.730297f), 0.0001f); + TestUtils.AreEqual(normalizesafe(float4(5.42e-20f, 5.42e-20f, 5.42e-20f, 5.42e-20f), float4(1.0f, 2.0f, 3.0f, 4.0f)), float4(1.0f, 2.0f, 3.0f, 4.0f)); + } + + + [TestCompiler] + public static void normalizesafe_double2() + { + TestUtils.AreEqual(normalizesafe(double2(3.1, -5.3)), double2(0.504883, -0.863188), 0.0001); + TestUtils.AreEqual(normalizesafe(double2(0.0, 0.0)), double2(0.0, 0.0)); + TestUtils.AreEqual(normalizesafe(double2(0.0, 0.0), double2(1.0, 2.0)), double2(1.0, 2.0)); + TestUtils.AreEqual(normalizesafe(double2(1e-18, 2e-18)), double2(0.447214, 0.894427), 0.0001); + TestUtils.AreEqual(normalizesafe(double2(1.05e-154, 1.05e-154), double2(1.0, 2.0)), double2(1.0, 2.0)); + } + + [TestCompiler] + public static void normalizesafe_double3() + { + TestUtils.AreEqual(normalizesafe(double3(3.1, -5.3, 2.6)), double3(0.464916, -0.794861, 0.389932), 0.0001); + TestUtils.AreEqual(normalizesafe(double3(0.0, 0.0, 0.0)), double3(0.0, 0.0, 0.0)); + TestUtils.AreEqual(normalizesafe(double3(0.0, 0.0, 0.0), double3(1.0, 2.0, 3.0)), double3(1.0, 2.0, 3.0)); + TestUtils.AreEqual(normalizesafe(double3(1e-19, 2e-19, 3e-19)), double3(0.267261, 0.534523, 0.801784), 0.0001); + TestUtils.AreEqual(normalizesafe(double3(8.61e-155, 8.61e-155, 8.61e-155), double3(1.0, 2.0, 3.0)), double3(1.0, 2.0, 3.0)); + } + + [TestCompiler] + public static void normalizesafe_double4() + { + TestUtils.AreEqual(normalizesafe(double4(3.1, -5.3, 2.6, 11.4)), double4(0.234727, -0.401308, 0.196868, 0.863191), 0.0001); + TestUtils.AreEqual(normalizesafe(double4(0.0, 0.0, 0.0, 0.0)), double4(0.0, 0.0, 0.0, 0.0)); + TestUtils.AreEqual(normalizesafe(double4(0.0, 0.0, 0.0, 0.0), double4(1.0, 2.0, 3.0, 4.0)), double4(1.0, 2.0, 3.0, 4.0)); + TestUtils.AreEqual(normalizesafe(double4(1e-19, 2e-19, 3e-19, 4e-19)), double4(0.182574, 0.3651484, 0.547723, 0.730297), 0.0001); + TestUtils.AreEqual(normalizesafe(double4(7.45e-155, 7.45e-155, 7.45e-155, 7.45e-155), double4(1.0, 2.0, 3.0, 4.0)), double4(1.0, 2.0, 3.0, 4.0)); + } + + [TestCompiler] + public static void normalizesafe_quaternion() + { + TestUtils.AreEqual(normalizesafe(quaternion(3.1f, -5.3f, 2.6f, 11.4f)), quaternion(0.234727f, -0.401308f, 0.196868f, 0.863191f), 0.0001f); + TestUtils.AreEqual(normalizesafe(quaternion(0.0f, 0.0f, 0.0f, 0.0f)), quaternion(0.0f, 0.0f, 0.0f, 1.0f)); + TestUtils.AreEqual(normalizesafe(quaternion(0.0f, 0.0f, 0.0f, 0.0f), quaternion(1.0f, 2.0f, 3.0f, 4.0f)), quaternion(1.0f, 2.0f, 3.0f, 4.0f)); + TestUtils.AreEqual(normalizesafe(quaternion(1e-19f, 2e-19f, 3e-19f, 4e-19f)), quaternion(0.182574f, 0.3651484f, 0.547723f, 0.730297f), 0.0001f); + TestUtils.AreEqual(normalizesafe(quaternion(5.42e-20f, 5.42e-20f, 5.42e-20f, 5.42e-20f), quaternion(1.0f, 2.0f, 3.0f, 4.0f)), quaternion(1.0f, 2.0f, 3.0f, 4.0f)); + } + + [TestCompiler] + public static void f16tof32_float() + { + TestUtils.AreEqual(asuint(f16tof32(0x0000)), 0x00000000); + TestUtils.AreEqual(asuint(f16tof32(0x0203)), 0x3800C000); + TestUtils.AreEqual(asuint(f16tof32(0x4321)), 0x40642000); + TestUtils.AreEqual(asuint(f16tof32(0x7BFF)), 0x477FE000); + TestUtils.AreEqual(asuint(f16tof32(0x7C00)), 0x7F800000); + TestUtils.AreEqual(isnan(f16tof32(0x7C01)), true); + + TestUtils.AreEqual(asuint(f16tof32(0x8000)), 0x80000000); + TestUtils.AreEqual(asuint(f16tof32(0x8203)), 0xB800C000); + TestUtils.AreEqual(asuint(f16tof32(0xC321)), 0xC0642000); + TestUtils.AreEqual(asuint(f16tof32(0xFBFF)), 0xC77FE000); + TestUtils.AreEqual(asuint(f16tof32(0xFC00)), 0xFF800000); + TestUtils.AreEqual(isnan(f16tof32(0xFC01)), true); + } + + [TestCompiler] + public static void f16tof32_float2() + { + TestUtils.AreEqual(asuint(f16tof32(uint2(0x0000, 0x0203))), uint2(0x00000000, 0x3800C000)); + TestUtils.AreEqual(asuint(f16tof32(uint2(0x4321, 0x7BFF))), uint2(0x40642000, 0x477FE000)); + TestUtils.AreEqual(asuint(f16tof32(uint2(0x7C00, 0x7C00))), uint2(0x7F800000, 0x7F800000)); + TestUtils.AreEqual(all(isnan(f16tof32(uint2(0x7C01, 0x7C01)))), true); + + TestUtils.AreEqual(asuint(f16tof32(uint2(0x8000, 0x8203))), uint2(0x80000000, 0xB800C000)); + TestUtils.AreEqual(asuint(f16tof32(uint2(0xC321, 0xFBFF))), uint2(0xC0642000, 0xC77FE000)); + TestUtils.AreEqual(asuint(f16tof32(uint2(0xFC00, 0xFC00))), uint2(0xFF800000, 0xFF800000)); + TestUtils.AreEqual(all(isnan(f16tof32(uint2(0xFC01, 0xFC01)))), true); + } + + [TestCompiler] + public static void f16tof32_float3() + { + TestUtils.AreEqual(asuint(f16tof32(uint3(0x0000, 0x0203, 0x4321))), uint3(0x00000000, 0x3800C000, 0x40642000)); + TestUtils.AreEqual(asuint(f16tof32(uint3(0x7BFF, 0x7C00, 0x7C00))), uint3(0x477FE000, 0x7F800000, 0x7F800000)); + TestUtils.AreEqual(all(isnan(f16tof32(uint3(0x7C01, 0x7C01, 0x7C01)))), true); + + TestUtils.AreEqual(asuint(f16tof32(uint3(0x8000, 0x8203, 0xC321))), uint3(0x80000000, 0xB800C000, 0xC0642000)); + TestUtils.AreEqual(asuint(f16tof32(uint3(0xFBFF, 0xFC00, 0xFC00))), uint3(0xC77FE000, 0xFF800000, 0xFF800000)); + TestUtils.AreEqual(all(isnan(f16tof32(uint3(0xFC01, 0xFC01, 0xFC01)))), true); + } + + [TestCompiler] + public static void f16tof32_float4() + { + TestUtils.AreEqual(asuint(f16tof32(uint4(0x0000, 0x0203, 0x4321, 0x7BFF))), uint4(0x00000000, 0x3800C000, 0x40642000, 0x477FE000)); + TestUtils.AreEqual(asuint(f16tof32(uint4(0x7C00, 0x7C00, 0x7C00, 0x7C00))), uint4(0x7F800000, 0x7F800000, 0x7F800000, 0x7F800000)); + TestUtils.AreEqual(all(isnan(f16tof32(uint4(0x7C01, 0x7C01, 0x7C01, 0x7C01)))), true); + + TestUtils.AreEqual(asuint(f16tof32(uint4(0x8000, 0x8203, 0xC321, 0xFBFF))), uint4(0x80000000, 0xB800C000, 0xC0642000, 0xC77FE000)); + TestUtils.AreEqual(asuint(f16tof32(uint4(0xFC00, 0xFC00, 0xFC00, 0xFC00))), uint4(0xFF800000, 0xFF800000, 0xFF800000, 0xFF800000)); + TestUtils.AreEqual(all(isnan(f16tof32(uint4(0xFC01, 0xFC01, 0xFC01, 0xFC01)))), true); + } + + [TestCompiler] + public static void f32tof16_float() + { + TestUtils.AreEqual(f32tof16(0.0f), 0x0000); + TestUtils.AreEqual(f32tof16(2.98e-08f), 0x0000); + TestUtils.AreEqual(f32tof16(5.96046448e-08f), 0x0001); + TestUtils.AreEqual(f32tof16(123.4f), 0x57B6); + TestUtils.AreEqual(f32tof16(65504.0f), 0x7BFF); + TestUtils.AreEqual(f32tof16(65520.0f), 0x7C00); + TestUtils.AreEqual(f32tof16(float.PositiveInfinity), 0x7C00); + TestUtils.AreEqual(f32tof16(float.NaN), 0xFE00); + + TestUtils.AreEqual(f32tof16(-2.98e-08f), 0x8000); + TestUtils.AreEqual(f32tof16(-5.96046448e-08f), 0x8001); + TestUtils.AreEqual(f32tof16(-123.4f), 0xD7B6); + TestUtils.AreEqual(f32tof16(-65504.0f), 0xFBFF); + TestUtils.AreEqual(f32tof16(-65520.0f), 0xFC00); + TestUtils.AreEqual(f32tof16(float.NegativeInfinity), 0xFC00); + } + + [TestCompiler] + [WindowsOnly("Mono on linux ignores signed zero.")] + public static void f32tof16_float_signed_zero() + { + TestUtils.AreEqual(f32tof16(-0.0f), 0x8000); + } + + [TestCompiler] + public static void f32tof16_float2() + { + TestUtils.AreEqual(f32tof16(float2(0.0f, 2.98e-08f)), uint2(0x0000, 0x0000)); + TestUtils.AreEqual(f32tof16(float2(5.96046448e-08f, 123.4f)), uint2(0x0001, 0x57B6)); + TestUtils.AreEqual(f32tof16(float2(65504.0f, 65520.0f)), uint2(0x7BFF, 0x7C00)); + TestUtils.AreEqual(f32tof16(float2(float.PositiveInfinity, float.NaN)), uint2(0x7C00, 0xFE00)); + + TestUtils.AreEqual(f32tof16(float2(-2.98e-08f, -5.96046448e-08f)), uint2(0x8000, 0x8001)); + TestUtils.AreEqual(f32tof16(float2(-123.4f, -65504.0f)), uint2(0xD7B6, 0xFBFF)); + TestUtils.AreEqual(f32tof16(float2(-65520.0f, float.NegativeInfinity)), uint2(0xFC00, 0xFC00)); + TestUtils.AreEqual(f32tof16(float2(float.NegativeInfinity, 0.0f)), uint2(0xFC00, 0x0000)); + } + + [TestCompiler] + [WindowsOnly("Mono on linux ignores signed zero.")] + public static void f32tof16_float2_signed_zero() + { + TestUtils.AreEqual(f32tof16(float2(-0.0f, -0.0f)), uint2(0x8000, 0x8000)); + } + + [TestCompiler] + public static void f32tof16_float3() + { + TestUtils.AreEqual(f32tof16(float3(0.0f, 2.98e-08f, 5.96046448e-08f)), uint3(0x0000, 0x0000, 0x0001)); + TestUtils.AreEqual(f32tof16(float3(123.4f, 65504.0f, 65520.0f)), uint3(0x57B6, 0x7BFF, 0x7C00)); + TestUtils.AreEqual(f32tof16(float3(float.PositiveInfinity, float.NaN, -2.98e-08f)), uint3(0x7C00, 0xFE00, 0x8000)); + + TestUtils.AreEqual(f32tof16(float3(-5.96046448e-08f, -123.4f, -65504.0f)), uint3(0x8001, 0xD7B6, 0xFBFF)); + TestUtils.AreEqual(f32tof16(float3(-65520.0f, float.NegativeInfinity, 0.0f)), uint3(0xFC00, 0xFC00, 0x0000)); + } + + [TestCompiler] + [WindowsOnly("Mono on linux ignores signed zero.")] + public static void f32tof16_float3_signed_zero() + { + TestUtils.AreEqual(f32tof16(float3(-0.0f, -0.0f, -0.0f)), uint3(0x8000, 0x8000, 0x8000)); + } + + [TestCompiler] + public static void f32tof16_float4() + { + TestUtils.AreEqual(f32tof16(float4(0.0f, 2.98e-08f, 5.96046448e-08f, 123.4f)), uint4(0x0000, 0x0000, 0x0001, 0x57B6)); + TestUtils.AreEqual(f32tof16(float4(65504.0f, 65520.0f, float.PositiveInfinity, float.NaN)), uint4(0x7BFF, 0x7C00, 0x7C00, 0xFE00)); + TestUtils.AreEqual(f32tof16(float4(-2.98e-08f, -5.96046448e-08f, -123.4f, -65504.0f)), uint4(0x8000, 0x8001, 0xD7B6, 0xFBFF)); + TestUtils.AreEqual(f32tof16(float4(-65520.0f, float.NegativeInfinity, float.NegativeInfinity, 0.0f)), uint4(0xFC00, 0xFC00, 0xFC00, 0x0000)); + } + + [TestCompiler] + [WindowsOnly("Mono on linux ignores signed zero.")] + public static void f32tof16_float4_signed_zero() + { + TestUtils.AreEqual(f32tof16(float4(-0.0f, -0.0f, -0.0f, -0.0f)), uint4(0x8000, 0x8000, 0x8000, 0x8000)); + } + + [TestCompiler] + public static void reflect_float2() + { + TestUtils.AreEqual(reflect(float2(1.2f, 3.6f), float2(1.5f, -1.3f)), float2(9.84f, -3.888f), 8, false); + TestUtils.AreEqual(reflect(float2(-1.2f, 3.6f), float2(-1.5f, -1.3f)), float2(-9.84f, -3.888f), 8, false); + TestUtils.AreEqual(reflect(float2(-1.2f, 3.6f), float2(0.0f, 0.0f)), float2(-1.2f, 3.6f)); + TestUtils.AreEqual(reflect(float2(0.0f, 0.0f), float2(-1.5f, -1.3f)), float2(0.0f, 0.0f), 8, false); + } + + [TestCompiler] + public static void reflect_float3() + { + TestUtils.AreEqual(reflect(float3(1.2f, 3.6f, -2.8f), float3(1.5f, -1.3f, 3.1f)), float3(35.88f, -26.456f, 68.872f), 8, false); + TestUtils.AreEqual(reflect(float3(-1.2f, 3.6f, -2.8f), float3(-1.5f, -1.3f, 3.1f)), float3(-35.88f, -26.456f, 68.872f), 8, false); + TestUtils.AreEqual(reflect(float3(-1.2f, 3.6f, -2.8f), float3(0.0f, 0.0f, 0.0f)), float3(-1.2f, 3.6f, -2.8f)); + TestUtils.AreEqual(reflect(float3(0.0f, 0.0f, 0.0f), float3(-1.5f, -1.3f, 3.1f)), float3(0.0f, 0.0f, 0.0f), 8, false); + } + + [TestCompiler] + public static void reflect_float4() + { + TestUtils.AreEqual(reflect(float4(1.2f, 3.6f, -2.8f, 0.3f), float4(1.5f, -1.3f, 3.1f, -0.7f)), float4(36.51f, -27.002f, 70.174f, -16.178f), 8, false); + TestUtils.AreEqual(reflect(float4(-1.2f, 3.6f, -2.8f, 0.3f), float4(-1.5f, -1.3f, 3.1f, -0.7f)), float4(-36.51f, -27.002f, 70.174f, -16.178f), 8, false); + TestUtils.AreEqual(reflect(float4(-1.2f, 3.6f, -2.8f, 0.3f), float4(0.0f, 0.0f, 0.0f, 0.0f)), float4(-1.2f, 3.6f, -2.8f, 0.3f)); + TestUtils.AreEqual(reflect(float4(0.0f, 0.0f, 0.0f, 0.0f), float4(-1.5f, -1.3f, 3.1f, -0.7f)), float4(0.0f, 0.0f, 0.0f, 0.0f), 8, false); + } + + + [TestCompiler] + public static void reflect_double2() + { + TestUtils.AreEqual(reflect(double2(1.2, 3.6), double2(1.5, -1.3)), double2(9.84, -3.888), 8, false); + TestUtils.AreEqual(reflect(double2(-1.2, 3.6), double2(-1.5, -1.3)), double2(-9.84, -3.888), 8, false); + TestUtils.AreEqual(reflect(double2(-1.2, 3.6), double2(0.0, 0.0)), double2(-1.2, 3.6)); + TestUtils.AreEqual(reflect(double2(0.0, 0.0), double2(-1.5, -1.3)), double2(0.0, 0.0), 8, false); + } + + [TestCompiler] + public static void reflect_double3() + { + TestUtils.AreEqual(reflect(double3(1.2, 3.6, -2.8), double3(1.5, -1.3, 3.1)), double3(35.88, -26.456, 68.872), 8, false); + TestUtils.AreEqual(reflect(double3(-1.2, 3.6, -2.8), double3(-1.5, -1.3, 3.1)), double3(-35.88, -26.456, 68.872), 8, false); + TestUtils.AreEqual(reflect(double3(-1.2, 3.6, -2.8), double3(0.0, 0.0, 0.0)), double3(-1.2, 3.6, -2.8)); + TestUtils.AreEqual(reflect(double3(0.0, 0.0, 0.0), double3(-1.5f, -1.3, 3.1)), double3(0.0, 0.0, 0.0), 8, false); + } + + [TestCompiler] + public static void reflect_double4() + { + TestUtils.AreEqual(reflect(double4(1.2, 3.6, -2.8, 0.3), double4(1.5, -1.3, 3.1, -0.7)), double4(36.51, -27.002, 70.174, -16.178), 8, false); + TestUtils.AreEqual(reflect(double4(-1.2, 3.6, -2.8, 0.3), double4(-1.5, -1.3, 3.1, -0.7)), double4(-36.51, -27.002, 70.174, -16.178), 8, false); + TestUtils.AreEqual(reflect(double4(-1.2, 3.6, -2.8, 0.3), double4(0.0, 0.0, 0.0, 0.0)), double4(-1.2, 3.6, -2.8, 0.3)); + TestUtils.AreEqual(reflect(double4(0.0, 0.0, 0.0, 0.0), double4(-1.5, -1.3, 3.1, -0.7)), double4(0.0, 0.0, 0.0, 0.0), 8, false); + } + + + [TestCompiler] + public static void refract_float2() + { + TestUtils.AreEqual(refract(float2(0.316228f, 0.948683f), float2(0.755689f, -0.654931f), 0.5f), float2(-0.3676186f, 0.9299768f), 8, false); + TestUtils.AreEqual(refract(float2(0.316228f, 0.948683f), float2(0.755689f, -0.654931f), 1.05f), float2(0.4523711f, 0.8918296f), 8, false); + TestUtils.AreEqual(refract(float2(0.316228f, 0.948683f), float2(0.755689f, -0.654931f), 1.5f), float2(0.0f, 0.0f)); + } + + [TestCompiler] + public static void refract_float3() + { + TestUtils.AreEqual(refract(float3(0.288375f, 0.865125f, -0.410365f), float3(0.662147f, -0.573861f, 0.481919f), 0.5f), float3(-0.2863437f, 0.8056898f, -0.5185286f), 8, false); + TestUtils.AreEqual(refract(float3(0.288375f, 0.865125f, -0.410365f), float3(0.662147f, -0.573861f, 0.481919f), 1.05f), float3(0.3743219f, 0.8463902f, -0.3788242f), 8, false); + TestUtils.AreEqual(refract(float3(0.288375f, 0.865125f, -0.410365f), float3(0.662147f, -0.573861f, 0.481919f), 1.5f), float3(0.0f, 0.0f, 0.0f)); + } + + [TestCompiler] + public static void refract_float4() + { + TestUtils.AreEqual(refract(float4(0.278154f, 0.834461f, -0.39582f, -0.26388f), float4(0.652208f, -0.565247f, 0.474685f, -0.1726139f), 0.5f), float4(-0.302029191645545f, 0.799522577847971f, -0.518952508802814f, -0.015196476378571f), 16, false); + TestUtils.AreEqual(refract(float4(0.278154f, 0.834461f, -0.39582f, -0.26388f), float4(0.652208f, -0.565247f, 0.474685f, -0.172613f), 1.05f), float4(0.378159678850401f, 0.801565792862319f, -0.352947832589293f, -0.299860642333894f), 16, false); + TestUtils.AreEqual(refract(float4(0.278154f, 0.834461f, -0.39582f, -0.26388f), float4(0.652208f, -0.565247f, 0.474685f, -0.172613f), 1.5f), float4(0.0f, 0.0f, 0.0f, 0.0f)); + } + + + [TestCompiler] + public static void refract_double2() + { + TestUtils.AreEqual(refract(double2(0.316228, 0.948683), double2(0.755689, -0.654931), 0.5), double2(-0.367618540673032, 0.929976739623085), 8, false); + TestUtils.AreEqual(refract(double2(0.316228, 0.948683), double2(0.755689, -0.654931), 1.05), double2(0.452371226326029, 0.891829482258995), 8, false); + TestUtils.AreEqual(refract(double2(0.316228, 0.948683), double2(0.755689, -0.654931), 1.5), double2(0.0, 0.0)); + } + + [TestCompiler] + public static void refract_double3() + { + TestUtils.AreEqual(refract(double3(0.288375, 0.865125, -0.410365), double3(0.662147, -0.573861, 0.481919), 0.5), double3(-0.286343746291412, 0.805689753507206, -0.518528611485079), 8, false); + TestUtils.AreEqual(refract(double3(0.288375, 0.865125, -0.410365), double3(0.662147, -0.573861, 0.481919), 1.05), double3(0.374321889019825, 0.846390167376268, -0.378824161567529), 8, false); + TestUtils.AreEqual(refract(double3(0.288375, 0.865125, -0.410365), double3(0.662147, -0.573861, 0.481919), 1.5), double3(0.0, 0.0, 0.0)); + } + + [TestCompiler] + public static void refract_double4() + { + TestUtils.AreEqual(refract(double4(0.278154, 0.834461, -0.39582, -0.26388), double4(0.652208, -0.565247, 0.474685, -0.1726139), 0.5), double4(-0.302029191645545, 0.799522577847971, -0.518952508802814, -0.015196476378571), 16, false); + TestUtils.AreEqual(refract(double4(0.278154, 0.834461, -0.39582, -0.26388), double4(0.652208, -0.565247, 0.474685, -0.172613), 1.05), double4(0.378159678850401, 0.801565792862319, -0.352947832589293, -0.299860642333894), 16, false); + TestUtils.AreEqual(refract(double4(0.278154, 0.834461, -0.39582, -0.26388), double4(0.652208, -0.565247, 0.474685, -0.172613), 1.5), double4(0.0, 0.0, 0.0, 0.0)); + } + + [TestCompiler] + public static void sincos_float() + { + float s, c; + + sincos(-1000000f, out s, out c); + TestUtils.AreEqual(s, 0.3499935f, 1, false); + TestUtils.AreEqual(c, 0.936752141f, 8, false); + + sincos(-1.2f, out s, out c); + TestUtils.AreEqual(s, -0.9320391f, 1, false); + TestUtils.AreEqual(c, 0.362357765f, 8, false); + + sincos(0f, out s, out c); + TestUtils.AreEqual(s, 0f, 1, false); + TestUtils.AreEqual(c, 1f, 8, false); + + sincos(1.2f, out s, out c); + TestUtils.AreEqual(s, 0.9320391f, 1, false); + TestUtils.AreEqual(c, 0.362357765f, 8, false); + + sincos(1000000f, out s, out c); + TestUtils.AreEqual(s, -0.3499935f, 1, false); + TestUtils.AreEqual(c, 0.936752141f, 8, false); + + sincos(float.NegativeInfinity, out s, out c); + TestUtils.AreEqual(s, float.NaN, 1, false); + TestUtils.AreEqual(c, float.NaN, 8, false); + + sincos(float.NaN, out s, out c); + TestUtils.AreEqual(s, float.NaN, 1, false); + TestUtils.AreEqual(c, float.NaN, 8, false); + + sincos(float.PositiveInfinity, out s, out c); + TestUtils.AreEqual(s, float.NaN, 1, false); + TestUtils.AreEqual(c, float.NaN, 8, false); + } + + + [TestCompiler] + public static void sincos_float2() + { + float2 s, c; + + sincos(float2(-1000000f, -1.2f), out s, out c); + TestUtils.AreEqual(s, float2(0.3499935f, -0.9320391f), 1, false); + TestUtils.AreEqual(c, float2(0.936752141f, 0.362357765f), 8, false); + + sincos(float2(0f, 1.2f), out s, out c); + TestUtils.AreEqual(s, float2(0f, 0.9320391f), 1, false); + TestUtils.AreEqual(c, float2(1f, 0.362357765f), 8, false); + + sincos(float2(1000000f, float.NegativeInfinity), out s, out c); + TestUtils.AreEqual(s, float2(-0.3499935f, float.NaN), 1, false); + TestUtils.AreEqual(c, float2(0.936752141f, float.NaN), 8, false); + + sincos(float2(float.NaN, float.PositiveInfinity), out s, out c); + TestUtils.AreEqual(s, float2(float.NaN, float.NaN), 1, false); + TestUtils.AreEqual(c, float2(float.NaN, float.NaN), 8, false); + } + + [TestCompiler] + public static void sincos_float3() + { + float3 s, c; + + sincos(float3(-1000000f, -1.2f, 0f), out s, out c); + TestUtils.AreEqual(s, float3(0.3499935f, -0.9320391f, 0f), 1, false); + TestUtils.AreEqual(c, float3(0.936752141f, 0.362357765f, 1f), 8, false); + + sincos(float3(1.2f, 1000000f, float.NegativeInfinity), out s, out c); + TestUtils.AreEqual(s, float3(0.9320391f, -0.3499935f, float.NaN), 1, false); + TestUtils.AreEqual(c, float3(0.362357765f, 0.936752141f, float.NaN), 8, false); + + sincos(float3(float.NaN, float.PositiveInfinity, float.PositiveInfinity), out s, out c); + TestUtils.AreEqual(s, float3(float.NaN, float.NaN, float.NaN), 1, false); + TestUtils.AreEqual(c, float3(float.NaN, float.NaN, float.NaN), 8, false); + } + + [TestCompiler] + public static void sincos_float4() + { + float4 s, c; + + sincos(float4(-1000000f, -1.2f, 0f, 1.2f), out s, out c); + TestUtils.AreEqual(s, float4(0.3499935f, -0.9320391f, 0f, 0.9320391f), 1, false); + TestUtils.AreEqual(c, float4(0.936752141f, 0.362357765f, 1f, 0.362357765f), 8, false); + + sincos(float4(1000000f, float.NegativeInfinity, float.NaN, float.PositiveInfinity), out s, out c); + TestUtils.AreEqual(s, float4(-0.3499935f, float.NaN, float.NaN, float.NaN), 1, false); + TestUtils.AreEqual(c, float4(0.936752141f, float.NaN, float.NaN, float.NaN), 8, false); + } + + [TestCompiler] + public static void sincos_double() + { + double s, c; + sincos(-1000000.0, out s, out c); + TestUtils.AreEqual(s, 0.34999350217129294, 32, false); + TestUtils.AreEqual(c, 0.93675212753314474, 32, false); + + sincos(-1.2, out s, out c); + TestUtils.AreEqual(s, -0.9320390859672264, 32, false); + TestUtils.AreEqual(c, 0.36235775447667357, 32, false); + + sincos(0.0, out s, out c); + TestUtils.AreEqual(s, 0.0, 32, false); + TestUtils.AreEqual(c, 1.0, 32, false); + + sincos(1.2, out s, out c); + TestUtils.AreEqual(s, 0.9320390859672264, 32, false); + TestUtils.AreEqual(c, 0.36235775447667357, 32, false); + + sincos(1000000.0, out s, out c); + TestUtils.AreEqual(s, -0.34999350217129294, 32, false); + TestUtils.AreEqual(c, 0.93675212753314474, 32, false); + + sincos(double.NegativeInfinity, out s, out c); + TestUtils.AreEqual(s, double.NaN, 32, false); + TestUtils.AreEqual(c, double.NaN, 32, false); + + sincos(double.NaN, out s, out c); + TestUtils.AreEqual(s, double.NaN, 32, false); + TestUtils.AreEqual(c, double.NaN, 32, false); + + sincos(double.NaN, out s, out c); + TestUtils.AreEqual(s, double.NaN, 32, false); + TestUtils.AreEqual(c, double.NaN, 32, false); + } + + [TestCompiler] + public static void sincos_double2() + { + double2 s, c; + sincos(double2(-1000000.0, -1.2), out s, out c); + TestUtils.AreEqual(s, double2(0.34999350217129294, -0.9320390859672264), 32, false); + TestUtils.AreEqual(c, double2(0.93675212753314474, 0.36235775447667357), 32, false); + + sincos(double2(0.0, 1.2), out s, out c); + TestUtils.AreEqual(s, double2(0.0, 0.9320390859672264), 32, false); + TestUtils.AreEqual(c, double2(1.0, 0.36235775447667357), 32, false); + + sincos(double2(1000000.0, double.NegativeInfinity), out s, out c); + TestUtils.AreEqual(s, double2(-0.34999350217129294, double.NaN), 32, false); + TestUtils.AreEqual(c, double2(0.93675212753314474, double.NaN), 32, false); + + sincos(double2(double.NaN, double.PositiveInfinity), out s, out c); + TestUtils.AreEqual(s, double2(double.NaN, double.NaN), 32, false); + TestUtils.AreEqual(c, double2(double.NaN, double.NaN), 32, false); + } + + [TestCompiler] + public static void sincos_double3() + { + double3 s, c; + + sincos(double3(-1000000.0, -1.2, 0.0), out s, out c); + TestUtils.AreEqual(s, double3(0.34999350217129294, -0.9320390859672264, 0.0), 32, false); + TestUtils.AreEqual(c, double3(0.93675212753314474, 0.36235775447667357, 1.0), 32, false); + + sincos(double3(1.2, 1000000.0, double.NegativeInfinity), out s, out c); + TestUtils.AreEqual(s, double3(0.9320390859672264, -0.34999350217129294, double.NaN), 32, false); + TestUtils.AreEqual(c, double3(0.36235775447667357, 0.93675212753314474, double.NaN), 32, false); + + sincos(double3(double.NaN, double.PositiveInfinity, double.PositiveInfinity), out s, out c); + TestUtils.AreEqual(s, double3(double.NaN, double.NaN, double.NaN), 32, false); + TestUtils.AreEqual(c, double3(double.NaN, double.NaN, double.NaN), 32, false); + } + + [TestCompiler] + public static void sincos_double4() + { + double4 s, c; + + sincos(double4(-1000000.0, -1.2, 0.0, 1.2), out s, out c); + TestUtils.AreEqual(s, double4(0.34999350217129294, -0.9320390859672264, 0.0, 0.9320390859672264), 32, false); + TestUtils.AreEqual(c, double4(0.93675212753314474, 0.36235775447667357, 1.0, 0.36235775447667357), 32, false); + + sincos(double4(1000000.0, double.NegativeInfinity, double.NaN, double.PositiveInfinity), out s, out c); + TestUtils.AreEqual(s, double4(-0.34999350217129294, double.NaN, double.NaN, double.NaN), 32, false); + TestUtils.AreEqual(c, double4(0.93675212753314474, double.NaN, double.NaN, double.NaN), 32, false); + } + + [TestCompiler] + public static void select_int() + { + TestUtils.AreEqual(select(-123456789, 987654321, false), -123456789); + TestUtils.AreEqual(select(-123456789, 987654321, true), 987654321); + } + + [TestCompiler] + public static void select_int2() + { + TestUtils.AreEqual(select(int2(-123456789, -123456790), int2(987654321, 987654322), false), int2(-123456789, -123456790)); + TestUtils.AreEqual(select(int2(-123456789, -123456790), int2(987654321, 987654322), true), int2(987654321, 987654322)); + + TestUtils.AreEqual(select(int2(-123456789, -123456790), int2(987654321, 987654322), bool2(false, false)), int2(-123456789, -123456790)); + TestUtils.AreEqual(select(int2(-123456789, -123456790), int2(987654321, 987654322), bool2(false, true)), int2(-123456789, 987654322)); + TestUtils.AreEqual(select(int2(-123456789, -123456790), int2(987654321, 987654322), bool2(true, false)), int2(987654321, -123456790)); + TestUtils.AreEqual(select(int2(-123456789, -123456790), int2(987654321, 987654322), bool2(true, true)), int2(987654321, 987654322)); + } + + [TestCompiler] + public static void select_int3() + { + TestUtils.AreEqual(select(int3(-123456789, -123456790, -123456791), int3(987654321, 987654322, 987654323), false), int3(-123456789, -123456790, -123456791)); + TestUtils.AreEqual(select(int3(-123456789, -123456790, -123456791), int3(987654321, 987654322, 987654323), true), int3(987654321, 987654322, 987654323)); + + TestUtils.AreEqual(select(int3(-123456789, -123456790, -123456791), int3(987654321, 987654322, 987654323), bool3(false, false, false)), int3(-123456789, -123456790, -123456791)); + TestUtils.AreEqual(select(int3(-123456789, -123456790, -123456791), int3(987654321, 987654322, 987654323), bool3(false, false, true)), int3(-123456789, -123456790, 987654323)); + TestUtils.AreEqual(select(int3(-123456789, -123456790, -123456791), int3(987654321, 987654322, 987654323), bool3(false, true, false)), int3(-123456789, 987654322, -123456791)); + TestUtils.AreEqual(select(int3(-123456789, -123456790, -123456791), int3(987654321, 987654322, 987654323), bool3(false, true, true)), int3(-123456789, 987654322, 987654323)); + + TestUtils.AreEqual(select(int3(-123456789, -123456790, -123456791), int3(987654321, 987654322, 987654323), bool3(true, false, false)), int3(987654321, -123456790, -123456791)); + TestUtils.AreEqual(select(int3(-123456789, -123456790, -123456791), int3(987654321, 987654322, 987654323), bool3(true, false, true)), int3(987654321, -123456790, 987654323)); + TestUtils.AreEqual(select(int3(-123456789, -123456790, -123456791), int3(987654321, 987654322, 987654323), bool3(true, true, false)), int3(987654321, 987654322, -123456791)); + TestUtils.AreEqual(select(int3(-123456789, -123456790, -123456791), int3(987654321, 987654322, 987654323), bool3(true, true, true)), int3(987654321, 987654322, 987654323)); + } + + [TestCompiler] + public static void select_int4() + { + TestUtils.AreEqual(select(int4(-123456789, -123456790, -123456791, -123456792), int4(987654321, 987654322, 987654323, 987654324), false), int4(-123456789, -123456790, -123456791, -123456792)); + TestUtils.AreEqual(select(int4(-123456789, -123456790, -123456791, -123456792), int4(987654321, 987654322, 987654323, 987654324), true), int4(987654321, 987654322, 987654323, 987654324)); + + TestUtils.AreEqual(select(int4(-123456789, -123456790, -123456791, -123456792), int4(987654321, 987654322, 987654323, 987654324), bool4(false, false, false, false)), int4(-123456789, -123456790, -123456791, -123456792)); + TestUtils.AreEqual(select(int4(-123456789, -123456790, -123456791, -123456792), int4(987654321, 987654322, 987654323, 987654324), bool4(false, false, false, true)), int4(-123456789, -123456790, -123456791, 987654324)); + TestUtils.AreEqual(select(int4(-123456789, -123456790, -123456791, -123456792), int4(987654321, 987654322, 987654323, 987654324), bool4(false, false, true, false)), int4(-123456789, -123456790, 987654323, -123456792)); + TestUtils.AreEqual(select(int4(-123456789, -123456790, -123456791, -123456792), int4(987654321, 987654322, 987654323, 987654324), bool4(false, false, true, true)), int4(-123456789, -123456790, 987654323, 987654324)); + + TestUtils.AreEqual(select(int4(-123456789, -123456790, -123456791, -123456792), int4(987654321, 987654322, 987654323, 987654324), bool4(false, true, false, false)), int4(-123456789, 987654322, -123456791, -123456792)); + TestUtils.AreEqual(select(int4(-123456789, -123456790, -123456791, -123456792), int4(987654321, 987654322, 987654323, 987654324), bool4(false, true, false, true)), int4(-123456789, 987654322, -123456791, 987654324)); + TestUtils.AreEqual(select(int4(-123456789, -123456790, -123456791, -123456792), int4(987654321, 987654322, 987654323, 987654324), bool4(false, true, true, false)), int4(-123456789, 987654322, 987654323, -123456792)); + TestUtils.AreEqual(select(int4(-123456789, -123456790, -123456791, -123456792), int4(987654321, 987654322, 987654323, 987654324), bool4(false, true, true, true)), int4(-123456789, 987654322, 987654323, 987654324)); + + TestUtils.AreEqual(select(int4(-123456789, -123456790, -123456791, -123456792), int4(987654321, 987654322, 987654323, 987654324), bool4(true, false, false, false)), int4(987654321, -123456790, -123456791, -123456792)); + TestUtils.AreEqual(select(int4(-123456789, -123456790, -123456791, -123456792), int4(987654321, 987654322, 987654323, 987654324), bool4(true, false, false, true)), int4(987654321, -123456790, -123456791, 987654324)); + TestUtils.AreEqual(select(int4(-123456789, -123456790, -123456791, -123456792), int4(987654321, 987654322, 987654323, 987654324), bool4(true, false, true, false)), int4(987654321, -123456790, 987654323, -123456792)); + TestUtils.AreEqual(select(int4(-123456789, -123456790, -123456791, -123456792), int4(987654321, 987654322, 987654323, 987654324), bool4(true, false, true, true)), int4(987654321, -123456790, 987654323, 987654324)); + + TestUtils.AreEqual(select(int4(-123456789, -123456790, -123456791, -123456792), int4(987654321, 987654322, 987654323, 987654324), bool4(true, true, false, false)), int4(987654321, 987654322, -123456791, -123456792)); + TestUtils.AreEqual(select(int4(-123456789, -123456790, -123456791, -123456792), int4(987654321, 987654322, 987654323, 987654324), bool4(true, true, false, true)), int4(987654321, 987654322, -123456791, 987654324)); + TestUtils.AreEqual(select(int4(-123456789, -123456790, -123456791, -123456792), int4(987654321, 987654322, 987654323, 987654324), bool4(true, true, true, false)), int4(987654321, 987654322, 987654323, -123456792)); + TestUtils.AreEqual(select(int4(-123456789, -123456790, -123456791, -123456792), int4(987654321, 987654322, 987654323, 987654324), bool4(true, true, true, true)), int4(987654321, 987654322, 987654323, 987654324)); + } + + [TestCompiler] + public static void select_uint() + { + TestUtils.AreEqual(select(123456789u, 987654321u, false), 123456789u); + TestUtils.AreEqual(select(123456789u, 987654321u, true), 987654321u); + } + + [TestCompiler] + public static void select_uint2() + { + TestUtils.AreEqual(select(uint2(123456789u, 123456790u), uint2(987654321u, 987654322u), false), uint2(123456789u, 123456790u)); + TestUtils.AreEqual(select(uint2(123456789u, 123456790u), uint2(987654321u, 987654322u), true), uint2(987654321u, 987654322)); + + TestUtils.AreEqual(select(uint2(123456789u, 123456790u), uint2(987654321u, 987654322u), bool2(false, false)), uint2(123456789u, 123456790u)); + TestUtils.AreEqual(select(uint2(123456789u, 123456790u), uint2(987654321u, 987654322u), bool2(false, true)), uint2(123456789u, 987654322u)); + TestUtils.AreEqual(select(uint2(123456789u, 123456790u), uint2(987654321u, 987654322u), bool2(true, false)), uint2(987654321u, 123456790u)); + TestUtils.AreEqual(select(uint2(123456789u, 123456790u), uint2(987654321u, 987654322u), bool2(true, true)), uint2(987654321u, 987654322u)); + } + + [TestCompiler] + public static void select_uint3() + { + TestUtils.AreEqual(select(uint3(123456789u, 123456790u, 123456791u), uint3(987654321u, 987654322u, 987654323u), false), uint3(123456789u, 123456790u, 123456791u)); + TestUtils.AreEqual(select(uint3(123456789u, 123456790u, 123456791u), uint3(987654321u, 987654322u, 987654323u), true), uint3(987654321u, 987654322u, 987654323)); + + TestUtils.AreEqual(select(uint3(123456789u, 123456790u, 123456791u), uint3(987654321u, 987654322u, 987654323u), bool3(false, false, false)), uint3(123456789u, 123456790u, 123456791u)); + TestUtils.AreEqual(select(uint3(123456789u, 123456790u, 123456791u), uint3(987654321u, 987654322u, 987654323u), bool3(false, false, true)), uint3(123456789u, 123456790u, 987654323u)); + TestUtils.AreEqual(select(uint3(123456789u, 123456790u, 123456791u), uint3(987654321u, 987654322u, 987654323u), bool3(false, true, false)), uint3(123456789u, 987654322u, 123456791u)); + TestUtils.AreEqual(select(uint3(123456789u, 123456790u, 123456791u), uint3(987654321u, 987654322u, 987654323u), bool3(false, true, true)), uint3(123456789u, 987654322u, 987654323u)); + + TestUtils.AreEqual(select(uint3(123456789u, 123456790u, 123456791u), uint3(987654321u, 987654322u, 987654323u), bool3(true, false, false)), uint3(987654321u, 123456790u, 123456791u)); + TestUtils.AreEqual(select(uint3(123456789u, 123456790u, 123456791u), uint3(987654321u, 987654322u, 987654323u), bool3(true, false, true)), uint3(987654321u, 123456790u, 987654323u)); + TestUtils.AreEqual(select(uint3(123456789u, 123456790u, 123456791u), uint3(987654321u, 987654322u, 987654323u), bool3(true, true, false)), uint3(987654321u, 987654322u, 123456791u)); + TestUtils.AreEqual(select(uint3(123456789u, 123456790u, 123456791u), uint3(987654321u, 987654322u, 987654323u), bool3(true, true, true)), uint3(987654321u, 987654322u, 987654323u)); + } + + [TestCompiler] + public static void select_uint4() + { + TestUtils.AreEqual(select(uint4(123456789u, 123456790u, 123456791u, 123456792u), uint4(987654321u, 987654322u, 987654323u, 987654324u), false), uint4(123456789u, 123456790u, 123456791u, 123456792u)); + TestUtils.AreEqual(select(uint4(123456789u, 123456790u, 123456791u, 123456792u), uint4(987654321u, 987654322u, 987654323u, 987654324u), true), uint4(987654321u, 987654322u, 987654323u, 987654324u)); + + TestUtils.AreEqual(select(uint4(123456789u, 123456790u, 123456791u, 123456792u), uint4(987654321u, 987654322u, 987654323u, 987654324u), bool4(false, false, false, false)), uint4(123456789u, 123456790u, 123456791u, 123456792u)); + TestUtils.AreEqual(select(uint4(123456789u, 123456790u, 123456791u, 123456792u), uint4(987654321u, 987654322u, 987654323u, 987654324u), bool4(false, false, false, true)), uint4(123456789u, 123456790u, 123456791u, 987654324u)); + TestUtils.AreEqual(select(uint4(123456789u, 123456790u, 123456791u, 123456792u), uint4(987654321u, 987654322u, 987654323u, 987654324u), bool4(false, false, true, false)), uint4(123456789u, 123456790u, 987654323u, 123456792u)); + TestUtils.AreEqual(select(uint4(123456789u, 123456790u, 123456791u, 123456792u), uint4(987654321u, 987654322u, 987654323u, 987654324u), bool4(false, false, true, true)), uint4(123456789u, 123456790u, 987654323u, 987654324u)); + + TestUtils.AreEqual(select(uint4(123456789u, 123456790u, 123456791u, 123456792u), uint4(987654321u, 987654322u, 987654323u, 987654324u), bool4(false, true, false, false)), uint4(123456789u, 987654322u, 123456791u, 123456792u)); + TestUtils.AreEqual(select(uint4(123456789u, 123456790u, 123456791u, 123456792u), uint4(987654321u, 987654322u, 987654323u, 987654324u), bool4(false, true, false, true)), uint4(123456789u, 987654322u, 123456791u, 987654324u)); + TestUtils.AreEqual(select(uint4(123456789u, 123456790u, 123456791u, 123456792u), uint4(987654321u, 987654322u, 987654323u, 987654324u), bool4(false, true, true, false)), uint4(123456789u, 987654322u, 987654323u, 123456792u)); + TestUtils.AreEqual(select(uint4(123456789u, 123456790u, 123456791u, 123456792u), uint4(987654321u, 987654322u, 987654323u, 987654324u), bool4(false, true, true, true)), uint4(123456789u, 987654322u, 987654323u, 987654324u)); + + TestUtils.AreEqual(select(uint4(123456789u, 123456790u, 123456791u, 123456792u), uint4(987654321u, 987654322u, 987654323u, 987654324u), bool4(true, false, false, false)), uint4(987654321u, 123456790u, 123456791u, 123456792u)); + TestUtils.AreEqual(select(uint4(123456789u, 123456790u, 123456791u, 123456792u), uint4(987654321u, 987654322u, 987654323u, 987654324u), bool4(true, false, false, true)), uint4(987654321u, 123456790u, 123456791u, 987654324u)); + TestUtils.AreEqual(select(uint4(123456789u, 123456790u, 123456791u, 123456792u), uint4(987654321u, 987654322u, 987654323u, 987654324u), bool4(true, false, true, false)), uint4(987654321u, 123456790u, 987654323u, 123456792u)); + TestUtils.AreEqual(select(uint4(123456789u, 123456790u, 123456791u, 123456792u), uint4(987654321u, 987654322u, 987654323u, 987654324u), bool4(true, false, true, true)), uint4(987654321u, 123456790u, 987654323u, 987654324u)); + + TestUtils.AreEqual(select(uint4(123456789u, 123456790u, 123456791u, 123456792u), uint4(987654321u, 987654322u, 987654323u, 987654324u), bool4(true, true, false, false)), uint4(987654321u, 987654322u, 123456791u, 123456792u)); + TestUtils.AreEqual(select(uint4(123456789u, 123456790u, 123456791u, 123456792u), uint4(987654321u, 987654322u, 987654323u, 987654324u), bool4(true, true, false, true)), uint4(987654321u, 987654322u, 123456791u, 987654324u)); + TestUtils.AreEqual(select(uint4(123456789u, 123456790u, 123456791u, 123456792u), uint4(987654321u, 987654322u, 987654323u, 987654324u), bool4(true, true, true, false)), uint4(987654321u, 987654322u, 987654323u, 123456792u)); + TestUtils.AreEqual(select(uint4(123456789u, 123456790u, 123456791u, 123456792u), uint4(987654321u, 987654322u, 987654323u, 987654324u), bool4(true, true, true, true)), uint4(987654321u, 987654322u, 987654323u, 987654324u)); + } + + [TestCompiler] + public static void select_long() + { + TestUtils.AreEqual(select(-12345678910111314L, 987654321011121314L, false), -12345678910111314L); + TestUtils.AreEqual(select(-12345678910111314L, 987654321011121314L, true), 987654321011121314L); + } + + [TestCompiler] + public static void select_ulong() + { + TestUtils.AreEqual(select(12345678910111314UL, 987654321011121314UL, false), 12345678910111314UL); + TestUtils.AreEqual(select(12345678910111314UL, 987654321011121314UL, true), 987654321011121314UL); + } + + + [TestCompiler] + public static void select_float() + { + TestUtils.AreEqual(select(-1234.5f, 9876.25f, false), -1234.5f); + TestUtils.AreEqual(select(-1234.5f, 9876.25f, true), 9876.25f); + } + + [TestCompiler] + public static void select_float2() + { + TestUtils.AreEqual(select(float2(-1234.5f, -1235.5f), float2(9876.25f, 9877.25f), false), float2(-1234.5f, -1235.5f)); + TestUtils.AreEqual(select(float2(-1234.5f, -1235.5f), float2(9876.25f, 9877.25f), true), float2(9876.25f, 9877.25f)); + + TestUtils.AreEqual(select(float2(-1234.5f, -1235.5f), float2(9876.25f, 9877.25f), bool2(false, false)), float2(-1234.5f, -1235.5f)); + TestUtils.AreEqual(select(float2(-1234.5f, -1235.5f), float2(9876.25f, 9877.25f), bool2(false, true)), float2(-1234.5f, 9877.25f)); + TestUtils.AreEqual(select(float2(-1234.5f, -1235.5f), float2(9876.25f, 9877.25f), bool2(true, false)), float2(9876.25f, -1235.5f)); + TestUtils.AreEqual(select(float2(-1234.5f, -1235.5f), float2(9876.25f, 9877.25f), bool2(true, true)), float2(9876.25f, 9877.25f)); + } + + [TestCompiler] + public static void select_float3() + { + TestUtils.AreEqual(select(float3(-1234.5f, -1235.5f, -1236.5f), float3(9876.25f, 9877.25f, 9878.25f), false), float3(-1234.5f, -1235.5f, -1236.5f)); + TestUtils.AreEqual(select(float3(-1234.5f, -1235.5f, -1236.5f), float3(9876.25f, 9877.25f, 9878.25f), true), float3(9876.25f, 9877.25f, 9878.25f)); + + TestUtils.AreEqual(select(float3(-1234.5f, -1235.5f, -1236.5f), float3(9876.25f, 9877.25f, 9878.25f), bool3(false, false, false)), float3(-1234.5f, -1235.5f, -1236.5f)); + TestUtils.AreEqual(select(float3(-1234.5f, -1235.5f, -1236.5f), float3(9876.25f, 9877.25f, 9878.25f), bool3(false, false, true)), float3(-1234.5f, -1235.5f, 9878.25f)); + TestUtils.AreEqual(select(float3(-1234.5f, -1235.5f, -1236.5f), float3(9876.25f, 9877.25f, 9878.25f), bool3(false, true, false)), float3(-1234.5f, 9877.25f, -1236.5f)); + TestUtils.AreEqual(select(float3(-1234.5f, -1235.5f, -1236.5f), float3(9876.25f, 9877.25f, 9878.25f), bool3(false, true, true)), float3(-1234.5f, 9877.25f, 9878.25f)); + + TestUtils.AreEqual(select(float3(-1234.5f, -1235.5f, -1236.5f), float3(9876.25f, 9877.25f, 9878.25f), bool3(true, false, false)), float3(9876.25f, -1235.5f, -1236.5f)); + TestUtils.AreEqual(select(float3(-1234.5f, -1235.5f, -1236.5f), float3(9876.25f, 9877.25f, 9878.25f), bool3(true, false, true)), float3(9876.25f, -1235.5f, 9878.25f)); + TestUtils.AreEqual(select(float3(-1234.5f, -1235.5f, -1236.5f), float3(9876.25f, 9877.25f, 9878.25f), bool3(true, true, false)), float3(9876.25f, 9877.25f, -1236.5f)); + TestUtils.AreEqual(select(float3(-1234.5f, -1235.5f, -1236.5f), float3(9876.25f, 9877.25f, 9878.25f), bool3(true, true, true)), float3(9876.25f, 9877.25f, 9878.25f)); + } + + [TestCompiler] + public static void select_float4() + { + TestUtils.AreEqual(select(float4(-1234.5f, -1235.5f, -1236.5f, -1237.5f), float4(9876.25f, 9877.25f, 9878.25f, 9879.25f), false), float4(-1234.5f, -1235.5f, -1236.5f, -1237.5f)); + TestUtils.AreEqual(select(float4(-1234.5f, -1235.5f, -1236.5f, -1237.5f), float4(9876.25f, 9877.25f, 9878.25f, 9879.25f), true), float4(9876.25f, 9877.25f, 9878.25f, 9879.25f)); + + TestUtils.AreEqual(select(float4(-1234.5f, -1235.5f, -1236.5f, -1237.5f), float4(9876.25f, 9877.25f, 9878.25f, 9879.25f), bool4(false, false, false, false)), float4(-1234.5f, -1235.5f, -1236.5f, -1237.5f)); + TestUtils.AreEqual(select(float4(-1234.5f, -1235.5f, -1236.5f, -1237.5f), float4(9876.25f, 9877.25f, 9878.25f, 9879.25f), bool4(false, false, false, true)), float4(-1234.5f, -1235.5f, -1236.5f, 9879.25f)); + TestUtils.AreEqual(select(float4(-1234.5f, -1235.5f, -1236.5f, -1237.5f), float4(9876.25f, 9877.25f, 9878.25f, 9879.25f), bool4(false, false, true, false)), float4(-1234.5f, -1235.5f, 9878.25f, -1237.5f)); + TestUtils.AreEqual(select(float4(-1234.5f, -1235.5f, -1236.5f, -1237.5f), float4(9876.25f, 9877.25f, 9878.25f, 9879.25f), bool4(false, false, true, true)), float4(-1234.5f, -1235.5f, 9878.25f, 9879.25f)); + + TestUtils.AreEqual(select(float4(-1234.5f, -1235.5f, -1236.5f, -1237.5f), float4(9876.25f, 9877.25f, 9878.25f, 9879.25f), bool4(false, true, false, false)), float4(-1234.5f, 9877.25f, -1236.5f, -1237.5f)); + TestUtils.AreEqual(select(float4(-1234.5f, -1235.5f, -1236.5f, -1237.5f), float4(9876.25f, 9877.25f, 9878.25f, 9879.25f), bool4(false, true, false, true)), float4(-1234.5f, 9877.25f, -1236.5f, 9879.25f)); + TestUtils.AreEqual(select(float4(-1234.5f, -1235.5f, -1236.5f, -1237.5f), float4(9876.25f, 9877.25f, 9878.25f, 9879.25f), bool4(false, true, true, false)), float4(-1234.5f, 9877.25f, 9878.25f, -1237.5f)); + TestUtils.AreEqual(select(float4(-1234.5f, -1235.5f, -1236.5f, -1237.5f), float4(9876.25f, 9877.25f, 9878.25f, 9879.25f), bool4(false, true, true, true)), float4(-1234.5f, 9877.25f, 9878.25f, 9879.25f)); + + TestUtils.AreEqual(select(float4(-1234.5f, -1235.5f, -1236.5f, -1237.5f), float4(9876.25f, 9877.25f, 9878.25f, 9879.25f), bool4(true, false, false, false)), float4(9876.25f, -1235.5f, -1236.5f, -1237.5f)); + TestUtils.AreEqual(select(float4(-1234.5f, -1235.5f, -1236.5f, -1237.5f), float4(9876.25f, 9877.25f, 9878.25f, 9879.25f), bool4(true, false, false, true)), float4(9876.25f, -1235.5f, -1236.5f, 9879.25f)); + TestUtils.AreEqual(select(float4(-1234.5f, -1235.5f, -1236.5f, -1237.5f), float4(9876.25f, 9877.25f, 9878.25f, 9879.25f), bool4(true, false, true, false)), float4(9876.25f, -1235.5f, 9878.25f, -1237.5f)); + TestUtils.AreEqual(select(float4(-1234.5f, -1235.5f, -1236.5f, -1237.5f), float4(9876.25f, 9877.25f, 9878.25f, 9879.25f), bool4(true, false, true, true)), float4(9876.25f, -1235.5f, 9878.25f, 9879.25f)); + + TestUtils.AreEqual(select(float4(-1234.5f, -1235.5f, -1236.5f, -1237.5f), float4(9876.25f, 9877.25f, 9878.25f, 9879.25f), bool4(true, true, false, false)), float4(9876.25f, 9877.25f, -1236.5f, -1237.5f)); + TestUtils.AreEqual(select(float4(-1234.5f, -1235.5f, -1236.5f, -1237.5f), float4(9876.25f, 9877.25f, 9878.25f, 9879.25f), bool4(true, true, false, true)), float4(9876.25f, 9877.25f, -1236.5f, 9879.25f)); + TestUtils.AreEqual(select(float4(-1234.5f, -1235.5f, -1236.5f, -1237.5f), float4(9876.25f, 9877.25f, 9878.25f, 9879.25f), bool4(true, true, true, false)), float4(9876.25f, 9877.25f, 9878.25f, -1237.5f)); + TestUtils.AreEqual(select(float4(-1234.5f, -1235.5f, -1236.5f, -1237.5f), float4(9876.25f, 9877.25f, 9878.25f, 9879.25f), bool4(true, true, true, true)), float4(9876.25f, 9877.25f, 9878.25f, 9879.25f)); + } + + + [TestCompiler] + public static void select_double() + { + TestUtils.AreEqual(select(-1234.5, 9876.25, false), -1234.5); + TestUtils.AreEqual(select(-1234.5, 9876.25, true), 9876.25); + } + + [TestCompiler] + public static void select_double2() + { + TestUtils.AreEqual(select(double2(-1234.5, -1235.5), double2(9876.25, 9877.25), false), double2(-1234.5, -1235.5)); + TestUtils.AreEqual(select(double2(-1234.5, -1235.5), double2(9876.25, 9877.25), true), double2(9876.25, 9877.25)); + + TestUtils.AreEqual(select(double2(-1234.5, -1235.5), double2(9876.25, 9877.25), bool2(false, false)), double2(-1234.5, -1235.5)); + TestUtils.AreEqual(select(double2(-1234.5, -1235.5), double2(9876.25, 9877.25), bool2(false, true)), double2(-1234.5, 9877.25)); + TestUtils.AreEqual(select(double2(-1234.5, -1235.5), double2(9876.25, 9877.25), bool2(true, false)), double2(9876.25, -1235.5)); + TestUtils.AreEqual(select(double2(-1234.5, -1235.5), double2(9876.25, 9877.25), bool2(true, true)), double2(9876.25, 9877.25)); + } + + [TestCompiler] + public static void select_double3() + { + TestUtils.AreEqual(select(double3(-1234.5, -1235.5, -1236.5), double3(9876.25, 9877.25, 9878.25), false), double3(-1234.5, -1235.5, -1236.5)); + TestUtils.AreEqual(select(double3(-1234.5, -1235.5, -1236.5), double3(9876.25, 9877.25, 9878.25), true), double3(9876.25, 9877.25, 9878.25)); + + TestUtils.AreEqual(select(double3(-1234.5, -1235.5, -1236.5), double3(9876.25, 9877.25, 9878.25), bool3(false, false, false)), double3(-1234.5, -1235.5, -1236.5)); + TestUtils.AreEqual(select(double3(-1234.5, -1235.5, -1236.5), double3(9876.25, 9877.25, 9878.25), bool3(false, false, true)), double3(-1234.5, -1235.5, 9878.25)); + TestUtils.AreEqual(select(double3(-1234.5, -1235.5, -1236.5), double3(9876.25, 9877.25, 9878.25), bool3(false, true, false)), double3(-1234.5, 9877.25, -1236.5)); + TestUtils.AreEqual(select(double3(-1234.5, -1235.5, -1236.5), double3(9876.25, 9877.25, 9878.25), bool3(false, true, true)), double3(-1234.5, 9877.25, 9878.25)); + + TestUtils.AreEqual(select(double3(-1234.5, -1235.5, -1236.5), double3(9876.25, 9877.25, 9878.25), bool3(true, false, false)), double3(9876.25, -1235.5, -1236.5)); + TestUtils.AreEqual(select(double3(-1234.5, -1235.5, -1236.5), double3(9876.25, 9877.25, 9878.25), bool3(true, false, true)), double3(9876.25, -1235.5, 9878.25)); + TestUtils.AreEqual(select(double3(-1234.5, -1235.5, -1236.5), double3(9876.25, 9877.25, 9878.25), bool3(true, true, false)), double3(9876.25, 9877.25, -1236.5)); + TestUtils.AreEqual(select(double3(-1234.5, -1235.5, -1236.5), double3(9876.25, 9877.25, 9878.25), bool3(true, true, true)), double3(9876.25, 9877.25, 9878.25)); + } + + [TestCompiler] + public static void select_double4() + { + TestUtils.AreEqual(select(double4(-1234.5, -1235.5, -1236.5, -1237.5), double4(9876.25, 9877.25, 9878.25, 9879.25), false), double4(-1234.5, -1235.5, -1236.5, -1237.5)); + TestUtils.AreEqual(select(double4(-1234.5, -1235.5, -1236.5, -1237.5), double4(9876.25, 9877.25, 9878.25, 9879.25), true), double4(9876.25, 9877.25, 9878.25, 9879.25)); + + TestUtils.AreEqual(select(double4(-1234.5, -1235.5, -1236.5, -1237.5), double4(9876.25, 9877.25, 9878.25, 9879.25), bool4(false, false, false, false)), double4(-1234.5, -1235.5, -1236.5, -1237.5)); + TestUtils.AreEqual(select(double4(-1234.5, -1235.5, -1236.5, -1237.5), double4(9876.25, 9877.25, 9878.25, 9879.25), bool4(false, false, false, true)), double4(-1234.5, -1235.5, -1236.5, 9879.25)); + TestUtils.AreEqual(select(double4(-1234.5, -1235.5, -1236.5, -1237.5), double4(9876.25, 9877.25, 9878.25, 9879.25), bool4(false, false, true, false)), double4(-1234.5, -1235.5, 9878.25, -1237.5)); + TestUtils.AreEqual(select(double4(-1234.5, -1235.5, -1236.5, -1237.5), double4(9876.25, 9877.25, 9878.25, 9879.25), bool4(false, false, true, true)), double4(-1234.5, -1235.5, 9878.25, 9879.25)); + + TestUtils.AreEqual(select(double4(-1234.5, -1235.5, -1236.5, -1237.5), double4(9876.25, 9877.25, 9878.25, 9879.25), bool4(false, true, false, false)), double4(-1234.5, 9877.25, -1236.5, -1237.5)); + TestUtils.AreEqual(select(double4(-1234.5, -1235.5, -1236.5, -1237.5), double4(9876.25, 9877.25, 9878.25, 9879.25), bool4(false, true, false, true)), double4(-1234.5, 9877.25, -1236.5, 9879.25)); + TestUtils.AreEqual(select(double4(-1234.5, -1235.5, -1236.5, -1237.5), double4(9876.25, 9877.25, 9878.25, 9879.25), bool4(false, true, true, false)), double4(-1234.5, 9877.25, 9878.25, -1237.5)); + TestUtils.AreEqual(select(double4(-1234.5, -1235.5, -1236.5, -1237.5), double4(9876.25, 9877.25, 9878.25, 9879.25), bool4(false, true, true, true)), double4(-1234.5, 9877.25, 9878.25, 9879.25)); + + TestUtils.AreEqual(select(double4(-1234.5, -1235.5, -1236.5, -1237.5), double4(9876.25, 9877.25, 9878.25, 9879.25), bool4(true, false, false, false)), double4(9876.25, -1235.5, -1236.5, -1237.5)); + TestUtils.AreEqual(select(double4(-1234.5, -1235.5, -1236.5, -1237.5), double4(9876.25, 9877.25, 9878.25, 9879.25), bool4(true, false, false, true)), double4(9876.25, -1235.5, -1236.5, 9879.25)); + TestUtils.AreEqual(select(double4(-1234.5, -1235.5, -1236.5, -1237.5), double4(9876.25, 9877.25, 9878.25, 9879.25), bool4(true, false, true, false)), double4(9876.25, -1235.5, 9878.25, -1237.5)); + TestUtils.AreEqual(select(double4(-1234.5, -1235.5, -1236.5, -1237.5), double4(9876.25, 9877.25, 9878.25, 9879.25), bool4(true, false, true, true)), double4(9876.25, -1235.5, 9878.25, 9879.25)); + + TestUtils.AreEqual(select(double4(-1234.5, -1235.5, -1236.5, -1237.5), double4(9876.25, 9877.25, 9878.25, 9879.25), bool4(true, true, false, false)), double4(9876.25, 9877.25, -1236.5, -1237.5)); + TestUtils.AreEqual(select(double4(-1234.5, -1235.5, -1236.5, -1237.5), double4(9876.25, 9877.25, 9878.25, 9879.25), bool4(true, true, false, true)), double4(9876.25, 9877.25, -1236.5, 9879.25)); + TestUtils.AreEqual(select(double4(-1234.5, -1235.5, -1236.5, -1237.5), double4(9876.25, 9877.25, 9878.25, 9879.25), bool4(true, true, true, false)), double4(9876.25, 9877.25, 9878.25, -1237.5)); + TestUtils.AreEqual(select(double4(-1234.5, -1235.5, -1236.5, -1237.5), double4(9876.25, 9877.25, 9878.25, 9879.25), bool4(true, true, true, true)), double4(9876.25, 9877.25, 9878.25, 9879.25)); + } + + + [TestCompiler] + public static void dot_int() + { + TestUtils.AreEqual(dot(7, 19), 133); + TestUtils.AreEqual(dot(-7, 19), -133); + TestUtils.AreEqual(dot(61031, 41312), -1773654624); + TestUtils.AreEqual(dot(61031, 81312), 667585376); + } + + [TestCompiler] + public static void dot_int2() + { + TestUtils.AreEqual(dot(int2(7, 9), int2(19, 21)), 322); + TestUtils.AreEqual(dot(int2(-7, 9), int2(19, -21)), -322); + TestUtils.AreEqual(dot(int2(61031, 12534), int2(41312, 5312)), -1707074016); + TestUtils.AreEqual(dot(int2(61031, -12534), int2(-41312, -5312)), 1840235232); + } + + [TestCompiler] + public static void dot_int3() + { + TestUtils.AreEqual(dot(int3(7, 9, 13), int3(19, 21, 20)), 582); + TestUtils.AreEqual(dot(int3(-7, 9, 13), int3(19, -21, -20)), -582); + TestUtils.AreEqual(dot(int3(61031, 12534, 9211), int3(41312, 5312, 22123)), -1503299063); + TestUtils.AreEqual(dot(int3(61031, -12534, 9211), int3(-41312, -5312, -22123)), 1636460279); + } + + [TestCompiler] + public static void dot_int4() + { + TestUtils.AreEqual(dot(int4(7, 9, 13, 17), int4(19, 21, 20, 24)), 990); + TestUtils.AreEqual(dot(int4(-7, 9, 13, -17), int4(19, -21, -20, 24)), -990); + TestUtils.AreEqual(dot(int4(61031, 12534, 9211, 33122), int4(41312, 5312, 22123, 65423)), 663641543); + TestUtils.AreEqual(dot(int4(61031, -12534, 9211, 33122), int4(-41312, -5312, -22123, 65423)), -491566411); + } + + + [TestCompiler] + public static void dot_uint() + { + TestUtils.AreEqual(dot(7u, 19u), 133u); + TestUtils.AreEqual(dot(61031u, 81312u), 667585376u); + } + + [TestCompiler] + public static void dot_uint2() + { + TestUtils.AreEqual(dot(uint2(7u, 9u), uint2(19u, 21u)), 322); + TestUtils.AreEqual(dot(uint2(61031u, 12534u), uint2(81312u, 5312u)), 734165984u); + } + + [TestCompiler] + public static void dot_uint3() + { + TestUtils.AreEqual(dot(uint3(7u, 9u, 13u), uint3(19u, 21u, 20u)), 582u); + TestUtils.AreEqual(dot(uint3(61031u, 12534u, 9211u), uint3(81312u, 5312u, 22123u)), 937940937u); + } + + [TestCompiler] + public static void dot_uint4() + { + TestUtils.AreEqual(dot(uint4(7u, 9u, 13u, 17u), uint4(19u, 21u, 20u, 24u)), 990u); + TestUtils.AreEqual(dot(uint4(61031u, 12534u, 9211u, 33122u), uint4(81312u, 5312u, 22123u, 65423u)), 3104881543u); + } + + + [TestCompiler] + public static void dot_float() + { + TestUtils.AreEqual(dot(1.2f, 6.1f), 7.32f, 1, false); + TestUtils.AreEqual(dot(1.2f, -6.1f), -7.32f, 1, false); + TestUtils.AreEqual(dot(1.2e19f, 6.1e18f), 7.32e37f, 1, false); + TestUtils.AreEqual(dot(-1.2e19f, 6.1e18f), -7.32e37f, 1, false); + TestUtils.AreEqual(dot(1.2e19f, 6.1e19f), float.PositiveInfinity, 0, false); + TestUtils.AreEqual(dot(1.2e19f, -6.1e19f), float.NegativeInfinity, 0, false); + } + + [TestCompiler] + public static void dot_float2() + { + TestUtils.AreEqual(dot(float2(1.2f, 5.5f), float2(6.1f, 9.2f)), 57.92f, 1, false); + TestUtils.AreEqual(dot(float2(-1.2f, 5.5f), float2(6.1f, -9.2f)), -57.92f, 1, false); + TestUtils.AreEqual(dot(float2(1.2e18f, 5.5e18f), float2(6.1e18f, 9.2e18f)), 5.792e37f, 1, false); + TestUtils.AreEqual(dot(float2(-1.2e18f, 5.5e18f), float2(6.1e18f, -9.2e18f)), -5.792e37f, 1, false); + TestUtils.AreEqual(dot(float2(1.2e18f, 5.5e18f), float2(6.1e19f, 9.2e19f)), float.PositiveInfinity, 1, false); + TestUtils.AreEqual(dot(float2(-1.2e18f, 5.5e18f), float2(6.1e19f, -9.2e19f)), float.NegativeInfinity, 1, false); + } + + [TestCompiler] + public static void dot_float3() + { + TestUtils.AreEqual(dot(float3(1.2f, 5.5f, 3.4f), float3(6.1f, 9.2f, 2.7f)), 67.1f, 8, false); + TestUtils.AreEqual(dot(float3(-1.2f, 5.5f, -3.4f), float3(6.1f, -9.2f, 2.7f)), -67.1f, 8, false); + TestUtils.AreEqual(dot(float3(1.2e18f, 5.5e18f, 3.4e18f), float3(6.1e18f, 9.2e18f, 2.7e18f)), 6.71e37f, 1, false); + TestUtils.AreEqual(dot(float3(-1.2e18f, 5.5e18f, 3.4e18f), float3(6.1e18f, -9.2e18f, -2.7e18f)), -6.71e37f, 1, false); + TestUtils.AreEqual(dot(float3(1.2e18f, 5.5e18f, 3.4e18f), float3(6.1e19f, 9.2e19f, 2.7e19f)), float.PositiveInfinity, 1, false); + TestUtils.AreEqual(dot(float3(-1.2e18f, 5.5e18f, 3.4e18f), float3(6.1e19f, -9.2e19f, -2.7e19f)), float.NegativeInfinity, 1, false); + } + + [TestCompiler] + public static void dot_float4() + { + TestUtils.AreEqual(dot(float4(1.2f, 5.5f, 3.4f, 4.9f), float4(6.1f, 9.2f, 2.7f, 0.3f)), 68.57f, 8, false); + TestUtils.AreEqual(dot(float4(-1.2f, 5.5f, -3.4f, 4.9f), float4(6.1f, -9.2f, 2.7f, -0.3f)), -68.57f, 8, false); + TestUtils.AreEqual(dot(float4(1.2e18f, 5.5e18f, 3.4e18f, 4.9e18f), float4(6.1e18f, 9.2e18f, 2.7e18f, 3e17f)), 6.857e37f, 1, false); + TestUtils.AreEqual(dot(float4(-1.2e18f, 5.5e18f, 3.4e18f, -4.9e18f), float4(6.1e18f, -9.2e18f, -2.7e18f, 3e17f)), -6.857e37f, 1, false); + TestUtils.AreEqual(dot(float4(1.2e18f, 5.5e18f, 3.4e18f, 4.9e18f), float4(6.1e19f, 9.2e19f, 2.7e19f, 3e18f)), float.PositiveInfinity, 1, false); + TestUtils.AreEqual(dot(float4(-1.2e18f, 5.5e18f, 3.4e18f, -4.9e18f), float4(6.1e19f, -9.2e19f, -2.7e19f, 3e18f)), float.NegativeInfinity, 1, false); + } + + + public static void dot_double() + { + TestUtils.AreEqual(dot(1.2, 6.1), 7.32, 1, false); + TestUtils.AreEqual(dot(1.2, -6.1), -7.32, 1, false); + TestUtils.AreEqual(dot(1.2e19, 6.1e18), 7.32e37, 1, false); + TestUtils.AreEqual(dot(-1.2e19, 6.1e18), -7.32e37, 1, false); + TestUtils.AreEqual(dot(1.2e19, 6.1e19), double.PositiveInfinity, 0, false); + TestUtils.AreEqual(dot(1.2e19, -6.1e19), double.NegativeInfinity, 0, false); + } + + [TestCompiler] + public static void dot_double2() + { + TestUtils.AreEqual(dot(double2(1.2, 5.5), double2(6.1, 9.2)), 57.92, 1, false); + TestUtils.AreEqual(dot(double2(-1.2, 5.5), double2(6.1, -9.2)), -57.92, 1, false); + TestUtils.AreEqual(dot(double2(1.2e153, 5.5e153), double2(6.1e153, 9.2e153)), 5.792e307, 1, false); + TestUtils.AreEqual(dot(double2(-1.2e153, 5.5e153), double2(6.1e153, -9.2e153)), -5.792e307, 1, false); + TestUtils.AreEqual(dot(double2(1.2e153, 5.5e153), double2(6.1e154, 9.2e154)), double.PositiveInfinity, 1, false); + TestUtils.AreEqual(dot(double2(-1.2e153, 5.5e153), double2(6.1e154, -9.2e154)), double.NegativeInfinity, 1, false); + } + + [TestCompiler] + public static void dot_double3() + { + TestUtils.AreEqual(dot(double3(1.2, 5.5, 3.4), double3(6.1, 9.2, 2.7)), 67.1, 8, false); + TestUtils.AreEqual(dot(double3(-1.2, 5.5, -3.4), double3(6.1, -9.2, 2.7)), -67.1, 8, false); + TestUtils.AreEqual(dot(double3(1.2e153, 5.5e153, 3.4e153), double3(6.1e153, 9.2e153, 2.7e153)), 6.71e307, 1, false); + TestUtils.AreEqual(dot(double3(-1.2e153, 5.5e153, 3.4e153), double3(6.1e153, -9.2e153, -2.7e153)), -6.71e307, 1, false); + TestUtils.AreEqual(dot(double3(1.2e153, 5.5e153, 3.4e153), double3(6.1e154, 9.2e154, 2.7e154)), double.PositiveInfinity, 1, false); + TestUtils.AreEqual(dot(double3(-1.2e153, 5.5e153, 3.4e153), double3(6.1e154, -9.2e154, -2.7e154)), double.NegativeInfinity, 1, false); + } + + [TestCompiler] + public static void dot_double4() + { + TestUtils.AreEqual(dot(double4(1.2, 5.5, 3.4, 4.9), double4(6.1, 9.2, 2.7, 0.3)), 68.57, 8, false); + TestUtils.AreEqual(dot(double4(-1.2, 5.5, -3.4, 4.9), double4(6.1, -9.2, 2.7, -0.3)), -68.57, 8, false); + TestUtils.AreEqual(dot(double4(1.2e153, 5.5e153, 3.4e153, 4.9e153), double4(6.1e153, 9.2e153, 2.7e153, 3e152)), 6.857e307, 1, false); + TestUtils.AreEqual(dot(double4(-1.2e153, 5.5e153, 3.4e153, -4.9e153), double4(6.1e153, -9.2e153, -2.7e153, 3e152)), -6.857e307, 1, false); + TestUtils.AreEqual(dot(double4(1.2e153, 5.5e153, 3.4e153, 4.9e153), double4(6.1e154, 9.2e154, 2.7e154, 3e153)), double.PositiveInfinity, 1, false); + TestUtils.AreEqual(dot(double4(-1.2e153, 5.5e153, 3.4e153, -4.9e153), double4(6.1e154, -9.2e154, -2.7e154, 3e153)), double.NegativeInfinity, 1, false); + } + + [TestCompiler] + public static void cmin_int2() + { + TestUtils.AreEqual(cmin(int2(100, 200)), 100); + TestUtils.AreEqual(cmin(int2(100, -200)), -200); + TestUtils.AreEqual(cmin(int2(int.MaxValue, 0)), 0); + TestUtils.AreEqual(cmin(int2(int.MinValue, 0)), int.MinValue); + TestUtils.AreEqual(cmin(int2(int.MaxValue, int.MinValue)), int.MinValue); + } + + + [TestCompiler] + public static void cmin_int3() + { + TestUtils.AreEqual(cmin(int3(100, 200, 300)), 100); + TestUtils.AreEqual(cmin(int3(100, -200, 300)), -200); + TestUtils.AreEqual(cmin(int3(int.MaxValue, 0, 7)), 0); + TestUtils.AreEqual(cmin(int3(int.MinValue, 0, 7)), int.MinValue); + TestUtils.AreEqual(cmin(int3(int.MaxValue, int.MinValue, 0)), int.MinValue); + } + + + [TestCompiler] + public static void cmin_int4() + { + TestUtils.AreEqual(cmin(int4(100, 200, 300, 400)), 100); + TestUtils.AreEqual(cmin(int4(100, -200, 300, -400)), -400); + TestUtils.AreEqual(cmin(int4(int.MaxValue, 0, 7, 19)), 0); + TestUtils.AreEqual(cmin(int4(int.MinValue, 0, 7, 19)), int.MinValue); + TestUtils.AreEqual(cmin(int4(int.MaxValue, int.MinValue, 0, 19)), int.MinValue); + } + + [TestCompiler] + public static void cmin_uint2() + { + TestUtils.AreEqual(cmin(uint2(100u, 200u)), 100u); + TestUtils.AreEqual(cmin(uint2(100u, uint.MaxValue)), 100u); + TestUtils.AreEqual(cmin(uint2(uint.MinValue, uint.MaxValue)), uint.MinValue); + } + + + [TestCompiler] + public static void cmin_uint3() + { + TestUtils.AreEqual(cmin(uint3(100u, 200u, 300u)), 100u); + TestUtils.AreEqual(cmin(uint3(uint.MaxValue, 100u, 300u)), 100u); + TestUtils.AreEqual(cmin(uint3(7u, uint.MinValue, uint.MaxValue)), uint.MinValue); + } + + + [TestCompiler] + public static void cmin_uint4() + { + TestUtils.AreEqual(cmin(uint4(100u, 200u, 300u, 400u)), 100u); + TestUtils.AreEqual(cmin(uint4(300u, 100u, uint.MaxValue, 200u)), 100u); + TestUtils.AreEqual(cmin(uint4(19u, uint.MinValue, uint.MaxValue, 7u)), uint.MinValue); + } + + [TestCompiler] + public static void cmin_float2() + { + TestUtils.AreEqual(cmin(float2(5.2f, -0.5f)), -0.5f); + TestUtils.AreEqual(cmin(float2(float.NegativeInfinity, float.PositiveInfinity)), float.NegativeInfinity); + TestUtils.AreEqual(cmin(float2(float.NegativeInfinity, float.NaN)), float.NegativeInfinity); + TestUtils.AreEqual(cmin(float2(float.NegativeInfinity, 100.0f)), float.NegativeInfinity); + TestUtils.AreEqual(cmin(float2(float.PositiveInfinity, 100.0f)), 100.0f); + + TestUtils.AreEqual(cmin(float2(1.0f, float.NaN)), 1.0f); + TestUtils.AreEqual(cmin(float2(float.NaN, 1.0f)), 1.0f); + + TestUtils.AreEqual(cmin(float2(float.PositiveInfinity, float.NaN)), float.PositiveInfinity); + TestUtils.AreEqual(cmin(float2(float.NaN, float.PositiveInfinity)), float.PositiveInfinity); + + TestUtils.AreEqual(cmin(float2(float.NegativeInfinity, float.NaN)), float.NegativeInfinity); + TestUtils.AreEqual(cmin(float2(float.NaN, float.NegativeInfinity)), float.NegativeInfinity); + } + + [TestCompiler] + public static void cmin_float3() + { + TestUtils.AreEqual(cmin(float3(5.2f, -0.5f, -1.2f)), -1.2f); + TestUtils.AreEqual(cmin(float3(float.NegativeInfinity, float.PositiveInfinity, 100.0f)), float.NegativeInfinity); + TestUtils.AreEqual(cmin(float3(float.NegativeInfinity, float.NaN, 100.0f)), float.NegativeInfinity); + + TestUtils.AreEqual(cmin(float3(1.0f, float.NaN, float.NaN)), 1.0f); + TestUtils.AreEqual(cmin(float3(float.NaN, 1.0f, float.NaN)), 1.0f); + TestUtils.AreEqual(cmin(float3(float.NaN, float.NaN, 1.0f)), 1.0f); + + TestUtils.AreEqual(cmin(float3(float.PositiveInfinity, float.NaN, float.NaN)), float.PositiveInfinity); + TestUtils.AreEqual(cmin(float3(float.NaN, float.PositiveInfinity, float.NaN)), float.PositiveInfinity); + TestUtils.AreEqual(cmin(float3(float.NaN, float.NaN, float.PositiveInfinity)), float.PositiveInfinity); + + TestUtils.AreEqual(cmin(float3(float.NegativeInfinity, float.NaN, float.NaN)), float.NegativeInfinity); + TestUtils.AreEqual(cmin(float3(float.NaN, float.NegativeInfinity, float.NaN)), float.NegativeInfinity); + TestUtils.AreEqual(cmin(float3(float.NaN, float.NaN, float.NegativeInfinity)), float.NegativeInfinity); + } + + [TestCompiler] + public static void cmin_float4() + { + TestUtils.AreEqual(cmin(float4(5.2f, -0.5f, -1.2f, 2.3f)), -1.2f); + TestUtils.AreEqual(cmin(float4(float.NegativeInfinity, float.PositiveInfinity, 100.0f, float.NaN)), float.NegativeInfinity); + + TestUtils.AreEqual(cmin(float4(1.0f, float.NaN, float.NaN, float.NaN)), 1.0f); + TestUtils.AreEqual(cmin(float4(float.NaN, 1.0f, float.NaN, float.NaN)), 1.0f); + TestUtils.AreEqual(cmin(float4(float.NaN, float.NaN, 1.0f, float.NaN)), 1.0f); + TestUtils.AreEqual(cmin(float4(float.NaN, float.NaN, float.NaN, 1.0f)), 1.0f); + + TestUtils.AreEqual(cmin(float4(float.PositiveInfinity, float.NaN, float.NaN, float.NaN)), float.PositiveInfinity); + TestUtils.AreEqual(cmin(float4(float.NaN, float.PositiveInfinity, float.NaN, float.NaN)), float.PositiveInfinity); + TestUtils.AreEqual(cmin(float4(float.NaN, float.NaN, float.PositiveInfinity, float.NaN)), float.PositiveInfinity); + TestUtils.AreEqual(cmin(float4(float.NaN, float.NaN, float.NaN, float.PositiveInfinity)), float.PositiveInfinity); + + TestUtils.AreEqual(cmin(float4(float.NegativeInfinity, float.NaN, float.NaN, float.NaN)), float.NegativeInfinity); + TestUtils.AreEqual(cmin(float4(float.NaN, float.NegativeInfinity, float.NaN, float.NaN)), float.NegativeInfinity); + TestUtils.AreEqual(cmin(float4(float.NaN, float.NaN, float.NegativeInfinity, float.NaN)), float.NegativeInfinity); + TestUtils.AreEqual(cmin(float4(float.NaN, float.NaN, float.NaN, float.NegativeInfinity)), float.NegativeInfinity); + } + + + [TestCompiler] + public static void cmin_double2() + { + TestUtils.AreEqual(cmin(double2(5.2, -0.5)), -0.5); + TestUtils.AreEqual(cmin(double2(5.2e100, -0.5e100)), -0.5e100); + TestUtils.AreEqual(cmin(double2(double.NegativeInfinity, double.PositiveInfinity)), double.NegativeInfinity); + TestUtils.AreEqual(cmin(double2(double.NegativeInfinity, double.NaN)), double.NegativeInfinity); + TestUtils.AreEqual(cmin(double2(double.NegativeInfinity, 100.0)), double.NegativeInfinity); + TestUtils.AreEqual(cmin(double2(double.PositiveInfinity, 100.0)), 100.0); + + TestUtils.AreEqual(cmin(double2(1.0, double.NaN)), 1.0); + TestUtils.AreEqual(cmin(double2(double.NaN, 1.0)), 1.0); + + TestUtils.AreEqual(cmin(double2(double.PositiveInfinity, double.NaN)), double.PositiveInfinity); + TestUtils.AreEqual(cmin(double2(double.NaN, double.PositiveInfinity)), double.PositiveInfinity); + + TestUtils.AreEqual(cmin(double2(double.NegativeInfinity, double.NaN)), double.NegativeInfinity); + TestUtils.AreEqual(cmin(double2(double.NaN, double.NegativeInfinity)), double.NegativeInfinity); + } + + [TestCompiler] + public static void cmin_double3() + { + TestUtils.AreEqual(cmin(double3(5.2, -0.5, -1.2)), -1.2); + TestUtils.AreEqual(cmin(double3(5.2e100, -0.5e100, -1.2e100)), -1.2e100); + TestUtils.AreEqual(cmin(double3(double.NegativeInfinity, double.PositiveInfinity, 100.0)), double.NegativeInfinity); + TestUtils.AreEqual(cmin(double3(double.NegativeInfinity, double.NaN, 100.0)), double.NegativeInfinity); + + TestUtils.AreEqual(cmin(double3(1.0, double.NaN, double.NaN)), 1.0); + TestUtils.AreEqual(cmin(double3(double.NaN, 1.0, double.NaN)), 1.0); + TestUtils.AreEqual(cmin(double3(double.NaN, double.NaN, 1.0)), 1.0); + + TestUtils.AreEqual(cmin(double3(double.PositiveInfinity, double.NaN, double.NaN)), double.PositiveInfinity); + TestUtils.AreEqual(cmin(double3(double.NaN, double.PositiveInfinity, double.NaN)), double.PositiveInfinity); + TestUtils.AreEqual(cmin(double3(double.NaN, double.NaN, double.PositiveInfinity)), double.PositiveInfinity); + + TestUtils.AreEqual(cmin(double3(double.NegativeInfinity, double.NaN, double.NaN)), double.NegativeInfinity); + TestUtils.AreEqual(cmin(double3(double.NaN, double.NegativeInfinity, double.NaN)), double.NegativeInfinity); + TestUtils.AreEqual(cmin(double3(double.NaN, double.NaN, double.NegativeInfinity)), double.NegativeInfinity); + } + + [TestCompiler] + public static void cmin_double4() + { + TestUtils.AreEqual(cmin(double4(5.2, -0.5, -1.2, 2.3)), -1.2); + TestUtils.AreEqual(cmin(double4(5.2e100, -0.5e100, -1.2e100, 2.3e100)), -1.2e100); + + TestUtils.AreEqual(cmin(double4(double.NegativeInfinity, double.PositiveInfinity, 100.0, double.NaN)), double.NegativeInfinity); + + TestUtils.AreEqual(cmin(double4(1.0, double.NaN, double.NaN, double.NaN)), 1.0); + TestUtils.AreEqual(cmin(double4(double.NaN, 1.0, double.NaN, double.NaN)), 1.0f); + TestUtils.AreEqual(cmin(double4(double.NaN, double.NaN, 1.0, double.NaN)), 1.0f); + TestUtils.AreEqual(cmin(double4(double.NaN, double.NaN, double.NaN, 1.0)), 1.0f); + + TestUtils.AreEqual(cmin(double4(double.PositiveInfinity, double.NaN, double.NaN, double.NaN)), double.PositiveInfinity); + TestUtils.AreEqual(cmin(double4(double.NaN, double.PositiveInfinity, double.NaN, double.NaN)), double.PositiveInfinity); + TestUtils.AreEqual(cmin(double4(double.NaN, double.NaN, double.PositiveInfinity, double.NaN)), double.PositiveInfinity); + TestUtils.AreEqual(cmin(double4(double.NaN, double.NaN, double.NaN, double.PositiveInfinity)), double.PositiveInfinity); + + TestUtils.AreEqual(cmin(double4(double.NegativeInfinity, double.NaN, double.NaN, double.NaN)), double.NegativeInfinity); + TestUtils.AreEqual(cmin(double4(double.NaN, double.NegativeInfinity, double.NaN, double.NaN)), double.NegativeInfinity); + TestUtils.AreEqual(cmin(double4(double.NaN, double.NaN, double.NegativeInfinity, double.NaN)), double.NegativeInfinity); + TestUtils.AreEqual(cmin(double4(double.NaN, double.NaN, double.NaN, double.NegativeInfinity)), double.NegativeInfinity); + } + + + [TestCompiler] + public static void cmax_int2() + { + TestUtils.AreEqual(cmax(int2(100, 200)), 200); + TestUtils.AreEqual(cmax(int2(100, -200)), 100); + TestUtils.AreEqual(cmax(int2(int.MaxValue, 0)), int.MaxValue); + TestUtils.AreEqual(cmax(int2(int.MinValue, 0)), 0); + TestUtils.AreEqual(cmax(int2(int.MaxValue, int.MinValue)), int.MaxValue); + } + + + [TestCompiler] + public static void cmax_int3() + { + TestUtils.AreEqual(cmax(int3(100, 200, 300)), 300); + TestUtils.AreEqual(cmax(int3(100, -200, 300)), 300); + TestUtils.AreEqual(cmax(int3(int.MaxValue, 0, 7)), int.MaxValue); + TestUtils.AreEqual(cmax(int3(int.MinValue, 0, 7)), 7); + TestUtils.AreEqual(cmax(int3(int.MaxValue, int.MinValue, 0)), int.MaxValue); + } + + + [TestCompiler] + public static void cmax_int4() + { + TestUtils.AreEqual(cmax(int4(100, 200, 300, 400)), 400); + TestUtils.AreEqual(cmax(int4(100, -200, 300, -400)), 300); + TestUtils.AreEqual(cmax(int4(int.MaxValue, 0, 7, 19)), int.MaxValue); + TestUtils.AreEqual(cmax(int4(int.MinValue, 0, 7, 19)), 19); + TestUtils.AreEqual(cmax(int4(int.MaxValue, int.MinValue, 0, 19)), int.MaxValue); + } + + [TestCompiler] + public static void cmax_uint2() + { + TestUtils.AreEqual(cmax(uint2(100u, 200u)), 200u); + TestUtils.AreEqual(cmax(uint2(100u, uint.MaxValue)), uint.MaxValue); + TestUtils.AreEqual(cmax(uint2(uint.MinValue, uint.MaxValue)), uint.MaxValue); + } + + + [TestCompiler] + public static void cmax_uint3() + { + TestUtils.AreEqual(cmax(uint3(100u, 200u, 300u)), 300u); + TestUtils.AreEqual(cmax(uint3(uint.MaxValue, 100u, 300u)), uint.MaxValue); + TestUtils.AreEqual(cmax(uint3(7u, uint.MinValue, uint.MaxValue)), uint.MaxValue); + } + + + [TestCompiler] + public static void cmax_uint4() + { + TestUtils.AreEqual(cmax(uint4(100u, 200u, 300u, 400u)), 400u); + TestUtils.AreEqual(cmax(uint4(300u, 100u, uint.MaxValue, 200u)), uint.MaxValue); + TestUtils.AreEqual(cmax(uint4(19u, uint.MinValue, uint.MaxValue, 7u)), uint.MaxValue); + } + + [TestCompiler] + public static void cmax_float2() + { + TestUtils.AreEqual(cmax(float2(5.2f, -0.5f)), 5.2f); + TestUtils.AreEqual(cmax(float2(float.NegativeInfinity, float.PositiveInfinity)), float.PositiveInfinity); + TestUtils.AreEqual(cmax(float2(float.NegativeInfinity, float.NaN)), float.NegativeInfinity); + TestUtils.AreEqual(cmax(float2(float.NegativeInfinity, 100.0f)), 100.0f); + TestUtils.AreEqual(cmax(float2(float.PositiveInfinity, 100.0f)), float.PositiveInfinity); + + TestUtils.AreEqual(cmax(float2(1.0f, float.NaN)), 1.0f); + TestUtils.AreEqual(cmax(float2(float.NaN, 1.0f)), 1.0f); + + TestUtils.AreEqual(cmax(float2(float.PositiveInfinity, float.NaN)), float.PositiveInfinity); + TestUtils.AreEqual(cmax(float2(float.NaN, float.PositiveInfinity)), float.PositiveInfinity); + + TestUtils.AreEqual(cmax(float2(float.NegativeInfinity, float.NaN)), float.NegativeInfinity); + TestUtils.AreEqual(cmax(float2(float.NaN, float.NegativeInfinity)), float.NegativeInfinity); + } + + [TestCompiler] + public static void cmax_float3() + { + TestUtils.AreEqual(cmax(float3(5.2f, -0.5f, -1.2f)), 5.2f); + TestUtils.AreEqual(cmax(float3(float.NegativeInfinity, float.PositiveInfinity, 100.0f)), float.PositiveInfinity); + TestUtils.AreEqual(cmax(float3(float.NegativeInfinity, float.NaN, 100.0f)), 100.0f); + + TestUtils.AreEqual(cmax(float3(1.0f, float.NaN, float.NaN)), 1.0f); + TestUtils.AreEqual(cmax(float3(float.NaN, 1.0f, float.NaN)), 1.0f); + TestUtils.AreEqual(cmax(float3(float.NaN, float.NaN, 1.0f)), 1.0f); + + TestUtils.AreEqual(cmax(float3(float.PositiveInfinity, float.NaN, float.NaN)), float.PositiveInfinity); + TestUtils.AreEqual(cmax(float3(float.NaN, float.PositiveInfinity, float.NaN)), float.PositiveInfinity); + TestUtils.AreEqual(cmax(float3(float.NaN, float.NaN, float.PositiveInfinity)), float.PositiveInfinity); + + TestUtils.AreEqual(cmax(float3(float.NegativeInfinity, float.NaN, float.NaN)), float.NegativeInfinity); + TestUtils.AreEqual(cmax(float3(float.NaN, float.NegativeInfinity, float.NaN)), float.NegativeInfinity); + TestUtils.AreEqual(cmax(float3(float.NaN, float.NaN, float.NegativeInfinity)), float.NegativeInfinity); + } + + [TestCompiler] + public static void cmax_float4() + { + TestUtils.AreEqual(cmax(float4(5.2f, -0.5f, -1.2f, 2.3f)), 5.2f); + TestUtils.AreEqual(cmax(float4(float.NegativeInfinity, float.PositiveInfinity, 100.0f, float.NaN)), float.PositiveInfinity); + + TestUtils.AreEqual(cmax(float4(1.0f, float.NaN, float.NaN, float.NaN)), 1.0f); + TestUtils.AreEqual(cmax(float4(float.NaN, 1.0f, float.NaN, float.NaN)), 1.0f); + TestUtils.AreEqual(cmax(float4(float.NaN, float.NaN, 1.0f, float.NaN)), 1.0f); + TestUtils.AreEqual(cmax(float4(float.NaN, float.NaN, float.NaN, 1.0f)), 1.0f); + + TestUtils.AreEqual(cmax(float4(float.PositiveInfinity, float.NaN, float.NaN, float.NaN)), float.PositiveInfinity); + TestUtils.AreEqual(cmax(float4(float.NaN, float.PositiveInfinity, float.NaN, float.NaN)), float.PositiveInfinity); + TestUtils.AreEqual(cmax(float4(float.NaN, float.NaN, float.PositiveInfinity, float.NaN)), float.PositiveInfinity); + TestUtils.AreEqual(cmax(float4(float.NaN, float.NaN, float.NaN, float.PositiveInfinity)), float.PositiveInfinity); + + TestUtils.AreEqual(cmax(float4(float.NegativeInfinity, float.NaN, float.NaN, float.NaN)), float.NegativeInfinity); + TestUtils.AreEqual(cmax(float4(float.NaN, float.NegativeInfinity, float.NaN, float.NaN)), float.NegativeInfinity); + TestUtils.AreEqual(cmax(float4(float.NaN, float.NaN, float.NegativeInfinity, float.NaN)), float.NegativeInfinity); + TestUtils.AreEqual(cmax(float4(float.NaN, float.NaN, float.NaN, float.NegativeInfinity)), float.NegativeInfinity); + } + + + [TestCompiler] + public static void cmax_double2() + { + TestUtils.AreEqual(cmax(double2(5.2, -0.5)), 5.2); + TestUtils.AreEqual(cmax(double2(5.2e100, -0.5e100)), 5.2e100); + TestUtils.AreEqual(cmax(double2(double.NegativeInfinity, double.PositiveInfinity)), double.PositiveInfinity); + TestUtils.AreEqual(cmax(double2(double.NegativeInfinity, double.NaN)), double.NegativeInfinity); + TestUtils.AreEqual(cmax(double2(double.NegativeInfinity, 100.0)), 100.0); + TestUtils.AreEqual(cmax(double2(double.PositiveInfinity, 100.0)), double.PositiveInfinity); + + TestUtils.AreEqual(cmax(double2(1.0, double.NaN)), 1.0); + TestUtils.AreEqual(cmax(double2(double.NaN, 1.0)), 1.0); + + TestUtils.AreEqual(cmax(double2(double.PositiveInfinity, double.NaN)), double.PositiveInfinity); + TestUtils.AreEqual(cmax(double2(double.NaN, double.PositiveInfinity)), double.PositiveInfinity); + + TestUtils.AreEqual(cmax(double2(double.NegativeInfinity, double.NaN)), double.NegativeInfinity); + TestUtils.AreEqual(cmax(double2(double.NaN, double.NegativeInfinity)), double.NegativeInfinity); + } + + [TestCompiler] + public static void cmax_double3() + { + TestUtils.AreEqual(cmax(double3(5.2, -0.5, -1.2)), 5.2); + TestUtils.AreEqual(cmax(double3(5.2e100, -0.5e100, -1.2e100)), 5.2e100); + TestUtils.AreEqual(cmax(double3(double.NegativeInfinity, double.PositiveInfinity, 100.0)), double.PositiveInfinity); + TestUtils.AreEqual(cmax(double3(double.NegativeInfinity, double.NaN, 100.0)), 100.0); + + TestUtils.AreEqual(cmax(double3(1.0, double.NaN, double.NaN)), 1.0); + TestUtils.AreEqual(cmax(double3(double.NaN, 1.0, double.NaN)), 1.0); + TestUtils.AreEqual(cmax(double3(double.NaN, double.NaN, 1.0)), 1.0); + + TestUtils.AreEqual(cmax(double3(double.PositiveInfinity, double.NaN, double.NaN)), double.PositiveInfinity); + TestUtils.AreEqual(cmax(double3(double.NaN, double.PositiveInfinity, double.NaN)), double.PositiveInfinity); + TestUtils.AreEqual(cmax(double3(double.NaN, double.NaN, double.PositiveInfinity)), double.PositiveInfinity); + + TestUtils.AreEqual(cmax(double3(double.NegativeInfinity, double.NaN, double.NaN)), double.NegativeInfinity); + TestUtils.AreEqual(cmax(double3(double.NaN, double.NegativeInfinity, double.NaN)), double.NegativeInfinity); + TestUtils.AreEqual(cmax(double3(double.NaN, double.NaN, double.NegativeInfinity)), double.NegativeInfinity); + } + + [TestCompiler] + public static void cmax_double4() + { + TestUtils.AreEqual(cmax(double4(5.2, -0.5, -1.2, 2.3)), 5.2); + TestUtils.AreEqual(cmax(double4(5.2e100, -0.5e100, -1.2e100, 2.3e100)), 5.2e100); + + TestUtils.AreEqual(cmax(double4(double.NegativeInfinity, double.PositiveInfinity, 100.0, double.NaN)), double.PositiveInfinity); + + TestUtils.AreEqual(cmax(double4(1.0, double.NaN, double.NaN, double.NaN)), 1.0); + TestUtils.AreEqual(cmax(double4(double.NaN, 1.0, double.NaN, double.NaN)), 1.0f); + TestUtils.AreEqual(cmax(double4(double.NaN, double.NaN, 1.0, double.NaN)), 1.0f); + TestUtils.AreEqual(cmax(double4(double.NaN, double.NaN, double.NaN, 1.0)), 1.0f); + + TestUtils.AreEqual(cmax(double4(double.PositiveInfinity, double.NaN, double.NaN, double.NaN)), double.PositiveInfinity); + TestUtils.AreEqual(cmax(double4(double.NaN, double.PositiveInfinity, double.NaN, double.NaN)), double.PositiveInfinity); + TestUtils.AreEqual(cmax(double4(double.NaN, double.NaN, double.PositiveInfinity, double.NaN)), double.PositiveInfinity); + TestUtils.AreEqual(cmax(double4(double.NaN, double.NaN, double.NaN, double.PositiveInfinity)), double.PositiveInfinity); + + TestUtils.AreEqual(cmax(double4(double.NegativeInfinity, double.NaN, double.NaN, double.NaN)), double.NegativeInfinity); + TestUtils.AreEqual(cmax(double4(double.NaN, double.NegativeInfinity, double.NaN, double.NaN)), double.NegativeInfinity); + TestUtils.AreEqual(cmax(double4(double.NaN, double.NaN, double.NegativeInfinity, double.NaN)), double.NegativeInfinity); + TestUtils.AreEqual(cmax(double4(double.NaN, double.NaN, double.NaN, double.NegativeInfinity)), double.NegativeInfinity); + } + + [TestCompiler] + public static void csum_int2() + { + TestUtils.AreEqual(csum(int2(100, 200)), 300); + TestUtils.AreEqual(csum(int2(100, -200)), -100); + TestUtils.AreEqual(csum(int2(int.MaxValue, 7)), int.MinValue + 6); + TestUtils.AreEqual(csum(int2(int.MinValue, -7)), int.MaxValue - 6); + TestUtils.AreEqual(csum(int2(int.MaxValue, int.MinValue)), -1); + } + + + [TestCompiler] + public static void csum_int3() + { + TestUtils.AreEqual(csum(int3(100, 200, 300)), 600); + TestUtils.AreEqual(csum(int3(100, -200, -300)), -400); + TestUtils.AreEqual(csum(int3(int.MaxValue, 7, 11)), int.MinValue + 17); + TestUtils.AreEqual(csum(int3(int.MinValue, -7, -11)), int.MaxValue - 17); + TestUtils.AreEqual(csum(int3(int.MaxValue, int.MinValue, 0)), -1); + } + + + [TestCompiler] + public static void csum_int4() + { + TestUtils.AreEqual(csum(int4(100, 200, 300, 400)), 1000); + TestUtils.AreEqual(csum(int4(100, -200, 300, -400)), -200); + TestUtils.AreEqual(csum(int4(int.MaxValue, 7, 11, 19)), int.MinValue + 36); + TestUtils.AreEqual(csum(int4(int.MinValue, -7, -11, -19)), int.MaxValue - 36); + TestUtils.AreEqual(csum(int4(int.MaxValue, int.MinValue, 0, 0)), -1); + } + + [TestCompiler] + public static void csum_uint2() + { + TestUtils.AreEqual(csum(uint2(100u, 200u)), 300u); + TestUtils.AreEqual(csum(uint2(uint.MaxValue, 7u)), 6u); + } + + + [TestCompiler] + public static void csum_uint3() + { + TestUtils.AreEqual(csum(uint3(100u, 200u, 300u)), 600u); + TestUtils.AreEqual(csum(uint3(uint.MaxValue, 7u, 19u)), 25u); + } + + + [TestCompiler] + public static void csum_uint4() + { + TestUtils.AreEqual(csum(uint4(100u, 200u, 300u, 400u)), 1000u); + TestUtils.AreEqual(csum(uint4(uint.MaxValue, 7u, 11u, 19u)), 36u); + } + + [TestCompiler] + public static void csum_float2() + { + TestUtils.AreEqual(csum(float2(2.2f, -1.5f)), 0.7f, 4, false); + TestUtils.AreEqual(csum(float2(-2.2e38f, 1.5e38f)), -7e37f, 4, false); + TestUtils.AreEqual(csum(float2(-2.2e38f, -1.5e38f)), float.NegativeInfinity, 0, false); + TestUtils.AreEqual(csum(float2( 2.2e38f, 1.5e38f)), float.PositiveInfinity, 0, false); + + TestUtils.AreEqual(csum(float2(float.NegativeInfinity, float.PositiveInfinity)), float.NaN, 0, false); + TestUtils.AreEqual(csum(float2(float.NegativeInfinity, float.NaN)), float.NaN, 0, false); + TestUtils.AreEqual(csum(float2(float.NegativeInfinity, 100.0f)), float.NegativeInfinity, 0, false); + TestUtils.AreEqual(csum(float2(float.PositiveInfinity, 100.0f)), float.PositiveInfinity, 0, false); + + TestUtils.AreEqual(csum(float2(1.0f, float.NaN)), float.NaN, 0, false); + TestUtils.AreEqual(csum(float2(float.NaN, 1.0f)), float.NaN, 0, false); + + TestUtils.AreEqual(csum(float2(float.PositiveInfinity, 1.0f)), float.PositiveInfinity, 0, false); + TestUtils.AreEqual(csum(float2(-1.0f, float.PositiveInfinity)), float.PositiveInfinity, 0, false); + + TestUtils.AreEqual(csum(float2(float.NegativeInfinity, 1.0f)), float.NegativeInfinity, 0, false); + TestUtils.AreEqual(csum(float2(-1.0f, float.NegativeInfinity)), float.NegativeInfinity, 0, false); + } + + [TestCompiler] + public static void csum_float3() + { + TestUtils.AreEqual(csum(float3(2.2f, -1.5f, 1.2f)), 1.9f, 4, false); + TestUtils.AreEqual(csum(float3(2.2e38f, -1.5e38f, 1.2e38f)), 1.9e38f, 4, false); + TestUtils.AreEqual(csum(float3(-2.2e38f, -1.5e38f, -1.2e38f)), float.NegativeInfinity, 0, false); + TestUtils.AreEqual(csum(float3(2.2e38f, 1.5e38f, 1.2e38f)), float.PositiveInfinity, 0, false); + + TestUtils.AreEqual(csum(float3(float.NegativeInfinity, float.PositiveInfinity, 100.0f)), float.NaN, 0, false); + TestUtils.AreEqual(csum(float3(float.NegativeInfinity, float.NaN, 100.0f)), float.NaN, 0, false); + + TestUtils.AreEqual(csum(float3(float.NaN, 1.0f, 1.0f)), float.NaN, 0, false); + TestUtils.AreEqual(csum(float3(1.0f, float.NaN, 1.0f)), float.NaN, 0, false); + TestUtils.AreEqual(csum(float3(1.0f, 1.0f, float.NaN)), float.NaN, 0, false); + + TestUtils.AreEqual(csum(float3(float.PositiveInfinity, 1.0f, -2.0f)), float.PositiveInfinity, 0, false); + TestUtils.AreEqual(csum(float3(1.0f, float.PositiveInfinity, -2.0f)), float.PositiveInfinity, 0, false); + TestUtils.AreEqual(csum(float3(-2.0f, 1.0f, float.PositiveInfinity)), float.PositiveInfinity, 0, false); + + TestUtils.AreEqual(csum(float3(float.NegativeInfinity, 1.0f, -2.0f)), float.NegativeInfinity, 0, false); + TestUtils.AreEqual(csum(float3(-1.0f, float.NegativeInfinity, 2.0f)), float.NegativeInfinity, 0, false); + TestUtils.AreEqual(csum(float3(-2.0f, 1.0f, float.NegativeInfinity)), float.NegativeInfinity, 0, false); + } + + [TestCompiler] + public static void csum_float4() + { + TestUtils.AreEqual(csum(float4(2.2f, -1.5f, 1.2f, -0.7f)), 1.2f, 4, false); + TestUtils.AreEqual(csum(float4(2.2e38f, -1.5e38f, 1.2e38f, -0.7e38f)), 1.2e38f, 4, false); + TestUtils.AreEqual(csum(float4(-2.2e38f, -1.5e38f, -1.2e38f, -0.7e38f)), float.NegativeInfinity, 0, false); + TestUtils.AreEqual(csum(float4(2.2e38f, 1.5e38f, 1.2e38f, 0.7e38f)), float.PositiveInfinity, 0, false); + + TestUtils.AreEqual(csum(float4(float.NegativeInfinity, float.PositiveInfinity, 100.0f, 200.0f)), float.NaN, 0, false); + + TestUtils.AreEqual(csum(float4(float.NaN, 1.0f, 1.0f, 1.0f)), float.NaN, 0, false); + TestUtils.AreEqual(csum(float4(1.0f, float.NaN, 1.0f, 1.0f)), float.NaN, 0, false); + TestUtils.AreEqual(csum(float4(1.0f, 1.0f, float.NaN, 1.0f)), float.NaN, 0, false); + TestUtils.AreEqual(csum(float4(1.0f, 1.0f, 1.0f, float.NaN)), float.NaN, 0, false); + + TestUtils.AreEqual(csum(float4(float.PositiveInfinity, 1.0f, -2.0f, 3.0f)), float.PositiveInfinity, 0, false); + TestUtils.AreEqual(csum(float4(1.0f, float.PositiveInfinity, -2.0f, 3.0f)), float.PositiveInfinity, 0, false); + TestUtils.AreEqual(csum(float4(1.0f, -2.0f, float.PositiveInfinity, 3.0f)), float.PositiveInfinity, 0, false); + TestUtils.AreEqual(csum(float4(1.0f, -2.0f, 3.0f, float.PositiveInfinity)), float.PositiveInfinity, 0, false); + + TestUtils.AreEqual(csum(float4(float.NegativeInfinity, 1.0f, -2.0f, 3.0f)), float.NegativeInfinity, 0, false); + TestUtils.AreEqual(csum(float4(1.0f, float.NegativeInfinity, -2.0f, 3.0f)), float.NegativeInfinity, 0, false); + TestUtils.AreEqual(csum(float4(1.0f, -2.0f, float.NegativeInfinity, 3.0f)), float.NegativeInfinity, 0, false); + TestUtils.AreEqual(csum(float4(1.0f, -2.0f, -3.0f, float.NegativeInfinity)), float.NegativeInfinity, 0, false); + } + + + [TestCompiler] + public static void csum_double2() + { + TestUtils.AreEqual(csum(double2(2.2, -1.5)), 0.7, 4, false); + TestUtils.AreEqual(csum(double2(-2.2e307, 1.5e307)), -7e306, 4, false); + TestUtils.AreEqual(csum(double2(-1.2e308, -0.7e308)), double.NegativeInfinity); + TestUtils.AreEqual(csum(double2(1.2e308, 0.7e308)), double.PositiveInfinity); + + TestUtils.AreEqual(csum(double2(double.NegativeInfinity, double.PositiveInfinity)), double.NaN); + TestUtils.AreEqual(csum(double2(double.NegativeInfinity, double.NaN)), double.NaN); + TestUtils.AreEqual(csum(double2(double.NegativeInfinity, 100.0)), double.NegativeInfinity); + TestUtils.AreEqual(csum(double2(double.PositiveInfinity, 100.0)), double.PositiveInfinity); + + TestUtils.AreEqual(csum(double2(1.0, double.NaN)), double.NaN); + TestUtils.AreEqual(csum(double2(double.NaN, 1.0)), double.NaN); + + TestUtils.AreEqual(csum(double2(double.PositiveInfinity, 1.0)), double.PositiveInfinity); + TestUtils.AreEqual(csum(double2(-1.0, double.PositiveInfinity)), double.PositiveInfinity); + + TestUtils.AreEqual(csum(double2(double.NegativeInfinity, 1.0)), double.NegativeInfinity); + TestUtils.AreEqual(csum(double2(-1.0, double.NegativeInfinity)), double.NegativeInfinity); + } + + [TestCompiler] + public static void csum_double3() + { + TestUtils.AreEqual(csum(double3(2.2, -1.5, 1.2)), 1.9, 4, false); + TestUtils.AreEqual(csum(double3(2.2e307, -1.5e307, 1.2e307)), 1.9e307, 4, false); + TestUtils.AreEqual(csum(double3(-1.2e308, -0.7e308, -1.4e308)), double.NegativeInfinity); + TestUtils.AreEqual(csum(double3(1.2e308, 0.7e308, 1.4e308)), double.PositiveInfinity); + + TestUtils.AreEqual(csum(double3(double.NegativeInfinity, double.PositiveInfinity, 100.0)), double.NaN); + TestUtils.AreEqual(csum(double3(double.NegativeInfinity, double.NaN, 100.0)), double.NaN); + + TestUtils.AreEqual(csum(double3(double.NaN, 1.0, 1.0)), double.NaN); + TestUtils.AreEqual(csum(double3(1.0, double.NaN, 1.0)), double.NaN); + TestUtils.AreEqual(csum(double3(1.0, 1.0, double.NaN)), double.NaN); + + TestUtils.AreEqual(csum(double3(double.PositiveInfinity, 1.0, -2.0)), double.PositiveInfinity); + TestUtils.AreEqual(csum(double3(1.0, double.PositiveInfinity, -2.0)), double.PositiveInfinity); + TestUtils.AreEqual(csum(double3(-2.0, 1.0, double.PositiveInfinity)), double.PositiveInfinity); + + TestUtils.AreEqual(csum(double3(double.NegativeInfinity, 1.0, -2.0)), double.NegativeInfinity); + TestUtils.AreEqual(csum(double3(-1.0, double.NegativeInfinity, 2.0)), double.NegativeInfinity); + TestUtils.AreEqual(csum(double3(-2.0, 1.0, double.NegativeInfinity)), double.NegativeInfinity); + } + + [TestCompiler] + public static void csum_double4() + { + TestUtils.AreEqual(csum(double4(2.2, -1.5, 1.2, -0.7)), 1.2, 4, false); + TestUtils.AreEqual(csum(double4(2.2e307, -1.5e307, 1.2e307, -0.7e307)), 1.2e307, 4, false); + TestUtils.AreEqual(csum(double4(-1.2e308, -0.7e308, -1.4e308, -0.9e308)), double.NegativeInfinity); + TestUtils.AreEqual(csum(double4(1.2e308, 0.7e308, 1.4e308, 0.9e308)), double.PositiveInfinity); + + TestUtils.AreEqual(csum(double4(double.NegativeInfinity, double.PositiveInfinity, 100.0, 200.0)), double.NaN); + + TestUtils.AreEqual(csum(double4(double.NaN, 1.0, 1.0, 1.0)), double.NaN); + TestUtils.AreEqual(csum(double4(1.0, double.NaN, 1.0, 1.0)), double.NaN); + TestUtils.AreEqual(csum(double4(1.0, 1.0, double.NaN, 1.0)), double.NaN); + TestUtils.AreEqual(csum(double4(1.0, 1.0, 1.0, double.NaN)), double.NaN); + + TestUtils.AreEqual(csum(double4(double.PositiveInfinity, 1.0, -2.0, 3.0)), double.PositiveInfinity); + TestUtils.AreEqual(csum(double4(1.0, double.PositiveInfinity, -2.0, 3.0)), double.PositiveInfinity); + TestUtils.AreEqual(csum(double4(1.0, -2.0, double.PositiveInfinity, 3.0)), double.PositiveInfinity); + TestUtils.AreEqual(csum(double4(1.0, -2.0, 3.0, double.PositiveInfinity)), double.PositiveInfinity); + + TestUtils.AreEqual(csum(double4(double.NegativeInfinity, 1.0, -2.0, 3.0)), double.NegativeInfinity); + TestUtils.AreEqual(csum(double4(1.0, double.NegativeInfinity, -2.0, 3.0)), double.NegativeInfinity); + TestUtils.AreEqual(csum(double4(1.0, -2.0, double.NegativeInfinity, 3.0)), double.NegativeInfinity); + TestUtils.AreEqual(csum(double4(1.0, -2.0, 3.0, double.NegativeInfinity)), double.NegativeInfinity); + } + + + [TestCompiler] + public static void any_bool2() + { + TestUtils.AreEqual(any(bool2(false, false)), false); + TestUtils.AreEqual(any(bool2(false, true)), true); + TestUtils.AreEqual(any(bool2(true, false)), true); + TestUtils.AreEqual(any(bool2(true, true)), true); + } + + [TestCompiler] + public static void any_bool3() + { + TestUtils.AreEqual(any(bool3(false, false, false)), false); + TestUtils.AreEqual(any(bool3(false, false, true)), true); + TestUtils.AreEqual(any(bool3(false, true, false)), true); + TestUtils.AreEqual(any(bool3(false, true, true)), true); + + TestUtils.AreEqual(any(bool3(true, false, false)), true); + TestUtils.AreEqual(any(bool3(true, false, true)), true); + TestUtils.AreEqual(any(bool3(true, true, false)), true); + TestUtils.AreEqual(any(bool3(true, true, true)), true); + } + + [TestCompiler] + public static void any_bool4() + { + TestUtils.AreEqual(any(bool4(false, false, false, false)), false); + TestUtils.AreEqual(any(bool4(false, false, false, true)), true); + TestUtils.AreEqual(any(bool4(false, false, true, false)), true); + TestUtils.AreEqual(any(bool4(false, false, true, true)), true); + + TestUtils.AreEqual(any(bool4(false, true, false, false)), true); + TestUtils.AreEqual(any(bool4(false, true, false, true)), true); + TestUtils.AreEqual(any(bool4(false, true, true, false)), true); + TestUtils.AreEqual(any(bool4(false, true, true, true)), true); + + TestUtils.AreEqual(any(bool4(true, false, false, false)), true); + TestUtils.AreEqual(any(bool4(true, false, false, true)), true); + TestUtils.AreEqual(any(bool4(true, false, true, false)), true); + TestUtils.AreEqual(any(bool4(true, false, true, true)), true); + + TestUtils.AreEqual(any(bool4(true, true, false, false)), true); + TestUtils.AreEqual(any(bool4(true, true, false, true)), true); + TestUtils.AreEqual(any(bool4(true, true, true, false)), true); + TestUtils.AreEqual(any(bool4(true, true, true, true)), true); + } + + [TestCompiler] + public static void any_int2() + { + TestUtils.AreEqual(any(int2(0, 0)), false); + TestUtils.AreEqual(any(int2(0, -1)), true); + TestUtils.AreEqual(any(int2(1, 0)), true); + TestUtils.AreEqual(any(int2(2, int.MinValue)), true); + } + + + [TestCompiler] + public static void any_int3() + { + TestUtils.AreEqual(any(int3(0, 0, 0)), false); + TestUtils.AreEqual(any(int3(0, 0, 1)), true); + TestUtils.AreEqual(any(int3(0, -1, 0)), true); + TestUtils.AreEqual(any(int3(0, int.MinValue, int.MaxValue)), true); + + TestUtils.AreEqual(any(int3(5, 0, 0)), true); + TestUtils.AreEqual(any(int3(11, 0, -11)), true); + TestUtils.AreEqual(any(int3(-100, -32, 0)), true); + TestUtils.AreEqual(any(int3(-121, 100, 322)), true); + } + + [TestCompiler] + public static void any_int4() + { + TestUtils.AreEqual(any(int4(0, 0, 0, 0)), false); + TestUtils.AreEqual(any(int4(0, 0, 0, 1)), true); + TestUtils.AreEqual(any(int4(0, 0, -1, 0)), true); + TestUtils.AreEqual(any(int4(0, 0, int.MinValue, int.MaxValue)), true); + + TestUtils.AreEqual(any(int4(0, 5, 0, 0)), true); + TestUtils.AreEqual(any(int4(0, 11, 0, -11)), true); + TestUtils.AreEqual(any(int4(0, 12, 55, 0)), true); + TestUtils.AreEqual(any(int4(0, 100, 102, 10123)), true); + + TestUtils.AreEqual(any(int4(-323, 0, 0, 0)), true); + TestUtils.AreEqual(any(int4(-564, 0, 0, 55)), true); + TestUtils.AreEqual(any(int4(23, 0, 12, 0)), true); + TestUtils.AreEqual(any(int4(100, 0, 55, 22)), true); + + TestUtils.AreEqual(any(int4(22, -99, 0, 0)), true); + TestUtils.AreEqual(any(int4(33, -88, 0, 100)), true); + TestUtils.AreEqual(any(int4(44, -77, 0x10000, 0)), true); + TestUtils.AreEqual(any(int4(55, -66, 0x20000, 0x30000)), true); + } + + + [TestCompiler] + public static void any_uint2() + { + TestUtils.AreEqual(any(uint2(0u, 0u)), false); + TestUtils.AreEqual(any(uint2(0u, 0xFFFFFFFFu)), true); + TestUtils.AreEqual(any(uint2(100u, 0u)), true); + TestUtils.AreEqual(any(uint2(200u, 1000u)), true); + } + + + [TestCompiler] + public static void any_uint3() + { + TestUtils.AreEqual(any(uint3(0u, 0u, 0u)), false); + TestUtils.AreEqual(any(uint3(0u, 0u, 1u)), true); + TestUtils.AreEqual(any(uint3(0u, 0xFFFFFFFFu, 0u)), true); + TestUtils.AreEqual(any(uint3(0u, uint.MinValue, uint.MaxValue)), true); + + TestUtils.AreEqual(any(uint3(5u, 0u, 0u)), true); + TestUtils.AreEqual(any(uint3(11u, 0u, 100u)), true); + TestUtils.AreEqual(any(uint3(100u, 32u, 0u)), true); + TestUtils.AreEqual(any(uint3(121u, 100u, 322u)), true); + } + + [TestCompiler] + public static void any_uint4() + { + TestUtils.AreEqual(any(uint4(0u, 0u, 0u, 0u)), false); + TestUtils.AreEqual(any(uint4(0u, 0u, 0u, 1u)), true); + TestUtils.AreEqual(any(uint4(0u, 0u, 0xFFFFFFFFu, 0u)), true); + TestUtils.AreEqual(any(uint4(0u, 0u, uint.MinValue, uint.MaxValue)), true); + + TestUtils.AreEqual(any(uint4(0u, 5u, 0u, 0u)), true); + TestUtils.AreEqual(any(uint4(0u, 11u, 0u, 22u)), true); + TestUtils.AreEqual(any(uint4(0u, 12u, 55u, 0u)), true); + TestUtils.AreEqual(any(uint4(0u, 100u, 102u, 10123u)), true); + + TestUtils.AreEqual(any(uint4(323u, 0u, 0u, 0u)), true); + TestUtils.AreEqual(any(uint4(564u, 0u, 0u, 55u)), true); + TestUtils.AreEqual(any(uint4(23u, 0u, 12u, 0u)), true); + TestUtils.AreEqual(any(uint4(100u, 0u, 55u, 22u)), true); + + TestUtils.AreEqual(any(uint4(22u, 99u, 0u, 0u)), true); + TestUtils.AreEqual(any(uint4(33u, 88u, 0u, 100u)), true); + TestUtils.AreEqual(any(uint4(44u, 77u, 0x10000, 0u)), true); + TestUtils.AreEqual(any(uint4(55u, 66u, 0x20000u, 0x30000u)), true); + } + + + [TestCompiler] + public static void any_float2() + { + //TestUtils.AreEqual(any(float2(0, float.NaN)), true); // TODO: doesn't work with burst + + TestUtils.AreEqual(any(float2(0, -0)), false); + //TestUtils.AreEqual(any(float2(0, float.NaN)), true); // TODO: doesn't work with burst + TestUtils.AreEqual(any(float2(-2.0f, 0)), true); + TestUtils.AreEqual(any(float2(float.PositiveInfinity, float.NegativeInfinity)), true); + } + + + [TestCompiler] + public static void any_float3() + { + //TestUtils.AreEqual(any(float3(0.0f, float.NaN, 0.0f)), true); // TODO: doesn't work with burst + + TestUtils.AreEqual(any(float3(0.0f, 0.0f, 0.0f)), false); + //TestUtils.AreEqual(any(float3(0.0f, 0.0f, float.NaN)), true); // TODO: doesn't work with burst + TestUtils.AreEqual(any(float3(0.0f, -1.0f, 0.0f)), true); + TestUtils.AreEqual(any(float3(0.0f, float.NegativeInfinity, float.PositiveInfinity)), true); + + TestUtils.AreEqual(any(float3(float.PositiveInfinity, 0.0f, 0.0f)), true); + TestUtils.AreEqual(any(float3(float.MaxValue, -0.0f, 1e38f)), true); + TestUtils.AreEqual(any(float3(-1.2e28f, 3.2f, 0.0f)), true); + TestUtils.AreEqual(any(float3(121.2f, 100.0f, -32.2f)), true); + } + + [TestCompiler] + public static void any_float4() + { + TestUtils.AreEqual(any(float4(0.0f, 0.0f, 0.0f, 0.0f)), false); + //TestUtils.AreEqual(any(float4(0.0f, 0.0f, 0.0f, float.NaN)), true); // TODO: doesn't work with burst + TestUtils.AreEqual(any(float4(0.0f, 0.0f, 1.0f, 0.0f)), true); + TestUtils.AreEqual(any(float4(0.0f, 0.0f, float.NegativeInfinity, float.PositiveInfinity)), true); + + TestUtils.AreEqual(any(float4(0.0f, float.PositiveInfinity, 0.0f, 0.0f)), true); + TestUtils.AreEqual(any(float4(0.0f, 11.2f, 0.0f, float.MinValue)), true); + TestUtils.AreEqual(any(float4(0.0f, -12.2f, float.MaxValue, 0u)), true); + TestUtils.AreEqual(any(float4(0.0f, -1.2e28f, -32.2f, 22.0f)), true); + + TestUtils.AreEqual(any(float4(323.2f, 0.0f, 0.0f, 0.0f)), true); + TestUtils.AreEqual(any(float4(-564.6f, 0.0f, 0.0f, 1113f)), true); + TestUtils.AreEqual(any(float4(-23.0f, 0.0f, 0.2f, 0.0f)), true); + TestUtils.AreEqual(any(float4(102.0f, 0.0f, 5.5f, -22.0f)), true); + + //TestUtils.AreEqual(any(float4(float.NaN, -99.0f, 0.0f, 0.0f)), true); // TODO: doesn't work with burst + TestUtils.AreEqual(any(float4(33.0f, 88.0f, 0.0f, 100.0f)), true); + TestUtils.AreEqual(any(float4(44.0f, 77.0f, -2000.0f, 0.0f)), true); + TestUtils.AreEqual(any(float4(55.0f, 66.0f, 5000.0f, 10000.2f)), true); + } + + [TestCompiler] + public static void any_double2() + { + //TestUtils.AreEqual(any(double2(0, double.NaN)), true); // TODO: doesn't work with burst. + + TestUtils.AreEqual(any(double2(0, -0)), false); + //TestUtils.AreEqual(any(double2(0, double.NaN)), true); // TODO: doesn't work with burst + TestUtils.AreEqual(any(double2(-2.0, 0)), true); + TestUtils.AreEqual(any(double2(double.PositiveInfinity, double.NegativeInfinity)), true); + } + + + [TestCompiler] + public static void any_double3() + { + //TestUtils.AreEqual(any(double3(0.0, double.NaN, 0.0)), true); // TODO: doesn't work with burst + + TestUtils.AreEqual(any(double3(0.0, 0.0, 0.0)), false); + //TestUtils.AreEqual(any(double3(0.0, 0.0, double.NaN)), true); // TODO: doesn't work with burst + TestUtils.AreEqual(any(double3(0.0, -1.0, 0.0)), true); + TestUtils.AreEqual(any(double3(0.0, double.NegativeInfinity, double.PositiveInfinity)), true); + + TestUtils.AreEqual(any(double3(double.PositiveInfinity, 0.0, 0.0)), true); + TestUtils.AreEqual(any(double3(double.MaxValue, -0.0, 1e108)), true); + TestUtils.AreEqual(any(double3(-1.2e128, 3.2, 0.0)), true); + TestUtils.AreEqual(any(double3(121.2, 100.0, -32.2)), true); + } + + [TestCompiler] + public static void any_double4() + { + TestUtils.AreEqual(any(double4(0.0, 0.0, 0.0, 0.0)), false); + //TestUtils.AreEqual(any(double4(0.0, 0.0, 0.0, double.NaN)), true); // TODO: doesn't work with burst + TestUtils.AreEqual(any(double4(0.0, 0.0, 1.0, 0.0)), true); + TestUtils.AreEqual(any(double4(0.0, 0.0, double.NegativeInfinity, double.PositiveInfinity)), true); + + TestUtils.AreEqual(any(double4(0.0, double.PositiveInfinity, 0.0, 0.0)), true); + TestUtils.AreEqual(any(double4(0.0, 11.2, 0.0, double.MinValue)), true); + TestUtils.AreEqual(any(double4(0.0, -12.2, double.MaxValue, 0.0)), true); + TestUtils.AreEqual(any(double4(0.0, -1.2e28, -32.2, 22.0)), true); + + TestUtils.AreEqual(any(double4(323.2, 0.0, 0.0, 0.0)), true); + TestUtils.AreEqual(any(double4(-564.6, 0.0, 0.0, 1113.0)), true); + TestUtils.AreEqual(any(double4(-23.0, 0.0, 0.2, 0.0)), true); + TestUtils.AreEqual(any(double4(102.0, 0.0, 5.5, -22.0)), true); + + //TestUtils.AreEqual(any(double4(double.NaN, -99.0, 0.0, 0.0)), true); // TODO: doesn't work with burst + TestUtils.AreEqual(any(double4(33.0, 88.0, 0.0, 100.0)), true); + TestUtils.AreEqual(any(double4(44.0, 77.0, -2000.0, 0.0)), true); + TestUtils.AreEqual(any(double4(55.0, 66.0, 5000.0, 10000.2)), true); + } + + + [TestCompiler] + public static void all_bool2() + { + TestUtils.AreEqual(all(bool2(false, false)), false); + TestUtils.AreEqual(all(bool2(false, true)), false); + TestUtils.AreEqual(all(bool2(true, false)), false); + TestUtils.AreEqual(all(bool2(true, true)), true); + } + + [TestCompiler] + public static void all_bool3() + { + TestUtils.AreEqual(all(bool3(false, false, false)), false); + TestUtils.AreEqual(all(bool3(false, false, true)), false); + TestUtils.AreEqual(all(bool3(false, true, false)), false); + TestUtils.AreEqual(all(bool3(false, true, true)), false); + + TestUtils.AreEqual(all(bool3(true, false, false)), false); + TestUtils.AreEqual(all(bool3(true, false, true)), false); + TestUtils.AreEqual(all(bool3(true, true, false)), false); + TestUtils.AreEqual(all(bool3(true, true, true)), true); + } + + [TestCompiler] + public static void all_bool4() + { + TestUtils.AreEqual(all(bool4(false, false, false, false)), false); + TestUtils.AreEqual(all(bool4(false, false, false, true)), false); + TestUtils.AreEqual(all(bool4(false, false, true, false)), false); + TestUtils.AreEqual(all(bool4(false, false, true, true)), false); + + TestUtils.AreEqual(all(bool4(false, true, false, false)), false); + TestUtils.AreEqual(all(bool4(false, true, false, true)), false); + TestUtils.AreEqual(all(bool4(false, true, true, false)), false); + TestUtils.AreEqual(all(bool4(false, true, true, true)), false); + + TestUtils.AreEqual(all(bool4(true, false, false, false)), false); + TestUtils.AreEqual(all(bool4(true, false, false, true)), false); + TestUtils.AreEqual(all(bool4(true, false, true, false)), false); + TestUtils.AreEqual(all(bool4(true, false, true, true)), false); + + TestUtils.AreEqual(all(bool4(true, true, false, false)), false); + TestUtils.AreEqual(all(bool4(true, true, false, true)), false); + TestUtils.AreEqual(all(bool4(true, true, true, false)), false); + TestUtils.AreEqual(all(bool4(true, true, true, true)), true); + } + + [TestCompiler] + public static void all_int2() + { + TestUtils.AreEqual(all(int2(0, 0)), false); + TestUtils.AreEqual(all(int2(0, -1)), false); + TestUtils.AreEqual(all(int2(1, 0)), false); + TestUtils.AreEqual(all(int2(2, int.MinValue)), true); + } + + [TestCompiler] + public static void all_int3() + { + TestUtils.AreEqual(all(int3(0, 0, 0)), false); + TestUtils.AreEqual(all(int3(0, 0, 1)), false); + TestUtils.AreEqual(all(int3(0, -1, 0)), false); + TestUtils.AreEqual(all(int3(0, int.MinValue, int.MaxValue)), false); + + TestUtils.AreEqual(all(int3(5, 0, 0)), false); + TestUtils.AreEqual(all(int3(11, 0, -11)), false); + TestUtils.AreEqual(all(int3(-100, -32, 0)), false); + TestUtils.AreEqual(all(int3(-121, 100, 322)), true); + } + + [TestCompiler] + public static void all_int4() + { + TestUtils.AreEqual(all(int4(0, 0, 0, 0)), false); + TestUtils.AreEqual(all(int4(0, 0, 0, 1)), false); + TestUtils.AreEqual(all(int4(0, 0, -1, 0)), false); + TestUtils.AreEqual(all(int4(0, 0, int.MinValue, int.MaxValue)), false); + + TestUtils.AreEqual(all(int4(0, 5, 0, 0)), false); + TestUtils.AreEqual(all(int4(0, 11, 0, -11)), false); + TestUtils.AreEqual(all(int4(0, 12, 55, 0)), false); + TestUtils.AreEqual(all(int4(0, 100, 102, 10123)), false); + + TestUtils.AreEqual(all(int4(-323, 0, 0, 0)), false); + TestUtils.AreEqual(all(int4(-564, 0, 0, 55)), false); + TestUtils.AreEqual(all(int4(23, 0, 12, 0)), false); + TestUtils.AreEqual(all(int4(100, 0, 55, 22)), false); + + TestUtils.AreEqual(all(int4(22, -99, 0, 0)), false); + TestUtils.AreEqual(all(int4(33, -88, 0, 100)), false); + TestUtils.AreEqual(all(int4(44, -77, 0x10000, 0)), false); + TestUtils.AreEqual(all(int4(55, -66, 0x20000, 0x30000)), true); + } + + + [TestCompiler] + public static void all_uint2() + { + TestUtils.AreEqual(all(uint2(0u, 0u)), false); + TestUtils.AreEqual(all(uint2(0u, 0xFFFFFFFFu)), false); + TestUtils.AreEqual(all(uint2(100u, 0u)), false); + TestUtils.AreEqual(all(uint2(200u, 1000u)), true); + } + + + [TestCompiler] + public static void all_uint3() + { + TestUtils.AreEqual(all(uint3(0u, 0u, 0u)), false); + TestUtils.AreEqual(all(uint3(0u, 0u, 1u)), false); + TestUtils.AreEqual(all(uint3(0u, 0xFFFFFFFFu, 0u)), false); + TestUtils.AreEqual(all(uint3(0u, uint.MinValue, uint.MaxValue)), false); + + TestUtils.AreEqual(all(uint3(5u, 0u, 0u)), false); + TestUtils.AreEqual(all(uint3(11u, 0u, 100u)), false); + TestUtils.AreEqual(all(uint3(100u, 32u, 0u)), false); + TestUtils.AreEqual(all(uint3(121u, 100u, 322u)), true); + } + + [TestCompiler] + public static void all_uint4() + { + TestUtils.AreEqual(all(uint4(0u, 0u, 0u, 0u)), false); + TestUtils.AreEqual(all(uint4(0u, 0u, 0u, 1u)), false); + TestUtils.AreEqual(all(uint4(0u, 0u, 0xFFFFFFFFu, 0u)), false); + TestUtils.AreEqual(all(uint4(0u, 0u, uint.MinValue, uint.MaxValue)), false); + + TestUtils.AreEqual(all(uint4(0u, 5u, 0u, 0u)), false); + TestUtils.AreEqual(all(uint4(0u, 11u, 0u, 22u)), false); + TestUtils.AreEqual(all(uint4(0u, 12u, 55u, 0u)), false); + TestUtils.AreEqual(all(uint4(0u, 100u, 102u, 10123u)), false); + + TestUtils.AreEqual(all(uint4(323u, 0u, 0u, 0u)), false); + TestUtils.AreEqual(all(uint4(564u, 0u, 0u, 55u)), false); + TestUtils.AreEqual(all(uint4(23u, 0u, 12u, 0u)), false); + TestUtils.AreEqual(all(uint4(100u, 0u, 55u, 22u)), false); + + TestUtils.AreEqual(all(uint4(22u, 99u, 0u, 0u)), false); + TestUtils.AreEqual(all(uint4(33u, 88u, 0u, 100u)), false); + TestUtils.AreEqual(all(uint4(44u, 77u, 0x10000, 0u)), false); + TestUtils.AreEqual(all(uint4(55u, 66u, 0x20000u, 0x30000u)), true); + } + + + [TestCompiler] + public static void all_float2() + { + TestUtils.AreEqual(all(float2(float.NaN, float.NaN)), true); + + TestUtils.AreEqual(all(float2(0, -0)), false); + TestUtils.AreEqual(all(float2(0, float.NaN)), false); + TestUtils.AreEqual(all(float2(-2.0f, 0)), false); + TestUtils.AreEqual(all(float2(float.PositiveInfinity, float.NegativeInfinity)), true); + } + + + [TestCompiler] + public static void all_float3() + { + TestUtils.AreEqual(all(float3(float.NaN, float.NaN, float.NaN)), true); + + TestUtils.AreEqual(all(float3(0.0f, 0.0f, 0.0f)), false); + TestUtils.AreEqual(all(float3(0.0f, 0.0f, float.NaN)), false); + TestUtils.AreEqual(all(float3(0.0f, -1.0f, 0.0f)), false); + TestUtils.AreEqual(all(float3(0.0f, float.NegativeInfinity, float.PositiveInfinity)), false); + + TestUtils.AreEqual(all(float3(float.PositiveInfinity, 0.0f, 0.0f)), false); + TestUtils.AreEqual(all(float3(float.MaxValue, -0.0f, 1e38f)), false); + TestUtils.AreEqual(all(float3(-1.2e28f, 3.2f, 0.0f)), false); + TestUtils.AreEqual(all(float3(121.2f, 100.0f, -32.2f)), true); + } + + [TestCompiler] + public static void all_float4() + { + TestUtils.AreEqual(all(float4(float.NaN, float.NaN, float.NaN, float.NaN)), true); + + TestUtils.AreEqual(all(float4(0.0f, 0.0f, 0.0f, 0.0f)), false); + TestUtils.AreEqual(all(float4(0.0f, 0.0f, 0.0f, float.NaN)), false); + TestUtils.AreEqual(all(float4(0.0f, 0.0f, 1.0f, 0.0f)), false); + TestUtils.AreEqual(all(float4(0.0f, 0.0f, float.NegativeInfinity, float.PositiveInfinity)), false); + + TestUtils.AreEqual(all(float4(0.0f, float.PositiveInfinity, 0.0f, 0.0f)), false); + TestUtils.AreEqual(all(float4(0.0f, 11.2f, 0.0f, float.MinValue)), false); + TestUtils.AreEqual(all(float4(0.0f, -12.2f, float.MaxValue, 0u)), false); + TestUtils.AreEqual(all(float4(0.0f, -1.2e28f, -32.2f, 22.0f)), false); + + TestUtils.AreEqual(all(float4(323.2f, 0.0f, 0.0f, 0.0f)), false); + TestUtils.AreEqual(all(float4(-564.6f, 0.0f, 0.0f, 1113f)), false); + TestUtils.AreEqual(all(float4(-23.0f, 0.0f, 0.2f, 0.0f)), false); + TestUtils.AreEqual(all(float4(102.0f, 0.0f, 5.5f, -22.0f)), false); + + TestUtils.AreEqual(all(float4(float.NaN, -99.0f, 0.0f, 0.0f)), false); + TestUtils.AreEqual(all(float4(33.0f, 88.0f, 0.0f, 100.0f)), false); + TestUtils.AreEqual(all(float4(44.0f, 77.0f, -2000.0f, 0.0f)), false); + TestUtils.AreEqual(all(float4(55.0f, 66.0f, 5000.0f, 10000.2f)), true); + } + + [TestCompiler] + public static void all_double2() + { + TestUtils.AreEqual(all(double2(double.NaN, double.NaN)), true); + + TestUtils.AreEqual(all(double2(0, -0)), false); + TestUtils.AreEqual(all(double2(0, double.NaN)), false); + TestUtils.AreEqual(all(double2(-2.0, 0)), false); + TestUtils.AreEqual(all(double2(double.PositiveInfinity, double.NegativeInfinity)), true); + } + + + [TestCompiler] + public static void all_double3() + { + TestUtils.AreEqual(all(double3(double.NaN, double.NaN, double.NaN)), true); + + TestUtils.AreEqual(all(double3(0.0, 0.0, 0.0)), false); + TestUtils.AreEqual(all(double3(0.0, 0.0, double.NaN)), false); + TestUtils.AreEqual(all(double3(0.0, -1.0, 0.0)), false); + TestUtils.AreEqual(all(double3(0.0, double.NegativeInfinity, double.PositiveInfinity)), false); + + TestUtils.AreEqual(all(double3(double.PositiveInfinity, 0.0, 0.0)), false); + TestUtils.AreEqual(all(double3(double.MaxValue, -0.0, 1e108)), false); + TestUtils.AreEqual(all(double3(-1.2e128, 3.2, 0.0)), false); + TestUtils.AreEqual(all(double3(121.2, 100.0, -32.2)), true); + } + + [TestCompiler] + public static void all_double4() + { + TestUtils.AreEqual(all(double4(double.NaN, double.NaN, double.NaN, double.NaN)), true); + + TestUtils.AreEqual(all(double4(0.0, 0.0, 0.0, 0.0)), false); + TestUtils.AreEqual(all(double4(0.0, 0.0, 0.0, double.NaN)), false); + TestUtils.AreEqual(all(double4(0.0, 0.0, 1.0, 0.0)), false); + TestUtils.AreEqual(all(double4(0.0, 0.0, double.NegativeInfinity, double.PositiveInfinity)), false); + + TestUtils.AreEqual(all(double4(0.0, double.PositiveInfinity, 0.0, 0.0)), false); + TestUtils.AreEqual(all(double4(0.0, 11.2, 0.0, double.MinValue)), false); + TestUtils.AreEqual(all(double4(0.0, -12.2, double.MaxValue, 0.0)), false); + TestUtils.AreEqual(all(double4(0.0, -1.2e28, -32.2, 22.0)), false); + + TestUtils.AreEqual(all(double4(323.2, 0.0, 0.0, 0.0)), false); + TestUtils.AreEqual(all(double4(-564.6, 0.0, 0.0, 1113.0)), false); + TestUtils.AreEqual(all(double4(-23.0, 0.0, 0.2, 0.0)), false); + TestUtils.AreEqual(all(double4(102.0, 0.0, 5.5, -22.0)), false); + + TestUtils.AreEqual(all(double4(double.NaN, -99.0, 0.0, 0.0)), false); + TestUtils.AreEqual(all(double4(33.0, 88.0, 0.0, 100.0)), false); + TestUtils.AreEqual(all(double4(44.0, 77.0, -2000.0, 0.0)), false); + TestUtils.AreEqual(all(double4(55.0, 66.0, 5000.0, 10000.2)), true); + } + + + [TestCompiler] + public static void length_float2() + { + TestUtils.AreEqual(length(float2(0.0f, 0.0f)), 0.0f, 0, false); + TestUtils.AreEqual(length(float2(1.2f, -2.6f)), 2.86356421265527063f, 8, false); + TestUtils.AreEqual(length(float2(1.2f, float.NaN)), float.NaN, 0, false); + TestUtils.AreEqual(length(float2(1.2f, float.PositiveInfinity)), float.PositiveInfinity, 0, false); + TestUtils.AreEqual(length(float2(1.2f, float.NegativeInfinity)), float.PositiveInfinity, 0, false); + + TestUtils.AreEqual(length(float2(-1.2e18f, 2.6e18f)), 2.863564e18f, 8, false); + TestUtils.AreEqual(length(float2(-1.2e19f, -2.6e19f)), double.PositiveInfinity, 8, false); + } + + [TestCompiler] + public static void length_float3() + { + TestUtils.AreEqual(length(float3(0.0f, 0.0f, 0.0f)), 0.0f, 0, false); + TestUtils.AreEqual(length(float3(1.2f, -2.6f, 2.2f)), 3.611094f, 8, false); + TestUtils.AreEqual(length(float3(1.2f, float.NaN, 2.2f)), float.NaN, 0, false); + TestUtils.AreEqual(length(float3(1.2f, float.PositiveInfinity, 2.2f)), float.PositiveInfinity, 0, false); + TestUtils.AreEqual(length(float3(1.2f, float.NegativeInfinity, 2.2f)), float.PositiveInfinity, 0, false); + + TestUtils.AreEqual(length(float3(-1.2e18f, 2.6e18f, 2.2e18f)), 3.611094e18f, 8, false); + TestUtils.AreEqual(length(float3(-1.2e19f, -2.6e19f, 2.2e19f)), float.PositiveInfinity, 8, false); + } + + [TestCompiler] + public static void length_float4() + { + TestUtils.AreEqual(length(float4(0.0f, 0.0f, 0.0f, 0.0f)), 0.0f, 0, false); + TestUtils.AreEqual(length(float4(1.2f, -2.6f, 2.2f, -4.2f)), 5.538953f, 8, false); + TestUtils.AreEqual(length(float4(1.2f, float.NaN, 2.2f, -4.2f)), float.NaN, 0, false); + TestUtils.AreEqual(length(float4(1.2f, float.PositiveInfinity, 2.2f, -4.2f)), float.PositiveInfinity, 0, false); + TestUtils.AreEqual(length(float4(1.2f, float.NegativeInfinity, 2.2f, -4.2f)), float.PositiveInfinity, 0, false); + + TestUtils.AreEqual(length(float4(-1.2e18f, 2.6e18f, 2.2e18f, -4.2e18f)), 5.538953e18f, 8, false); + TestUtils.AreEqual(length(float4(-1.2e19f, -2.6e19f, 2.2e19f, -4.2e19f)), float.PositiveInfinity, 8, false); + } + + + [TestCompiler] + public static void length_double2() + { + TestUtils.AreEqual(length(double2(0.0, 0.0)), 0.0, 0, false); + TestUtils.AreEqual(length(double2(1.2, -2.6)), 2.86356421265527063, 8, false); + TestUtils.AreEqual(length(double2(1.2, double.NaN)), double.NaN, 0, false); + TestUtils.AreEqual(length(double2(1.2, double.PositiveInfinity)), double.PositiveInfinity, 0, false); + TestUtils.AreEqual(length(double2(1.2, double.NegativeInfinity)), double.PositiveInfinity, 0, false); + + TestUtils.AreEqual(length(double2(-1.2e153, 2.6e153)), 2.86356421265527063e153, 8, false); + } + + [TestCompiler] + public static void length_double3() + { + TestUtils.AreEqual(length(double3(0.0, 0.0, 0.0)), 0.0, 0, false); + TestUtils.AreEqual(length(double3(1.2, -2.6, 2.2)), 3.6110940170535577, 8, false); + TestUtils.AreEqual(length(double3(1.2, double.NaN, 2.2)), double.NaN, 0, false); + TestUtils.AreEqual(length(double3(1.2, double.PositiveInfinity, 2.2)), double.PositiveInfinity, 0, false); + TestUtils.AreEqual(length(double3(1.2, double.NegativeInfinity, 2.2)), double.PositiveInfinity, 0, false); + + TestUtils.AreEqual(length(double3(-1.2e153, 2.6e153, 2.2e153)), 3.6110940170535577e153, 8, false); + } + + [TestCompiler] + public static void length_double4() + { + TestUtils.AreEqual(length(double4(0.0, 0.0, 0.0, 0.0)), 0.0, 0, false); + TestUtils.AreEqual(length(double4(1.2, -2.6, 2.2, -4.2)), 5.5389529696504916, 8, false); + TestUtils.AreEqual(length(double4(1.2, double.NaN, 2.2, -4.2)), double.NaN, 0, false); + TestUtils.AreEqual(length(double4(1.2, double.PositiveInfinity, 2.2, -4.2)), double.PositiveInfinity, 0, false); + TestUtils.AreEqual(length(double4(1.2, double.NegativeInfinity, 2.2, -4.2)), double.PositiveInfinity, 0, false); + + TestUtils.AreEqual(length(double4(-1.2e153, 2.6e153, 2.2e153, -4.2e153)), 5.5389529696504916e153, 8, false); + } + + + [TestCompiler] + public static void lengthsq_float2() + { + TestUtils.AreEqual(lengthsq(float2(0.0f, 0.0f)), 0.0f, 0, false); + TestUtils.AreEqual(lengthsq(float2(1.2f, -2.6f)), 8.2f, 8, false); + TestUtils.AreEqual(lengthsq(float2(1.2f, float.NaN)), float.NaN, 0, false); + TestUtils.AreEqual(lengthsq(float2(1.2f, float.PositiveInfinity)), float.PositiveInfinity, 0, false); + TestUtils.AreEqual(lengthsq(float2(1.2f, float.NegativeInfinity)), float.PositiveInfinity, 0, false); + + TestUtils.AreEqual(lengthsq(float2(-1.2e18f, 2.6e18f)), 8.2e36f, 8, false); + } + + [TestCompiler] + public static void lengthsq_float3() + { + TestUtils.AreEqual(lengthsq(float3(0.0f, 0.0f, 0.0f)), 0.0f, 0, false); + TestUtils.AreEqual(lengthsq(float3(1.2f, -2.6f, 2.2f)), 13.04f, 8, false); + TestUtils.AreEqual(lengthsq(float3(1.2f, float.NaN, 2.2f)), float.NaN, 0, false); + TestUtils.AreEqual(lengthsq(float3(1.2f, float.PositiveInfinity, 2.2f)), float.PositiveInfinity, 0, false); + TestUtils.AreEqual(lengthsq(float3(1.2f, float.NegativeInfinity, 2.2f)), float.PositiveInfinity, 0, false); + + TestUtils.AreEqual(lengthsq(float3(-1.2e18f, 2.6e18f, 2.2e18f)), 1.304e37f, 8, false); + TestUtils.AreEqual(lengthsq(float3(-1.2e19f, -2.6e19f, 2.2e19f)), float.PositiveInfinity, 8, false); + } + + [TestCompiler] + public static void lengthsq_float4() + { + TestUtils.AreEqual(lengthsq(float4(0.0f, 0.0f, 0.0f, 0.0f)), 0.0f, 0, false); + TestUtils.AreEqual(lengthsq(float4(1.2f, -2.6f, 2.2f, -4.2f)), 30.68f, 8, false); + TestUtils.AreEqual(lengthsq(float4(1.2f, float.NaN, 2.2f, -4.2f)), float.NaN, 0, false); + TestUtils.AreEqual(lengthsq(float4(1.2f, float.PositiveInfinity, 2.2f, -4.2f)), float.PositiveInfinity, 0, false); + TestUtils.AreEqual(lengthsq(float4(1.2f, float.NegativeInfinity, 2.2f, -4.2f)), float.PositiveInfinity, 0, false); + + TestUtils.AreEqual(lengthsq(float4(-1.2e18f, 2.6e18f, 2.2e18f, -4.2e18f)), 3.068e37f, 8, false); + TestUtils.AreEqual(lengthsq(float4(-1.2e19f, -2.6e19f, 2.2e19f, -4.2e19f)), float.PositiveInfinity, 8, false); + } + + + [TestCompiler] + public static void lengthsq_double2() + { + TestUtils.AreEqual(lengthsq(double2(0.0, 0.0)), 0.0, 0, false); + TestUtils.AreEqual(lengthsq(double2(1.2, -2.6)), 8.2, 8, false); + TestUtils.AreEqual(lengthsq(double2(1.2, double.NaN)), double.NaN, 0, false); + TestUtils.AreEqual(lengthsq(double2(1.2, double.PositiveInfinity)), double.PositiveInfinity, 0, false); + TestUtils.AreEqual(lengthsq(double2(1.2, double.NegativeInfinity)), double.PositiveInfinity, 0, false); + + TestUtils.AreEqual(lengthsq(double2(-1.2e153, 2.6e153)), 8.2e306, 8, false); + TestUtils.AreEqual(lengthsq(double2(-1.2e154, -2.6e154)), double.PositiveInfinity, 8, false); + } + + [TestCompiler] + public static void lengthsq_double3() + { + TestUtils.AreEqual(lengthsq(double3(0.0, 0.0, 0.0)), 0.0, 0, false); + TestUtils.AreEqual(lengthsq(double3(1.2, -2.6, 2.2)), 13.04, 8, false); + TestUtils.AreEqual(lengthsq(double3(1.2, double.NaN, 2.2)), double.NaN, 0, false); + TestUtils.AreEqual(lengthsq(double3(1.2, double.PositiveInfinity, 2.2)), double.PositiveInfinity, 0, false); + TestUtils.AreEqual(lengthsq(double3(1.2, double.NegativeInfinity, 2.2)), double.PositiveInfinity, 0, false); + + TestUtils.AreEqual(lengthsq(double3(-1.2e153, 2.6e153, 2.2e153)), 1.304e307, 8, false); + TestUtils.AreEqual(lengthsq(double3(-1.2e154, -2.6e154, 2.2e154)), double.PositiveInfinity, 8, false); + } + + [TestCompiler] + public static void lengthsq_double4() + { + TestUtils.AreEqual(lengthsq(double4(0.0, 0.0, 0.0, 0.0)), 0.0, 0, false); + TestUtils.AreEqual(lengthsq(double4(1.2, -2.6, 2.2, -4.2)), 30.68, 8, false); + TestUtils.AreEqual(lengthsq(double4(1.2, double.NaN, 2.2, -4.2)), double.NaN, 0, false); + TestUtils.AreEqual(lengthsq(double4(1.2, double.PositiveInfinity, 2.2, -4.2)), double.PositiveInfinity, 0, false); + TestUtils.AreEqual(lengthsq(double4(1.2, double.NegativeInfinity, 2.2, -4.2)), double.PositiveInfinity, 0, false); + + TestUtils.AreEqual(lengthsq(double4(-1.2e153, 2.6e153, 2.2e153, -4.2e153)), 3.068e307, 8, false); + TestUtils.AreEqual(lengthsq(double4(-1.2e154, -2.6e154, 2.2e154, -4.2e154)), double.PositiveInfinity, 0, false); + } + + + + + [TestCompiler] + public static void distance_float2() + { + TestUtils.AreEqual(distance(float2(1.3f, -2.4f), float2(1.3f, -2.4f)), 0.0f, 0, false); + + TestUtils.AreEqual(distance(float2(1.3f, -2.4f), float2(-5.3f, 4.3f)), 9.404786f, 8, false); + TestUtils.AreEqual(distance(float2(1.3e18f, -2.4e18f), float2(-5.3e18f, 4.3e18f)), 9.404786e18f, 8, false); + TestUtils.AreEqual(distance(float2(1.3e19f, -2.4e19f), float2(-5.3e19f, 4.3e19f)), float.PositiveInfinity, 0, false); + + TestUtils.AreEqual(distance(float2(1.3f, -2.4f), float2(float.NaN, 4.3f)), float.NaN, 0, false); + TestUtils.AreEqual(distance(float2(1.3f, -2.4f), float2(-5.3f, float.PositiveInfinity)), float.PositiveInfinity, 0, false); + TestUtils.AreEqual(distance(float2(1.3f, float.NegativeInfinity), float2(-5.3f, 4.3f)), float.PositiveInfinity, 0, false); + } + + [TestCompiler] + public static void distance_float3() + { + TestUtils.AreEqual(distance(float2(1.3f, -2.4f), float2(1.3f, -2.4f)), 0.0f, 0, false); + + TestUtils.AreEqual(distance(float2(1.3f, -2.4f), float2(-5.3f, 4.3f)), 9.404786f, 8, false); + TestUtils.AreEqual(distance(float2(1.3e18f, -2.4e18f), float2(-5.3e18f, 4.3e18f)), 9.404786e18f, 8, false); + TestUtils.AreEqual(distance(float2(1.3e19f, -2.4e19f), float2(-5.3e19f, 4.3e19f)), float.PositiveInfinity, 0, false); + + TestUtils.AreEqual(distance(float2(1.3f, -2.4f), float2(float.NaN, 4.3f)), float.NaN, 0, false); + TestUtils.AreEqual(distance(float2(1.3f, -2.4f), float2(-5.3f, float.PositiveInfinity)), float.PositiveInfinity, 0, false); + TestUtils.AreEqual(distance(float2(1.3f, float.NegativeInfinity), float2(-5.3f, 4.3f)), float.PositiveInfinity, 0, false); + } + + [TestCompiler] + public static void distance_float4() + { + TestUtils.AreEqual(distance(float4(1.3f, -2.4f, 5.7f, 3.1f), float4(1.3f, -2.4f, 5.7f, 3.1f)), 0.0, 0, false); + + TestUtils.AreEqual(distance(float4(1.3f, -2.4f, 5.7f, 3.1f), float4(-5.3f, 4.3f, 4.7f, 0.3f)), 9.863569f, 8, false); + TestUtils.AreEqual(distance(float4(1.3e18f, -2.4e18f, 5.7e18f, 3.1e18f), float4(-5.3e18f, 4.3e18f, 4.7e18f, 3e17f)), 9.863569e18f, 8, false); + TestUtils.AreEqual(distance(float4(1.3e19f, -2.4e19f, 5.7e19f, 3.1e19f), float4(-5.3e19f, 4.3e19f, 4.7e19f, 3e18f)), float.PositiveInfinity, 0, false); + + TestUtils.AreEqual(distance(float4(1.3f, -2.4f, 5.7f, 3.1f), float4(float.NaN, 4.3f, 4.7f, 0.3f)), float.NaN, 0, false); + TestUtils.AreEqual(distance(float4(1.3f, -2.4f, 5.7f, 3.1f), float4(-5.3f, float.PositiveInfinity, 4.7f, 0.3f)), float.PositiveInfinity, 0, false); + TestUtils.AreEqual(distance(float4(1.3f, float.NegativeInfinity, 5.7f, 3.1f), double4(-5.3f, 4.3f, 4.7f, 0.3f)), float.PositiveInfinity, 0, false); + } + + + [TestCompiler] + public static void distance_double2() + { + TestUtils.AreEqual(distance(double2(1.3, -2.4), double2(1.3, -2.4)), 0.0, 0, false); + + TestUtils.AreEqual(distance(double2(1.3, -2.4), double2(-5.3, 4.3)), 9.4047860156411852, 8, false); + TestUtils.AreEqual(distance(double2(1.3e153, -2.4e153), double2(-5.3e153, 4.3e153)), 9.4047860156411852e153, 8, false); + TestUtils.AreEqual(distance(double2(1.3e154, -2.4e154), double2(-5.3e154, 4.3e154)), double.PositiveInfinity, 8, false); + + TestUtils.AreEqual(distance(double2(1.3, -2.4), double2(double.NaN, 4.3)), double.NaN, 0, false); + TestUtils.AreEqual(distance(double2(1.3, -2.4), double2(-5.3, double.PositiveInfinity)), double.PositiveInfinity, 0, false); + } + + [TestCompiler] + public static void distance_double3() + { + TestUtils.AreEqual(distance(double2(1.3, -2.4), double2(1.3, -2.4)), 0.0, 0, false); + + TestUtils.AreEqual(distance(double2(1.3, -2.4), double2(-5.3, 4.3)), 9.4047860156411852, 8, false); + TestUtils.AreEqual(distance(double2(1.3e153, -2.4e153), double2(-5.3e153, 4.3e153)), 9.4047860156411852e153, 8, false); + TestUtils.AreEqual(distance(double2(1.3e154, -2.4e154), double2(-5.3e154, 4.3e154)), double.PositiveInfinity, 8, false); + + TestUtils.AreEqual(distance(double2(1.3, -2.4), double2(double.NaN, 4.3)), double.NaN, 0, false); + TestUtils.AreEqual(distance(double2(1.3, -2.4), double2(-5.3, double.PositiveInfinity)), double.PositiveInfinity, 0, false); + } + + [TestCompiler] + public static void distance_double4() + { + TestUtils.AreEqual(distance(double4(1.3, -2.4, 5.7, 3.1), double4(1.3, -2.4, 5.7, 3.1)), 0.0, 0, false); + + TestUtils.AreEqual(distance(double4(1.3, -2.4, 5.7, 3.1), double4(-5.3, 4.3, 4.7, 0.3)), 9.8635693336641579, 8, false); + TestUtils.AreEqual(distance(double4(1.3e153, -2.4e153, 5.7e153, 3.1e153), double4(-5.3e153, 4.3e153, 4.7e153, 3e152)), 9.8635693336641579e153, 8, false); + + TestUtils.AreEqual(distance(double4(1.3, -2.4, 5.7, 3.1), double4(double.NaN, 4.3, 4.7, 0.3)), double.NaN, 0, false); + TestUtils.AreEqual(distance(double4(1.3, -2.4, 5.7, 3.1), double4(-5.3, double.PositiveInfinity, 4.7, 0.3)), double.PositiveInfinity, 0, false); + } + + + [TestCompiler] + public static void distancesq_float2() + { + TestUtils.AreEqual(distancesq(float2(1.3f, -2.4f), float2(1.3f, -2.4f)), 0.0f, 0, false); + + TestUtils.AreEqual(distancesq(float2(1.3f, -2.4f), float2(-5.3f, 4.3f)), 88.45f, 8, false); + TestUtils.AreEqual(distancesq(float2(1.3e18f, -2.4e18f), float2(-5.3e18f, 4.3e18f)), 8.845e37f, 8, false); + + TestUtils.AreEqual(distancesq(float2(1.3f, -2.4f), float2(float.NaN, 4.3f)), float.NaN, 0, false); + TestUtils.AreEqual(distancesq(float2(1.3f, -2.4f), float2(-5.3f, float.PositiveInfinity)), float.PositiveInfinity, 0, false); + } + + [TestCompiler] + public static void distancesq_float3() + { + TestUtils.AreEqual(distancesq(float3(1.3f, -2.4f, 5.7f), float3(1.3f, -2.4f, 5.7f)), 0.0f, 0, false); + + TestUtils.AreEqual(distancesq(float3(1.3f, -2.4f, 5.7f), float3(-5.3f, 4.3f, 4.7f)), 89.45f, 8, false); + TestUtils.AreEqual(distancesq(float3(1.3e18f, -2.4e18f, 5.7e18f), float3(-5.3e18f, 4.3e18f, 4.7e18f)), 8.945e37f, 8, false); + TestUtils.AreEqual(distancesq(float3(1.3e19f, -2.4e19f, 5.7e19f), float3(-5.3e19f, 4.3e19f, 4.7e19f)), float.PositiveInfinity, 8, false); + + TestUtils.AreEqual(distancesq(float3(1.3f, -2.4f, 5.7f), float3(float.NaN, 4.3f, 4.7f)), float.NaN, 0, false); + TestUtils.AreEqual(distancesq(float3(1.3f, -2.4f, 5.7f), float3(-5.3f, float.PositiveInfinity, 4.7f)), float.PositiveInfinity, 0, false); + } + + [TestCompiler] + public static void distancesq_float4() + { + TestUtils.AreEqual(distancesq(float4(1.3f, -2.4f, 5.7f, 3.1f), float4(1.3f, -2.4f, 5.7f, 3.1f)), 0.0f, 0, false); + + TestUtils.AreEqual(distancesq(float4(1.3f, -2.4f, 5.7f, 3.1f), float4(-5.3f, 4.3f, 4.7f, 0.3f)), 97.29f, 8, false); + TestUtils.AreEqual(distancesq(float4(1.3e18f, -2.4e18f, 5.7e18f, 3.1e18f), float4(-5.3e18f, 4.3e18f, 4.7e18f, 3e17f)), 9.729e37f, 8, false); + + TestUtils.AreEqual(distancesq(float4(1.3f, -2.4f, 5.7f, 3.1f), float4(float.NaN, 4.3f, 4.7f, 0.3f)), float.NaN, 0, false); + TestUtils.AreEqual(distancesq(float4(1.3f, -2.4f, 5.7f, 3.1f), float4(-5.3f, float.PositiveInfinity, 4.7f, 0.3f)), float.PositiveInfinity, 0, false); + } + + + [TestCompiler] + public static void distancesq_double2() + { + TestUtils.AreEqual(distancesq(double2(1.3, -2.4), double2(1.3, -2.4)), 0.0, 0, false); + + TestUtils.AreEqual(distancesq(double2(1.3, -2.4), double2(-5.3, 4.3)), 88.45, 8, false); + TestUtils.AreEqual(distancesq(double2(1.3e153, -2.4e153), double2(-5.3e153, 4.3e153)), 8.845e307, 8, false); + TestUtils.AreEqual(distancesq(double2(1.3e154, -2.4e154), double2(-5.3e154, 4.3e154)), double.PositiveInfinity, 8, false); + + TestUtils.AreEqual(distancesq(double2(1.3, -2.4), double2(double.NaN, 4.3)), double.NaN, 0, false); + TestUtils.AreEqual(distancesq(double2(1.3, -2.4), double2(-5.3, double.PositiveInfinity)), double.PositiveInfinity, 8, false); + TestUtils.AreEqual(distancesq(double2(1.3, double.NegativeInfinity), double2(-5.3, 4.3)), double.PositiveInfinity, 8, false); + } + + [TestCompiler] + public static void distancesq_double3() + { + TestUtils.AreEqual(distancesq(double3(1.3, -2.4, 5.7), double3(1.3, -2.4, 5.7)), 0.0, 0, false); + + TestUtils.AreEqual(distancesq(double3(1.3, -2.4, 5.7), double3(-5.3, 4.3, 4.7)), 89.45, 8, false); + TestUtils.AreEqual(distancesq(double3(1.3e153, -2.4e153, 5.7e153), double3(-5.3e153, 4.3e153, 4.7e153)), 8.945e307, 8, false); + TestUtils.AreEqual(distancesq(double3(1.3e154, -2.4e154, 5.7e154), double3(-5.3e154, 4.3e154, 4.7e154)), double.PositiveInfinity, 8, false); + + TestUtils.AreEqual(distancesq(double3(1.3, -2.4, 5.7), double3(double.NaN, 4.3, 4.7)), double.NaN, 0, false); + TestUtils.AreEqual(distancesq(double3(1.3, -2.4, 5.7), double3(-5.3, double.PositiveInfinity, 4.7)), double.PositiveInfinity, 8, false); + TestUtils.AreEqual(distancesq(double3(1.3, double.NegativeInfinity, 5.7), double3(-5.3, 4.3, 4.7)), double.PositiveInfinity, 8, false); + } + + [TestCompiler] + public static void distancesq_double4() + { + TestUtils.AreEqual(distancesq(double4(1.3, -2.4, 5.7, 3.1), double4(1.3, -2.4, 5.7, 3.1)), 0.0, 0, false); + + TestUtils.AreEqual(distancesq(double4(1.3, -2.4, 5.7, 3.1), double4(-5.3, 4.3, 4.7, 0.3)), 97.29, 8, false); + TestUtils.AreEqual(distancesq(double4(1.3e153, -2.4e153, 5.7e153, 3.1e153), double4(-5.3e153, 4.3e153, 4.7e153, 3e152)), 9.729e307, 8, false); + TestUtils.AreEqual(distancesq(double4(1.3e154, -2.4e154, 5.7e154, 3.1e153), double4(-5.3e154, 4.3e154, 4.7e154, 3e153)), double.PositiveInfinity, 8, false); + + TestUtils.AreEqual(distancesq(double4(1.3, -2.4, 5.7, 3.1), double4(double.NaN, 4.3, 4.7, 0.3)), double.NaN, 0, false); + TestUtils.AreEqual(distancesq(double4(1.3, -2.4, 5.7, 3.1), double4(-5.3, double.PositiveInfinity, 4.7, 0.3)), double.PositiveInfinity, 8, false); + TestUtils.AreEqual(distancesq(double4(1.3, double.NegativeInfinity, 5.7, 3.1), double4(-5.3, 4.3, 4.7, 0.3)), double.PositiveInfinity, 8, false); + } + + [TestCompiler] + [WindowsOnly("Mono on linux ignores signed zero.")] + public static void rcp_float_signed_zero() + { + TestUtils.AreEqual(rcp(-0.0f), float.NegativeInfinity); + TestUtils.AreEqual(rcp(float.NegativeInfinity), -0.0f); + } + + [TestCompiler] + [WindowsOnly("Mono on linux ignores signed zero.")] + public static void rcp_float2_signed_zero() + { + TestUtils.AreEqual(rcp(float2(-0.0f, float.NegativeInfinity)), float2(float.NegativeInfinity, -0.0f)); + } + + [TestCompiler] + [WindowsOnly("Mono on linux ignores signed zero.")] + public static void rcp_float3_signed_zero() + { + TestUtils.AreEqual(rcp(float3(-0.0f, float.NegativeInfinity, -0.0f)), float3(float.NegativeInfinity, -0.0f, float.NegativeInfinity)); + } + + [TestCompiler] + [WindowsOnly("Mono on linux ignores signed zero.")] + public static void rcp_float4_signed_zero() + { + TestUtils.AreEqual(rcp(float4(-0.0f, float.NegativeInfinity, -0.0f, float.NegativeInfinity)), float4(float.NegativeInfinity, -0.0f, float.NegativeInfinity, -0.0f)); + } + + + [TestCompiler] + [WindowsOnly("Mono on linux ignores signed zero.")] + public static void rcp_double_signed_zero() + { + TestUtils.AreEqual(rcp(-0.0), double.NegativeInfinity); + TestUtils.AreEqual(rcp(double.NegativeInfinity), -0.0); + } + + [TestCompiler] + [WindowsOnly("Mono on linux ignores signed zero.")] + public static void rcp_double2_signed_zero() + { + TestUtils.AreEqual(rcp(double2(-0.0, double.NegativeInfinity)), double2(double.NegativeInfinity, -0.0)); + } + + [TestCompiler] + [WindowsOnly("Mono on linux ignores signed zero.")] + public static void rcp_double3_signed_zero() + { + TestUtils.AreEqual(rcp(double3(-0.0, double.NegativeInfinity, -0.0)), double3(double.NegativeInfinity, -0.0, double.NegativeInfinity)); + } + + [TestCompiler] + [WindowsOnly("Mono on linux ignores signed zero.")] + public static void rcp_double4_signed_zero() + { + TestUtils.AreEqual(rcp(double4(-0.0, double.NegativeInfinity, -0.0, double.NegativeInfinity)), double4(double.NegativeInfinity, -0.0, double.NegativeInfinity, -0.0)); + } + + [TestCompiler] + unsafe public static void compress_test() + { + int4 value = int4(0x12345678, 0x2468ACE0, 0x369BE147, 0x48C059D1); + + int ptrOffset = 4; + int* dest = stackalloc int[16]; + int* ptr = dest + ptrOffset; + + for(int offset = -4; offset <= 4; offset++) + { + for (int m = 0; m < 16; m++) + { + for (int i = 0; i < 16; i++) + dest[i] = 0; + + bool4 mask = bool4((m & 1) != 0, (m & 2) != 0, (m & 4) != 0, (m & 8) != 0); + compress(ptr, offset, value, mask); + + for(int i = 0; i < 16; i++) + { + int vectorIdx = i - (ptrOffset + offset); + + int v = 0; + if (vectorIdx >= 0 && vectorIdx < 4) + { + for(int k = 0; k < 4; k++) + { + if (mask[k] && vectorIdx-- == 0) + v = value[k]; + } + } + TestUtils.AreEqual(dest[i], v); + } + } + } + } + } +} diff --git a/package/Tests/Tests/Shared/TestMath.cs.meta b/package/Tests/Tests/Shared/TestMath.cs.meta new file mode 100755 index 000000000..40ad0f276 --- /dev/null +++ b/package/Tests/Tests/Shared/TestMath.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4fca0e2ff0321404da5c0ab527bdc756 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/package/Tests/Tests/Shared/TestMath.gen.cs b/package/Tests/Tests/Shared/TestMath.gen.cs new file mode 100755 index 000000000..b557e4097 --- /dev/null +++ b/package/Tests/Tests/Shared/TestMath.gen.cs @@ -0,0 +1,4139 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using NUnit.Framework; +using static Unity.Mathematics.math; +using Burst.Compiler.IL.Tests; + +namespace Unity.Mathematics.Tests +{ + [TestFixture] + public partial class TestMath + { + [TestCompiler] + public static void abs_int() + { + TestUtils.AreEqual(abs(0), 0); + TestUtils.AreEqual(abs(-7), 7); + TestUtils.AreEqual(abs(11), 11); + TestUtils.AreEqual(abs(-2147483647), 2147483647); + TestUtils.AreEqual(abs(-2147483648), -2147483648); + } + + [TestCompiler] + public static void abs_int2() + { + TestUtils.AreEqual(abs(int2(0, -7)), int2(0, 7)); + TestUtils.AreEqual(abs(int2(11, -2147483647)), int2(11, 2147483647)); + TestUtils.AreEqual(abs(int2(-2147483648, -2147483648)), int2(-2147483648, -2147483648)); + } + + [TestCompiler] + public static void abs_int3() + { + TestUtils.AreEqual(abs(int3(0, -7, 11)), int3(0, 7, 11)); + TestUtils.AreEqual(abs(int3(-2147483647, -2147483648, -2147483648)), int3(2147483647, -2147483648, -2147483648)); + } + + [TestCompiler] + public static void abs_int4() + { + TestUtils.AreEqual(abs(int4(0, -7, 11, -2147483647)), int4(0, 7, 11, 2147483647)); + TestUtils.AreEqual(abs(int4(-2147483648, -2147483648, -2147483648, -2147483648)), int4(-2147483648, -2147483648, -2147483648, -2147483648)); + } + + [TestCompiler] + public static void abs_float() + { + TestUtils.AreEqual(abs(0f), 0f); + TestUtils.AreEqual(abs(-1.1f), 1.1f); + TestUtils.AreEqual(abs(2.2f), 2.2f); + TestUtils.AreEqual(abs(float.NegativeInfinity), float.PositiveInfinity); + TestUtils.AreEqual(abs(float.PositiveInfinity), float.PositiveInfinity); + } + + [TestCompiler] + public static void abs_float2() + { + TestUtils.AreEqual(abs(float2(0f, -1.1f)), float2(0f, 1.1f)); + TestUtils.AreEqual(abs(float2(2.2f, float.NegativeInfinity)), float2(2.2f, float.PositiveInfinity)); + TestUtils.AreEqual(abs(float2(float.PositiveInfinity, float.PositiveInfinity)), float2(float.PositiveInfinity, float.PositiveInfinity)); + } + + [TestCompiler] + public static void abs_float3() + { + TestUtils.AreEqual(abs(float3(0f, -1.1f, 2.2f)), float3(0f, 1.1f, 2.2f)); + TestUtils.AreEqual(abs(float3(float.NegativeInfinity, float.PositiveInfinity, float.PositiveInfinity)), float3(float.PositiveInfinity, float.PositiveInfinity, float.PositiveInfinity)); + } + + [TestCompiler] + public static void abs_float4() + { + TestUtils.AreEqual(abs(float4(0f, -1.1f, 2.2f, float.NegativeInfinity)), float4(0f, 1.1f, 2.2f, float.PositiveInfinity)); + TestUtils.AreEqual(abs(float4(float.PositiveInfinity, float.PositiveInfinity, float.PositiveInfinity, float.PositiveInfinity)), float4(float.PositiveInfinity, float.PositiveInfinity, float.PositiveInfinity, float.PositiveInfinity)); + } + + [TestCompiler] + public static void abs_double() + { + TestUtils.AreEqual(abs(0.0), 0.0); + TestUtils.AreEqual(abs(-1.1), 1.1); + TestUtils.AreEqual(abs(2.2), 2.2); + TestUtils.AreEqual(abs(double.NegativeInfinity), double.PositiveInfinity); + TestUtils.AreEqual(abs(double.PositiveInfinity), double.PositiveInfinity); + } + + [TestCompiler] + public static void abs_double2() + { + TestUtils.AreEqual(abs(double2(0.0, -1.1)), double2(0.0, 1.1)); + TestUtils.AreEqual(abs(double2(2.2, double.NegativeInfinity)), double2(2.2, double.PositiveInfinity)); + TestUtils.AreEqual(abs(double2(double.PositiveInfinity, double.PositiveInfinity)), double2(double.PositiveInfinity, double.PositiveInfinity)); + } + + [TestCompiler] + public static void abs_double3() + { + TestUtils.AreEqual(abs(double3(0.0, -1.1, 2.2)), double3(0.0, 1.1, 2.2)); + TestUtils.AreEqual(abs(double3(double.NegativeInfinity, double.PositiveInfinity, double.PositiveInfinity)), double3(double.PositiveInfinity, double.PositiveInfinity, double.PositiveInfinity)); + } + + [TestCompiler] + public static void abs_double4() + { + TestUtils.AreEqual(abs(double4(0.0, -1.1, 2.2, double.NegativeInfinity)), double4(0.0, 1.1, 2.2, double.PositiveInfinity)); + TestUtils.AreEqual(abs(double4(double.PositiveInfinity, double.PositiveInfinity, double.PositiveInfinity, double.PositiveInfinity)), double4(double.PositiveInfinity, double.PositiveInfinity, double.PositiveInfinity, double.PositiveInfinity)); + } + + [TestCompiler] + public static void isfinite_float() + { + TestUtils.AreEqual(isfinite(-float.NaN), false); + TestUtils.AreEqual(isfinite(float.NegativeInfinity), false); + TestUtils.AreEqual(isfinite(float.MinValue), true); + TestUtils.AreEqual(isfinite(-1f), true); + TestUtils.AreEqual(isfinite(0f), true); + TestUtils.AreEqual(isfinite(1f), true); + TestUtils.AreEqual(isfinite(float.MaxValue), true); + TestUtils.AreEqual(isfinite(float.PositiveInfinity), false); + TestUtils.AreEqual(isfinite(float.NaN), false); + } + + [TestCompiler] + public static void isfinite_float2() + { + TestUtils.AreEqual(isfinite(float2(-float.NaN, float.NegativeInfinity)), bool2(false, false)); + TestUtils.AreEqual(isfinite(float2(float.MinValue, -1f)), bool2(true, true)); + TestUtils.AreEqual(isfinite(float2(0f, 1f)), bool2(true, true)); + TestUtils.AreEqual(isfinite(float2(float.MaxValue, float.PositiveInfinity)), bool2(true, false)); + TestUtils.AreEqual(isfinite(float2(float.NaN, float.NaN)), bool2(false, false)); + } + + [TestCompiler] + public static void isfinite_float3() + { + TestUtils.AreEqual(isfinite(float3(-float.NaN, float.NegativeInfinity, float.MinValue)), bool3(false, false, true)); + TestUtils.AreEqual(isfinite(float3(-1f, 0f, 1f)), bool3(true, true, true)); + TestUtils.AreEqual(isfinite(float3(float.MaxValue, float.PositiveInfinity, float.NaN)), bool3(true, false, false)); + } + + [TestCompiler] + public static void isfinite_float4() + { + TestUtils.AreEqual(isfinite(float4(-float.NaN, float.NegativeInfinity, float.MinValue, -1f)), bool4(false, false, true, true)); + TestUtils.AreEqual(isfinite(float4(0f, 1f, float.MaxValue, float.PositiveInfinity)), bool4(true, true, true, false)); + TestUtils.AreEqual(isfinite(float4(float.NaN, float.NaN, float.NaN, float.NaN)), bool4(false, false, false, false)); + } + + [TestCompiler] + public static void isfinite_double() + { + TestUtils.AreEqual(isfinite(-double.NaN), false); + TestUtils.AreEqual(isfinite(double.NegativeInfinity), false); + TestUtils.AreEqual(isfinite(double.MinValue), true); + TestUtils.AreEqual(isfinite(-1.0), true); + TestUtils.AreEqual(isfinite(0.0), true); + TestUtils.AreEqual(isfinite(1.0), true); + TestUtils.AreEqual(isfinite(double.MaxValue), true); + TestUtils.AreEqual(isfinite(double.PositiveInfinity), false); + TestUtils.AreEqual(isfinite(double.NaN), false); + } + + [TestCompiler] + public static void isfinite_double2() + { + TestUtils.AreEqual(isfinite(double2(-double.NaN, double.NegativeInfinity)), bool2(false, false)); + TestUtils.AreEqual(isfinite(double2(double.MinValue, -1.0)), bool2(true, true)); + TestUtils.AreEqual(isfinite(double2(0.0, 1.0)), bool2(true, true)); + TestUtils.AreEqual(isfinite(double2(double.MaxValue, double.PositiveInfinity)), bool2(true, false)); + TestUtils.AreEqual(isfinite(double2(double.NaN, double.NaN)), bool2(false, false)); + } + + [TestCompiler] + public static void isfinite_double3() + { + TestUtils.AreEqual(isfinite(double3(-double.NaN, double.NegativeInfinity, double.MinValue)), bool3(false, false, true)); + TestUtils.AreEqual(isfinite(double3(-1.0, 0.0, 1.0)), bool3(true, true, true)); + TestUtils.AreEqual(isfinite(double3(double.MaxValue, double.PositiveInfinity, double.NaN)), bool3(true, false, false)); + } + + [TestCompiler] + public static void isfinite_double4() + { + TestUtils.AreEqual(isfinite(double4(-double.NaN, double.NegativeInfinity, double.MinValue, -1.0)), bool4(false, false, true, true)); + TestUtils.AreEqual(isfinite(double4(0.0, 1.0, double.MaxValue, double.PositiveInfinity)), bool4(true, true, true, false)); + TestUtils.AreEqual(isfinite(double4(double.NaN, double.NaN, double.NaN, double.NaN)), bool4(false, false, false, false)); + } + + [TestCompiler] + public static void isinf_float() + { + TestUtils.AreEqual(isinf(-float.NaN), false); + TestUtils.AreEqual(isinf(float.NegativeInfinity), true); + TestUtils.AreEqual(isinf(float.MinValue), false); + TestUtils.AreEqual(isinf(-1f), false); + TestUtils.AreEqual(isinf(0f), false); + TestUtils.AreEqual(isinf(1f), false); + TestUtils.AreEqual(isinf(float.MaxValue), false); + TestUtils.AreEqual(isinf(float.PositiveInfinity), true); + TestUtils.AreEqual(isinf(float.NaN), false); + } + + [TestCompiler] + public static void isinf_float2() + { + TestUtils.AreEqual(isinf(float2(-float.NaN, float.NegativeInfinity)), bool2(false, true)); + TestUtils.AreEqual(isinf(float2(float.MinValue, -1f)), bool2(false, false)); + TestUtils.AreEqual(isinf(float2(0f, 1f)), bool2(false, false)); + TestUtils.AreEqual(isinf(float2(float.MaxValue, float.PositiveInfinity)), bool2(false, true)); + TestUtils.AreEqual(isinf(float2(float.NaN, float.NaN)), bool2(false, false)); + } + + [TestCompiler] + public static void isinf_float3() + { + TestUtils.AreEqual(isinf(float3(-float.NaN, float.NegativeInfinity, float.MinValue)), bool3(false, true, false)); + TestUtils.AreEqual(isinf(float3(-1f, 0f, 1f)), bool3(false, false, false)); + TestUtils.AreEqual(isinf(float3(float.MaxValue, float.PositiveInfinity, float.NaN)), bool3(false, true, false)); + } + + [TestCompiler] + public static void isinf_float4() + { + TestUtils.AreEqual(isinf(float4(-float.NaN, float.NegativeInfinity, float.MinValue, -1f)), bool4(false, true, false, false)); + TestUtils.AreEqual(isinf(float4(0f, 1f, float.MaxValue, float.PositiveInfinity)), bool4(false, false, false, true)); + TestUtils.AreEqual(isinf(float4(float.NaN, float.NaN, float.NaN, float.NaN)), bool4(false, false, false, false)); + } + + [TestCompiler] + public static void isinf_double() + { + TestUtils.AreEqual(isinf(-double.NaN), false); + TestUtils.AreEqual(isinf(double.NegativeInfinity), true); + TestUtils.AreEqual(isinf(double.MinValue), false); + TestUtils.AreEqual(isinf(-1.0), false); + TestUtils.AreEqual(isinf(0.0), false); + TestUtils.AreEqual(isinf(1.0), false); + TestUtils.AreEqual(isinf(double.MaxValue), false); + TestUtils.AreEqual(isinf(double.PositiveInfinity), true); + TestUtils.AreEqual(isinf(double.NaN), false); + } + + [TestCompiler] + public static void isinf_double2() + { + TestUtils.AreEqual(isinf(double2(-double.NaN, double.NegativeInfinity)), bool2(false, true)); + TestUtils.AreEqual(isinf(double2(double.MinValue, -1.0)), bool2(false, false)); + TestUtils.AreEqual(isinf(double2(0.0, 1.0)), bool2(false, false)); + TestUtils.AreEqual(isinf(double2(double.MaxValue, double.PositiveInfinity)), bool2(false, true)); + TestUtils.AreEqual(isinf(double2(double.NaN, double.NaN)), bool2(false, false)); + } + + [TestCompiler] + public static void isinf_double3() + { + TestUtils.AreEqual(isinf(double3(-double.NaN, double.NegativeInfinity, double.MinValue)), bool3(false, true, false)); + TestUtils.AreEqual(isinf(double3(-1.0, 0.0, 1.0)), bool3(false, false, false)); + TestUtils.AreEqual(isinf(double3(double.MaxValue, double.PositiveInfinity, double.NaN)), bool3(false, true, false)); + } + + [TestCompiler] + public static void isinf_double4() + { + TestUtils.AreEqual(isinf(double4(-double.NaN, double.NegativeInfinity, double.MinValue, -1.0)), bool4(false, true, false, false)); + TestUtils.AreEqual(isinf(double4(0.0, 1.0, double.MaxValue, double.PositiveInfinity)), bool4(false, false, false, true)); + TestUtils.AreEqual(isinf(double4(double.NaN, double.NaN, double.NaN, double.NaN)), bool4(false, false, false, false)); + } + + [TestCompiler] + public static void isnan_float() + { + TestUtils.AreEqual(isnan(-float.NaN), true); + TestUtils.AreEqual(isnan(float.NegativeInfinity), false); + TestUtils.AreEqual(isnan(float.MinValue), false); + TestUtils.AreEqual(isnan(-1f), false); + TestUtils.AreEqual(isnan(0f), false); + TestUtils.AreEqual(isnan(1f), false); + TestUtils.AreEqual(isnan(float.MaxValue), false); + TestUtils.AreEqual(isnan(float.PositiveInfinity), false); + TestUtils.AreEqual(isnan(float.NaN), true); + } + + [TestCompiler] + public static void isnan_float2() + { + TestUtils.AreEqual(isnan(float2(-float.NaN, float.NegativeInfinity)), bool2(true, false)); + TestUtils.AreEqual(isnan(float2(float.MinValue, -1f)), bool2(false, false)); + TestUtils.AreEqual(isnan(float2(0f, 1f)), bool2(false, false)); + TestUtils.AreEqual(isnan(float2(float.MaxValue, float.PositiveInfinity)), bool2(false, false)); + TestUtils.AreEqual(isnan(float2(float.NaN, float.NaN)), bool2(true, true)); + } + + [TestCompiler] + public static void isnan_float3() + { + TestUtils.AreEqual(isnan(float3(-float.NaN, float.NegativeInfinity, float.MinValue)), bool3(true, false, false)); + TestUtils.AreEqual(isnan(float3(-1f, 0f, 1f)), bool3(false, false, false)); + TestUtils.AreEqual(isnan(float3(float.MaxValue, float.PositiveInfinity, float.NaN)), bool3(false, false, true)); + } + + [TestCompiler] + public static void isnan_float4() + { + TestUtils.AreEqual(isnan(float4(-float.NaN, float.NegativeInfinity, float.MinValue, -1f)), bool4(true, false, false, false)); + TestUtils.AreEqual(isnan(float4(0f, 1f, float.MaxValue, float.PositiveInfinity)), bool4(false, false, false, false)); + TestUtils.AreEqual(isnan(float4(float.NaN, float.NaN, float.NaN, float.NaN)), bool4(true, true, true, true)); + } + + [TestCompiler] + public static void isnan_double() + { + TestUtils.AreEqual(isnan(-double.NaN), true); + TestUtils.AreEqual(isnan(double.NegativeInfinity), false); + TestUtils.AreEqual(isnan(double.MinValue), false); + TestUtils.AreEqual(isnan(-1.0), false); + TestUtils.AreEqual(isnan(0.0), false); + TestUtils.AreEqual(isnan(1.0), false); + TestUtils.AreEqual(isnan(double.MaxValue), false); + TestUtils.AreEqual(isnan(double.PositiveInfinity), false); + TestUtils.AreEqual(isnan(double.NaN), true); + } + + [TestCompiler] + public static void isnan_double2() + { + TestUtils.AreEqual(isnan(double2(-double.NaN, double.NegativeInfinity)), bool2(true, false)); + TestUtils.AreEqual(isnan(double2(double.MinValue, -1.0)), bool2(false, false)); + TestUtils.AreEqual(isnan(double2(0.0, 1.0)), bool2(false, false)); + TestUtils.AreEqual(isnan(double2(double.MaxValue, double.PositiveInfinity)), bool2(false, false)); + TestUtils.AreEqual(isnan(double2(double.NaN, double.NaN)), bool2(true, true)); + } + + [TestCompiler] + public static void isnan_double3() + { + TestUtils.AreEqual(isnan(double3(-double.NaN, double.NegativeInfinity, double.MinValue)), bool3(true, false, false)); + TestUtils.AreEqual(isnan(double3(-1.0, 0.0, 1.0)), bool3(false, false, false)); + TestUtils.AreEqual(isnan(double3(double.MaxValue, double.PositiveInfinity, double.NaN)), bool3(false, false, true)); + } + + [TestCompiler] + public static void isnan_double4() + { + TestUtils.AreEqual(isnan(double4(-double.NaN, double.NegativeInfinity, double.MinValue, -1.0)), bool4(true, false, false, false)); + TestUtils.AreEqual(isnan(double4(0.0, 1.0, double.MaxValue, double.PositiveInfinity)), bool4(false, false, false, false)); + TestUtils.AreEqual(isnan(double4(double.NaN, double.NaN, double.NaN, double.NaN)), bool4(true, true, true, true)); + } + + [TestCompiler] + public static void sin_float() + { + TestUtils.AreEqual(sin(-1000000f), 0.3499935f, 1, false); + TestUtils.AreEqual(sin(-1.2f), -0.9320391f, 1, false); + TestUtils.AreEqual(sin(0f), 0f, 1, false); + TestUtils.AreEqual(sin(1.2f), 0.9320391f, 1, false); + TestUtils.AreEqual(sin(1000000f), -0.3499935f, 1, false); + TestUtils.AreEqual(sin(float.NegativeInfinity), float.NaN, 1, false); + TestUtils.AreEqual(sin(float.NaN), float.NaN, 1, false); + TestUtils.AreEqual(sin(float.PositiveInfinity), float.NaN, 1, false); + } + + [TestCompiler] + public static void sin_float2() + { + TestUtils.AreEqual(sin(float2(-1000000f, -1.2f)), float2(0.3499935f, -0.9320391f), 1, false); + TestUtils.AreEqual(sin(float2(0f, 1.2f)), float2(0f, 0.9320391f), 1, false); + TestUtils.AreEqual(sin(float2(1000000f, float.NegativeInfinity)), float2(-0.3499935f, float.NaN), 1, false); + TestUtils.AreEqual(sin(float2(float.NaN, float.PositiveInfinity)), float2(float.NaN, float.NaN), 1, false); + } + + [TestCompiler] + public static void sin_float3() + { + TestUtils.AreEqual(sin(float3(-1000000f, -1.2f, 0f)), float3(0.3499935f, -0.9320391f, 0f), 1, false); + TestUtils.AreEqual(sin(float3(1.2f, 1000000f, float.NegativeInfinity)), float3(0.9320391f, -0.3499935f, float.NaN), 1, false); + TestUtils.AreEqual(sin(float3(float.NaN, float.PositiveInfinity, float.PositiveInfinity)), float3(float.NaN, float.NaN, float.NaN), 1, false); + } + + [TestCompiler] + public static void sin_float4() + { + TestUtils.AreEqual(sin(float4(-1000000f, -1.2f, 0f, 1.2f)), float4(0.3499935f, -0.9320391f, 0f, 0.9320391f), 1, false); + TestUtils.AreEqual(sin(float4(1000000f, float.NegativeInfinity, float.NaN, float.PositiveInfinity)), float4(-0.3499935f, float.NaN, float.NaN, float.NaN), 1, false); + } + + [TestCompiler] + public static void sin_double() + { + TestUtils.AreEqual(sin(-1000000.0), 0.34999350217129294, 32, false); + TestUtils.AreEqual(sin(-1.2), -0.9320390859672264, 32, false); + TestUtils.AreEqual(sin(0.0), 0.0, 32, false); + TestUtils.AreEqual(sin(1.2), 0.9320390859672264, 32, false); + TestUtils.AreEqual(sin(1000000.0), -0.34999350217129294, 32, false); + TestUtils.AreEqual(sin(double.NegativeInfinity), double.NaN, 32, false); + TestUtils.AreEqual(sin(double.NaN), double.NaN, 32, false); + TestUtils.AreEqual(sin(double.PositiveInfinity), double.NaN, 32, false); + } + + [TestCompiler] + public static void sin_double2() + { + TestUtils.AreEqual(sin(double2(-1000000.0, -1.2)), double2(0.34999350217129294, -0.9320390859672264), 32, false); + TestUtils.AreEqual(sin(double2(0.0, 1.2)), double2(0.0, 0.9320390859672264), 32, false); + TestUtils.AreEqual(sin(double2(1000000.0, double.NegativeInfinity)), double2(-0.34999350217129294, double.NaN), 32, false); + TestUtils.AreEqual(sin(double2(double.NaN, double.PositiveInfinity)), double2(double.NaN, double.NaN), 32, false); + } + + [TestCompiler] + public static void sin_double3() + { + TestUtils.AreEqual(sin(double3(-1000000.0, -1.2, 0.0)), double3(0.34999350217129294, -0.9320390859672264, 0.0), 32, false); + TestUtils.AreEqual(sin(double3(1.2, 1000000.0, double.NegativeInfinity)), double3(0.9320390859672264, -0.34999350217129294, double.NaN), 32, false); + TestUtils.AreEqual(sin(double3(double.NaN, double.PositiveInfinity, double.PositiveInfinity)), double3(double.NaN, double.NaN, double.NaN), 32, false); + } + + [TestCompiler] + public static void sin_double4() + { + TestUtils.AreEqual(sin(double4(-1000000.0, -1.2, 0.0, 1.2)), double4(0.34999350217129294, -0.9320390859672264, 0.0, 0.9320390859672264), 32, false); + TestUtils.AreEqual(sin(double4(1000000.0, double.NegativeInfinity, double.NaN, double.PositiveInfinity)), double4(-0.34999350217129294, double.NaN, double.NaN, double.NaN), 32, false); + } + + [TestCompiler] + public static void cos_float() + { + TestUtils.AreEqual(cos(-1000000f), 0.936752141f, 8, false); + TestUtils.AreEqual(cos(-1.2f), 0.362357765f, 8, false); + TestUtils.AreEqual(cos(0f), 1f, 8, false); + TestUtils.AreEqual(cos(1.2f), 0.362357765f, 8, false); + TestUtils.AreEqual(cos(1000000f), 0.936752141f, 8, false); + TestUtils.AreEqual(cos(float.NegativeInfinity), float.NaN, 8, false); + TestUtils.AreEqual(cos(float.NaN), float.NaN, 8, false); + TestUtils.AreEqual(cos(float.PositiveInfinity), float.NaN, 8, false); + } + + [TestCompiler] + public static void cos_float2() + { + TestUtils.AreEqual(cos(float2(-1000000f, -1.2f)), float2(0.936752141f, 0.362357765f), 8, false); + TestUtils.AreEqual(cos(float2(0f, 1.2f)), float2(1f, 0.362357765f), 8, false); + TestUtils.AreEqual(cos(float2(1000000f, float.NegativeInfinity)), float2(0.936752141f, float.NaN), 8, false); + TestUtils.AreEqual(cos(float2(float.NaN, float.PositiveInfinity)), float2(float.NaN, float.NaN), 8, false); + } + + [TestCompiler] + public static void cos_float3() + { + TestUtils.AreEqual(cos(float3(-1000000f, -1.2f, 0f)), float3(0.936752141f, 0.362357765f, 1f), 8, false); + TestUtils.AreEqual(cos(float3(1.2f, 1000000f, float.NegativeInfinity)), float3(0.362357765f, 0.936752141f, float.NaN), 8, false); + TestUtils.AreEqual(cos(float3(float.NaN, float.PositiveInfinity, float.PositiveInfinity)), float3(float.NaN, float.NaN, float.NaN), 8, false); + } + + [TestCompiler] + public static void cos_float4() + { + TestUtils.AreEqual(cos(float4(-1000000f, -1.2f, 0f, 1.2f)), float4(0.936752141f, 0.362357765f, 1f, 0.362357765f), 8, false); + TestUtils.AreEqual(cos(float4(1000000f, float.NegativeInfinity, float.NaN, float.PositiveInfinity)), float4(0.936752141f, float.NaN, float.NaN, float.NaN), 8, false); + } + + [TestCompiler] + public static void cos_double() + { + TestUtils.AreEqual(cos(-1000000.0), 0.93675212753314474, 32, false); + TestUtils.AreEqual(cos(-1.2), 0.36235775447667357, 32, false); + TestUtils.AreEqual(cos(0.0), 1.0, 32, false); + TestUtils.AreEqual(cos(1.2), 0.36235775447667357, 32, false); + TestUtils.AreEqual(cos(1000000.0), 0.93675212753314474, 32, false); + TestUtils.AreEqual(cos(double.NegativeInfinity), double.NaN, 32, false); + TestUtils.AreEqual(cos(double.NaN), double.NaN, 32, false); + TestUtils.AreEqual(cos(double.PositiveInfinity), double.NaN, 32, false); + } + + [TestCompiler] + public static void cos_double2() + { + TestUtils.AreEqual(cos(double2(-1000000.0, -1.2)), double2(0.93675212753314474, 0.36235775447667357), 32, false); + TestUtils.AreEqual(cos(double2(0.0, 1.2)), double2(1.0, 0.36235775447667357), 32, false); + TestUtils.AreEqual(cos(double2(1000000.0, double.NegativeInfinity)), double2(0.93675212753314474, double.NaN), 32, false); + TestUtils.AreEqual(cos(double2(double.NaN, double.PositiveInfinity)), double2(double.NaN, double.NaN), 32, false); + } + + [TestCompiler] + public static void cos_double3() + { + TestUtils.AreEqual(cos(double3(-1000000.0, -1.2, 0.0)), double3(0.93675212753314474, 0.36235775447667357, 1.0), 32, false); + TestUtils.AreEqual(cos(double3(1.2, 1000000.0, double.NegativeInfinity)), double3(0.36235775447667357, 0.93675212753314474, double.NaN), 32, false); + TestUtils.AreEqual(cos(double3(double.NaN, double.PositiveInfinity, double.PositiveInfinity)), double3(double.NaN, double.NaN, double.NaN), 32, false); + } + + [TestCompiler] + public static void cos_double4() + { + TestUtils.AreEqual(cos(double4(-1000000.0, -1.2, 0.0, 1.2)), double4(0.93675212753314474, 0.36235775447667357, 1.0, 0.36235775447667357), 32, false); + TestUtils.AreEqual(cos(double4(1000000.0, double.NegativeInfinity, double.NaN, double.PositiveInfinity)), double4(0.93675212753314474, double.NaN, double.NaN, double.NaN), 32, false); + } + + [TestCompiler] + public static void tan_float() + { + TestUtils.AreEqual(tan(-1000000f), 0.373624444f, 1, false); + TestUtils.AreEqual(tan(-1.2f), -2.57215166f, 1, false); + TestUtils.AreEqual(tan(0f), 0f, 1, false); + TestUtils.AreEqual(tan(1.2f), 2.57215166f, 1, false); + TestUtils.AreEqual(tan(1000000f), -0.373624444f, 1, false); + TestUtils.AreEqual(tan(float.NegativeInfinity), float.NaN, 1, false); + TestUtils.AreEqual(tan(float.NaN), float.NaN, 1, false); + TestUtils.AreEqual(tan(float.PositiveInfinity), float.NaN, 1, false); + } + + [TestCompiler] + public static void tan_float2() + { + TestUtils.AreEqual(tan(float2(-1000000f, -1.2f)), float2(0.373624444f, -2.57215166f), 1, false); + TestUtils.AreEqual(tan(float2(0f, 1.2f)), float2(0f, 2.57215166f), 1, false); + TestUtils.AreEqual(tan(float2(1000000f, float.NegativeInfinity)), float2(-0.373624444f, float.NaN), 1, false); + TestUtils.AreEqual(tan(float2(float.NaN, float.PositiveInfinity)), float2(float.NaN, float.NaN), 1, false); + } + + [TestCompiler] + public static void tan_float3() + { + TestUtils.AreEqual(tan(float3(-1000000f, -1.2f, 0f)), float3(0.373624444f, -2.57215166f, 0f), 1, false); + TestUtils.AreEqual(tan(float3(1.2f, 1000000f, float.NegativeInfinity)), float3(2.57215166f, -0.373624444f, float.NaN), 1, false); + TestUtils.AreEqual(tan(float3(float.NaN, float.PositiveInfinity, float.PositiveInfinity)), float3(float.NaN, float.NaN, float.NaN), 1, false); + } + + [TestCompiler] + public static void tan_float4() + { + TestUtils.AreEqual(tan(float4(-1000000f, -1.2f, 0f, 1.2f)), float4(0.373624444f, -2.57215166f, 0f, 2.57215166f), 1, false); + TestUtils.AreEqual(tan(float4(1000000f, float.NegativeInfinity, float.NaN, float.PositiveInfinity)), float4(-0.373624444f, float.NaN, float.NaN, float.NaN), 1, false); + } + + [TestCompiler] + public static void tan_double() + { + TestUtils.AreEqual(tan(-1000000.0), 0.373624453987599, 32, false); + TestUtils.AreEqual(tan(-1.2), -2.57215162212632, 32, false); + TestUtils.AreEqual(tan(0.0), 0.0, 32, false); + TestUtils.AreEqual(tan(1.2), 2.57215162212632, 32, false); + TestUtils.AreEqual(tan(1000000.0), -0.373624453987599, 32, false); + TestUtils.AreEqual(tan(double.NegativeInfinity), double.NaN, 32, false); + TestUtils.AreEqual(tan(double.NaN), double.NaN, 32, false); + TestUtils.AreEqual(tan(double.PositiveInfinity), double.NaN, 32, false); + } + + [TestCompiler] + public static void tan_double2() + { + TestUtils.AreEqual(tan(double2(-1000000.0, -1.2)), double2(0.373624453987599, -2.57215162212632), 32, false); + TestUtils.AreEqual(tan(double2(0.0, 1.2)), double2(0.0, 2.57215162212632), 32, false); + TestUtils.AreEqual(tan(double2(1000000.0, double.NegativeInfinity)), double2(-0.373624453987599, double.NaN), 32, false); + TestUtils.AreEqual(tan(double2(double.NaN, double.PositiveInfinity)), double2(double.NaN, double.NaN), 32, false); + } + + [TestCompiler] + public static void tan_double3() + { + TestUtils.AreEqual(tan(double3(-1000000.0, -1.2, 0.0)), double3(0.373624453987599, -2.57215162212632, 0.0), 32, false); + TestUtils.AreEqual(tan(double3(1.2, 1000000.0, double.NegativeInfinity)), double3(2.57215162212632, -0.373624453987599, double.NaN), 32, false); + TestUtils.AreEqual(tan(double3(double.NaN, double.PositiveInfinity, double.PositiveInfinity)), double3(double.NaN, double.NaN, double.NaN), 32, false); + } + + [TestCompiler] + public static void tan_double4() + { + TestUtils.AreEqual(tan(double4(-1000000.0, -1.2, 0.0, 1.2)), double4(0.373624453987599, -2.57215162212632, 0.0, 2.57215162212632), 32, false); + TestUtils.AreEqual(tan(double4(1000000.0, double.NegativeInfinity, double.NaN, double.PositiveInfinity)), double4(-0.373624453987599, double.NaN, double.NaN, double.NaN), 32, false); + } + + [TestCompiler] + public static void atan_float() + { + TestUtils.AreEqual(atan(-1000000f), -1.5707953f, 1, false); + TestUtils.AreEqual(atan(-1.2f), -0.876058042f, 1, false); + TestUtils.AreEqual(atan(0f), 0f, 1, false); + TestUtils.AreEqual(atan(1.2f), 0.876058042f, 1, false); + TestUtils.AreEqual(atan(1000000f), 1.5707953f, 1, false); + TestUtils.AreEqual(atan(float.NegativeInfinity), -1.57079637f, 1, false); + TestUtils.AreEqual(atan(float.NaN), float.NaN, 1, false); + TestUtils.AreEqual(atan(float.PositiveInfinity), 1.57079637f, 1, false); + } + + [TestCompiler] + public static void atan_float2() + { + TestUtils.AreEqual(atan(float2(-1000000f, -1.2f)), float2(-1.5707953f, -0.876058042f), 1, false); + TestUtils.AreEqual(atan(float2(0f, 1.2f)), float2(0f, 0.876058042f), 1, false); + TestUtils.AreEqual(atan(float2(1000000f, float.NegativeInfinity)), float2(1.5707953f, -1.57079637f), 1, false); + TestUtils.AreEqual(atan(float2(float.NaN, float.PositiveInfinity)), float2(float.NaN, 1.57079637f), 1, false); + } + + [TestCompiler] + public static void atan_float3() + { + TestUtils.AreEqual(atan(float3(-1000000f, -1.2f, 0f)), float3(-1.5707953f, -0.876058042f, 0f), 1, false); + TestUtils.AreEqual(atan(float3(1.2f, 1000000f, float.NegativeInfinity)), float3(0.876058042f, 1.5707953f, -1.57079637f), 1, false); + TestUtils.AreEqual(atan(float3(float.NaN, float.PositiveInfinity, float.PositiveInfinity)), float3(float.NaN, 1.57079637f, 1.57079637f), 1, false); + } + + [TestCompiler] + public static void atan_float4() + { + TestUtils.AreEqual(atan(float4(-1000000f, -1.2f, 0f, 1.2f)), float4(-1.5707953f, -0.876058042f, 0f, 0.876058042f), 1, false); + TestUtils.AreEqual(atan(float4(1000000f, float.NegativeInfinity, float.NaN, float.PositiveInfinity)), float4(1.5707953f, -1.57079637f, float.NaN, 1.57079637f), 1, false); + } + + [TestCompiler] + public static void atan_double() + { + TestUtils.AreEqual(atan(-1000000.0), -1.5707953267948971, 32, false); + TestUtils.AreEqual(atan(-1.2), -0.87605805059819342, 32, false); + TestUtils.AreEqual(atan(0.0), 0.0, 32, false); + TestUtils.AreEqual(atan(1.2), 0.87605805059819342, 32, false); + TestUtils.AreEqual(atan(1000000.0), 1.5707953267948971, 32, false); + TestUtils.AreEqual(atan(double.NegativeInfinity), -1.570796326794897, 32, false); + TestUtils.AreEqual(atan(double.NaN), double.NaN, 32, false); + TestUtils.AreEqual(atan(double.PositiveInfinity), 1.570796326794897, 32, false); + } + + [TestCompiler] + public static void atan_double2() + { + TestUtils.AreEqual(atan(double2(-1000000.0, -1.2)), double2(-1.5707953267948971, -0.87605805059819342), 32, false); + TestUtils.AreEqual(atan(double2(0.0, 1.2)), double2(0.0, 0.87605805059819342), 32, false); + TestUtils.AreEqual(atan(double2(1000000.0, double.NegativeInfinity)), double2(1.5707953267948971, -1.570796326794897), 32, false); + TestUtils.AreEqual(atan(double2(double.NaN, double.PositiveInfinity)), double2(double.NaN, 1.570796326794897), 32, false); + } + + [TestCompiler] + public static void atan_double3() + { + TestUtils.AreEqual(atan(double3(-1000000.0, -1.2, 0.0)), double3(-1.5707953267948971, -0.87605805059819342, 0.0), 32, false); + TestUtils.AreEqual(atan(double3(1.2, 1000000.0, double.NegativeInfinity)), double3(0.87605805059819342, 1.5707953267948971, -1.570796326794897), 32, false); + TestUtils.AreEqual(atan(double3(double.NaN, double.PositiveInfinity, double.PositiveInfinity)), double3(double.NaN, 1.570796326794897, 1.570796326794897), 32, false); + } + + [TestCompiler] + public static void atan_double4() + { + TestUtils.AreEqual(atan(double4(-1000000.0, -1.2, 0.0, 1.2)), double4(-1.5707953267948971, -0.87605805059819342, 0.0, 0.87605805059819342), 32, false); + TestUtils.AreEqual(atan(double4(1000000.0, double.NegativeInfinity, double.NaN, double.PositiveInfinity)), double4(1.5707953267948971, -1.570796326794897, double.NaN, 1.570796326794897), 32, false); + } + + [TestCompiler] + public static void atan2_float() + { + TestUtils.AreEqual(atan2(3.1f, 2.4f), 0.9119903f, 1, false); + TestUtils.AreEqual(atan2(3.1f, -2.4f), 2.22960234f, 1, false); + TestUtils.AreEqual(atan2(-3.1f, 2.4f), -0.9119903f, 1, false); + TestUtils.AreEqual(atan2(-3.1f, -2.4f), -2.22960234f, 1, false); + TestUtils.AreEqual(atan2(0f, 0f), 0f, 1, false); + TestUtils.AreEqual(atan2(1f, float.NegativeInfinity), 3.14159274f, 1, false); + TestUtils.AreEqual(atan2(1f, float.PositiveInfinity), 0f, 1, false); + TestUtils.AreEqual(atan2(float.NegativeInfinity, 1f), -1.57079637f, 1, false); + TestUtils.AreEqual(atan2(float.PositiveInfinity, 1f), 1.57079637f, 1, false); + TestUtils.AreEqual(atan2(1f, float.NaN), float.NaN, 1, false); + TestUtils.AreEqual(atan2(float.NaN, 1f), float.NaN, 1, false); + TestUtils.AreEqual(atan2(float.NaN, float.NaN), float.NaN, 1, false); + } + + [TestCompiler] + public static void atan2_float2() + { + TestUtils.AreEqual(atan2(float2(3.1f, 3.1f), float2(2.4f, -2.4f)), float2(0.9119903f, 2.22960234f), 1, false); + TestUtils.AreEqual(atan2(float2(-3.1f, -3.1f), float2(2.4f, -2.4f)), float2(-0.9119903f, -2.22960234f), 1, false); + TestUtils.AreEqual(atan2(float2(0f, 1f), float2(0f, float.NegativeInfinity)), float2(0f, 3.14159274f), 1, false); + TestUtils.AreEqual(atan2(float2(1f, float.NegativeInfinity), float2(float.PositiveInfinity, 1f)), float2(0f, -1.57079637f), 1, false); + TestUtils.AreEqual(atan2(float2(float.PositiveInfinity, 1f), float2(1f, float.NaN)), float2(1.57079637f, float.NaN), 1, false); + TestUtils.AreEqual(atan2(float2(float.NaN, float.NaN), float2(1f, float.NaN)), float2(float.NaN, float.NaN), 1, false); + } + + [TestCompiler] + public static void atan2_float3() + { + TestUtils.AreEqual(atan2(float3(3.1f, 3.1f, -3.1f), float3(2.4f, -2.4f, 2.4f)), float3(0.9119903f, 2.22960234f, -0.9119903f), 1, false); + TestUtils.AreEqual(atan2(float3(-3.1f, 0f, 1f), float3(-2.4f, 0f, float.NegativeInfinity)), float3(-2.22960234f, 0f, 3.14159274f), 1, false); + TestUtils.AreEqual(atan2(float3(1f, float.NegativeInfinity, float.PositiveInfinity), float3(float.PositiveInfinity, 1f, 1f)), float3(0f, -1.57079637f, 1.57079637f), 1, false); + TestUtils.AreEqual(atan2(float3(1f, float.NaN, float.NaN), float3(float.NaN, 1f, float.NaN)), float3(float.NaN, float.NaN, float.NaN), 1, false); + } + + [TestCompiler] + public static void atan2_float4() + { + TestUtils.AreEqual(atan2(float4(3.1f, 3.1f, -3.1f, -3.1f), float4(2.4f, -2.4f, 2.4f, -2.4f)), float4(0.9119903f, 2.22960234f, -0.9119903f, -2.22960234f), 1, false); + TestUtils.AreEqual(atan2(float4(0f, 1f, 1f, float.NegativeInfinity), float4(0f, float.NegativeInfinity, float.PositiveInfinity, 1f)), float4(0f, 3.14159274f, 0f, -1.57079637f), 1, false); + TestUtils.AreEqual(atan2(float4(float.PositiveInfinity, 1f, float.NaN, float.NaN), float4(1f, float.NaN, 1f, float.NaN)), float4(1.57079637f, float.NaN, float.NaN, float.NaN), 1, false); + } + + [TestCompiler] + public static void atan2_double() + { + TestUtils.AreEqual(atan2(3.1, 2.4), 0.91199029067742043, 32, false); + TestUtils.AreEqual(atan2(3.1, -2.4), 2.2296023629123729, 32, false); + TestUtils.AreEqual(atan2(-3.1, 2.4), -0.91199029067742043, 32, false); + TestUtils.AreEqual(atan2(-3.1, -2.4), -2.2296023629123729, 32, false); + TestUtils.AreEqual(atan2(0.0, 0.0), 0.0, 32, false); + TestUtils.AreEqual(atan2(1.0, double.NegativeInfinity), 3.1415926535897931, 32, false); + TestUtils.AreEqual(atan2(1.0, double.PositiveInfinity), 0.0, 32, false); + TestUtils.AreEqual(atan2(double.NegativeInfinity, 1.0), -1.5707963267948966, 32, false); + TestUtils.AreEqual(atan2(double.PositiveInfinity, 1.0), 1.5707963267948966, 32, false); + TestUtils.AreEqual(atan2(1.0, double.NaN), double.NaN, 32, false); + TestUtils.AreEqual(atan2(double.NaN, 1.0), double.NaN, 32, false); + TestUtils.AreEqual(atan2(double.NaN, double.NaN), double.NaN, 32, false); + } + + [TestCompiler] + public static void atan2_double2() + { + TestUtils.AreEqual(atan2(double2(3.1, 3.1), double2(2.4, -2.4)), double2(0.91199029067742043, 2.2296023629123729), 32, false); + TestUtils.AreEqual(atan2(double2(-3.1, -3.1), double2(2.4, -2.4)), double2(-0.91199029067742043, -2.2296023629123729), 32, false); + TestUtils.AreEqual(atan2(double2(0.0, 1.0), double2(0.0, double.NegativeInfinity)), double2(0.0, 3.1415926535897931), 32, false); + TestUtils.AreEqual(atan2(double2(1.0, double.NegativeInfinity), double2(double.PositiveInfinity, 1.0)), double2(0.0, -1.5707963267948966), 32, false); + TestUtils.AreEqual(atan2(double2(double.PositiveInfinity, 1.0), double2(1.0, double.NaN)), double2(1.5707963267948966, double.NaN), 32, false); + TestUtils.AreEqual(atan2(double2(double.NaN, double.NaN), double2(1.0, double.NaN)), double2(double.NaN, double.NaN), 32, false); + } + + [TestCompiler] + public static void atan2_double3() + { + TestUtils.AreEqual(atan2(double3(3.1, 3.1, -3.1), double3(2.4, -2.4, 2.4)), double3(0.91199029067742043, 2.2296023629123729, -0.91199029067742043), 32, false); + TestUtils.AreEqual(atan2(double3(-3.1, 0.0, 1.0), double3(-2.4, 0.0, double.NegativeInfinity)), double3(-2.2296023629123729, 0.0, 3.1415926535897931), 32, false); + TestUtils.AreEqual(atan2(double3(1.0, double.NegativeInfinity, double.PositiveInfinity), double3(double.PositiveInfinity, 1.0, 1.0)), double3(0.0, -1.5707963267948966, 1.5707963267948966), 32, false); + TestUtils.AreEqual(atan2(double3(1.0, double.NaN, double.NaN), double3(double.NaN, 1.0, double.NaN)), double3(double.NaN, double.NaN, double.NaN), 32, false); + } + + [TestCompiler] + public static void atan2_double4() + { + TestUtils.AreEqual(atan2(double4(3.1, 3.1, -3.1, -3.1), double4(2.4, -2.4, 2.4, -2.4)), double4(0.91199029067742043, 2.2296023629123729, -0.91199029067742043, -2.2296023629123729), 32, false); + TestUtils.AreEqual(atan2(double4(0.0, 1.0, 1.0, double.NegativeInfinity), double4(0.0, double.NegativeInfinity, double.PositiveInfinity, 1.0)), double4(0.0, 3.1415926535897931, 0.0, -1.5707963267948966), 32, false); + TestUtils.AreEqual(atan2(double4(double.PositiveInfinity, 1.0, double.NaN, double.NaN), double4(1.0, double.NaN, 1.0, double.NaN)), double4(1.5707963267948966, double.NaN, double.NaN, double.NaN), 32, false); + } + + [TestCompiler] + public static void sinh_float() + { + TestUtils.AreEqual(sinh(-2f), -3.62686038f, 1, false); + TestUtils.AreEqual(sinh(-1.2f), -1.5094614f, 1, false); + TestUtils.AreEqual(sinh(0f), 0f, 1, false); + TestUtils.AreEqual(sinh(1.2f), 1.5094614f, 1, false); + TestUtils.AreEqual(sinh(2f), 3.62686038f, 1, false); + TestUtils.AreEqual(sinh(float.NegativeInfinity), float.NegativeInfinity, 1, false); + TestUtils.AreEqual(sinh(float.NaN), float.NaN, 1, false); + TestUtils.AreEqual(sinh(float.PositiveInfinity), float.PositiveInfinity, 1, false); + } + + [TestCompiler] + public static void sinh_float2() + { + TestUtils.AreEqual(sinh(float2(-2f, -1.2f)), float2(-3.62686038f, -1.5094614f), 1, false); + TestUtils.AreEqual(sinh(float2(0f, 1.2f)), float2(0f, 1.5094614f), 1, false); + TestUtils.AreEqual(sinh(float2(2f, float.NegativeInfinity)), float2(3.62686038f, float.NegativeInfinity), 1, false); + TestUtils.AreEqual(sinh(float2(float.NaN, float.PositiveInfinity)), float2(float.NaN, float.PositiveInfinity), 1, false); + } + + [TestCompiler] + public static void sinh_float3() + { + TestUtils.AreEqual(sinh(float3(-2f, -1.2f, 0f)), float3(-3.62686038f, -1.5094614f, 0f), 1, false); + TestUtils.AreEqual(sinh(float3(1.2f, 2f, float.NegativeInfinity)), float3(1.5094614f, 3.62686038f, float.NegativeInfinity), 1, false); + TestUtils.AreEqual(sinh(float3(float.NaN, float.PositiveInfinity, float.PositiveInfinity)), float3(float.NaN, float.PositiveInfinity, float.PositiveInfinity), 1, false); + } + + [TestCompiler] + public static void sinh_float4() + { + TestUtils.AreEqual(sinh(float4(-2f, -1.2f, 0f, 1.2f)), float4(-3.62686038f, -1.5094614f, 0f, 1.5094614f), 1, false); + TestUtils.AreEqual(sinh(float4(2f, float.NegativeInfinity, float.NaN, float.PositiveInfinity)), float4(3.62686038f, float.NegativeInfinity, float.NaN, float.PositiveInfinity), 1, false); + } + + [TestCompiler] + public static void sinh_double() + { + TestUtils.AreEqual(sinh(-2.0), -3.6268604078470181, 32, false); + TestUtils.AreEqual(sinh(-1.2), -1.509461355412173, 32, false); + TestUtils.AreEqual(sinh(0.0), 0.0, 32, false); + TestUtils.AreEqual(sinh(1.2), 1.509461355412173, 32, false); + TestUtils.AreEqual(sinh(2.0), 3.6268604078470181, 32, false); + TestUtils.AreEqual(sinh(double.NegativeInfinity), double.NegativeInfinity, 32, false); + TestUtils.AreEqual(sinh(double.NaN), double.NaN, 32, false); + TestUtils.AreEqual(sinh(double.PositiveInfinity), double.PositiveInfinity, 32, false); + } + + [TestCompiler] + public static void sinh_double2() + { + TestUtils.AreEqual(sinh(double2(-2.0, -1.2)), double2(-3.6268604078470181, -1.509461355412173), 32, false); + TestUtils.AreEqual(sinh(double2(0.0, 1.2)), double2(0.0, 1.509461355412173), 32, false); + TestUtils.AreEqual(sinh(double2(2.0, double.NegativeInfinity)), double2(3.6268604078470181, double.NegativeInfinity), 32, false); + TestUtils.AreEqual(sinh(double2(double.NaN, double.PositiveInfinity)), double2(double.NaN, double.PositiveInfinity), 32, false); + } + + [TestCompiler] + public static void sinh_double3() + { + TestUtils.AreEqual(sinh(double3(-2.0, -1.2, 0.0)), double3(-3.6268604078470181, -1.509461355412173, 0.0), 32, false); + TestUtils.AreEqual(sinh(double3(1.2, 2.0, double.NegativeInfinity)), double3(1.509461355412173, 3.6268604078470181, double.NegativeInfinity), 32, false); + TestUtils.AreEqual(sinh(double3(double.NaN, double.PositiveInfinity, double.PositiveInfinity)), double3(double.NaN, double.PositiveInfinity, double.PositiveInfinity), 32, false); + } + + [TestCompiler] + public static void sinh_double4() + { + TestUtils.AreEqual(sinh(double4(-2.0, -1.2, 0.0, 1.2)), double4(-3.6268604078470181, -1.509461355412173, 0.0, 1.509461355412173), 32, false); + TestUtils.AreEqual(sinh(double4(2.0, double.NegativeInfinity, double.NaN, double.PositiveInfinity)), double4(3.6268604078470181, double.NegativeInfinity, double.NaN, double.PositiveInfinity), 32, false); + } + + [TestCompiler] + public static void cosh_float() + { + TestUtils.AreEqual(cosh(-2f), 3.76219559f, 1, false); + TestUtils.AreEqual(cosh(-1.2f), 1.81065559f, 1, false); + TestUtils.AreEqual(cosh(0f), 1f, 1, false); + TestUtils.AreEqual(cosh(1.2f), 1.81065559f, 1, false); + TestUtils.AreEqual(cosh(2f), 3.76219559f, 1, false); + TestUtils.AreEqual(cosh(float.NegativeInfinity), float.PositiveInfinity, 1, false); + TestUtils.AreEqual(cosh(float.NaN), float.NaN, 1, false); + TestUtils.AreEqual(cosh(float.PositiveInfinity), float.PositiveInfinity, 1, false); + } + + [TestCompiler] + public static void cosh_float2() + { + TestUtils.AreEqual(cosh(float2(-2f, -1.2f)), float2(3.76219559f, 1.81065559f), 1, false); + TestUtils.AreEqual(cosh(float2(0f, 1.2f)), float2(1f, 1.81065559f), 1, false); + TestUtils.AreEqual(cosh(float2(2f, float.NegativeInfinity)), float2(3.76219559f, float.PositiveInfinity), 1, false); + TestUtils.AreEqual(cosh(float2(float.NaN, float.PositiveInfinity)), float2(float.NaN, float.PositiveInfinity), 1, false); + } + + [TestCompiler] + public static void cosh_float3() + { + TestUtils.AreEqual(cosh(float3(-2f, -1.2f, 0f)), float3(3.76219559f, 1.81065559f, 1f), 1, false); + TestUtils.AreEqual(cosh(float3(1.2f, 2f, float.NegativeInfinity)), float3(1.81065559f, 3.76219559f, float.PositiveInfinity), 1, false); + TestUtils.AreEqual(cosh(float3(float.NaN, float.PositiveInfinity, float.PositiveInfinity)), float3(float.NaN, float.PositiveInfinity, float.PositiveInfinity), 1, false); + } + + [TestCompiler] + public static void cosh_float4() + { + TestUtils.AreEqual(cosh(float4(-2f, -1.2f, 0f, 1.2f)), float4(3.76219559f, 1.81065559f, 1f, 1.81065559f), 1, false); + TestUtils.AreEqual(cosh(float4(2f, float.NegativeInfinity, float.NaN, float.PositiveInfinity)), float4(3.76219559f, float.PositiveInfinity, float.NaN, float.PositiveInfinity), 1, false); + } + + [TestCompiler] + public static void cosh_double() + { + TestUtils.AreEqual(cosh(-2.0), 3.7621956910836314, 32, false); + TestUtils.AreEqual(cosh(-1.2), 1.81065556732437, 32, false); + TestUtils.AreEqual(cosh(0.0), 1.0, 32, false); + TestUtils.AreEqual(cosh(1.2), 1.81065556732437, 32, false); + TestUtils.AreEqual(cosh(2.0), 3.7621956910836314, 32, false); + TestUtils.AreEqual(cosh(double.NegativeInfinity), double.PositiveInfinity, 32, false); + TestUtils.AreEqual(cosh(double.NaN), double.NaN, 32, false); + TestUtils.AreEqual(cosh(double.PositiveInfinity), double.PositiveInfinity, 32, false); + } + + [TestCompiler] + public static void cosh_double2() + { + TestUtils.AreEqual(cosh(double2(-2.0, -1.2)), double2(3.7621956910836314, 1.81065556732437), 32, false); + TestUtils.AreEqual(cosh(double2(0.0, 1.2)), double2(1.0, 1.81065556732437), 32, false); + TestUtils.AreEqual(cosh(double2(2.0, double.NegativeInfinity)), double2(3.7621956910836314, double.PositiveInfinity), 32, false); + TestUtils.AreEqual(cosh(double2(double.NaN, double.PositiveInfinity)), double2(double.NaN, double.PositiveInfinity), 32, false); + } + + [TestCompiler] + public static void cosh_double3() + { + TestUtils.AreEqual(cosh(double3(-2.0, -1.2, 0.0)), double3(3.7621956910836314, 1.81065556732437, 1.0), 32, false); + TestUtils.AreEqual(cosh(double3(1.2, 2.0, double.NegativeInfinity)), double3(1.81065556732437, 3.7621956910836314, double.PositiveInfinity), 32, false); + TestUtils.AreEqual(cosh(double3(double.NaN, double.PositiveInfinity, double.PositiveInfinity)), double3(double.NaN, double.PositiveInfinity, double.PositiveInfinity), 32, false); + } + + [TestCompiler] + public static void cosh_double4() + { + TestUtils.AreEqual(cosh(double4(-2.0, -1.2, 0.0, 1.2)), double4(3.7621956910836314, 1.81065556732437, 1.0, 1.81065556732437), 32, false); + TestUtils.AreEqual(cosh(double4(2.0, double.NegativeInfinity, double.NaN, double.PositiveInfinity)), double4(3.7621956910836314, double.PositiveInfinity, double.NaN, double.PositiveInfinity), 32, false); + } + + [TestCompiler] + public static void tanh_float() + { + TestUtils.AreEqual(tanh(-2f), -0.9640276f, 1, false); + TestUtils.AreEqual(tanh(-1.2f), -0.8336546f, 1, false); + TestUtils.AreEqual(tanh(0f), 0f, 1, false); + TestUtils.AreEqual(tanh(1.2f), 0.8336546f, 1, false); + TestUtils.AreEqual(tanh(2f), 0.9640276f, 1, false); + TestUtils.AreEqual(tanh(float.NegativeInfinity), -1f, 1, false); + TestUtils.AreEqual(tanh(float.NaN), float.NaN, 1, false); + TestUtils.AreEqual(tanh(float.PositiveInfinity), 1f, 1, false); + } + + [TestCompiler] + public static void tanh_float2() + { + TestUtils.AreEqual(tanh(float2(-2f, -1.2f)), float2(-0.9640276f, -0.8336546f), 1, false); + TestUtils.AreEqual(tanh(float2(0f, 1.2f)), float2(0f, 0.8336546f), 1, false); + TestUtils.AreEqual(tanh(float2(2f, float.NegativeInfinity)), float2(0.9640276f, -1f), 1, false); + TestUtils.AreEqual(tanh(float2(float.NaN, float.PositiveInfinity)), float2(float.NaN, 1f), 1, false); + } + + [TestCompiler] + public static void tanh_float3() + { + TestUtils.AreEqual(tanh(float3(-2f, -1.2f, 0f)), float3(-0.9640276f, -0.8336546f, 0f), 1, false); + TestUtils.AreEqual(tanh(float3(1.2f, 2f, float.NegativeInfinity)), float3(0.8336546f, 0.9640276f, -1f), 1, false); + TestUtils.AreEqual(tanh(float3(float.NaN, float.PositiveInfinity, float.PositiveInfinity)), float3(float.NaN, 1f, 1f), 1, false); + } + + [TestCompiler] + public static void tanh_float4() + { + TestUtils.AreEqual(tanh(float4(-2f, -1.2f, 0f, 1.2f)), float4(-0.9640276f, -0.8336546f, 0f, 0.8336546f), 1, false); + TestUtils.AreEqual(tanh(float4(2f, float.NegativeInfinity, float.NaN, float.PositiveInfinity)), float4(0.9640276f, -1f, float.NaN, 1f), 1, false); + } + + [TestCompiler] + public static void tanh_double() + { + TestUtils.AreEqual(tanh(-2.0), -0.9640275800758169, 32, false); + TestUtils.AreEqual(tanh(-1.2), -0.83365460701215521, 32, false); + TestUtils.AreEqual(tanh(0.0), 0.0, 32, false); + TestUtils.AreEqual(tanh(1.2), 0.83365460701215521, 32, false); + TestUtils.AreEqual(tanh(2.0), 0.9640275800758169, 32, false); + TestUtils.AreEqual(tanh(double.NegativeInfinity), -1.0, 32, false); + TestUtils.AreEqual(tanh(double.NaN), double.NaN, 32, false); + TestUtils.AreEqual(tanh(double.PositiveInfinity), 1.0, 32, false); + } + + [TestCompiler] + public static void tanh_double2() + { + TestUtils.AreEqual(tanh(double2(-2.0, -1.2)), double2(-0.9640275800758169, -0.83365460701215521), 32, false); + TestUtils.AreEqual(tanh(double2(0.0, 1.2)), double2(0.0, 0.83365460701215521), 32, false); + TestUtils.AreEqual(tanh(double2(2.0, double.NegativeInfinity)), double2(0.9640275800758169, -1.0), 32, false); + TestUtils.AreEqual(tanh(double2(double.NaN, double.PositiveInfinity)), double2(double.NaN, 1.0), 32, false); + } + + [TestCompiler] + public static void tanh_double3() + { + TestUtils.AreEqual(tanh(double3(-2.0, -1.2, 0.0)), double3(-0.9640275800758169, -0.83365460701215521, 0.0), 32, false); + TestUtils.AreEqual(tanh(double3(1.2, 2.0, double.NegativeInfinity)), double3(0.83365460701215521, 0.9640275800758169, -1.0), 32, false); + TestUtils.AreEqual(tanh(double3(double.NaN, double.PositiveInfinity, double.PositiveInfinity)), double3(double.NaN, 1.0, 1.0), 32, false); + } + + [TestCompiler] + public static void tanh_double4() + { + TestUtils.AreEqual(tanh(double4(-2.0, -1.2, 0.0, 1.2)), double4(-0.9640275800758169, -0.83365460701215521, 0.0, 0.83365460701215521), 32, false); + TestUtils.AreEqual(tanh(double4(2.0, double.NegativeInfinity, double.NaN, double.PositiveInfinity)), double4(0.9640275800758169, -1.0, double.NaN, 1.0), 32, false); + } + + [TestCompiler] + public static void exp_float() + { + TestUtils.AreEqual(exp(-10f), 4.539993E-05f, 1, false); + TestUtils.AreEqual(exp(-1.2f), 0.301194221f, 1, false); + TestUtils.AreEqual(exp(0f), 1f, 1, false); + TestUtils.AreEqual(exp(1.2f), 3.320117f, 1, false); + TestUtils.AreEqual(exp(float.NegativeInfinity), 0f, 1, false); + TestUtils.AreEqual(exp(float.NaN), float.NaN, 1, false); + TestUtils.AreEqual(exp(float.PositiveInfinity), float.PositiveInfinity, 1, false); + } + + [TestCompiler] + public static void exp_float2() + { + TestUtils.AreEqual(exp(float2(-10f, -1.2f)), float2(4.539993E-05f, 0.301194221f), 1, false); + TestUtils.AreEqual(exp(float2(0f, 1.2f)), float2(1f, 3.320117f), 1, false); + TestUtils.AreEqual(exp(float2(float.NegativeInfinity, float.NaN)), float2(0f, float.NaN), 1, false); + TestUtils.AreEqual(exp(float2(float.PositiveInfinity, float.PositiveInfinity)), float2(float.PositiveInfinity, float.PositiveInfinity), 1, false); + } + + [TestCompiler] + public static void exp_float3() + { + TestUtils.AreEqual(exp(float3(-10f, -1.2f, 0f)), float3(4.539993E-05f, 0.301194221f, 1f), 1, false); + TestUtils.AreEqual(exp(float3(1.2f, float.NegativeInfinity, float.NaN)), float3(3.320117f, 0f, float.NaN), 1, false); + TestUtils.AreEqual(exp(float3(float.PositiveInfinity, float.PositiveInfinity, float.PositiveInfinity)), float3(float.PositiveInfinity, float.PositiveInfinity, float.PositiveInfinity), 1, false); + } + + [TestCompiler] + public static void exp_float4() + { + TestUtils.AreEqual(exp(float4(-10f, -1.2f, 0f, 1.2f)), float4(4.539993E-05f, 0.301194221f, 1f, 3.320117f), 1, false); + TestUtils.AreEqual(exp(float4(float.NegativeInfinity, float.NaN, float.PositiveInfinity, float.PositiveInfinity)), float4(0f, float.NaN, float.PositiveInfinity, float.PositiveInfinity), 1, false); + } + + [TestCompiler] + public static void exp_double() + { + TestUtils.AreEqual(exp(-10.0), 4.5399929762484847E-05, 32, false); + TestUtils.AreEqual(exp(-1.2), 0.30119421191220208, 32, false); + TestUtils.AreEqual(exp(0.0), 1.0, 32, false); + TestUtils.AreEqual(exp(1.2), 3.3201169227365477, 32, false); + TestUtils.AreEqual(exp(double.NegativeInfinity), 0.0, 32, false); + TestUtils.AreEqual(exp(double.NaN), double.NaN, 32, false); + TestUtils.AreEqual(exp(double.PositiveInfinity), double.PositiveInfinity, 32, false); + } + + [TestCompiler] + public static void exp_double2() + { + TestUtils.AreEqual(exp(double2(-10.0, -1.2)), double2(4.5399929762484847E-05, 0.30119421191220208), 32, false); + TestUtils.AreEqual(exp(double2(0.0, 1.2)), double2(1.0, 3.3201169227365477), 32, false); + TestUtils.AreEqual(exp(double2(double.NegativeInfinity, double.NaN)), double2(0.0, double.NaN), 32, false); + TestUtils.AreEqual(exp(double2(double.PositiveInfinity, double.PositiveInfinity)), double2(double.PositiveInfinity, double.PositiveInfinity), 32, false); + } + + [TestCompiler] + public static void exp_double3() + { + TestUtils.AreEqual(exp(double3(-10.0, -1.2, 0.0)), double3(4.5399929762484847E-05, 0.30119421191220208, 1.0), 32, false); + TestUtils.AreEqual(exp(double3(1.2, double.NegativeInfinity, double.NaN)), double3(3.3201169227365477, 0.0, double.NaN), 32, false); + TestUtils.AreEqual(exp(double3(double.PositiveInfinity, double.PositiveInfinity, double.PositiveInfinity)), double3(double.PositiveInfinity, double.PositiveInfinity, double.PositiveInfinity), 32, false); + } + + [TestCompiler] + public static void exp_double4() + { + TestUtils.AreEqual(exp(double4(-10.0, -1.2, 0.0, 1.2)), double4(4.5399929762484847E-05, 0.30119421191220208, 1.0, 3.3201169227365477), 32, false); + TestUtils.AreEqual(exp(double4(double.NegativeInfinity, double.NaN, double.PositiveInfinity, double.PositiveInfinity)), double4(0.0, double.NaN, double.PositiveInfinity, double.PositiveInfinity), 32, false); + } + + [TestCompiler] + public static void exp2_float() + { + TestUtils.AreEqual(exp2(-10f), 0.0009765625f, 1, false); + TestUtils.AreEqual(exp2(-1.2f), 0.4352753f, 1, false); + TestUtils.AreEqual(exp2(0f), 1f, 1, false); + TestUtils.AreEqual(exp2(1.2f), 2.29739666f, 1, false); + TestUtils.AreEqual(exp2(float.NegativeInfinity), 0f, 1, false); + TestUtils.AreEqual(exp2(float.NaN), float.NaN, 1, false); + TestUtils.AreEqual(exp2(float.PositiveInfinity), float.PositiveInfinity, 1, false); + } + + [TestCompiler] + public static void exp2_float2() + { + TestUtils.AreEqual(exp2(float2(-10f, -1.2f)), float2(0.0009765625f, 0.4352753f), 1, false); + TestUtils.AreEqual(exp2(float2(0f, 1.2f)), float2(1f, 2.29739666f), 1, false); + TestUtils.AreEqual(exp2(float2(float.NegativeInfinity, float.NaN)), float2(0f, float.NaN), 1, false); + TestUtils.AreEqual(exp2(float2(float.PositiveInfinity, float.PositiveInfinity)), float2(float.PositiveInfinity, float.PositiveInfinity), 1, false); + } + + [TestCompiler] + public static void exp2_float3() + { + TestUtils.AreEqual(exp2(float3(-10f, -1.2f, 0f)), float3(0.0009765625f, 0.4352753f, 1f), 1, false); + TestUtils.AreEqual(exp2(float3(1.2f, float.NegativeInfinity, float.NaN)), float3(2.29739666f, 0f, float.NaN), 1, false); + TestUtils.AreEqual(exp2(float3(float.PositiveInfinity, float.PositiveInfinity, float.PositiveInfinity)), float3(float.PositiveInfinity, float.PositiveInfinity, float.PositiveInfinity), 1, false); + } + + [TestCompiler] + public static void exp2_float4() + { + TestUtils.AreEqual(exp2(float4(-10f, -1.2f, 0f, 1.2f)), float4(0.0009765625f, 0.4352753f, 1f, 2.29739666f), 1, false); + TestUtils.AreEqual(exp2(float4(float.NegativeInfinity, float.NaN, float.PositiveInfinity, float.PositiveInfinity)), float4(0f, float.NaN, float.PositiveInfinity, float.PositiveInfinity), 1, false); + } + + [TestCompiler] + public static void exp2_double() + { + TestUtils.AreEqual(exp2(-10.0), 0.0009765625, 32, false); + TestUtils.AreEqual(exp2(-1.2), 0.435275281648062, 32, false); + TestUtils.AreEqual(exp2(0.0), 1.0, 32, false); + TestUtils.AreEqual(exp2(1.2), 2.29739670999407, 32, false); + TestUtils.AreEqual(exp2(double.NegativeInfinity), 0.0, 32, false); + TestUtils.AreEqual(exp2(double.NaN), double.NaN, 32, false); + TestUtils.AreEqual(exp2(double.PositiveInfinity), double.PositiveInfinity, 32, false); + } + + [TestCompiler] + public static void exp2_double2() + { + TestUtils.AreEqual(exp2(double2(-10.0, -1.2)), double2(0.0009765625, 0.435275281648062), 32, false); + TestUtils.AreEqual(exp2(double2(0.0, 1.2)), double2(1.0, 2.29739670999407), 32, false); + TestUtils.AreEqual(exp2(double2(double.NegativeInfinity, double.NaN)), double2(0.0, double.NaN), 32, false); + TestUtils.AreEqual(exp2(double2(double.PositiveInfinity, double.PositiveInfinity)), double2(double.PositiveInfinity, double.PositiveInfinity), 32, false); + } + + [TestCompiler] + public static void exp2_double3() + { + TestUtils.AreEqual(exp2(double3(-10.0, -1.2, 0.0)), double3(0.0009765625, 0.435275281648062, 1.0), 32, false); + TestUtils.AreEqual(exp2(double3(1.2, double.NegativeInfinity, double.NaN)), double3(2.29739670999407, 0.0, double.NaN), 32, false); + TestUtils.AreEqual(exp2(double3(double.PositiveInfinity, double.PositiveInfinity, double.PositiveInfinity)), double3(double.PositiveInfinity, double.PositiveInfinity, double.PositiveInfinity), 32, false); + } + + [TestCompiler] + public static void exp2_double4() + { + TestUtils.AreEqual(exp2(double4(-10.0, -1.2, 0.0, 1.2)), double4(0.0009765625, 0.435275281648062, 1.0, 2.29739670999407), 32, false); + TestUtils.AreEqual(exp2(double4(double.NegativeInfinity, double.NaN, double.PositiveInfinity, double.PositiveInfinity)), double4(0.0, double.NaN, double.PositiveInfinity, double.PositiveInfinity), 32, false); + } + + [TestCompiler] + public static void exp10_float() + { + TestUtils.AreEqual(exp10(-10f), 1E-10f, 32, false); + TestUtils.AreEqual(exp10(-1.2f), 0.06309573f, 32, false); + TestUtils.AreEqual(exp10(0f), 1f, 32, false); + TestUtils.AreEqual(exp10(1.2f), 15.8489323f, 32, false); + TestUtils.AreEqual(exp10(float.NegativeInfinity), 0f, 32, false); + TestUtils.AreEqual(exp10(float.NaN), float.NaN, 32, false); + TestUtils.AreEqual(exp10(float.PositiveInfinity), float.PositiveInfinity, 32, false); + } + + [TestCompiler] + public static void exp10_float2() + { + TestUtils.AreEqual(exp10(float2(-10f, -1.2f)), float2(1E-10f, 0.06309573f), 32, false); + TestUtils.AreEqual(exp10(float2(0f, 1.2f)), float2(1f, 15.8489323f), 32, false); + TestUtils.AreEqual(exp10(float2(float.NegativeInfinity, float.NaN)), float2(0f, float.NaN), 32, false); + TestUtils.AreEqual(exp10(float2(float.PositiveInfinity, float.PositiveInfinity)), float2(float.PositiveInfinity, float.PositiveInfinity), 32, false); + } + + [TestCompiler] + public static void exp10_float3() + { + TestUtils.AreEqual(exp10(float3(-10f, -1.2f, 0f)), float3(1E-10f, 0.06309573f, 1f), 32, false); + TestUtils.AreEqual(exp10(float3(1.2f, float.NegativeInfinity, float.NaN)), float3(15.8489323f, 0f, float.NaN), 32, false); + TestUtils.AreEqual(exp10(float3(float.PositiveInfinity, float.PositiveInfinity, float.PositiveInfinity)), float3(float.PositiveInfinity, float.PositiveInfinity, float.PositiveInfinity), 32, false); + } + + [TestCompiler] + public static void exp10_float4() + { + TestUtils.AreEqual(exp10(float4(-10f, -1.2f, 0f, 1.2f)), float4(1E-10f, 0.06309573f, 1f, 15.8489323f), 32, false); + TestUtils.AreEqual(exp10(float4(float.NegativeInfinity, float.NaN, float.PositiveInfinity, float.PositiveInfinity)), float4(0f, float.NaN, float.PositiveInfinity, float.PositiveInfinity), 32, false); + } + + [TestCompiler] + public static void exp10_double() + { + TestUtils.AreEqual(exp10(-10.0), 1E-10, 32, false); + TestUtils.AreEqual(exp10(-1.2), 0.063095734448019331, 32, false); + TestUtils.AreEqual(exp10(0.0), 1.0, 32, false); + TestUtils.AreEqual(exp10(1.2), 15.848931924611135, 32, false); + TestUtils.AreEqual(exp10(double.NegativeInfinity), 0.0, 32, false); + TestUtils.AreEqual(exp10(double.NaN), double.NaN, 32, false); + TestUtils.AreEqual(exp10(double.PositiveInfinity), double.PositiveInfinity, 32, false); + } + + [TestCompiler] + public static void exp10_double2() + { + TestUtils.AreEqual(exp10(double2(-10.0, -1.2)), double2(1E-10, 0.063095734448019331), 32, false); + TestUtils.AreEqual(exp10(double2(0.0, 1.2)), double2(1.0, 15.848931924611135), 32, false); + TestUtils.AreEqual(exp10(double2(double.NegativeInfinity, double.NaN)), double2(0.0, double.NaN), 32, false); + TestUtils.AreEqual(exp10(double2(double.PositiveInfinity, double.PositiveInfinity)), double2(double.PositiveInfinity, double.PositiveInfinity), 32, false); + } + + [TestCompiler] + public static void exp10_double3() + { + TestUtils.AreEqual(exp10(double3(-10.0, -1.2, 0.0)), double3(1E-10, 0.063095734448019331, 1.0), 32, false); + TestUtils.AreEqual(exp10(double3(1.2, double.NegativeInfinity, double.NaN)), double3(15.848931924611135, 0.0, double.NaN), 32, false); + TestUtils.AreEqual(exp10(double3(double.PositiveInfinity, double.PositiveInfinity, double.PositiveInfinity)), double3(double.PositiveInfinity, double.PositiveInfinity, double.PositiveInfinity), 32, false); + } + + [TestCompiler] + public static void exp10_double4() + { + TestUtils.AreEqual(exp10(double4(-10.0, -1.2, 0.0, 1.2)), double4(1E-10, 0.063095734448019331, 1.0, 15.848931924611135), 32, false); + TestUtils.AreEqual(exp10(double4(double.NegativeInfinity, double.NaN, double.PositiveInfinity, double.PositiveInfinity)), double4(0.0, double.NaN, double.PositiveInfinity, double.PositiveInfinity), 32, false); + } + + [TestCompiler] + public static void log_float() + { + TestUtils.AreEqual(log(1.2E-09f), -20.5409451f, 1, false); + TestUtils.AreEqual(log(1f), 0f, 1, false); + TestUtils.AreEqual(log(1.2E+10f), 23.2081718f, 1, false); + TestUtils.AreEqual(log(-1f), float.NaN, 1, false); + TestUtils.AreEqual(log(float.NegativeInfinity), float.NaN, 1, false); + TestUtils.AreEqual(log(float.NaN), float.NaN, 1, false); + TestUtils.AreEqual(log(float.PositiveInfinity), float.PositiveInfinity, 1, false); + } + + [TestCompiler] + public static void log_float2() + { + TestUtils.AreEqual(log(float2(1.2E-09f, 1f)), float2(-20.5409451f, 0f), 1, false); + TestUtils.AreEqual(log(float2(1.2E+10f, -1f)), float2(23.2081718f, float.NaN), 1, false); + TestUtils.AreEqual(log(float2(float.NegativeInfinity, float.NaN)), float2(float.NaN, float.NaN), 1, false); + TestUtils.AreEqual(log(float2(float.PositiveInfinity, float.PositiveInfinity)), float2(float.PositiveInfinity, float.PositiveInfinity), 1, false); + } + + [TestCompiler] + public static void log_float3() + { + TestUtils.AreEqual(log(float3(1.2E-09f, 1f, 1.2E+10f)), float3(-20.5409451f, 0f, 23.2081718f), 1, false); + TestUtils.AreEqual(log(float3(-1f, float.NegativeInfinity, float.NaN)), float3(float.NaN, float.NaN, float.NaN), 1, false); + TestUtils.AreEqual(log(float3(float.PositiveInfinity, float.PositiveInfinity, float.PositiveInfinity)), float3(float.PositiveInfinity, float.PositiveInfinity, float.PositiveInfinity), 1, false); + } + + [TestCompiler] + public static void log_float4() + { + TestUtils.AreEqual(log(float4(1.2E-09f, 1f, 1.2E+10f, -1f)), float4(-20.5409451f, 0f, 23.2081718f, float.NaN), 1, false); + TestUtils.AreEqual(log(float4(float.NegativeInfinity, float.NaN, float.PositiveInfinity, float.PositiveInfinity)), float4(float.NaN, float.NaN, float.PositiveInfinity, float.PositiveInfinity), 1, false); + } + + [TestCompiler] + public static void log_double() + { + TestUtils.AreEqual(log(1.2E-09), -20.540944280152456, 32, false); + TestUtils.AreEqual(log(1.0), 0.0, 32, false); + TestUtils.AreEqual(log(12000000000.0), 23.208172486734409, 32, false); + TestUtils.AreEqual(log(-1.0), double.NaN, 32, false); + TestUtils.AreEqual(log(double.NegativeInfinity), double.NaN, 32, false); + TestUtils.AreEqual(log(double.NaN), double.NaN, 32, false); + TestUtils.AreEqual(log(double.PositiveInfinity), double.PositiveInfinity, 32, false); + } + + [TestCompiler] + public static void log_double2() + { + TestUtils.AreEqual(log(double2(1.2E-09, 1.0)), double2(-20.540944280152456, 0.0), 32, false); + TestUtils.AreEqual(log(double2(12000000000.0, -1.0)), double2(23.208172486734409, double.NaN), 32, false); + TestUtils.AreEqual(log(double2(double.NegativeInfinity, double.NaN)), double2(double.NaN, double.NaN), 32, false); + TestUtils.AreEqual(log(double2(double.PositiveInfinity, double.PositiveInfinity)), double2(double.PositiveInfinity, double.PositiveInfinity), 32, false); + } + + [TestCompiler] + public static void log_double3() + { + TestUtils.AreEqual(log(double3(1.2E-09, 1.0, 12000000000.0)), double3(-20.540944280152456, 0.0, 23.208172486734409), 32, false); + TestUtils.AreEqual(log(double3(-1.0, double.NegativeInfinity, double.NaN)), double3(double.NaN, double.NaN, double.NaN), 32, false); + TestUtils.AreEqual(log(double3(double.PositiveInfinity, double.PositiveInfinity, double.PositiveInfinity)), double3(double.PositiveInfinity, double.PositiveInfinity, double.PositiveInfinity), 32, false); + } + + [TestCompiler] + public static void log_double4() + { + TestUtils.AreEqual(log(double4(1.2E-09, 1.0, 12000000000.0, -1.0)), double4(-20.540944280152456, 0.0, 23.208172486734409, double.NaN), 32, false); + TestUtils.AreEqual(log(double4(double.NegativeInfinity, double.NaN, double.PositiveInfinity, double.PositiveInfinity)), double4(double.NaN, double.NaN, double.PositiveInfinity, double.PositiveInfinity), 32, false); + } + + [TestCompiler] + public static void log2_float() + { + TestUtils.AreEqual(log2(1.2E-09f), -29.63432f, 1, false); + TestUtils.AreEqual(log2(1f), 0f, 1, false); + TestUtils.AreEqual(log2(1.2E+10f), 33.4823151f, 1, false); + TestUtils.AreEqual(log2(-1f), float.NaN, 1, false); + TestUtils.AreEqual(log2(float.NegativeInfinity), float.NaN, 1, false); + TestUtils.AreEqual(log2(float.NaN), float.NaN, 1, false); + TestUtils.AreEqual(log2(float.PositiveInfinity), float.PositiveInfinity, 1, false); + } + + [TestCompiler] + public static void log2_float2() + { + TestUtils.AreEqual(log2(float2(1.2E-09f, 1f)), float2(-29.63432f, 0f), 1, false); + TestUtils.AreEqual(log2(float2(1.2E+10f, -1f)), float2(33.4823151f, float.NaN), 1, false); + TestUtils.AreEqual(log2(float2(float.NegativeInfinity, float.NaN)), float2(float.NaN, float.NaN), 1, false); + TestUtils.AreEqual(log2(float2(float.PositiveInfinity, float.PositiveInfinity)), float2(float.PositiveInfinity, float.PositiveInfinity), 1, false); + } + + [TestCompiler] + public static void log2_float3() + { + TestUtils.AreEqual(log2(float3(1.2E-09f, 1f, 1.2E+10f)), float3(-29.63432f, 0f, 33.4823151f), 1, false); + TestUtils.AreEqual(log2(float3(-1f, float.NegativeInfinity, float.NaN)), float3(float.NaN, float.NaN, float.NaN), 1, false); + TestUtils.AreEqual(log2(float3(float.PositiveInfinity, float.PositiveInfinity, float.PositiveInfinity)), float3(float.PositiveInfinity, float.PositiveInfinity, float.PositiveInfinity), 1, false); + } + + [TestCompiler] + public static void log2_float4() + { + TestUtils.AreEqual(log2(float4(1.2E-09f, 1f, 1.2E+10f, -1f)), float4(-29.63432f, 0f, 33.4823151f, float.NaN), 1, false); + TestUtils.AreEqual(log2(float4(float.NegativeInfinity, float.NaN, float.PositiveInfinity, float.PositiveInfinity)), float4(float.NaN, float.NaN, float.PositiveInfinity, float.PositiveInfinity), 1, false); + } + + [TestCompiler] + public static void log2_double() + { + TestUtils.AreEqual(log2(1.2E-09), -29.634318448152467, 32, false); + TestUtils.AreEqual(log2(1.0), 0.0, 32, false); + TestUtils.AreEqual(log2(12000000000.0), 33.482315354707417, 32, false); + TestUtils.AreEqual(log2(-1.0), double.NaN, 32, false); + TestUtils.AreEqual(log2(double.NegativeInfinity), double.NaN, 32, false); + TestUtils.AreEqual(log2(double.NaN), double.NaN, 32, false); + TestUtils.AreEqual(log2(double.PositiveInfinity), double.PositiveInfinity, 32, false); + } + + [TestCompiler] + public static void log2_double2() + { + TestUtils.AreEqual(log2(double2(1.2E-09, 1.0)), double2(-29.634318448152467, 0.0), 32, false); + TestUtils.AreEqual(log2(double2(12000000000.0, -1.0)), double2(33.482315354707417, double.NaN), 32, false); + TestUtils.AreEqual(log2(double2(double.NegativeInfinity, double.NaN)), double2(double.NaN, double.NaN), 32, false); + TestUtils.AreEqual(log2(double2(double.PositiveInfinity, double.PositiveInfinity)), double2(double.PositiveInfinity, double.PositiveInfinity), 32, false); + } + + [TestCompiler] + public static void log2_double3() + { + TestUtils.AreEqual(log2(double3(1.2E-09, 1.0, 12000000000.0)), double3(-29.634318448152467, 0.0, 33.482315354707417), 32, false); + TestUtils.AreEqual(log2(double3(-1.0, double.NegativeInfinity, double.NaN)), double3(double.NaN, double.NaN, double.NaN), 32, false); + TestUtils.AreEqual(log2(double3(double.PositiveInfinity, double.PositiveInfinity, double.PositiveInfinity)), double3(double.PositiveInfinity, double.PositiveInfinity, double.PositiveInfinity), 32, false); + } + + [TestCompiler] + public static void log2_double4() + { + TestUtils.AreEqual(log2(double4(1.2E-09, 1.0, 12000000000.0, -1.0)), double4(-29.634318448152467, 0.0, 33.482315354707417, double.NaN), 32, false); + TestUtils.AreEqual(log2(double4(double.NegativeInfinity, double.NaN, double.PositiveInfinity, double.PositiveInfinity)), double4(double.NaN, double.NaN, double.PositiveInfinity, double.PositiveInfinity), 32, false); + } + + [TestCompiler] + public static void log10_float() + { + TestUtils.AreEqual(log10(1.2E-09f), -8.920818f, 1, false); + TestUtils.AreEqual(log10(1f), 0f, 1, false); + TestUtils.AreEqual(log10(1.2E+10f), 10.0791817f, 1, false); + TestUtils.AreEqual(log10(-1f), float.NaN, 1, false); + TestUtils.AreEqual(log10(float.NegativeInfinity), float.NaN, 1, false); + TestUtils.AreEqual(log10(float.NaN), float.NaN, 1, false); + TestUtils.AreEqual(log10(float.PositiveInfinity), float.PositiveInfinity, 1, false); + } + + [TestCompiler] + public static void log10_float2() + { + TestUtils.AreEqual(log10(float2(1.2E-09f, 1f)), float2(-8.920818f, 0f), 1, false); + TestUtils.AreEqual(log10(float2(1.2E+10f, -1f)), float2(10.0791817f, float.NaN), 1, false); + TestUtils.AreEqual(log10(float2(float.NegativeInfinity, float.NaN)), float2(float.NaN, float.NaN), 1, false); + TestUtils.AreEqual(log10(float2(float.PositiveInfinity, float.PositiveInfinity)), float2(float.PositiveInfinity, float.PositiveInfinity), 1, false); + } + + [TestCompiler] + public static void log10_float3() + { + TestUtils.AreEqual(log10(float3(1.2E-09f, 1f, 1.2E+10f)), float3(-8.920818f, 0f, 10.0791817f), 1, false); + TestUtils.AreEqual(log10(float3(-1f, float.NegativeInfinity, float.NaN)), float3(float.NaN, float.NaN, float.NaN), 1, false); + TestUtils.AreEqual(log10(float3(float.PositiveInfinity, float.PositiveInfinity, float.PositiveInfinity)), float3(float.PositiveInfinity, float.PositiveInfinity, float.PositiveInfinity), 1, false); + } + + [TestCompiler] + public static void log10_float4() + { + TestUtils.AreEqual(log10(float4(1.2E-09f, 1f, 1.2E+10f, -1f)), float4(-8.920818f, 0f, 10.0791817f, float.NaN), 1, false); + TestUtils.AreEqual(log10(float4(float.NegativeInfinity, float.NaN, float.PositiveInfinity, float.PositiveInfinity)), float4(float.NaN, float.NaN, float.PositiveInfinity, float.PositiveInfinity), 1, false); + } + + [TestCompiler] + public static void log10_double() + { + TestUtils.AreEqual(log10(1.2E-09), -8.9208187539523749, 32, false); + TestUtils.AreEqual(log10(1.0), 0.0, 32, false); + TestUtils.AreEqual(log10(12000000000.0), 10.079181246047623, 32, false); + TestUtils.AreEqual(log10(-1.0), double.NaN, 32, false); + TestUtils.AreEqual(log10(double.NegativeInfinity), double.NaN, 32, false); + TestUtils.AreEqual(log10(double.NaN), double.NaN, 32, false); + TestUtils.AreEqual(log10(double.PositiveInfinity), double.PositiveInfinity, 32, false); + } + + [TestCompiler] + public static void log10_double2() + { + TestUtils.AreEqual(log10(double2(1.2E-09, 1.0)), double2(-8.9208187539523749, 0.0), 32, false); + TestUtils.AreEqual(log10(double2(12000000000.0, -1.0)), double2(10.079181246047623, double.NaN), 32, false); + TestUtils.AreEqual(log10(double2(double.NegativeInfinity, double.NaN)), double2(double.NaN, double.NaN), 32, false); + TestUtils.AreEqual(log10(double2(double.PositiveInfinity, double.PositiveInfinity)), double2(double.PositiveInfinity, double.PositiveInfinity), 32, false); + } + + [TestCompiler] + public static void log10_double3() + { + TestUtils.AreEqual(log10(double3(1.2E-09, 1.0, 12000000000.0)), double3(-8.9208187539523749, 0.0, 10.079181246047623), 32, false); + TestUtils.AreEqual(log10(double3(-1.0, double.NegativeInfinity, double.NaN)), double3(double.NaN, double.NaN, double.NaN), 32, false); + TestUtils.AreEqual(log10(double3(double.PositiveInfinity, double.PositiveInfinity, double.PositiveInfinity)), double3(double.PositiveInfinity, double.PositiveInfinity, double.PositiveInfinity), 32, false); + } + + [TestCompiler] + public static void log10_double4() + { + TestUtils.AreEqual(log10(double4(1.2E-09, 1.0, 12000000000.0, -1.0)), double4(-8.9208187539523749, 0.0, 10.079181246047623, double.NaN), 32, false); + TestUtils.AreEqual(log10(double4(double.NegativeInfinity, double.NaN, double.PositiveInfinity, double.PositiveInfinity)), double4(double.NaN, double.NaN, double.PositiveInfinity, double.PositiveInfinity), 32, false); + } + + [TestCompiler] + public static void radians_float() + { + TestUtils.AreEqual(radians(-123.45f), -2.154609f, 1, false); + TestUtils.AreEqual(radians(0f), 0f, 1, false); + TestUtils.AreEqual(radians(123.45f), 2.154609f, 1, false); + TestUtils.AreEqual(radians(float.NegativeInfinity), float.NegativeInfinity, 1, false); + TestUtils.AreEqual(radians(float.NaN), float.NaN, 1, false); + TestUtils.AreEqual(radians(float.PositiveInfinity), float.PositiveInfinity, 1, false); + } + + [TestCompiler] + public static void radians_float2() + { + TestUtils.AreEqual(radians(float2(-123.45f, 0f)), float2(-2.154609f, 0f), 1, false); + TestUtils.AreEqual(radians(float2(123.45f, float.NegativeInfinity)), float2(2.154609f, float.NegativeInfinity), 1, false); + TestUtils.AreEqual(radians(float2(float.NaN, float.PositiveInfinity)), float2(float.NaN, float.PositiveInfinity), 1, false); + } + + [TestCompiler] + public static void radians_float3() + { + TestUtils.AreEqual(radians(float3(-123.45f, 0f, 123.45f)), float3(-2.154609f, 0f, 2.154609f), 1, false); + TestUtils.AreEqual(radians(float3(float.NegativeInfinity, float.NaN, float.PositiveInfinity)), float3(float.NegativeInfinity, float.NaN, float.PositiveInfinity), 1, false); + } + + [TestCompiler] + public static void radians_float4() + { + TestUtils.AreEqual(radians(float4(-123.45f, 0f, 123.45f, float.NegativeInfinity)), float4(-2.154609f, 0f, 2.154609f, float.NegativeInfinity), 1, false); + TestUtils.AreEqual(radians(float4(float.NaN, float.PositiveInfinity, float.PositiveInfinity, float.PositiveInfinity)), float4(float.NaN, float.PositiveInfinity, float.PositiveInfinity, float.PositiveInfinity), 1, false); + } + + [TestCompiler] + public static void radians_double() + { + TestUtils.AreEqual(radians(-123.45), -2.154608961587, 1, false); + TestUtils.AreEqual(radians(0.0), 0.0, 1, false); + TestUtils.AreEqual(radians(123.45), 2.154608961587, 1, false); + TestUtils.AreEqual(radians(double.NegativeInfinity), double.NegativeInfinity, 1, false); + TestUtils.AreEqual(radians(double.NaN), double.NaN, 1, false); + TestUtils.AreEqual(radians(double.PositiveInfinity), double.PositiveInfinity, 1, false); + } + + [TestCompiler] + public static void radians_double2() + { + TestUtils.AreEqual(radians(double2(-123.45, 0.0)), double2(-2.154608961587, 0.0), 1, false); + TestUtils.AreEqual(radians(double2(123.45, double.NegativeInfinity)), double2(2.154608961587, double.NegativeInfinity), 1, false); + TestUtils.AreEqual(radians(double2(double.NaN, double.PositiveInfinity)), double2(double.NaN, double.PositiveInfinity), 1, false); + } + + [TestCompiler] + public static void radians_double3() + { + TestUtils.AreEqual(radians(double3(-123.45, 0.0, 123.45)), double3(-2.154608961587, 0.0, 2.154608961587), 1, false); + TestUtils.AreEqual(radians(double3(double.NegativeInfinity, double.NaN, double.PositiveInfinity)), double3(double.NegativeInfinity, double.NaN, double.PositiveInfinity), 1, false); + } + + [TestCompiler] + public static void radians_double4() + { + TestUtils.AreEqual(radians(double4(-123.45, 0.0, 123.45, double.NegativeInfinity)), double4(-2.154608961587, 0.0, 2.154608961587, double.NegativeInfinity), 1, false); + TestUtils.AreEqual(radians(double4(double.NaN, double.PositiveInfinity, double.PositiveInfinity, double.PositiveInfinity)), double4(double.NaN, double.PositiveInfinity, double.PositiveInfinity, double.PositiveInfinity), 1, false); + } + + [TestCompiler] + public static void degrees_float() + { + TestUtils.AreEqual(degrees(-123.45f), -7073.164f, 1, false); + TestUtils.AreEqual(degrees(0f), 0f, 1, false); + TestUtils.AreEqual(degrees(123.45f), 7073.164f, 1, false); + TestUtils.AreEqual(degrees(float.NegativeInfinity), float.NegativeInfinity, 1, false); + TestUtils.AreEqual(degrees(float.NaN), float.NaN, 1, false); + TestUtils.AreEqual(degrees(float.PositiveInfinity), float.PositiveInfinity, 1, false); + } + + [TestCompiler] + public static void degrees_float2() + { + TestUtils.AreEqual(degrees(float2(-123.45f, 0f)), float2(-7073.164f, 0f), 1, false); + TestUtils.AreEqual(degrees(float2(123.45f, float.NegativeInfinity)), float2(7073.164f, float.NegativeInfinity), 1, false); + TestUtils.AreEqual(degrees(float2(float.NaN, float.PositiveInfinity)), float2(float.NaN, float.PositiveInfinity), 1, false); + } + + [TestCompiler] + public static void degrees_float3() + { + TestUtils.AreEqual(degrees(float3(-123.45f, 0f, 123.45f)), float3(-7073.164f, 0f, 7073.164f), 1, false); + TestUtils.AreEqual(degrees(float3(float.NegativeInfinity, float.NaN, float.PositiveInfinity)), float3(float.NegativeInfinity, float.NaN, float.PositiveInfinity), 1, false); + } + + [TestCompiler] + public static void degrees_float4() + { + TestUtils.AreEqual(degrees(float4(-123.45f, 0f, 123.45f, float.NegativeInfinity)), float4(-7073.164f, 0f, 7073.164f, float.NegativeInfinity), 1, false); + TestUtils.AreEqual(degrees(float4(float.NaN, float.PositiveInfinity, float.PositiveInfinity, float.PositiveInfinity)), float4(float.NaN, float.PositiveInfinity, float.PositiveInfinity, float.PositiveInfinity), 1, false); + } + + [TestCompiler] + public static void degrees_double() + { + TestUtils.AreEqual(degrees(-123.45), -7073.1639808900127, 1, false); + TestUtils.AreEqual(degrees(0.0), 0.0, 1, false); + TestUtils.AreEqual(degrees(123.45), 7073.1639808900127, 1, false); + TestUtils.AreEqual(degrees(double.NegativeInfinity), double.NegativeInfinity, 1, false); + TestUtils.AreEqual(degrees(double.NaN), double.NaN, 1, false); + TestUtils.AreEqual(degrees(double.PositiveInfinity), double.PositiveInfinity, 1, false); + } + + [TestCompiler] + public static void degrees_double2() + { + TestUtils.AreEqual(degrees(double2(-123.45, 0.0)), double2(-7073.1639808900127, 0.0), 1, false); + TestUtils.AreEqual(degrees(double2(123.45, double.NegativeInfinity)), double2(7073.1639808900127, double.NegativeInfinity), 1, false); + TestUtils.AreEqual(degrees(double2(double.NaN, double.PositiveInfinity)), double2(double.NaN, double.PositiveInfinity), 1, false); + } + + [TestCompiler] + public static void degrees_double3() + { + TestUtils.AreEqual(degrees(double3(-123.45, 0.0, 123.45)), double3(-7073.1639808900127, 0.0, 7073.1639808900127), 1, false); + TestUtils.AreEqual(degrees(double3(double.NegativeInfinity, double.NaN, double.PositiveInfinity)), double3(double.NegativeInfinity, double.NaN, double.PositiveInfinity), 1, false); + } + + [TestCompiler] + public static void degrees_double4() + { + TestUtils.AreEqual(degrees(double4(-123.45, 0.0, 123.45, double.NegativeInfinity)), double4(-7073.1639808900127, 0.0, 7073.1639808900127, double.NegativeInfinity), 1, false); + TestUtils.AreEqual(degrees(double4(double.NaN, double.PositiveInfinity, double.PositiveInfinity, double.PositiveInfinity)), double4(double.NaN, double.PositiveInfinity, double.PositiveInfinity, double.PositiveInfinity), 1, false); + } + + [TestCompiler] + public static void sign_float() + { + TestUtils.AreEqual(sign(-123.45f), -1f); + TestUtils.AreEqual(sign(-1E-20f), -1f); + TestUtils.AreEqual(sign(0f), 0f); + TestUtils.AreEqual(sign(1E-10f), 1f); + TestUtils.AreEqual(sign(123.45f), 1f); + TestUtils.AreEqual(sign(float.NegativeInfinity), -1f); + TestUtils.AreEqual(sign(float.NaN), 0f); + TestUtils.AreEqual(sign(float.PositiveInfinity), 1f); + } + + [TestCompiler] + public static void sign_float2() + { + TestUtils.AreEqual(sign(float2(-123.45f, -1E-20f)), float2(-1f, -1f)); + TestUtils.AreEqual(sign(float2(0f, 1E-10f)), float2(0f, 1f)); + TestUtils.AreEqual(sign(float2(123.45f, float.NegativeInfinity)), float2(1f, -1f)); + TestUtils.AreEqual(sign(float2(float.NaN, float.PositiveInfinity)), float2(0f, 1f)); + } + + [TestCompiler] + public static void sign_float3() + { + TestUtils.AreEqual(sign(float3(-123.45f, -1E-20f, 0f)), float3(-1f, -1f, 0f)); + TestUtils.AreEqual(sign(float3(1E-10f, 123.45f, float.NegativeInfinity)), float3(1f, 1f, -1f)); + TestUtils.AreEqual(sign(float3(float.NaN, float.PositiveInfinity, float.PositiveInfinity)), float3(0f, 1f, 1f)); + } + + [TestCompiler] + public static void sign_float4() + { + TestUtils.AreEqual(sign(float4(-123.45f, -1E-20f, 0f, 1E-10f)), float4(-1f, -1f, 0f, 1f)); + TestUtils.AreEqual(sign(float4(123.45f, float.NegativeInfinity, float.NaN, float.PositiveInfinity)), float4(1f, -1f, 0f, 1f)); + } + + [TestCompiler] + public static void sign_double() + { + TestUtils.AreEqual(sign(-123.45), -1.0); + TestUtils.AreEqual(sign(-1E-20), -1.0); + TestUtils.AreEqual(sign(0.0), 0.0); + TestUtils.AreEqual(sign(1E-10), 1.0); + TestUtils.AreEqual(sign(123.45), 1.0); + TestUtils.AreEqual(sign(double.NegativeInfinity), -1.0); + TestUtils.AreEqual(sign(double.NaN), 0.0); + TestUtils.AreEqual(sign(double.PositiveInfinity), 1.0); + } + + [TestCompiler] + public static void sign_double2() + { + TestUtils.AreEqual(sign(double2(-123.45, -1E-20)), double2(-1.0, -1.0)); + TestUtils.AreEqual(sign(double2(0.0, 1E-10)), double2(0.0, 1.0)); + TestUtils.AreEqual(sign(double2(123.45, double.NegativeInfinity)), double2(1.0, -1.0)); + TestUtils.AreEqual(sign(double2(double.NaN, double.PositiveInfinity)), double2(0.0, 1.0)); + } + + [TestCompiler] + public static void sign_double3() + { + TestUtils.AreEqual(sign(double3(-123.45, -1E-20, 0.0)), double3(-1.0, -1.0, 0.0)); + TestUtils.AreEqual(sign(double3(1E-10, 123.45, double.NegativeInfinity)), double3(1.0, 1.0, -1.0)); + TestUtils.AreEqual(sign(double3(double.NaN, double.PositiveInfinity, double.PositiveInfinity)), double3(0.0, 1.0, 1.0)); + } + + [TestCompiler] + public static void sign_double4() + { + TestUtils.AreEqual(sign(double4(-123.45, -1E-20, 0.0, 1E-10)), double4(-1.0, -1.0, 0.0, 1.0)); + TestUtils.AreEqual(sign(double4(123.45, double.NegativeInfinity, double.NaN, double.PositiveInfinity)), double4(1.0, -1.0, 0.0, 1.0)); + } + + [TestCompiler] + public static void sqrt_float() + { + TestUtils.AreEqual(sqrt(-1f), float.NaN, 1, false); + TestUtils.AreEqual(sqrt(0f), 0f, 1, false); + TestUtils.AreEqual(sqrt(1E-10f), 1E-05f, 1, false); + TestUtils.AreEqual(sqrt(123.45f), 11.1108055f, 1, false); + TestUtils.AreEqual(sqrt(float.NegativeInfinity), float.NaN, 1, false); + TestUtils.AreEqual(sqrt(float.NaN), float.NaN, 1, false); + TestUtils.AreEqual(sqrt(float.PositiveInfinity), float.PositiveInfinity, 1, false); + } + + [TestCompiler] + public static void sqrt_float2() + { + TestUtils.AreEqual(sqrt(float2(-1f, 0f)), float2(float.NaN, 0f), 1, false); + TestUtils.AreEqual(sqrt(float2(1E-10f, 123.45f)), float2(1E-05f, 11.1108055f), 1, false); + TestUtils.AreEqual(sqrt(float2(float.NegativeInfinity, float.NaN)), float2(float.NaN, float.NaN), 1, false); + TestUtils.AreEqual(sqrt(float2(float.PositiveInfinity, float.PositiveInfinity)), float2(float.PositiveInfinity, float.PositiveInfinity), 1, false); + } + + [TestCompiler] + public static void sqrt_float3() + { + TestUtils.AreEqual(sqrt(float3(-1f, 0f, 1E-10f)), float3(float.NaN, 0f, 1E-05f), 1, false); + TestUtils.AreEqual(sqrt(float3(123.45f, float.NegativeInfinity, float.NaN)), float3(11.1108055f, float.NaN, float.NaN), 1, false); + TestUtils.AreEqual(sqrt(float3(float.PositiveInfinity, float.PositiveInfinity, float.PositiveInfinity)), float3(float.PositiveInfinity, float.PositiveInfinity, float.PositiveInfinity), 1, false); + } + + [TestCompiler] + public static void sqrt_float4() + { + TestUtils.AreEqual(sqrt(float4(-1f, 0f, 1E-10f, 123.45f)), float4(float.NaN, 0f, 1E-05f, 11.1108055f), 1, false); + TestUtils.AreEqual(sqrt(float4(float.NegativeInfinity, float.NaN, float.PositiveInfinity, float.PositiveInfinity)), float4(float.NaN, float.NaN, float.PositiveInfinity, float.PositiveInfinity), 1, false); + } + + [TestCompiler] + public static void sqrt_double() + { + TestUtils.AreEqual(sqrt(-1.0), double.NaN, 1, false); + TestUtils.AreEqual(sqrt(0.0), 0.0, 1, false); + TestUtils.AreEqual(sqrt(1E-10), 1E-05, 1, false); + TestUtils.AreEqual(sqrt(123.45), 11.11080555135405, 1, false); + TestUtils.AreEqual(sqrt(double.NegativeInfinity), double.NaN, 1, false); + TestUtils.AreEqual(sqrt(double.NaN), double.NaN, 1, false); + TestUtils.AreEqual(sqrt(double.PositiveInfinity), double.PositiveInfinity, 1, false); + } + + [TestCompiler] + public static void sqrt_double2() + { + TestUtils.AreEqual(sqrt(double2(-1.0, 0.0)), double2(double.NaN, 0.0), 1, false); + TestUtils.AreEqual(sqrt(double2(1E-10, 123.45)), double2(1E-05, 11.11080555135405), 1, false); + TestUtils.AreEqual(sqrt(double2(double.NegativeInfinity, double.NaN)), double2(double.NaN, double.NaN), 1, false); + TestUtils.AreEqual(sqrt(double2(double.PositiveInfinity, double.PositiveInfinity)), double2(double.PositiveInfinity, double.PositiveInfinity), 1, false); + } + + [TestCompiler] + public static void sqrt_double3() + { + TestUtils.AreEqual(sqrt(double3(-1.0, 0.0, 1E-10)), double3(double.NaN, 0.0, 1E-05), 1, false); + TestUtils.AreEqual(sqrt(double3(123.45, double.NegativeInfinity, double.NaN)), double3(11.11080555135405, double.NaN, double.NaN), 1, false); + TestUtils.AreEqual(sqrt(double3(double.PositiveInfinity, double.PositiveInfinity, double.PositiveInfinity)), double3(double.PositiveInfinity, double.PositiveInfinity, double.PositiveInfinity), 1, false); + } + + [TestCompiler] + public static void sqrt_double4() + { + TestUtils.AreEqual(sqrt(double4(-1.0, 0.0, 1E-10, 123.45)), double4(double.NaN, 0.0, 1E-05, 11.11080555135405), 1, false); + TestUtils.AreEqual(sqrt(double4(double.NegativeInfinity, double.NaN, double.PositiveInfinity, double.PositiveInfinity)), double4(double.NaN, double.NaN, double.PositiveInfinity, double.PositiveInfinity), 1, false); + } + + [TestCompiler] + public static void rsqrt_float() + { + TestUtils.AreEqual(rsqrt(-1f), float.NaN, 1, false); + TestUtils.AreEqual(rsqrt(0f), float.PositiveInfinity, 1, false); + TestUtils.AreEqual(rsqrt(1E+10f), 1E-05f, 1, false); + TestUtils.AreEqual(rsqrt(123.45f), 0.09000248f, 1, false); + TestUtils.AreEqual(rsqrt(float.NegativeInfinity), float.NaN, 1, false); + TestUtils.AreEqual(rsqrt(float.NaN), float.NaN, 1, false); + TestUtils.AreEqual(rsqrt(float.PositiveInfinity), 0f, 1, false); + } + + [TestCompiler] + public static void rsqrt_float2() + { + TestUtils.AreEqual(rsqrt(float2(-1f, 0f)), float2(float.NaN, float.PositiveInfinity), 1, false); + TestUtils.AreEqual(rsqrt(float2(1E+10f, 123.45f)), float2(1E-05f, 0.09000248f), 1, false); + TestUtils.AreEqual(rsqrt(float2(float.NegativeInfinity, float.NaN)), float2(float.NaN, float.NaN), 1, false); + TestUtils.AreEqual(rsqrt(float2(float.PositiveInfinity, float.PositiveInfinity)), float2(0f, 0f), 1, false); + } + + [TestCompiler] + public static void rsqrt_float3() + { + TestUtils.AreEqual(rsqrt(float3(-1f, 0f, 1E+10f)), float3(float.NaN, float.PositiveInfinity, 1E-05f), 1, false); + TestUtils.AreEqual(rsqrt(float3(123.45f, float.NegativeInfinity, float.NaN)), float3(0.09000248f, float.NaN, float.NaN), 1, false); + TestUtils.AreEqual(rsqrt(float3(float.PositiveInfinity, float.PositiveInfinity, float.PositiveInfinity)), float3(0f, 0f, 0f), 1, false); + } + + [TestCompiler] + public static void rsqrt_float4() + { + TestUtils.AreEqual(rsqrt(float4(-1f, 0f, 1E+10f, 123.45f)), float4(float.NaN, float.PositiveInfinity, 1E-05f, 0.09000248f), 1, false); + TestUtils.AreEqual(rsqrt(float4(float.NegativeInfinity, float.NaN, float.PositiveInfinity, float.PositiveInfinity)), float4(float.NaN, float.NaN, 0f, 0f), 1, false); + } + + [TestCompiler] + public static void rsqrt_double() + { + TestUtils.AreEqual(rsqrt(-1.0), double.NaN, 1, false); + TestUtils.AreEqual(rsqrt(0.0), double.PositiveInfinity, 1, false); + TestUtils.AreEqual(rsqrt(10000000000.0), 1E-05, 1, false); + TestUtils.AreEqual(rsqrt(123.45), 0.090002475102098425, 1, false); + TestUtils.AreEqual(rsqrt(double.NegativeInfinity), double.NaN, 1, false); + TestUtils.AreEqual(rsqrt(double.NaN), double.NaN, 1, false); + TestUtils.AreEqual(rsqrt(double.PositiveInfinity), 0.0, 1, false); + } + + [TestCompiler] + public static void rsqrt_double2() + { + TestUtils.AreEqual(rsqrt(double2(-1.0, 0.0)), double2(double.NaN, double.PositiveInfinity), 1, false); + TestUtils.AreEqual(rsqrt(double2(10000000000.0, 123.45)), double2(1E-05, 0.090002475102098425), 1, false); + TestUtils.AreEqual(rsqrt(double2(double.NegativeInfinity, double.NaN)), double2(double.NaN, double.NaN), 1, false); + TestUtils.AreEqual(rsqrt(double2(double.PositiveInfinity, double.PositiveInfinity)), double2(0.0, 0.0), 1, false); + } + + [TestCompiler] + public static void rsqrt_double3() + { + TestUtils.AreEqual(rsqrt(double3(-1.0, 0.0, 10000000000.0)), double3(double.NaN, double.PositiveInfinity, 1E-05), 1, false); + TestUtils.AreEqual(rsqrt(double3(123.45, double.NegativeInfinity, double.NaN)), double3(0.090002475102098425, double.NaN, double.NaN), 1, false); + TestUtils.AreEqual(rsqrt(double3(double.PositiveInfinity, double.PositiveInfinity, double.PositiveInfinity)), double3(0.0, 0.0, 0.0), 1, false); + } + + [TestCompiler] + public static void rsqrt_double4() + { + TestUtils.AreEqual(rsqrt(double4(-1.0, 0.0, 10000000000.0, 123.45)), double4(double.NaN, double.PositiveInfinity, 1E-05, 0.090002475102098425), 1, false); + TestUtils.AreEqual(rsqrt(double4(double.NegativeInfinity, double.NaN, double.PositiveInfinity, double.PositiveInfinity)), double4(double.NaN, double.NaN, 0.0, 0.0), 1, false); + } + + [TestCompiler] + public static void rcp_float() + { + TestUtils.AreEqual(rcp(-123.45f), -0.008100445f, 1, false); + TestUtils.AreEqual(rcp(0f), float.PositiveInfinity, 1, false); + TestUtils.AreEqual(rcp(123.45f), 0.008100445f, 1, false); + TestUtils.AreEqual(rcp(float.NaN), float.NaN, 1, false); + TestUtils.AreEqual(rcp(float.PositiveInfinity), 0f, 1, false); + } + + [TestCompiler] + public static void rcp_float2() + { + TestUtils.AreEqual(rcp(float2(-123.45f, 0f)), float2(-0.008100445f, float.PositiveInfinity), 1, false); + TestUtils.AreEqual(rcp(float2(123.45f, float.NaN)), float2(0.008100445f, float.NaN), 1, false); + TestUtils.AreEqual(rcp(float2(float.PositiveInfinity, float.PositiveInfinity)), float2(0f, 0f), 1, false); + } + + [TestCompiler] + public static void rcp_float3() + { + TestUtils.AreEqual(rcp(float3(-123.45f, 0f, 123.45f)), float3(-0.008100445f, float.PositiveInfinity, 0.008100445f), 1, false); + TestUtils.AreEqual(rcp(float3(float.NaN, float.PositiveInfinity, float.PositiveInfinity)), float3(float.NaN, 0f, 0f), 1, false); + } + + [TestCompiler] + public static void rcp_float4() + { + TestUtils.AreEqual(rcp(float4(-123.45f, 0f, 123.45f, float.NaN)), float4(-0.008100445f, float.PositiveInfinity, 0.008100445f, float.NaN), 1, false); + TestUtils.AreEqual(rcp(float4(float.PositiveInfinity, float.PositiveInfinity, float.PositiveInfinity, float.PositiveInfinity)), float4(0f, 0f, 0f, 0f), 1, false); + } + + [TestCompiler] + public static void rcp_double() + { + TestUtils.AreEqual(rcp(-123.45), -0.0081004455245038479, 1, false); + TestUtils.AreEqual(rcp(0.0), double.PositiveInfinity, 1, false); + TestUtils.AreEqual(rcp(123.45), 0.0081004455245038479, 1, false); + TestUtils.AreEqual(rcp(double.NaN), double.NaN, 1, false); + TestUtils.AreEqual(rcp(double.PositiveInfinity), 0.0, 1, false); + } + + [TestCompiler] + public static void rcp_double2() + { + TestUtils.AreEqual(rcp(double2(-123.45, 0.0)), double2(-0.0081004455245038479, double.PositiveInfinity), 1, false); + TestUtils.AreEqual(rcp(double2(123.45, double.NaN)), double2(0.0081004455245038479, double.NaN), 1, false); + TestUtils.AreEqual(rcp(double2(double.PositiveInfinity, double.PositiveInfinity)), double2(0.0, 0.0), 1, false); + } + + [TestCompiler] + public static void rcp_double3() + { + TestUtils.AreEqual(rcp(double3(-123.45, 0.0, 123.45)), double3(-0.0081004455245038479, double.PositiveInfinity, 0.0081004455245038479), 1, false); + TestUtils.AreEqual(rcp(double3(double.NaN, double.PositiveInfinity, double.PositiveInfinity)), double3(double.NaN, 0.0, 0.0), 1, false); + } + + [TestCompiler] + public static void rcp_double4() + { + TestUtils.AreEqual(rcp(double4(-123.45, 0.0, 123.45, double.NaN)), double4(-0.0081004455245038479, double.PositiveInfinity, 0.0081004455245038479, double.NaN), 1, false); + TestUtils.AreEqual(rcp(double4(double.PositiveInfinity, double.PositiveInfinity, double.PositiveInfinity, double.PositiveInfinity)), double4(0.0, 0.0, 0.0, 0.0), 1, false); + } + + [TestCompiler] + public static void floor_float() + { + TestUtils.AreEqual(floor(float.NegativeInfinity), float.NegativeInfinity); + TestUtils.AreEqual(floor(-100.51f), -101f); + TestUtils.AreEqual(floor(-100.5f), -101f); + TestUtils.AreEqual(floor(-100.49f), -101f); + TestUtils.AreEqual(floor(0f), 0f); + TestUtils.AreEqual(floor(100.49f), 100f); + TestUtils.AreEqual(floor(100.5f), 100f); + TestUtils.AreEqual(floor(100.51f), 100f); + TestUtils.AreEqual(floor(float.PositiveInfinity), float.PositiveInfinity); + TestUtils.AreEqual(floor(float.NaN), float.NaN); + } + + [TestCompiler] + public static void floor_float2() + { + TestUtils.AreEqual(floor(float2(float.NegativeInfinity, -100.51f)), float2(float.NegativeInfinity, -101f)); + TestUtils.AreEqual(floor(float2(-100.5f, -100.49f)), float2(-101f, -101f)); + TestUtils.AreEqual(floor(float2(0f, 100.49f)), float2(0f, 100f)); + TestUtils.AreEqual(floor(float2(100.5f, 100.51f)), float2(100f, 100f)); + TestUtils.AreEqual(floor(float2(float.PositiveInfinity, float.NaN)), float2(float.PositiveInfinity, float.NaN)); + } + + [TestCompiler] + public static void floor_float3() + { + TestUtils.AreEqual(floor(float3(float.NegativeInfinity, -100.51f, -100.5f)), float3(float.NegativeInfinity, -101f, -101f)); + TestUtils.AreEqual(floor(float3(-100.49f, 0f, 100.49f)), float3(-101f, 0f, 100f)); + TestUtils.AreEqual(floor(float3(100.5f, 100.51f, float.PositiveInfinity)), float3(100f, 100f, float.PositiveInfinity)); + TestUtils.AreEqual(floor(float3(float.NaN, float.NaN, float.NaN)), float3(float.NaN, float.NaN, float.NaN)); + } + + [TestCompiler] + public static void floor_float4() + { + TestUtils.AreEqual(floor(float4(float.NegativeInfinity, -100.51f, -100.5f, -100.49f)), float4(float.NegativeInfinity, -101f, -101f, -101f)); + TestUtils.AreEqual(floor(float4(0f, 100.49f, 100.5f, 100.51f)), float4(0f, 100f, 100f, 100f)); + TestUtils.AreEqual(floor(float4(float.PositiveInfinity, float.NaN, float.NaN, float.NaN)), float4(float.PositiveInfinity, float.NaN, float.NaN, float.NaN)); + } + + [TestCompiler] + public static void floor_double() + { + TestUtils.AreEqual(floor(double.NegativeInfinity), double.NegativeInfinity); + TestUtils.AreEqual(floor(-100.51), -101.0); + TestUtils.AreEqual(floor(-100.5), -101.0); + TestUtils.AreEqual(floor(-100.49), -101.0); + TestUtils.AreEqual(floor(0.0), 0.0); + TestUtils.AreEqual(floor(100.49), 100.0); + TestUtils.AreEqual(floor(100.5), 100.0); + TestUtils.AreEqual(floor(100.51), 100.0); + TestUtils.AreEqual(floor(double.PositiveInfinity), double.PositiveInfinity); + TestUtils.AreEqual(floor(double.NaN), double.NaN); + } + + [TestCompiler] + public static void floor_double2() + { + TestUtils.AreEqual(floor(double2(double.NegativeInfinity, -100.51)), double2(double.NegativeInfinity, -101.0)); + TestUtils.AreEqual(floor(double2(-100.5, -100.49)), double2(-101.0, -101.0)); + TestUtils.AreEqual(floor(double2(0.0, 100.49)), double2(0.0, 100.0)); + TestUtils.AreEqual(floor(double2(100.5, 100.51)), double2(100.0, 100.0)); + TestUtils.AreEqual(floor(double2(double.PositiveInfinity, double.NaN)), double2(double.PositiveInfinity, double.NaN)); + } + + [TestCompiler] + public static void floor_double3() + { + TestUtils.AreEqual(floor(double3(double.NegativeInfinity, -100.51, -100.5)), double3(double.NegativeInfinity, -101.0, -101.0)); + TestUtils.AreEqual(floor(double3(-100.49, 0.0, 100.49)), double3(-101.0, 0.0, 100.0)); + TestUtils.AreEqual(floor(double3(100.5, 100.51, double.PositiveInfinity)), double3(100.0, 100.0, double.PositiveInfinity)); + TestUtils.AreEqual(floor(double3(double.NaN, double.NaN, double.NaN)), double3(double.NaN, double.NaN, double.NaN)); + } + + [TestCompiler] + public static void floor_double4() + { + TestUtils.AreEqual(floor(double4(double.NegativeInfinity, -100.51, -100.5, -100.49)), double4(double.NegativeInfinity, -101.0, -101.0, -101.0)); + TestUtils.AreEqual(floor(double4(0.0, 100.49, 100.5, 100.51)), double4(0.0, 100.0, 100.0, 100.0)); + TestUtils.AreEqual(floor(double4(double.PositiveInfinity, double.NaN, double.NaN, double.NaN)), double4(double.PositiveInfinity, double.NaN, double.NaN, double.NaN)); + } + + [TestCompiler] + public static void ceil_float() + { + TestUtils.AreEqual(ceil(float.NegativeInfinity), float.NegativeInfinity); + TestUtils.AreEqual(ceil(-100.51f), -100f); + TestUtils.AreEqual(ceil(-100.5f), -100f); + TestUtils.AreEqual(ceil(-100.49f), -100f); + TestUtils.AreEqual(ceil(0f), 0f); + TestUtils.AreEqual(ceil(100.49f), 101f); + TestUtils.AreEqual(ceil(100.5f), 101f); + TestUtils.AreEqual(ceil(100.51f), 101f); + TestUtils.AreEqual(ceil(float.PositiveInfinity), float.PositiveInfinity); + TestUtils.AreEqual(ceil(float.NaN), float.NaN); + } + + [TestCompiler] + public static void ceil_float2() + { + TestUtils.AreEqual(ceil(float2(float.NegativeInfinity, -100.51f)), float2(float.NegativeInfinity, -100f)); + TestUtils.AreEqual(ceil(float2(-100.5f, -100.49f)), float2(-100f, -100f)); + TestUtils.AreEqual(ceil(float2(0f, 100.49f)), float2(0f, 101f)); + TestUtils.AreEqual(ceil(float2(100.5f, 100.51f)), float2(101f, 101f)); + TestUtils.AreEqual(ceil(float2(float.PositiveInfinity, float.NaN)), float2(float.PositiveInfinity, float.NaN)); + } + + [TestCompiler] + public static void ceil_float3() + { + TestUtils.AreEqual(ceil(float3(float.NegativeInfinity, -100.51f, -100.5f)), float3(float.NegativeInfinity, -100f, -100f)); + TestUtils.AreEqual(ceil(float3(-100.49f, 0f, 100.49f)), float3(-100f, 0f, 101f)); + TestUtils.AreEqual(ceil(float3(100.5f, 100.51f, float.PositiveInfinity)), float3(101f, 101f, float.PositiveInfinity)); + TestUtils.AreEqual(ceil(float3(float.NaN, float.NaN, float.NaN)), float3(float.NaN, float.NaN, float.NaN)); + } + + [TestCompiler] + public static void ceil_float4() + { + TestUtils.AreEqual(ceil(float4(float.NegativeInfinity, -100.51f, -100.5f, -100.49f)), float4(float.NegativeInfinity, -100f, -100f, -100f)); + TestUtils.AreEqual(ceil(float4(0f, 100.49f, 100.5f, 100.51f)), float4(0f, 101f, 101f, 101f)); + TestUtils.AreEqual(ceil(float4(float.PositiveInfinity, float.NaN, float.NaN, float.NaN)), float4(float.PositiveInfinity, float.NaN, float.NaN, float.NaN)); + } + + [TestCompiler] + public static void ceil_double() + { + TestUtils.AreEqual(ceil(double.NegativeInfinity), double.NegativeInfinity); + TestUtils.AreEqual(ceil(-100.51), -100.0); + TestUtils.AreEqual(ceil(-100.5), -100.0); + TestUtils.AreEqual(ceil(-100.49), -100.0); + TestUtils.AreEqual(ceil(0.0), 0.0); + TestUtils.AreEqual(ceil(100.49), 101.0); + TestUtils.AreEqual(ceil(100.5), 101.0); + TestUtils.AreEqual(ceil(100.51), 101.0); + TestUtils.AreEqual(ceil(double.PositiveInfinity), double.PositiveInfinity); + TestUtils.AreEqual(ceil(double.NaN), double.NaN); + } + + [TestCompiler] + public static void ceil_double2() + { + TestUtils.AreEqual(ceil(double2(double.NegativeInfinity, -100.51)), double2(double.NegativeInfinity, -100.0)); + TestUtils.AreEqual(ceil(double2(-100.5, -100.49)), double2(-100.0, -100.0)); + TestUtils.AreEqual(ceil(double2(0.0, 100.49)), double2(0.0, 101.0)); + TestUtils.AreEqual(ceil(double2(100.5, 100.51)), double2(101.0, 101.0)); + TestUtils.AreEqual(ceil(double2(double.PositiveInfinity, double.NaN)), double2(double.PositiveInfinity, double.NaN)); + } + + [TestCompiler] + public static void ceil_double3() + { + TestUtils.AreEqual(ceil(double3(double.NegativeInfinity, -100.51, -100.5)), double3(double.NegativeInfinity, -100.0, -100.0)); + TestUtils.AreEqual(ceil(double3(-100.49, 0.0, 100.49)), double3(-100.0, 0.0, 101.0)); + TestUtils.AreEqual(ceil(double3(100.5, 100.51, double.PositiveInfinity)), double3(101.0, 101.0, double.PositiveInfinity)); + TestUtils.AreEqual(ceil(double3(double.NaN, double.NaN, double.NaN)), double3(double.NaN, double.NaN, double.NaN)); + } + + [TestCompiler] + public static void ceil_double4() + { + TestUtils.AreEqual(ceil(double4(double.NegativeInfinity, -100.51, -100.5, -100.49)), double4(double.NegativeInfinity, -100.0, -100.0, -100.0)); + TestUtils.AreEqual(ceil(double4(0.0, 100.49, 100.5, 100.51)), double4(0.0, 101.0, 101.0, 101.0)); + TestUtils.AreEqual(ceil(double4(double.PositiveInfinity, double.NaN, double.NaN, double.NaN)), double4(double.PositiveInfinity, double.NaN, double.NaN, double.NaN)); + } + + [TestCompiler] + public static void round_float() + { + TestUtils.AreEqual(round(float.NegativeInfinity), float.NegativeInfinity); + TestUtils.AreEqual(round(-100.51f), -101f); + TestUtils.AreEqual(round(-100.5f), -100f); + TestUtils.AreEqual(round(-100.49f), -100f); + TestUtils.AreEqual(round(0f), 0f); + TestUtils.AreEqual(round(100.49f), 100f); + TestUtils.AreEqual(round(100.5f), 100f); + TestUtils.AreEqual(round(100.51f), 101f); + TestUtils.AreEqual(round(101.5f), 102f); + TestUtils.AreEqual(round(float.PositiveInfinity), float.PositiveInfinity); + TestUtils.AreEqual(round(float.NaN), float.NaN); + } + + [TestCompiler] + public static void round_float2() + { + TestUtils.AreEqual(round(float2(float.NegativeInfinity, -100.51f)), float2(float.NegativeInfinity, -101f)); + TestUtils.AreEqual(round(float2(-100.5f, -100.49f)), float2(-100f, -100f)); + TestUtils.AreEqual(round(float2(0f, 100.49f)), float2(0f, 100f)); + TestUtils.AreEqual(round(float2(100.5f, 100.51f)), float2(100f, 101f)); + TestUtils.AreEqual(round(float2(101.5f, float.PositiveInfinity)), float2(102f, float.PositiveInfinity)); + TestUtils.AreEqual(round(float2(float.NaN, float.NaN)), float2(float.NaN, float.NaN)); + } + + [TestCompiler] + public static void round_float3() + { + TestUtils.AreEqual(round(float3(float.NegativeInfinity, -100.51f, -100.5f)), float3(float.NegativeInfinity, -101f, -100f)); + TestUtils.AreEqual(round(float3(-100.49f, 0f, 100.49f)), float3(-100f, 0f, 100f)); + TestUtils.AreEqual(round(float3(100.5f, 100.51f, 101.5f)), float3(100f, 101f, 102f)); + TestUtils.AreEqual(round(float3(float.PositiveInfinity, float.NaN, float.NaN)), float3(float.PositiveInfinity, float.NaN, float.NaN)); + } + + [TestCompiler] + public static void round_float4() + { + TestUtils.AreEqual(round(float4(float.NegativeInfinity, -100.51f, -100.5f, -100.49f)), float4(float.NegativeInfinity, -101f, -100f, -100f)); + TestUtils.AreEqual(round(float4(0f, 100.49f, 100.5f, 100.51f)), float4(0f, 100f, 100f, 101f)); + TestUtils.AreEqual(round(float4(101.5f, float.PositiveInfinity, float.NaN, float.NaN)), float4(102f, float.PositiveInfinity, float.NaN, float.NaN)); + } + + [TestCompiler] + public static void round_double() + { + TestUtils.AreEqual(round(double.NegativeInfinity), double.NegativeInfinity); + TestUtils.AreEqual(round(-100.51), -101.0); + TestUtils.AreEqual(round(-100.5), -100.0); + TestUtils.AreEqual(round(-100.49), -100.0); + TestUtils.AreEqual(round(0.0), 0.0); + TestUtils.AreEqual(round(100.49), 100.0); + TestUtils.AreEqual(round(100.5), 100.0); + TestUtils.AreEqual(round(100.51), 101.0); + TestUtils.AreEqual(round(101.5), 102.0); + TestUtils.AreEqual(round(double.PositiveInfinity), double.PositiveInfinity); + TestUtils.AreEqual(round(double.NaN), double.NaN); + } + + [TestCompiler] + public static void round_double2() + { + TestUtils.AreEqual(round(double2(double.NegativeInfinity, -100.51)), double2(double.NegativeInfinity, -101.0)); + TestUtils.AreEqual(round(double2(-100.5, -100.49)), double2(-100.0, -100.0)); + TestUtils.AreEqual(round(double2(0.0, 100.49)), double2(0.0, 100.0)); + TestUtils.AreEqual(round(double2(100.5, 100.51)), double2(100.0, 101.0)); + TestUtils.AreEqual(round(double2(101.5, double.PositiveInfinity)), double2(102.0, double.PositiveInfinity)); + TestUtils.AreEqual(round(double2(double.NaN, double.NaN)), double2(double.NaN, double.NaN)); + } + + [TestCompiler] + public static void round_double3() + { + TestUtils.AreEqual(round(double3(double.NegativeInfinity, -100.51, -100.5)), double3(double.NegativeInfinity, -101.0, -100.0)); + TestUtils.AreEqual(round(double3(-100.49, 0.0, 100.49)), double3(-100.0, 0.0, 100.0)); + TestUtils.AreEqual(round(double3(100.5, 100.51, 101.5)), double3(100.0, 101.0, 102.0)); + TestUtils.AreEqual(round(double3(double.PositiveInfinity, double.NaN, double.NaN)), double3(double.PositiveInfinity, double.NaN, double.NaN)); + } + + [TestCompiler] + public static void round_double4() + { + TestUtils.AreEqual(round(double4(double.NegativeInfinity, -100.51, -100.5, -100.49)), double4(double.NegativeInfinity, -101.0, -100.0, -100.0)); + TestUtils.AreEqual(round(double4(0.0, 100.49, 100.5, 100.51)), double4(0.0, 100.0, 100.0, 101.0)); + TestUtils.AreEqual(round(double4(101.5, double.PositiveInfinity, double.NaN, double.NaN)), double4(102.0, double.PositiveInfinity, double.NaN, double.NaN)); + } + + [TestCompiler] + public static void trunc_float() + { + TestUtils.AreEqual(trunc(float.NegativeInfinity), float.NegativeInfinity); + TestUtils.AreEqual(trunc(-100.51f), -100f); + TestUtils.AreEqual(trunc(-100.5f), -100f); + TestUtils.AreEqual(trunc(-100.49f), -100f); + TestUtils.AreEqual(trunc(0f), 0f); + TestUtils.AreEqual(trunc(100.49f), 100f); + TestUtils.AreEqual(trunc(100.5f), 100f); + TestUtils.AreEqual(trunc(100.51f), 100f); + TestUtils.AreEqual(trunc(101.5f), 101f); + TestUtils.AreEqual(trunc(float.PositiveInfinity), float.PositiveInfinity); + TestUtils.AreEqual(trunc(float.NaN), float.NaN); + } + + [TestCompiler] + public static void trunc_float2() + { + TestUtils.AreEqual(trunc(float2(float.NegativeInfinity, -100.51f)), float2(float.NegativeInfinity, -100f)); + TestUtils.AreEqual(trunc(float2(-100.5f, -100.49f)), float2(-100f, -100f)); + TestUtils.AreEqual(trunc(float2(0f, 100.49f)), float2(0f, 100f)); + TestUtils.AreEqual(trunc(float2(100.5f, 100.51f)), float2(100f, 100f)); + TestUtils.AreEqual(trunc(float2(101.5f, float.PositiveInfinity)), float2(101f, float.PositiveInfinity)); + TestUtils.AreEqual(trunc(float2(float.NaN, float.NaN)), float2(float.NaN, float.NaN)); + } + + [TestCompiler] + public static void trunc_float3() + { + TestUtils.AreEqual(trunc(float3(float.NegativeInfinity, -100.51f, -100.5f)), float3(float.NegativeInfinity, -100f, -100f)); + TestUtils.AreEqual(trunc(float3(-100.49f, 0f, 100.49f)), float3(-100f, 0f, 100f)); + TestUtils.AreEqual(trunc(float3(100.5f, 100.51f, 101.5f)), float3(100f, 100f, 101f)); + TestUtils.AreEqual(trunc(float3(float.PositiveInfinity, float.NaN, float.NaN)), float3(float.PositiveInfinity, float.NaN, float.NaN)); + } + + [TestCompiler] + public static void trunc_float4() + { + TestUtils.AreEqual(trunc(float4(float.NegativeInfinity, -100.51f, -100.5f, -100.49f)), float4(float.NegativeInfinity, -100f, -100f, -100f)); + TestUtils.AreEqual(trunc(float4(0f, 100.49f, 100.5f, 100.51f)), float4(0f, 100f, 100f, 100f)); + TestUtils.AreEqual(trunc(float4(101.5f, float.PositiveInfinity, float.NaN, float.NaN)), float4(101f, float.PositiveInfinity, float.NaN, float.NaN)); + } + + [TestCompiler] + public static void trunc_double() + { + TestUtils.AreEqual(trunc(double.NegativeInfinity), double.NegativeInfinity); + TestUtils.AreEqual(trunc(-100.51), -100.0); + TestUtils.AreEqual(trunc(-100.5), -100.0); + TestUtils.AreEqual(trunc(-100.49), -100.0); + TestUtils.AreEqual(trunc(0.0), 0.0); + TestUtils.AreEqual(trunc(100.49), 100.0); + TestUtils.AreEqual(trunc(100.5), 100.0); + TestUtils.AreEqual(trunc(100.51), 100.0); + TestUtils.AreEqual(trunc(101.5), 101.0); + TestUtils.AreEqual(trunc(double.PositiveInfinity), double.PositiveInfinity); + TestUtils.AreEqual(trunc(double.NaN), double.NaN); + } + + [TestCompiler] + public static void trunc_double2() + { + TestUtils.AreEqual(trunc(double2(double.NegativeInfinity, -100.51)), double2(double.NegativeInfinity, -100.0)); + TestUtils.AreEqual(trunc(double2(-100.5, -100.49)), double2(-100.0, -100.0)); + TestUtils.AreEqual(trunc(double2(0.0, 100.49)), double2(0.0, 100.0)); + TestUtils.AreEqual(trunc(double2(100.5, 100.51)), double2(100.0, 100.0)); + TestUtils.AreEqual(trunc(double2(101.5, double.PositiveInfinity)), double2(101.0, double.PositiveInfinity)); + TestUtils.AreEqual(trunc(double2(double.NaN, double.NaN)), double2(double.NaN, double.NaN)); + } + + [TestCompiler] + public static void trunc_double3() + { + TestUtils.AreEqual(trunc(double3(double.NegativeInfinity, -100.51, -100.5)), double3(double.NegativeInfinity, -100.0, -100.0)); + TestUtils.AreEqual(trunc(double3(-100.49, 0.0, 100.49)), double3(-100.0, 0.0, 100.0)); + TestUtils.AreEqual(trunc(double3(100.5, 100.51, 101.5)), double3(100.0, 100.0, 101.0)); + TestUtils.AreEqual(trunc(double3(double.PositiveInfinity, double.NaN, double.NaN)), double3(double.PositiveInfinity, double.NaN, double.NaN)); + } + + [TestCompiler] + public static void trunc_double4() + { + TestUtils.AreEqual(trunc(double4(double.NegativeInfinity, -100.51, -100.5, -100.49)), double4(double.NegativeInfinity, -100.0, -100.0, -100.0)); + TestUtils.AreEqual(trunc(double4(0.0, 100.49, 100.5, 100.51)), double4(0.0, 100.0, 100.0, 100.0)); + TestUtils.AreEqual(trunc(double4(101.5, double.PositiveInfinity, double.NaN, double.NaN)), double4(101.0, double.PositiveInfinity, double.NaN, double.NaN)); + } + + [TestCompiler] + public static void frac_float() + { + TestUtils.AreEqual(frac(float.NegativeInfinity), float.NaN, 64, false); + TestUtils.AreEqual(frac(-1E+20f), 0f, 64, false); + TestUtils.AreEqual(frac(-100.3f), 0.7f, 64, false); + TestUtils.AreEqual(frac(0f), 0f, 64, false); + TestUtils.AreEqual(frac(100.8f), 0.8f, 64, false); + TestUtils.AreEqual(frac(float.PositiveInfinity), float.NaN, 64, false); + TestUtils.AreEqual(frac(float.NaN), float.NaN, 64, false); + } + + [TestCompiler] + public static void frac_float2() + { + TestUtils.AreEqual(frac(float2(float.NegativeInfinity, -1E+20f)), float2(float.NaN, 0f), 64, false); + TestUtils.AreEqual(frac(float2(-100.3f, 0f)), float2(0.7f, 0f), 64, false); + TestUtils.AreEqual(frac(float2(100.8f, float.PositiveInfinity)), float2(0.8f, float.NaN), 64, false); + TestUtils.AreEqual(frac(float2(float.NaN, float.NaN)), float2(float.NaN, float.NaN), 64, false); + } + + [TestCompiler] + public static void frac_float3() + { + TestUtils.AreEqual(frac(float3(float.NegativeInfinity, -1E+20f, -100.3f)), float3(float.NaN, 0f, 0.7f), 64, false); + TestUtils.AreEqual(frac(float3(0f, 100.8f, float.PositiveInfinity)), float3(0f, 0.8f, float.NaN), 64, false); + TestUtils.AreEqual(frac(float3(float.NaN, float.NaN, float.NaN)), float3(float.NaN, float.NaN, float.NaN), 64, false); + } + + [TestCompiler] + public static void frac_float4() + { + TestUtils.AreEqual(frac(float4(float.NegativeInfinity, -1E+20f, -100.3f, 0f)), float4(float.NaN, 0f, 0.7f, 0f), 64, false); + TestUtils.AreEqual(frac(float4(100.8f, float.PositiveInfinity, float.NaN, float.NaN)), float4(0.8f, float.NaN, float.NaN, float.NaN), 64, false); + } + + [TestCompiler] + public static void frac_double() + { + TestUtils.AreEqual(frac(double.NegativeInfinity), double.NaN, 64, false); + TestUtils.AreEqual(frac(-1E+20), 0.0, 64, false); + TestUtils.AreEqual(frac(-100.3), 0.7, 64, false); + TestUtils.AreEqual(frac(0.0), 0.0, 64, false); + TestUtils.AreEqual(frac(100.8), 0.8, 64, false); + TestUtils.AreEqual(frac(double.PositiveInfinity), double.NaN, 64, false); + TestUtils.AreEqual(frac(double.NaN), double.NaN, 64, false); + } + + [TestCompiler] + public static void frac_double2() + { + TestUtils.AreEqual(frac(double2(double.NegativeInfinity, -1E+20)), double2(double.NaN, 0.0), 64, false); + TestUtils.AreEqual(frac(double2(-100.3, 0.0)), double2(0.7, 0.0), 64, false); + TestUtils.AreEqual(frac(double2(100.8, double.PositiveInfinity)), double2(0.8, double.NaN), 64, false); + TestUtils.AreEqual(frac(double2(double.NaN, double.NaN)), double2(double.NaN, double.NaN), 64, false); + } + + [TestCompiler] + public static void frac_double3() + { + TestUtils.AreEqual(frac(double3(double.NegativeInfinity, -1E+20, -100.3)), double3(double.NaN, 0.0, 0.7), 64, false); + TestUtils.AreEqual(frac(double3(0.0, 100.8, double.PositiveInfinity)), double3(0.0, 0.8, double.NaN), 64, false); + TestUtils.AreEqual(frac(double3(double.NaN, double.NaN, double.NaN)), double3(double.NaN, double.NaN, double.NaN), 64, false); + } + + [TestCompiler] + public static void frac_double4() + { + TestUtils.AreEqual(frac(double4(double.NegativeInfinity, -1E+20, -100.3, 0.0)), double4(double.NaN, 0.0, 0.7, 0.0), 64, false); + TestUtils.AreEqual(frac(double4(100.8, double.PositiveInfinity, double.NaN, double.NaN)), double4(0.8, double.NaN, double.NaN, double.NaN), 64, false); + } + + [TestCompiler] + public static void lerp_float() + { + TestUtils.AreEqual(lerp(-123.45f, 439.43f, -1.5f), -967.77f, 1, false); + TestUtils.AreEqual(lerp(-123.45f, 439.43f, 0.5f), 157.99f, 1, false); + TestUtils.AreEqual(lerp(-123.45f, 439.43f, 5.5f), 2972.39f, 1, false); + TestUtils.AreEqual(lerp(-123.45f, 439.43f, float.NaN), float.NaN, 1, false); + } + + [TestCompiler] + public static void lerp_float2() + { + TestUtils.AreEqual(lerp(float2(-123.45f, -123.45f), float2(439.43f, 439.43f), float2(-1.5f, 0.5f)), float2(-967.77f, 157.99f), 1, false); + TestUtils.AreEqual(lerp(float2(-123.45f, -123.45f), float2(439.43f, 439.43f), float2(5.5f, float.NaN)), float2(2972.39f, float.NaN), 1, false); + } + + [TestCompiler] + public static void lerp_float3() + { + TestUtils.AreEqual(lerp(float3(-123.45f, -123.45f, -123.45f), float3(439.43f, 439.43f, 439.43f), float3(-1.5f, 0.5f, 5.5f)), float3(-967.77f, 157.99f, 2972.39f), 1, false); + TestUtils.AreEqual(lerp(float3(-123.45f, -123.45f, -123.45f), float3(439.43f, 439.43f, 439.43f), float3(float.NaN, float.NaN, float.NaN)), float3(float.NaN, float.NaN, float.NaN), 1, false); + } + + [TestCompiler] + public static void lerp_float4() + { + TestUtils.AreEqual(lerp(float4(-123.45f, -123.45f, -123.45f, -123.45f), float4(439.43f, 439.43f, 439.43f, 439.43f), float4(-1.5f, 0.5f, 5.5f, float.NaN)), float4(-967.77f, 157.99f, 2972.39f, float.NaN), 1, false); + } + + [TestCompiler] + public static void lerp_double() + { + TestUtils.AreEqual(lerp(-123.45, 439.43, -1.5), -967.77, 1, false); + TestUtils.AreEqual(lerp(-123.45, 439.43, 0.5), 157.99, 1, false); + TestUtils.AreEqual(lerp(-123.45, 439.43, 5.5), 2972.39, 1, false); + TestUtils.AreEqual(lerp(-123.45, 439.43, double.NaN), double.NaN, 1, false); + } + + [TestCompiler] + public static void lerp_double2() + { + TestUtils.AreEqual(lerp(double2(-123.45, -123.45), double2(439.43, 439.43), double2(-1.5, 0.5)), double2(-967.77, 157.99), 1, false); + TestUtils.AreEqual(lerp(double2(-123.45, -123.45), double2(439.43, 439.43), double2(5.5, double.NaN)), double2(2972.39, double.NaN), 1, false); + } + + [TestCompiler] + public static void lerp_double3() + { + TestUtils.AreEqual(lerp(double3(-123.45, -123.45, -123.45), double3(439.43, 439.43, 439.43), double3(-1.5, 0.5, 5.5)), double3(-967.77, 157.99, 2972.39), 1, false); + TestUtils.AreEqual(lerp(double3(-123.45, -123.45, -123.45), double3(439.43, 439.43, 439.43), double3(double.NaN, double.NaN, double.NaN)), double3(double.NaN, double.NaN, double.NaN), 1, false); + } + + [TestCompiler] + public static void lerp_double4() + { + TestUtils.AreEqual(lerp(double4(-123.45, -123.45, -123.45, -123.45), double4(439.43, 439.43, 439.43, 439.43), double4(-1.5, 0.5, 5.5, double.NaN)), double4(-967.77, 157.99, 2972.39, double.NaN), 1, false); + } + + [TestCompiler] + public static void unlerp_float() + { + TestUtils.AreEqual(unlerp(-123.45f, 439.43f, -254.3f), -0.232465178f, 4, false); + TestUtils.AreEqual(unlerp(-123.45f, 439.43f, 0f), 0.219318509f, 4, false); + TestUtils.AreEqual(unlerp(-123.45f, 439.43f, 632.1f), 1.34229326f, 4, false); + TestUtils.AreEqual(unlerp(123.4f, 123.4f, -430f), float.NegativeInfinity, 4, false); + TestUtils.AreEqual(unlerp(123.4f, 123.4f, 430f), float.PositiveInfinity, 4, false); + TestUtils.AreEqual(unlerp(439.43f, -123.45f, -254.3f), 1.23246515f, 4, false); + TestUtils.AreEqual(unlerp(439.43f, -123.45f, 0f), 0.7806815f, 4, false); + TestUtils.AreEqual(unlerp(439.43f, -123.45f, 632.1f), -0.3422932f, 4, false); + } + + [TestCompiler] + public static void unlerp_float2() + { + TestUtils.AreEqual(unlerp(float2(-123.45f, -123.45f), float2(439.43f, 439.43f), float2(-254.3f, 0f)), float2(-0.232465178f, 0.219318509f), 4, false); + TestUtils.AreEqual(unlerp(float2(-123.45f, 123.4f), float2(439.43f, 123.4f), float2(632.1f, -430f)), float2(1.34229326f, float.NegativeInfinity), 4, false); + TestUtils.AreEqual(unlerp(float2(123.4f, 439.43f), float2(123.4f, -123.45f), float2(430f, -254.3f)), float2(float.PositiveInfinity, 1.23246515f), 4, false); + TestUtils.AreEqual(unlerp(float2(439.43f, 439.43f), float2(-123.45f, -123.45f), float2(0f, 632.1f)), float2(0.7806815f, -0.3422932f), 4, false); + } + + [TestCompiler] + public static void unlerp_float3() + { + TestUtils.AreEqual(unlerp(float3(-123.45f, -123.45f, -123.45f), float3(439.43f, 439.43f, 439.43f), float3(-254.3f, 0f, 632.1f)), float3(-0.232465178f, 0.219318509f, 1.34229326f), 4, false); + TestUtils.AreEqual(unlerp(float3(123.4f, 123.4f, 439.43f), float3(123.4f, 123.4f, -123.45f), float3(-430f, 430f, -254.3f)), float3(float.NegativeInfinity, float.PositiveInfinity, 1.23246515f), 4, false); + TestUtils.AreEqual(unlerp(float3(439.43f, 439.43f, 439.43f), float3(-123.45f, -123.45f, -123.45f), float3(0f, 632.1f, 632.1f)), float3(0.7806815f, -0.3422932f, -0.3422932f), 4, false); + } + + [TestCompiler] + public static void unlerp_float4() + { + TestUtils.AreEqual(unlerp(float4(-123.45f, -123.45f, -123.45f, 123.4f), float4(439.43f, 439.43f, 439.43f, 123.4f), float4(-254.3f, 0f, 632.1f, -430f)), float4(-0.232465178f, 0.219318509f, 1.34229326f, float.NegativeInfinity), 4, false); + TestUtils.AreEqual(unlerp(float4(123.4f, 439.43f, 439.43f, 439.43f), float4(123.4f, -123.45f, -123.45f, -123.45f), float4(430f, -254.3f, 0f, 632.1f)), float4(float.PositiveInfinity, 1.23246515f, 0.7806815f, -0.3422932f), 4, false); + } + + [TestCompiler] + public static void unlerp_double() + { + TestUtils.AreEqual(unlerp(-123.45, 439.43, -254.3), -0.23246517907902217, 4, false); + TestUtils.AreEqual(unlerp(-123.45, 439.43, 0.0), 0.21931850483229107, 4, false); + TestUtils.AreEqual(unlerp(-123.45, 439.43, 632.1), 1.3422932063672541, 4, false); + TestUtils.AreEqual(unlerp(123.4, 123.4, -430.0), double.NegativeInfinity, 4, false); + TestUtils.AreEqual(unlerp(123.4, 123.4, 430.0), double.PositiveInfinity, 4, false); + TestUtils.AreEqual(unlerp(439.43, -123.45, -254.3), 1.2324651790790222, 4, false); + TestUtils.AreEqual(unlerp(439.43, -123.45, 0.0), 0.78068149516770891, 4, false); + TestUtils.AreEqual(unlerp(439.43, -123.45, 632.1), -0.34229320636725413, 4, false); + } + + [TestCompiler] + public static void unlerp_double2() + { + TestUtils.AreEqual(unlerp(double2(-123.45, -123.45), double2(439.43, 439.43), double2(-254.3, 0.0)), double2(-0.23246517907902217, 0.21931850483229107), 4, false); + TestUtils.AreEqual(unlerp(double2(-123.45, 123.4), double2(439.43, 123.4), double2(632.1, -430.0)), double2(1.3422932063672541, double.NegativeInfinity), 4, false); + TestUtils.AreEqual(unlerp(double2(123.4, 439.43), double2(123.4, -123.45), double2(430.0, -254.3)), double2(double.PositiveInfinity, 1.2324651790790222), 4, false); + TestUtils.AreEqual(unlerp(double2(439.43, 439.43), double2(-123.45, -123.45), double2(0.0, 632.1)), double2(0.78068149516770891, -0.34229320636725413), 4, false); + } + + [TestCompiler] + public static void unlerp_double3() + { + TestUtils.AreEqual(unlerp(double3(-123.45, -123.45, -123.45), double3(439.43, 439.43, 439.43), double3(-254.3, 0.0, 632.1)), double3(-0.23246517907902217, 0.21931850483229107, 1.3422932063672541), 4, false); + TestUtils.AreEqual(unlerp(double3(123.4, 123.4, 439.43), double3(123.4, 123.4, -123.45), double3(-430.0, 430.0, -254.3)), double3(double.NegativeInfinity, double.PositiveInfinity, 1.2324651790790222), 4, false); + TestUtils.AreEqual(unlerp(double3(439.43, 439.43, 439.43), double3(-123.45, -123.45, -123.45), double3(0.0, 632.1, 632.1)), double3(0.78068149516770891, -0.34229320636725413, -0.34229320636725413), 4, false); + } + + [TestCompiler] + public static void unlerp_double4() + { + TestUtils.AreEqual(unlerp(double4(-123.45, -123.45, -123.45, 123.4), double4(439.43, 439.43, 439.43, 123.4), double4(-254.3, 0.0, 632.1, -430.0)), double4(-0.23246517907902217, 0.21931850483229107, 1.3422932063672541, double.NegativeInfinity), 4, false); + TestUtils.AreEqual(unlerp(double4(123.4, 439.43, 439.43, 439.43), double4(123.4, -123.45, -123.45, -123.45), double4(430.0, -254.3, 0.0, 632.1)), double4(double.PositiveInfinity, 1.2324651790790222, 0.78068149516770891, -0.34229320636725413), 4, false); + } + + [TestCompiler] + public static void remap_float() + { + TestUtils.AreEqual(remap(-123.45f, 439.43f, 541.3f, 631.5f, -200f), 529.0331f, 4, false); + TestUtils.AreEqual(remap(-123.45f, 439.43f, 541.3f, 631.5f, -100f), 545.0578f, 4, false); + TestUtils.AreEqual(remap(-123.45f, 439.43f, 541.3f, 631.5f, 500f), 641.2062f, 4, false); + TestUtils.AreEqual(remap(439.43f, -123.45f, 541.3f, 631.5f, -200f), 643.7669f, 4, false); + TestUtils.AreEqual(remap(439.43f, -123.45f, 541.3f, 631.5f, -100f), 627.7422f, 4, false); + TestUtils.AreEqual(remap(439.43f, -123.45f, 541.3f, 631.5f, 500f), 531.5938f, 4, false); + TestUtils.AreEqual(remap(-123.45f, 439.43f, 631.5f, 541.3f, -200f), 643.7669f, 4, false); + TestUtils.AreEqual(remap(-123.45f, 439.43f, 631.5f, 541.3f, -100f), 627.7422f, 4, false); + TestUtils.AreEqual(remap(-123.45f, 439.43f, 631.5f, 541.3f, 500f), 531.5938f, 4, false); + TestUtils.AreEqual(remap(-123.45f, -123.45f, 541.3f, 631.5f, -200f), float.NegativeInfinity, 4, false); + TestUtils.AreEqual(remap(-123.45f, -123.45f, 541.3f, 631.5f, -100f), float.PositiveInfinity, 4, false); + } + + [TestCompiler] + public static void remap_float2() + { + TestUtils.AreEqual(remap(float2(-123.45f, -123.45f), float2(439.43f, 439.43f), float2(541.3f, 541.3f), float2(631.5f, 631.5f), float2(-200f, -100f)), float2(529.0331f, 545.0578f), 4, false); + TestUtils.AreEqual(remap(float2(-123.45f, 439.43f), float2(439.43f, -123.45f), float2(541.3f, 541.3f), float2(631.5f, 631.5f), float2(500f, -200f)), float2(641.2062f, 643.7669f), 4, false); + TestUtils.AreEqual(remap(float2(439.43f, 439.43f), float2(-123.45f, -123.45f), float2(541.3f, 541.3f), float2(631.5f, 631.5f), float2(-100f, 500f)), float2(627.7422f, 531.5938f), 4, false); + TestUtils.AreEqual(remap(float2(-123.45f, -123.45f), float2(439.43f, 439.43f), float2(631.5f, 631.5f), float2(541.3f, 541.3f), float2(-200f, -100f)), float2(643.7669f, 627.7422f), 4, false); + TestUtils.AreEqual(remap(float2(-123.45f, -123.45f), float2(439.43f, -123.45f), float2(631.5f, 541.3f), float2(541.3f, 631.5f), float2(500f, -200f)), float2(531.5938f, float.NegativeInfinity), 4, false); + TestUtils.AreEqual(remap(float2(-123.45f, -123.45f), float2(-123.45f, -123.45f), float2(541.3f, 541.3f), float2(631.5f, 631.5f), float2(-100f, -100f)), float2(float.PositiveInfinity, float.PositiveInfinity), 4, false); + } + + [TestCompiler] + public static void remap_float3() + { + TestUtils.AreEqual(remap(float3(-123.45f, -123.45f, -123.45f), float3(439.43f, 439.43f, 439.43f), float3(541.3f, 541.3f, 541.3f), float3(631.5f, 631.5f, 631.5f), float3(-200f, -100f, 500f)), float3(529.0331f, 545.0578f, 641.2062f), 4, false); + TestUtils.AreEqual(remap(float3(439.43f, 439.43f, 439.43f), float3(-123.45f, -123.45f, -123.45f), float3(541.3f, 541.3f, 541.3f), float3(631.5f, 631.5f, 631.5f), float3(-200f, -100f, 500f)), float3(643.7669f, 627.7422f, 531.5938f), 4, false); + TestUtils.AreEqual(remap(float3(-123.45f, -123.45f, -123.45f), float3(439.43f, 439.43f, 439.43f), float3(631.5f, 631.5f, 631.5f), float3(541.3f, 541.3f, 541.3f), float3(-200f, -100f, 500f)), float3(643.7669f, 627.7422f, 531.5938f), 4, false); + TestUtils.AreEqual(remap(float3(-123.45f, -123.45f, -123.45f), float3(-123.45f, -123.45f, -123.45f), float3(541.3f, 541.3f, 541.3f), float3(631.5f, 631.5f, 631.5f), float3(-200f, -100f, -100f)), float3(float.NegativeInfinity, float.PositiveInfinity, float.PositiveInfinity), 4, false); + } + + [TestCompiler] + public static void remap_float4() + { + TestUtils.AreEqual(remap(float4(-123.45f, -123.45f, -123.45f, 439.43f), float4(439.43f, 439.43f, 439.43f, -123.45f), float4(541.3f, 541.3f, 541.3f, 541.3f), float4(631.5f, 631.5f, 631.5f, 631.5f), float4(-200f, -100f, 500f, -200f)), float4(529.0331f, 545.0578f, 641.2062f, 643.7669f), 4, false); + TestUtils.AreEqual(remap(float4(439.43f, 439.43f, -123.45f, -123.45f), float4(-123.45f, -123.45f, 439.43f, 439.43f), float4(541.3f, 541.3f, 631.5f, 631.5f), float4(631.5f, 631.5f, 541.3f, 541.3f), float4(-100f, 500f, -200f, -100f)), float4(627.7422f, 531.5938f, 643.7669f, 627.7422f), 4, false); + TestUtils.AreEqual(remap(float4(-123.45f, -123.45f, -123.45f, -123.45f), float4(439.43f, -123.45f, -123.45f, -123.45f), float4(631.5f, 541.3f, 541.3f, 541.3f), float4(541.3f, 631.5f, 631.5f, 631.5f), float4(500f, -200f, -100f, -100f)), float4(531.5938f, float.NegativeInfinity, float.PositiveInfinity, float.PositiveInfinity), 4, false); + } + + [TestCompiler] + public static void remap_double() + { + TestUtils.AreEqual(remap(-123.45, 439.43, 541.3, 631.5, -200.0), 529.03306921546334, 4, false); + TestUtils.AreEqual(remap(-123.45, 439.43, 541.3, 631.5, -100.0), 545.057799175668, 4, false); + TestUtils.AreEqual(remap(-123.45, 439.43, 541.3, 631.5, 500.0), 641.206178936896, 4, false); + TestUtils.AreEqual(remap(439.43, -123.45, 541.3, 631.5, -200.0), 643.76693078453673, 4, false); + TestUtils.AreEqual(remap(439.43, -123.45, 541.3, 631.5, -100.0), 627.742200824332, 4, false); + TestUtils.AreEqual(remap(439.43, -123.45, 541.3, 631.5, 500.0), 531.59382106310409, 4, false); + TestUtils.AreEqual(remap(-123.45, 439.43, 631.5, 541.3, -200.0), 643.76693078453673, 4, false); + TestUtils.AreEqual(remap(-123.45, 439.43, 631.5, 541.3, -100.0), 627.742200824332, 4, false); + TestUtils.AreEqual(remap(-123.45, 439.43, 631.5, 541.3, 500.0), 531.59382106310409, 4, false); + TestUtils.AreEqual(remap(-123.45, -123.45, 541.3, 631.5, -200.0), double.NegativeInfinity, 4, false); + TestUtils.AreEqual(remap(-123.45, -123.45, 541.3, 631.5, -100.0), double.PositiveInfinity, 4, false); + } + + [TestCompiler] + public static void remap_double2() + { + TestUtils.AreEqual(remap(double2(-123.45, -123.45), double2(439.43, 439.43), double2(541.3, 541.3), double2(631.5, 631.5), double2(-200.0, -100.0)), double2(529.03306921546334, 545.057799175668), 4, false); + TestUtils.AreEqual(remap(double2(-123.45, 439.43), double2(439.43, -123.45), double2(541.3, 541.3), double2(631.5, 631.5), double2(500.0, -200.0)), double2(641.206178936896, 643.76693078453673), 4, false); + TestUtils.AreEqual(remap(double2(439.43, 439.43), double2(-123.45, -123.45), double2(541.3, 541.3), double2(631.5, 631.5), double2(-100.0, 500.0)), double2(627.742200824332, 531.59382106310409), 4, false); + TestUtils.AreEqual(remap(double2(-123.45, -123.45), double2(439.43, 439.43), double2(631.5, 631.5), double2(541.3, 541.3), double2(-200.0, -100.0)), double2(643.76693078453673, 627.742200824332), 4, false); + TestUtils.AreEqual(remap(double2(-123.45, -123.45), double2(439.43, -123.45), double2(631.5, 541.3), double2(541.3, 631.5), double2(500.0, -200.0)), double2(531.59382106310409, double.NegativeInfinity), 4, false); + TestUtils.AreEqual(remap(double2(-123.45, -123.45), double2(-123.45, -123.45), double2(541.3, 541.3), double2(631.5, 631.5), double2(-100.0, -100.0)), double2(double.PositiveInfinity, double.PositiveInfinity), 4, false); + } + + [TestCompiler] + public static void remap_double3() + { + TestUtils.AreEqual(remap(double3(-123.45, -123.45, -123.45), double3(439.43, 439.43, 439.43), double3(541.3, 541.3, 541.3), double3(631.5, 631.5, 631.5), double3(-200.0, -100.0, 500.0)), double3(529.03306921546334, 545.057799175668, 641.206178936896), 4, false); + TestUtils.AreEqual(remap(double3(439.43, 439.43, 439.43), double3(-123.45, -123.45, -123.45), double3(541.3, 541.3, 541.3), double3(631.5, 631.5, 631.5), double3(-200.0, -100.0, 500.0)), double3(643.76693078453673, 627.742200824332, 531.59382106310409), 4, false); + TestUtils.AreEqual(remap(double3(-123.45, -123.45, -123.45), double3(439.43, 439.43, 439.43), double3(631.5, 631.5, 631.5), double3(541.3, 541.3, 541.3), double3(-200.0, -100.0, 500.0)), double3(643.76693078453673, 627.742200824332, 531.59382106310409), 4, false); + TestUtils.AreEqual(remap(double3(-123.45, -123.45, -123.45), double3(-123.45, -123.45, -123.45), double3(541.3, 541.3, 541.3), double3(631.5, 631.5, 631.5), double3(-200.0, -100.0, -100.0)), double3(double.NegativeInfinity, double.PositiveInfinity, double.PositiveInfinity), 4, false); + } + + [TestCompiler] + public static void remap_double4() + { + TestUtils.AreEqual(remap(double4(-123.45, -123.45, -123.45, 439.43), double4(439.43, 439.43, 439.43, -123.45), double4(541.3, 541.3, 541.3, 541.3), double4(631.5, 631.5, 631.5, 631.5), double4(-200.0, -100.0, 500.0, -200.0)), double4(529.03306921546334, 545.057799175668, 641.206178936896, 643.76693078453673), 4, false); + TestUtils.AreEqual(remap(double4(439.43, 439.43, -123.45, -123.45), double4(-123.45, -123.45, 439.43, 439.43), double4(541.3, 541.3, 631.5, 631.5), double4(631.5, 631.5, 541.3, 541.3), double4(-100.0, 500.0, -200.0, -100.0)), double4(627.742200824332, 531.59382106310409, 643.76693078453673, 627.742200824332), 4, false); + TestUtils.AreEqual(remap(double4(-123.45, -123.45, -123.45, -123.45), double4(439.43, -123.45, -123.45, -123.45), double4(631.5, 541.3, 541.3, 541.3), double4(541.3, 631.5, 631.5, 631.5), double4(500.0, -200.0, -100.0, -100.0)), double4(531.59382106310409, double.NegativeInfinity, double.PositiveInfinity, double.PositiveInfinity), 4, false); + } + + [TestCompiler] + public static void clamp_int() + { + TestUtils.AreEqual(clamp(-2147483648, -123, 439), -123); + TestUtils.AreEqual(clamp(-254, -123, 439), -123); + TestUtils.AreEqual(clamp(246, -123, 439), 246); + TestUtils.AreEqual(clamp(632, -123, 439), 439); + TestUtils.AreEqual(clamp(-254, 439, -123), 439); + TestUtils.AreEqual(clamp(246, 439, -123), 439); + TestUtils.AreEqual(clamp(632, 439, -123), 439); + TestUtils.AreEqual(clamp(2147483647, -123, 439), 439); + } + + [TestCompiler] + public static void clamp_int2() + { + TestUtils.AreEqual(clamp(int2(-2147483648, -254), int2(-123, -123), int2(439, 439)), int2(-123, -123)); + TestUtils.AreEqual(clamp(int2(246, 632), int2(-123, -123), int2(439, 439)), int2(246, 439)); + TestUtils.AreEqual(clamp(int2(-254, 246), int2(439, 439), int2(-123, -123)), int2(439, 439)); + TestUtils.AreEqual(clamp(int2(632, 2147483647), int2(439, -123), int2(-123, 439)), int2(439, 439)); + } + + [TestCompiler] + public static void clamp_int3() + { + TestUtils.AreEqual(clamp(int3(-2147483648, -254, 246), int3(-123, -123, -123), int3(439, 439, 439)), int3(-123, -123, 246)); + TestUtils.AreEqual(clamp(int3(632, -254, 246), int3(-123, 439, 439), int3(439, -123, -123)), int3(439, 439, 439)); + TestUtils.AreEqual(clamp(int3(632, 2147483647, 2147483647), int3(439, -123, -123), int3(-123, 439, 439)), int3(439, 439, 439)); + } + + [TestCompiler] + public static void clamp_int4() + { + TestUtils.AreEqual(clamp(int4(-2147483648, -254, 246, 632), int4(-123, -123, -123, -123), int4(439, 439, 439, 439)), int4(-123, -123, 246, 439)); + TestUtils.AreEqual(clamp(int4(-254, 246, 632, 2147483647), int4(439, 439, 439, -123), int4(-123, -123, -123, 439)), int4(439, 439, 439, 439)); + } + + [TestCompiler] + public static void clamp_uint() + { + TestUtils.AreEqual(clamp(0u, 123u, 439u), 123u); + TestUtils.AreEqual(clamp(54u, 123u, 439u), 123u); + TestUtils.AreEqual(clamp(246u, 123u, 439u), 246u); + TestUtils.AreEqual(clamp(632u, 123u, 439u), 439u); + TestUtils.AreEqual(clamp(54u, 439u, 123u), 439u); + TestUtils.AreEqual(clamp(246u, 439u, 123u), 439u); + TestUtils.AreEqual(clamp(632u, 439u, 123u), 439u); + TestUtils.AreEqual(clamp(4294967295u, 123u, 439u), 439u); + } + + [TestCompiler] + public static void clamp_uint2() + { + TestUtils.AreEqual(clamp(uint2(0u, 54u), uint2(123u, 123u), uint2(439u, 439u)), uint2(123u, 123u)); + TestUtils.AreEqual(clamp(uint2(246u, 632u), uint2(123u, 123u), uint2(439u, 439u)), uint2(246u, 439u)); + TestUtils.AreEqual(clamp(uint2(54u, 246u), uint2(439u, 439u), uint2(123u, 123u)), uint2(439u, 439u)); + TestUtils.AreEqual(clamp(uint2(632u, 4294967295u), uint2(439u, 123u), uint2(123u, 439u)), uint2(439u, 439u)); + } + + [TestCompiler] + public static void clamp_uint3() + { + TestUtils.AreEqual(clamp(uint3(0u, 54u, 246u), uint3(123u, 123u, 123u), uint3(439u, 439u, 439u)), uint3(123u, 123u, 246u)); + TestUtils.AreEqual(clamp(uint3(632u, 54u, 246u), uint3(123u, 439u, 439u), uint3(439u, 123u, 123u)), uint3(439u, 439u, 439u)); + TestUtils.AreEqual(clamp(uint3(632u, 4294967295u, 4294967295u), uint3(439u, 123u, 123u), uint3(123u, 439u, 439u)), uint3(439u, 439u, 439u)); + } + + [TestCompiler] + public static void clamp_uint4() + { + TestUtils.AreEqual(clamp(uint4(0u, 54u, 246u, 632u), uint4(123u, 123u, 123u, 123u), uint4(439u, 439u, 439u, 439u)), uint4(123u, 123u, 246u, 439u)); + TestUtils.AreEqual(clamp(uint4(54u, 246u, 632u, 4294967295u), uint4(439u, 439u, 439u, 123u), uint4(123u, 123u, 123u, 439u)), uint4(439u, 439u, 439u, 439u)); + } + + [TestCompiler] + public static void clamp_long() + { + TestUtils.AreEqual(clamp(-9223372036854775808L, -123L, 439L), -123L); + TestUtils.AreEqual(clamp(-254L, -123L, 439L), -123L); + TestUtils.AreEqual(clamp(246L, -123L, 439L), 246L); + TestUtils.AreEqual(clamp(632L, -123L, 439L), 439L); + TestUtils.AreEqual(clamp(-254L, 439L, -123L), 439L); + TestUtils.AreEqual(clamp(246L, 439L, -123L), 439L); + TestUtils.AreEqual(clamp(632L, 439L, -123L), 439L); + TestUtils.AreEqual(clamp(9223372036854775807L, -123L, 439L), 439L); + } + + [TestCompiler] + public static void clamp_ulong() + { + TestUtils.AreEqual(clamp(0UL, 123UL, 439UL), 123UL); + TestUtils.AreEqual(clamp(54UL, 123UL, 439UL), 123UL); + TestUtils.AreEqual(clamp(246UL, 123UL, 439UL), 246UL); + TestUtils.AreEqual(clamp(632UL, 123UL, 439UL), 439UL); + TestUtils.AreEqual(clamp(54UL, 439UL, 123UL), 439UL); + TestUtils.AreEqual(clamp(246UL, 439UL, 123UL), 439UL); + TestUtils.AreEqual(clamp(632UL, 439UL, 123UL), 439UL); + TestUtils.AreEqual(clamp(18446744073709551615UL, 123UL, 439UL), 439UL); + } + + [TestCompiler] + public static void clamp_float() + { + TestUtils.AreEqual(clamp(float.NegativeInfinity, -123.45f, 439.43f), -123.45f); + TestUtils.AreEqual(clamp(-254.3f, -123.45f, 439.43f), -123.45f); + TestUtils.AreEqual(clamp(246.3f, -123.45f, 439.43f), 246.3f); + TestUtils.AreEqual(clamp(632.1f, -123.45f, 439.43f), 439.43f); + TestUtils.AreEqual(clamp(-254.3f, 439.43f, -123.45f), 439.43f); + TestUtils.AreEqual(clamp(246.3f, 439.43f, -123.45f), 439.43f); + TestUtils.AreEqual(clamp(632.1f, 439.43f, -123.45f), 439.43f); + TestUtils.AreEqual(clamp(float.PositiveInfinity, -123.45f, 439.43f), 439.43f); + TestUtils.AreEqual(clamp(float.NaN, -123.45f, 439.43f), 439.43f); + } + + [TestCompiler] + public static void clamp_float2() + { + TestUtils.AreEqual(clamp(float2(float.NegativeInfinity, -254.3f), float2(-123.45f, -123.45f), float2(439.43f, 439.43f)), float2(-123.45f, -123.45f)); + TestUtils.AreEqual(clamp(float2(246.3f, 632.1f), float2(-123.45f, -123.45f), float2(439.43f, 439.43f)), float2(246.3f, 439.43f)); + TestUtils.AreEqual(clamp(float2(-254.3f, 246.3f), float2(439.43f, 439.43f), float2(-123.45f, -123.45f)), float2(439.43f, 439.43f)); + TestUtils.AreEqual(clamp(float2(632.1f, float.PositiveInfinity), float2(439.43f, -123.45f), float2(-123.45f, 439.43f)), float2(439.43f, 439.43f)); + TestUtils.AreEqual(clamp(float2(float.NaN, float.NaN), float2(-123.45f, -123.45f), float2(439.43f, 439.43f)), float2(439.43f, 439.43f)); + } + + [TestCompiler] + public static void clamp_float3() + { + TestUtils.AreEqual(clamp(float3(float.NegativeInfinity, -254.3f, 246.3f), float3(-123.45f, -123.45f, -123.45f), float3(439.43f, 439.43f, 439.43f)), float3(-123.45f, -123.45f, 246.3f)); + TestUtils.AreEqual(clamp(float3(632.1f, -254.3f, 246.3f), float3(-123.45f, 439.43f, 439.43f), float3(439.43f, -123.45f, -123.45f)), float3(439.43f, 439.43f, 439.43f)); + TestUtils.AreEqual(clamp(float3(632.1f, float.PositiveInfinity, float.NaN), float3(439.43f, -123.45f, -123.45f), float3(-123.45f, 439.43f, 439.43f)), float3(439.43f, 439.43f, 439.43f)); + } + + [TestCompiler] + public static void clamp_float4() + { + TestUtils.AreEqual(clamp(float4(float.NegativeInfinity, -254.3f, 246.3f, 632.1f), float4(-123.45f, -123.45f, -123.45f, -123.45f), float4(439.43f, 439.43f, 439.43f, 439.43f)), float4(-123.45f, -123.45f, 246.3f, 439.43f)); + TestUtils.AreEqual(clamp(float4(-254.3f, 246.3f, 632.1f, float.PositiveInfinity), float4(439.43f, 439.43f, 439.43f, -123.45f), float4(-123.45f, -123.45f, -123.45f, 439.43f)), float4(439.43f, 439.43f, 439.43f, 439.43f)); + TestUtils.AreEqual(clamp(float4(float.NaN, float.NaN, float.NaN, float.NaN), float4(-123.45f, -123.45f, -123.45f, -123.45f), float4(439.43f, 439.43f, 439.43f, 439.43f)), float4(439.43f, 439.43f, 439.43f, 439.43f)); + } + + [TestCompiler] + public static void clamp_double() + { + TestUtils.AreEqual(clamp(double.NegativeInfinity, -123.45, 439.43), -123.45); + TestUtils.AreEqual(clamp(-254.3, -123.45, 439.43), -123.45); + TestUtils.AreEqual(clamp(246.3, -123.45, 439.43), 246.3); + TestUtils.AreEqual(clamp(632.1, -123.45, 439.43), 439.43); + TestUtils.AreEqual(clamp(-254.3, 439.43, -123.45), 439.43); + TestUtils.AreEqual(clamp(246.3, 439.43, -123.45), 439.43); + TestUtils.AreEqual(clamp(632.1, 439.43, -123.45), 439.43); + TestUtils.AreEqual(clamp(double.PositiveInfinity, -123.45, 439.43), 439.43); + TestUtils.AreEqual(clamp(double.NaN, -123.45, 439.43), 439.43); + } + + [TestCompiler] + public static void clamp_double2() + { + TestUtils.AreEqual(clamp(double2(double.NegativeInfinity, -254.3), double2(-123.45, -123.45), double2(439.43, 439.43)), double2(-123.45, -123.45)); + TestUtils.AreEqual(clamp(double2(246.3, 632.1), double2(-123.45, -123.45), double2(439.43, 439.43)), double2(246.3, 439.43)); + TestUtils.AreEqual(clamp(double2(-254.3, 246.3), double2(439.43, 439.43), double2(-123.45, -123.45)), double2(439.43, 439.43)); + TestUtils.AreEqual(clamp(double2(632.1, double.PositiveInfinity), double2(439.43, -123.45), double2(-123.45, 439.43)), double2(439.43, 439.43)); + TestUtils.AreEqual(clamp(double2(double.NaN, double.NaN), double2(-123.45, -123.45), double2(439.43, 439.43)), double2(439.43, 439.43)); + } + + [TestCompiler] + public static void clamp_double3() + { + TestUtils.AreEqual(clamp(double3(double.NegativeInfinity, -254.3, 246.3), double3(-123.45, -123.45, -123.45), double3(439.43, 439.43, 439.43)), double3(-123.45, -123.45, 246.3)); + TestUtils.AreEqual(clamp(double3(632.1, -254.3, 246.3), double3(-123.45, 439.43, 439.43), double3(439.43, -123.45, -123.45)), double3(439.43, 439.43, 439.43)); + TestUtils.AreEqual(clamp(double3(632.1, double.PositiveInfinity, double.NaN), double3(439.43, -123.45, -123.45), double3(-123.45, 439.43, 439.43)), double3(439.43, 439.43, 439.43)); + } + + [TestCompiler] + public static void clamp_double4() + { + TestUtils.AreEqual(clamp(double4(double.NegativeInfinity, -254.3, 246.3, 632.1), double4(-123.45, -123.45, -123.45, -123.45), double4(439.43, 439.43, 439.43, 439.43)), double4(-123.45, -123.45, 246.3, 439.43)); + TestUtils.AreEqual(clamp(double4(-254.3, 246.3, 632.1, double.PositiveInfinity), double4(439.43, 439.43, 439.43, -123.45), double4(-123.45, -123.45, -123.45, 439.43)), double4(439.43, 439.43, 439.43, 439.43)); + TestUtils.AreEqual(clamp(double4(double.NaN, double.NaN, double.NaN, double.NaN), double4(-123.45, -123.45, -123.45, -123.45), double4(439.43, 439.43, 439.43, 439.43)), double4(439.43, 439.43, 439.43, 439.43)); + } + + [TestCompiler] + public static void saturate_float() + { + TestUtils.AreEqual(saturate(float.NegativeInfinity), 0f); + TestUtils.AreEqual(saturate(-123.45f), 0f); + TestUtils.AreEqual(saturate(0f), 0f); + TestUtils.AreEqual(saturate(0.5f), 0.5f); + TestUtils.AreEqual(saturate(1f), 1f); + TestUtils.AreEqual(saturate(123.45f), 1f); + TestUtils.AreEqual(saturate(float.PositiveInfinity), 1f); + TestUtils.AreEqual(saturate(float.NaN), 1f); + } + + [TestCompiler] + public static void saturate_float2() + { + TestUtils.AreEqual(saturate(float2(float.NegativeInfinity, -123.45f)), float2(0f, 0f)); + TestUtils.AreEqual(saturate(float2(0f, 0.5f)), float2(0f, 0.5f)); + TestUtils.AreEqual(saturate(float2(1f, 123.45f)), float2(1f, 1f)); + TestUtils.AreEqual(saturate(float2(float.PositiveInfinity, float.NaN)), float2(1f, 1f)); + } + + [TestCompiler] + public static void saturate_float3() + { + TestUtils.AreEqual(saturate(float3(float.NegativeInfinity, -123.45f, 0f)), float3(0f, 0f, 0f)); + TestUtils.AreEqual(saturate(float3(0.5f, 1f, 123.45f)), float3(0.5f, 1f, 1f)); + TestUtils.AreEqual(saturate(float3(float.PositiveInfinity, float.NaN, float.NaN)), float3(1f, 1f, 1f)); + } + + [TestCompiler] + public static void saturate_float4() + { + TestUtils.AreEqual(saturate(float4(float.NegativeInfinity, -123.45f, 0f, 0.5f)), float4(0f, 0f, 0f, 0.5f)); + TestUtils.AreEqual(saturate(float4(1f, 123.45f, float.PositiveInfinity, float.NaN)), float4(1f, 1f, 1f, 1f)); + } + + [TestCompiler] + public static void saturate_double() + { + TestUtils.AreEqual(saturate(double.NegativeInfinity), 0.0); + TestUtils.AreEqual(saturate(-123.45), 0.0); + TestUtils.AreEqual(saturate(0.0), 0.0); + TestUtils.AreEqual(saturate(0.5), 0.5); + TestUtils.AreEqual(saturate(1.0), 1.0); + TestUtils.AreEqual(saturate(123.45), 1.0); + TestUtils.AreEqual(saturate(double.PositiveInfinity), 1.0); + TestUtils.AreEqual(saturate(double.NaN), 1.0); + } + + [TestCompiler] + public static void saturate_double2() + { + TestUtils.AreEqual(saturate(double2(double.NegativeInfinity, -123.45)), double2(0.0, 0.0)); + TestUtils.AreEqual(saturate(double2(0.0, 0.5)), double2(0.0, 0.5)); + TestUtils.AreEqual(saturate(double2(1.0, 123.45)), double2(1.0, 1.0)); + TestUtils.AreEqual(saturate(double2(double.PositiveInfinity, double.NaN)), double2(1.0, 1.0)); + } + + [TestCompiler] + public static void saturate_double3() + { + TestUtils.AreEqual(saturate(double3(double.NegativeInfinity, -123.45, 0.0)), double3(0.0, 0.0, 0.0)); + TestUtils.AreEqual(saturate(double3(0.5, 1.0, 123.45)), double3(0.5, 1.0, 1.0)); + TestUtils.AreEqual(saturate(double3(double.PositiveInfinity, double.NaN, double.NaN)), double3(1.0, 1.0, 1.0)); + } + + [TestCompiler] + public static void saturate_double4() + { + TestUtils.AreEqual(saturate(double4(double.NegativeInfinity, -123.45, 0.0, 0.5)), double4(0.0, 0.0, 0.0, 0.5)); + TestUtils.AreEqual(saturate(double4(1.0, 123.45, double.PositiveInfinity, double.NaN)), double4(1.0, 1.0, 1.0, 1.0)); + } + + [TestCompiler] + public static void step_float() + { + TestUtils.AreEqual(step(-123.45f, float.NegativeInfinity), 0f); + TestUtils.AreEqual(step(-123.45f, -200f), 0f); + TestUtils.AreEqual(step(-123.45f, 200f), 1f); + TestUtils.AreEqual(step(-123.45f, float.PositiveInfinity), 1f); + TestUtils.AreEqual(step(-123.45f, float.NaN), 0f); + TestUtils.AreEqual(step(123.45f, float.NegativeInfinity), 0f); + TestUtils.AreEqual(step(123.45f, -200f), 0f); + TestUtils.AreEqual(step(123.45f, 200f), 1f); + TestUtils.AreEqual(step(123.45f, float.PositiveInfinity), 1f); + TestUtils.AreEqual(step(123.45f, float.NaN), 0f); + TestUtils.AreEqual(step(float.NegativeInfinity, float.NegativeInfinity), 1f); + TestUtils.AreEqual(step(float.NegativeInfinity, -200f), 1f); + TestUtils.AreEqual(step(float.NegativeInfinity, 200f), 1f); + TestUtils.AreEqual(step(float.NegativeInfinity, float.PositiveInfinity), 1f); + TestUtils.AreEqual(step(float.NegativeInfinity, float.NaN), 0f); + TestUtils.AreEqual(step(float.PositiveInfinity, float.NegativeInfinity), 0f); + TestUtils.AreEqual(step(float.PositiveInfinity, -200f), 0f); + TestUtils.AreEqual(step(float.PositiveInfinity, 200f), 0f); + TestUtils.AreEqual(step(float.PositiveInfinity, float.PositiveInfinity), 1f); + TestUtils.AreEqual(step(float.PositiveInfinity, float.NaN), 0f); + TestUtils.AreEqual(step(float.NaN, float.NegativeInfinity), 0f); + TestUtils.AreEqual(step(float.NaN, -200f), 0f); + TestUtils.AreEqual(step(float.NaN, 200f), 0f); + TestUtils.AreEqual(step(float.NaN, float.PositiveInfinity), 0f); + TestUtils.AreEqual(step(float.NaN, float.NaN), 0f); + } + + [TestCompiler] + public static void step_float2() + { + TestUtils.AreEqual(step(float2(-123.45f, -123.45f), float2(float.NegativeInfinity, -200f)), float2(0f, 0f)); + TestUtils.AreEqual(step(float2(-123.45f, -123.45f), float2(200f, float.PositiveInfinity)), float2(1f, 1f)); + TestUtils.AreEqual(step(float2(-123.45f, 123.45f), float2(float.NaN, float.NegativeInfinity)), float2(0f, 0f)); + TestUtils.AreEqual(step(float2(123.45f, 123.45f), float2(-200f, 200f)), float2(0f, 1f)); + TestUtils.AreEqual(step(float2(123.45f, 123.45f), float2(float.PositiveInfinity, float.NaN)), float2(1f, 0f)); + TestUtils.AreEqual(step(float2(float.NegativeInfinity, float.NegativeInfinity), float2(float.NegativeInfinity, -200f)), float2(1f, 1f)); + TestUtils.AreEqual(step(float2(float.NegativeInfinity, float.NegativeInfinity), float2(200f, float.PositiveInfinity)), float2(1f, 1f)); + TestUtils.AreEqual(step(float2(float.NegativeInfinity, float.PositiveInfinity), float2(float.NaN, float.NegativeInfinity)), float2(0f, 0f)); + TestUtils.AreEqual(step(float2(float.PositiveInfinity, float.PositiveInfinity), float2(-200f, 200f)), float2(0f, 0f)); + TestUtils.AreEqual(step(float2(float.PositiveInfinity, float.PositiveInfinity), float2(float.PositiveInfinity, float.NaN)), float2(1f, 0f)); + TestUtils.AreEqual(step(float2(float.NaN, float.NaN), float2(float.NegativeInfinity, -200f)), float2(0f, 0f)); + TestUtils.AreEqual(step(float2(float.NaN, float.NaN), float2(200f, float.PositiveInfinity)), float2(0f, 0f)); + TestUtils.AreEqual(step(float2(float.NaN, float.NaN), float2(float.NaN, float.NaN)), float2(0f, 0f)); + } + + [TestCompiler] + public static void step_float3() + { + TestUtils.AreEqual(step(float3(-123.45f, -123.45f, -123.45f), float3(float.NegativeInfinity, -200f, 200f)), float3(0f, 0f, 1f)); + TestUtils.AreEqual(step(float3(-123.45f, -123.45f, 123.45f), float3(float.PositiveInfinity, float.NaN, float.NegativeInfinity)), float3(1f, 0f, 0f)); + TestUtils.AreEqual(step(float3(123.45f, 123.45f, 123.45f), float3(-200f, 200f, float.PositiveInfinity)), float3(0f, 1f, 1f)); + TestUtils.AreEqual(step(float3(123.45f, float.NegativeInfinity, float.NegativeInfinity), float3(float.NaN, float.NegativeInfinity, -200f)), float3(0f, 1f, 1f)); + TestUtils.AreEqual(step(float3(float.NegativeInfinity, float.NegativeInfinity, float.NegativeInfinity), float3(200f, float.PositiveInfinity, float.NaN)), float3(1f, 1f, 0f)); + TestUtils.AreEqual(step(float3(float.PositiveInfinity, float.PositiveInfinity, float.PositiveInfinity), float3(float.NegativeInfinity, -200f, 200f)), float3(0f, 0f, 0f)); + TestUtils.AreEqual(step(float3(float.PositiveInfinity, float.PositiveInfinity, float.NaN), float3(float.PositiveInfinity, float.NaN, float.NegativeInfinity)), float3(1f, 0f, 0f)); + TestUtils.AreEqual(step(float3(float.NaN, float.NaN, float.NaN), float3(-200f, 200f, float.PositiveInfinity)), float3(0f, 0f, 0f)); + TestUtils.AreEqual(step(float3(float.NaN, float.NaN, float.NaN), float3(float.NaN, float.NaN, float.NaN)), float3(0f, 0f, 0f)); + } + + [TestCompiler] + public static void step_float4() + { + TestUtils.AreEqual(step(float4(-123.45f, -123.45f, -123.45f, -123.45f), float4(float.NegativeInfinity, -200f, 200f, float.PositiveInfinity)), float4(0f, 0f, 1f, 1f)); + TestUtils.AreEqual(step(float4(-123.45f, 123.45f, 123.45f, 123.45f), float4(float.NaN, float.NegativeInfinity, -200f, 200f)), float4(0f, 0f, 0f, 1f)); + TestUtils.AreEqual(step(float4(123.45f, 123.45f, float.NegativeInfinity, float.NegativeInfinity), float4(float.PositiveInfinity, float.NaN, float.NegativeInfinity, -200f)), float4(1f, 0f, 1f, 1f)); + TestUtils.AreEqual(step(float4(float.NegativeInfinity, float.NegativeInfinity, float.NegativeInfinity, float.PositiveInfinity), float4(200f, float.PositiveInfinity, float.NaN, float.NegativeInfinity)), float4(1f, 1f, 0f, 0f)); + TestUtils.AreEqual(step(float4(float.PositiveInfinity, float.PositiveInfinity, float.PositiveInfinity, float.PositiveInfinity), float4(-200f, 200f, float.PositiveInfinity, float.NaN)), float4(0f, 0f, 1f, 0f)); + TestUtils.AreEqual(step(float4(float.NaN, float.NaN, float.NaN, float.NaN), float4(float.NegativeInfinity, -200f, 200f, float.PositiveInfinity)), float4(0f, 0f, 0f, 0f)); + TestUtils.AreEqual(step(float4(float.NaN, float.NaN, float.NaN, float.NaN), float4(float.NaN, float.NaN, float.NaN, float.NaN)), float4(0f, 0f, 0f, 0f)); + } + + [TestCompiler] + public static void step_double() + { + TestUtils.AreEqual(step(-123.45, double.NegativeInfinity), 0.0); + TestUtils.AreEqual(step(-123.45, -200.0), 0.0); + TestUtils.AreEqual(step(-123.45, 200.0), 1.0); + TestUtils.AreEqual(step(-123.45, double.PositiveInfinity), 1.0); + TestUtils.AreEqual(step(-123.45, double.NaN), 0.0); + TestUtils.AreEqual(step(123.45, double.NegativeInfinity), 0.0); + TestUtils.AreEqual(step(123.45, -200.0), 0.0); + TestUtils.AreEqual(step(123.45, 200.0), 1.0); + TestUtils.AreEqual(step(123.45, double.PositiveInfinity), 1.0); + TestUtils.AreEqual(step(123.45, double.NaN), 0.0); + TestUtils.AreEqual(step(double.NegativeInfinity, double.NegativeInfinity), 1.0); + TestUtils.AreEqual(step(double.NegativeInfinity, -200.0), 1.0); + TestUtils.AreEqual(step(double.NegativeInfinity, 200.0), 1.0); + TestUtils.AreEqual(step(double.NegativeInfinity, double.PositiveInfinity), 1.0); + TestUtils.AreEqual(step(double.NegativeInfinity, double.NaN), 0.0); + TestUtils.AreEqual(step(double.PositiveInfinity, double.NegativeInfinity), 0.0); + TestUtils.AreEqual(step(double.PositiveInfinity, -200.0), 0.0); + TestUtils.AreEqual(step(double.PositiveInfinity, 200.0), 0.0); + TestUtils.AreEqual(step(double.PositiveInfinity, double.PositiveInfinity), 1.0); + TestUtils.AreEqual(step(double.PositiveInfinity, double.NaN), 0.0); + TestUtils.AreEqual(step(double.NaN, double.NegativeInfinity), 0.0); + TestUtils.AreEqual(step(double.NaN, -200.0), 0.0); + TestUtils.AreEqual(step(double.NaN, 200.0), 0.0); + TestUtils.AreEqual(step(double.NaN, double.PositiveInfinity), 0.0); + TestUtils.AreEqual(step(double.NaN, double.NaN), 0.0); + } + + [TestCompiler] + public static void step_double2() + { + TestUtils.AreEqual(step(double2(-123.45, -123.45), double2(double.NegativeInfinity, -200.0)), double2(0.0, 0.0)); + TestUtils.AreEqual(step(double2(-123.45, -123.45), double2(200.0, double.PositiveInfinity)), double2(1.0, 1.0)); + TestUtils.AreEqual(step(double2(-123.45, 123.45), double2(double.NaN, double.NegativeInfinity)), double2(0.0, 0.0)); + TestUtils.AreEqual(step(double2(123.45, 123.45), double2(-200.0, 200.0)), double2(0.0, 1.0)); + TestUtils.AreEqual(step(double2(123.45, 123.45), double2(double.PositiveInfinity, double.NaN)), double2(1.0, 0.0)); + TestUtils.AreEqual(step(double2(double.NegativeInfinity, double.NegativeInfinity), double2(double.NegativeInfinity, -200.0)), double2(1.0, 1.0)); + TestUtils.AreEqual(step(double2(double.NegativeInfinity, double.NegativeInfinity), double2(200.0, double.PositiveInfinity)), double2(1.0, 1.0)); + TestUtils.AreEqual(step(double2(double.NegativeInfinity, double.PositiveInfinity), double2(double.NaN, double.NegativeInfinity)), double2(0.0, 0.0)); + TestUtils.AreEqual(step(double2(double.PositiveInfinity, double.PositiveInfinity), double2(-200.0, 200.0)), double2(0.0, 0.0)); + TestUtils.AreEqual(step(double2(double.PositiveInfinity, double.PositiveInfinity), double2(double.PositiveInfinity, double.NaN)), double2(1.0, 0.0)); + TestUtils.AreEqual(step(double2(double.NaN, double.NaN), double2(double.NegativeInfinity, -200.0)), double2(0.0, 0.0)); + TestUtils.AreEqual(step(double2(double.NaN, double.NaN), double2(200.0, double.PositiveInfinity)), double2(0.0, 0.0)); + TestUtils.AreEqual(step(double2(double.NaN, double.NaN), double2(double.NaN, double.NaN)), double2(0.0, 0.0)); + } + + [TestCompiler] + public static void step_double3() + { + TestUtils.AreEqual(step(double3(-123.45, -123.45, -123.45), double3(double.NegativeInfinity, -200.0, 200.0)), double3(0.0, 0.0, 1.0)); + TestUtils.AreEqual(step(double3(-123.45, -123.45, 123.45), double3(double.PositiveInfinity, double.NaN, double.NegativeInfinity)), double3(1.0, 0.0, 0.0)); + TestUtils.AreEqual(step(double3(123.45, 123.45, 123.45), double3(-200.0, 200.0, double.PositiveInfinity)), double3(0.0, 1.0, 1.0)); + TestUtils.AreEqual(step(double3(123.45, double.NegativeInfinity, double.NegativeInfinity), double3(double.NaN, double.NegativeInfinity, -200.0)), double3(0.0, 1.0, 1.0)); + TestUtils.AreEqual(step(double3(double.NegativeInfinity, double.NegativeInfinity, double.NegativeInfinity), double3(200.0, double.PositiveInfinity, double.NaN)), double3(1.0, 1.0, 0.0)); + TestUtils.AreEqual(step(double3(double.PositiveInfinity, double.PositiveInfinity, double.PositiveInfinity), double3(double.NegativeInfinity, -200.0, 200.0)), double3(0.0, 0.0, 0.0)); + TestUtils.AreEqual(step(double3(double.PositiveInfinity, double.PositiveInfinity, double.NaN), double3(double.PositiveInfinity, double.NaN, double.NegativeInfinity)), double3(1.0, 0.0, 0.0)); + TestUtils.AreEqual(step(double3(double.NaN, double.NaN, double.NaN), double3(-200.0, 200.0, double.PositiveInfinity)), double3(0.0, 0.0, 0.0)); + TestUtils.AreEqual(step(double3(double.NaN, double.NaN, double.NaN), double3(double.NaN, double.NaN, double.NaN)), double3(0.0, 0.0, 0.0)); + } + + [TestCompiler] + public static void step_double4() + { + TestUtils.AreEqual(step(double4(-123.45, -123.45, -123.45, -123.45), double4(double.NegativeInfinity, -200.0, 200.0, double.PositiveInfinity)), double4(0.0, 0.0, 1.0, 1.0)); + TestUtils.AreEqual(step(double4(-123.45, 123.45, 123.45, 123.45), double4(double.NaN, double.NegativeInfinity, -200.0, 200.0)), double4(0.0, 0.0, 0.0, 1.0)); + TestUtils.AreEqual(step(double4(123.45, 123.45, double.NegativeInfinity, double.NegativeInfinity), double4(double.PositiveInfinity, double.NaN, double.NegativeInfinity, -200.0)), double4(1.0, 0.0, 1.0, 1.0)); + TestUtils.AreEqual(step(double4(double.NegativeInfinity, double.NegativeInfinity, double.NegativeInfinity, double.PositiveInfinity), double4(200.0, double.PositiveInfinity, double.NaN, double.NegativeInfinity)), double4(1.0, 1.0, 0.0, 0.0)); + TestUtils.AreEqual(step(double4(double.PositiveInfinity, double.PositiveInfinity, double.PositiveInfinity, double.PositiveInfinity), double4(-200.0, 200.0, double.PositiveInfinity, double.NaN)), double4(0.0, 0.0, 1.0, 0.0)); + TestUtils.AreEqual(step(double4(double.NaN, double.NaN, double.NaN, double.NaN), double4(double.NegativeInfinity, -200.0, 200.0, double.PositiveInfinity)), double4(0.0, 0.0, 0.0, 0.0)); + TestUtils.AreEqual(step(double4(double.NaN, double.NaN, double.NaN, double.NaN), double4(double.NaN, double.NaN, double.NaN, double.NaN)), double4(0.0, 0.0, 0.0, 0.0)); + } + + [TestCompiler] + public static void min_int() + { + TestUtils.AreEqual(min(-2147483648, -2147483648), -2147483648); + TestUtils.AreEqual(min(-2147483648, -1), -2147483648); + TestUtils.AreEqual(min(-1, -2147483648), -2147483648); + TestUtils.AreEqual(min(-1234, -3456), -3456); + TestUtils.AreEqual(min(-3456, -1234), -3456); + TestUtils.AreEqual(min(-1234, 3456), -1234); + TestUtils.AreEqual(min(3456, -1234), -1234); + TestUtils.AreEqual(min(1234, 3456), 1234); + TestUtils.AreEqual(min(3456, 1234), 1234); + TestUtils.AreEqual(min(1, 2147483647), 1); + TestUtils.AreEqual(min(2147483647, 1), 1); + TestUtils.AreEqual(min(2147483647, -2147483648), -2147483648); + TestUtils.AreEqual(min(2147483647, 2147483647), 2147483647); + } + + [TestCompiler] + public static void min_int2() + { + TestUtils.AreEqual(min(int2(-2147483648, -2147483648), int2(-2147483648, -1)), int2(-2147483648, -2147483648)); + TestUtils.AreEqual(min(int2(-1, -1234), int2(-2147483648, -3456)), int2(-2147483648, -3456)); + TestUtils.AreEqual(min(int2(-3456, -1234), int2(-1234, 3456)), int2(-3456, -1234)); + TestUtils.AreEqual(min(int2(3456, 1234), int2(-1234, 3456)), int2(-1234, 1234)); + TestUtils.AreEqual(min(int2(3456, 1), int2(1234, 2147483647)), int2(1234, 1)); + TestUtils.AreEqual(min(int2(2147483647, 2147483647), int2(1, -2147483648)), int2(1, -2147483648)); + TestUtils.AreEqual(min(int2(2147483647, 2147483647), int2(2147483647, 2147483647)), int2(2147483647, 2147483647)); + } + + [TestCompiler] + public static void min_int3() + { + TestUtils.AreEqual(min(int3(-2147483648, -2147483648, -1), int3(-2147483648, -1, -2147483648)), int3(-2147483648, -2147483648, -2147483648)); + TestUtils.AreEqual(min(int3(-1234, -3456, -1234), int3(-3456, -1234, 3456)), int3(-3456, -3456, -1234)); + TestUtils.AreEqual(min(int3(3456, 1234, 3456), int3(-1234, 3456, 1234)), int3(-1234, 1234, 1234)); + TestUtils.AreEqual(min(int3(1, 2147483647, 2147483647), int3(2147483647, 1, -2147483648)), int3(1, 1, -2147483648)); + TestUtils.AreEqual(min(int3(2147483647, 2147483647, 2147483647), int3(2147483647, 2147483647, 2147483647)), int3(2147483647, 2147483647, 2147483647)); + } + + [TestCompiler] + public static void min_int4() + { + TestUtils.AreEqual(min(int4(-2147483648, -2147483648, -1, -1234), int4(-2147483648, -1, -2147483648, -3456)), int4(-2147483648, -2147483648, -2147483648, -3456)); + TestUtils.AreEqual(min(int4(-3456, -1234, 3456, 1234), int4(-1234, 3456, -1234, 3456)), int4(-3456, -1234, -1234, 1234)); + TestUtils.AreEqual(min(int4(3456, 1, 2147483647, 2147483647), int4(1234, 2147483647, 1, -2147483648)), int4(1234, 1, 1, -2147483648)); + TestUtils.AreEqual(min(int4(2147483647, 2147483647, 2147483647, 2147483647), int4(2147483647, 2147483647, 2147483647, 2147483647)), int4(2147483647, 2147483647, 2147483647, 2147483647)); + } + + [TestCompiler] + public static void min_uint() + { + TestUtils.AreEqual(min(1234u, 3456u), 1234u); + TestUtils.AreEqual(min(3456u, 1234u), 1234u); + TestUtils.AreEqual(min(4294967040u, 7u), 7u); + TestUtils.AreEqual(min(7u, 4294967040u), 7u); + TestUtils.AreEqual(min(1u, 4294967295u), 1u); + TestUtils.AreEqual(min(4294967295u, 1u), 1u); + TestUtils.AreEqual(min(4294967295u, 4294967295u), 4294967295u); + } + + [TestCompiler] + public static void min_uint2() + { + TestUtils.AreEqual(min(uint2(1234u, 3456u), uint2(3456u, 1234u)), uint2(1234u, 1234u)); + TestUtils.AreEqual(min(uint2(4294967040u, 7u), uint2(7u, 4294967040u)), uint2(7u, 7u)); + TestUtils.AreEqual(min(uint2(1u, 4294967295u), uint2(4294967295u, 1u)), uint2(1u, 1u)); + TestUtils.AreEqual(min(uint2(4294967295u, 4294967295u), uint2(4294967295u, 4294967295u)), uint2(4294967295u, 4294967295u)); + } + + [TestCompiler] + public static void min_uint3() + { + TestUtils.AreEqual(min(uint3(1234u, 3456u, 4294967040u), uint3(3456u, 1234u, 7u)), uint3(1234u, 1234u, 7u)); + TestUtils.AreEqual(min(uint3(7u, 1u, 4294967295u), uint3(4294967040u, 4294967295u, 1u)), uint3(7u, 1u, 1u)); + TestUtils.AreEqual(min(uint3(4294967295u, 4294967295u, 4294967295u), uint3(4294967295u, 4294967295u, 4294967295u)), uint3(4294967295u, 4294967295u, 4294967295u)); + } + + [TestCompiler] + public static void min_uint4() + { + TestUtils.AreEqual(min(uint4(1234u, 3456u, 4294967040u, 7u), uint4(3456u, 1234u, 7u, 4294967040u)), uint4(1234u, 1234u, 7u, 7u)); + TestUtils.AreEqual(min(uint4(1u, 4294967295u, 4294967295u, 4294967295u), uint4(4294967295u, 1u, 4294967295u, 4294967295u)), uint4(1u, 1u, 4294967295u, 4294967295u)); + } + + [TestCompiler] + public static void min_long() + { + TestUtils.AreEqual(min(-9223372036854775808L, -9223372036854775808L), -9223372036854775808L); + TestUtils.AreEqual(min(-9223372036854775808L, -1L), -9223372036854775808L); + TestUtils.AreEqual(min(-1L, -9223372036854775808L), -9223372036854775808L); + TestUtils.AreEqual(min(-1234L, -3456L), -3456L); + TestUtils.AreEqual(min(-3456L, -1234L), -3456L); + TestUtils.AreEqual(min(-1234L, 3456L), -1234L); + TestUtils.AreEqual(min(3456L, -1234L), -1234L); + TestUtils.AreEqual(min(1234L, 3456L), 1234L); + TestUtils.AreEqual(min(3456L, 1234L), 1234L); + TestUtils.AreEqual(min(1L, 9223372036854775807L), 1L); + TestUtils.AreEqual(min(9223372036854775807L, 1L), 1L); + TestUtils.AreEqual(min(9223372036854775807L, -9223372036854775808L), -9223372036854775808L); + TestUtils.AreEqual(min(9223372036854775807L, 9223372036854775807L), 9223372036854775807L); + } + + [TestCompiler] + public static void min_ulong() + { + TestUtils.AreEqual(min(1234UL, 3456UL), 1234UL); + TestUtils.AreEqual(min(3456UL, 1234UL), 1234UL); + TestUtils.AreEqual(min(18446744073709551360UL, 7UL), 7UL); + TestUtils.AreEqual(min(7UL, 18446744073709551360UL), 7UL); + TestUtils.AreEqual(min(1UL, 18446744073709551615UL), 1UL); + TestUtils.AreEqual(min(18446744073709551615UL, 1UL), 1UL); + TestUtils.AreEqual(min(18446744073709551615UL, 18446744073709551615UL), 18446744073709551615UL); + } + + [TestCompiler] + public static void min_float() + { + TestUtils.AreEqual(min(float.NegativeInfinity, float.NegativeInfinity), float.NegativeInfinity); + TestUtils.AreEqual(min(float.NegativeInfinity, -1f), float.NegativeInfinity); + TestUtils.AreEqual(min(-1f, float.NegativeInfinity), float.NegativeInfinity); + TestUtils.AreEqual(min(-1234.56f, -3456.7f), -3456.7f); + TestUtils.AreEqual(min(-3456.7f, -1234.56f), -3456.7f); + TestUtils.AreEqual(min(-1234.56f, 3456.7f), -1234.56f); + TestUtils.AreEqual(min(3456.7f, -1234.56f), -1234.56f); + TestUtils.AreEqual(min(1234.56f, 3456.7f), 1234.56f); + TestUtils.AreEqual(min(3456.7f, 1234.56f), 1234.56f); + TestUtils.AreEqual(min(1f, float.PositiveInfinity), 1f); + TestUtils.AreEqual(min(float.PositiveInfinity, 1f), 1f); + TestUtils.AreEqual(min(float.PositiveInfinity, float.NegativeInfinity), float.NegativeInfinity); + TestUtils.AreEqual(min(float.PositiveInfinity, float.PositiveInfinity), float.PositiveInfinity); + TestUtils.AreEqual(min(float.NaN, 2.3f), 2.3f); + TestUtils.AreEqual(min(2.3f, float.NaN), 2.3f); + TestUtils.AreEqual(min(float.NaN, float.NaN), float.NaN); + } + + [TestCompiler] + public static void min_float2() + { + TestUtils.AreEqual(min(float2(float.NegativeInfinity, float.NegativeInfinity), float2(float.NegativeInfinity, -1f)), float2(float.NegativeInfinity, float.NegativeInfinity)); + TestUtils.AreEqual(min(float2(-1f, -1234.56f), float2(float.NegativeInfinity, -3456.7f)), float2(float.NegativeInfinity, -3456.7f)); + TestUtils.AreEqual(min(float2(-3456.7f, -1234.56f), float2(-1234.56f, 3456.7f)), float2(-3456.7f, -1234.56f)); + TestUtils.AreEqual(min(float2(3456.7f, 1234.56f), float2(-1234.56f, 3456.7f)), float2(-1234.56f, 1234.56f)); + TestUtils.AreEqual(min(float2(3456.7f, 1f), float2(1234.56f, float.PositiveInfinity)), float2(1234.56f, 1f)); + TestUtils.AreEqual(min(float2(float.PositiveInfinity, float.PositiveInfinity), float2(1f, float.NegativeInfinity)), float2(1f, float.NegativeInfinity)); + TestUtils.AreEqual(min(float2(float.PositiveInfinity, float.NaN), float2(float.PositiveInfinity, 2.3f)), float2(float.PositiveInfinity, 2.3f)); + TestUtils.AreEqual(min(float2(2.3f, float.NaN), float2(float.NaN, float.NaN)), float2(2.3f, float.NaN)); + } + + [TestCompiler] + public static void min_float3() + { + TestUtils.AreEqual(min(float3(float.NegativeInfinity, float.NegativeInfinity, -1f), float3(float.NegativeInfinity, -1f, float.NegativeInfinity)), float3(float.NegativeInfinity, float.NegativeInfinity, float.NegativeInfinity)); + TestUtils.AreEqual(min(float3(-1234.56f, -3456.7f, -1234.56f), float3(-3456.7f, -1234.56f, 3456.7f)), float3(-3456.7f, -3456.7f, -1234.56f)); + TestUtils.AreEqual(min(float3(3456.7f, 1234.56f, 3456.7f), float3(-1234.56f, 3456.7f, 1234.56f)), float3(-1234.56f, 1234.56f, 1234.56f)); + TestUtils.AreEqual(min(float3(1f, float.PositiveInfinity, float.PositiveInfinity), float3(float.PositiveInfinity, 1f, float.NegativeInfinity)), float3(1f, 1f, float.NegativeInfinity)); + TestUtils.AreEqual(min(float3(float.PositiveInfinity, float.NaN, 2.3f), float3(float.PositiveInfinity, 2.3f, float.NaN)), float3(float.PositiveInfinity, 2.3f, 2.3f)); + TestUtils.AreEqual(min(float3(float.NaN, float.NaN, float.NaN), float3(float.NaN, float.NaN, float.NaN)), float3(float.NaN, float.NaN, float.NaN)); + } + + [TestCompiler] + public static void min_float4() + { + TestUtils.AreEqual(min(float4(float.NegativeInfinity, float.NegativeInfinity, -1f, -1234.56f), float4(float.NegativeInfinity, -1f, float.NegativeInfinity, -3456.7f)), float4(float.NegativeInfinity, float.NegativeInfinity, float.NegativeInfinity, -3456.7f)); + TestUtils.AreEqual(min(float4(-3456.7f, -1234.56f, 3456.7f, 1234.56f), float4(-1234.56f, 3456.7f, -1234.56f, 3456.7f)), float4(-3456.7f, -1234.56f, -1234.56f, 1234.56f)); + TestUtils.AreEqual(min(float4(3456.7f, 1f, float.PositiveInfinity, float.PositiveInfinity), float4(1234.56f, float.PositiveInfinity, 1f, float.NegativeInfinity)), float4(1234.56f, 1f, 1f, float.NegativeInfinity)); + TestUtils.AreEqual(min(float4(float.PositiveInfinity, float.NaN, 2.3f, float.NaN), float4(float.PositiveInfinity, 2.3f, float.NaN, float.NaN)), float4(float.PositiveInfinity, 2.3f, 2.3f, float.NaN)); + } + + [TestCompiler] + public static void min_double() + { + TestUtils.AreEqual(min(double.NegativeInfinity, double.NegativeInfinity), double.NegativeInfinity); + TestUtils.AreEqual(min(double.NegativeInfinity, -1.0), double.NegativeInfinity); + TestUtils.AreEqual(min(-1.0, double.NegativeInfinity), double.NegativeInfinity); + TestUtils.AreEqual(min(-1234.56, -3456.7), -3456.7); + TestUtils.AreEqual(min(-3456.7, -1234.56), -3456.7); + TestUtils.AreEqual(min(-1234.56, 3456.7), -1234.56); + TestUtils.AreEqual(min(3456.7, -1234.56), -1234.56); + TestUtils.AreEqual(min(1234.56, 3456.7), 1234.56); + TestUtils.AreEqual(min(3456.7, 1234.56), 1234.56); + TestUtils.AreEqual(min(1.0, double.PositiveInfinity), 1.0); + TestUtils.AreEqual(min(double.PositiveInfinity, 1.0), 1.0); + TestUtils.AreEqual(min(double.PositiveInfinity, double.NegativeInfinity), double.NegativeInfinity); + TestUtils.AreEqual(min(double.PositiveInfinity, double.PositiveInfinity), double.PositiveInfinity); + TestUtils.AreEqual(min(double.NaN, 2.3), 2.3); + TestUtils.AreEqual(min(2.3, double.NaN), 2.3); + TestUtils.AreEqual(min(double.NaN, double.NaN), double.NaN); + } + + [TestCompiler] + public static void min_double2() + { + TestUtils.AreEqual(min(double2(double.NegativeInfinity, double.NegativeInfinity), double2(double.NegativeInfinity, -1.0)), double2(double.NegativeInfinity, double.NegativeInfinity)); + TestUtils.AreEqual(min(double2(-1.0, -1234.56), double2(double.NegativeInfinity, -3456.7)), double2(double.NegativeInfinity, -3456.7)); + TestUtils.AreEqual(min(double2(-3456.7, -1234.56), double2(-1234.56, 3456.7)), double2(-3456.7, -1234.56)); + TestUtils.AreEqual(min(double2(3456.7, 1234.56), double2(-1234.56, 3456.7)), double2(-1234.56, 1234.56)); + TestUtils.AreEqual(min(double2(3456.7, 1.0), double2(1234.56, double.PositiveInfinity)), double2(1234.56, 1.0)); + TestUtils.AreEqual(min(double2(double.PositiveInfinity, double.PositiveInfinity), double2(1.0, double.NegativeInfinity)), double2(1.0, double.NegativeInfinity)); + TestUtils.AreEqual(min(double2(double.PositiveInfinity, double.NaN), double2(double.PositiveInfinity, 2.3)), double2(double.PositiveInfinity, 2.3)); + TestUtils.AreEqual(min(double2(2.3, double.NaN), double2(double.NaN, double.NaN)), double2(2.3, double.NaN)); + } + + [TestCompiler] + public static void min_double3() + { + TestUtils.AreEqual(min(double3(double.NegativeInfinity, double.NegativeInfinity, -1.0), double3(double.NegativeInfinity, -1.0, double.NegativeInfinity)), double3(double.NegativeInfinity, double.NegativeInfinity, double.NegativeInfinity)); + TestUtils.AreEqual(min(double3(-1234.56, -3456.7, -1234.56), double3(-3456.7, -1234.56, 3456.7)), double3(-3456.7, -3456.7, -1234.56)); + TestUtils.AreEqual(min(double3(3456.7, 1234.56, 3456.7), double3(-1234.56, 3456.7, 1234.56)), double3(-1234.56, 1234.56, 1234.56)); + TestUtils.AreEqual(min(double3(1.0, double.PositiveInfinity, double.PositiveInfinity), double3(double.PositiveInfinity, 1.0, double.NegativeInfinity)), double3(1.0, 1.0, double.NegativeInfinity)); + TestUtils.AreEqual(min(double3(double.PositiveInfinity, double.NaN, 2.3), double3(double.PositiveInfinity, 2.3, double.NaN)), double3(double.PositiveInfinity, 2.3, 2.3)); + TestUtils.AreEqual(min(double3(double.NaN, double.NaN, double.NaN), double3(double.NaN, double.NaN, double.NaN)), double3(double.NaN, double.NaN, double.NaN)); + } + + [TestCompiler] + public static void min_double4() + { + TestUtils.AreEqual(min(double4(double.NegativeInfinity, double.NegativeInfinity, -1.0, -1234.56), double4(double.NegativeInfinity, -1.0, double.NegativeInfinity, -3456.7)), double4(double.NegativeInfinity, double.NegativeInfinity, double.NegativeInfinity, -3456.7)); + TestUtils.AreEqual(min(double4(-3456.7, -1234.56, 3456.7, 1234.56), double4(-1234.56, 3456.7, -1234.56, 3456.7)), double4(-3456.7, -1234.56, -1234.56, 1234.56)); + TestUtils.AreEqual(min(double4(3456.7, 1.0, double.PositiveInfinity, double.PositiveInfinity), double4(1234.56, double.PositiveInfinity, 1.0, double.NegativeInfinity)), double4(1234.56, 1.0, 1.0, double.NegativeInfinity)); + TestUtils.AreEqual(min(double4(double.PositiveInfinity, double.NaN, 2.3, double.NaN), double4(double.PositiveInfinity, 2.3, double.NaN, double.NaN)), double4(double.PositiveInfinity, 2.3, 2.3, double.NaN)); + } + + [TestCompiler] + public static void max_int() + { + TestUtils.AreEqual(max(-2147483648, -2147483648), -2147483648); + TestUtils.AreEqual(max(-2147483648, -1), -1); + TestUtils.AreEqual(max(-1, -2147483648), -1); + TestUtils.AreEqual(max(-1234, -3456), -1234); + TestUtils.AreEqual(max(-3456, -1234), -1234); + TestUtils.AreEqual(max(-1234, 3456), 3456); + TestUtils.AreEqual(max(3456, -1234), 3456); + TestUtils.AreEqual(max(1234, 3456), 3456); + TestUtils.AreEqual(max(3456, 1234), 3456); + TestUtils.AreEqual(max(1, 2147483647), 2147483647); + TestUtils.AreEqual(max(2147483647, 1), 2147483647); + TestUtils.AreEqual(max(2147483647, -2147483648), 2147483647); + TestUtils.AreEqual(max(2147483647, 2147483647), 2147483647); + } + + [TestCompiler] + public static void max_int2() + { + TestUtils.AreEqual(max(int2(-2147483648, -2147483648), int2(-2147483648, -1)), int2(-2147483648, -1)); + TestUtils.AreEqual(max(int2(-1, -1234), int2(-2147483648, -3456)), int2(-1, -1234)); + TestUtils.AreEqual(max(int2(-3456, -1234), int2(-1234, 3456)), int2(-1234, 3456)); + TestUtils.AreEqual(max(int2(3456, 1234), int2(-1234, 3456)), int2(3456, 3456)); + TestUtils.AreEqual(max(int2(3456, 1), int2(1234, 2147483647)), int2(3456, 2147483647)); + TestUtils.AreEqual(max(int2(2147483647, 2147483647), int2(1, -2147483648)), int2(2147483647, 2147483647)); + TestUtils.AreEqual(max(int2(2147483647, 2147483647), int2(2147483647, 2147483647)), int2(2147483647, 2147483647)); + } + + [TestCompiler] + public static void max_int3() + { + TestUtils.AreEqual(max(int3(-2147483648, -2147483648, -1), int3(-2147483648, -1, -2147483648)), int3(-2147483648, -1, -1)); + TestUtils.AreEqual(max(int3(-1234, -3456, -1234), int3(-3456, -1234, 3456)), int3(-1234, -1234, 3456)); + TestUtils.AreEqual(max(int3(3456, 1234, 3456), int3(-1234, 3456, 1234)), int3(3456, 3456, 3456)); + TestUtils.AreEqual(max(int3(1, 2147483647, 2147483647), int3(2147483647, 1, -2147483648)), int3(2147483647, 2147483647, 2147483647)); + TestUtils.AreEqual(max(int3(2147483647, 2147483647, 2147483647), int3(2147483647, 2147483647, 2147483647)), int3(2147483647, 2147483647, 2147483647)); + } + + [TestCompiler] + public static void max_int4() + { + TestUtils.AreEqual(max(int4(-2147483648, -2147483648, -1, -1234), int4(-2147483648, -1, -2147483648, -3456)), int4(-2147483648, -1, -1, -1234)); + TestUtils.AreEqual(max(int4(-3456, -1234, 3456, 1234), int4(-1234, 3456, -1234, 3456)), int4(-1234, 3456, 3456, 3456)); + TestUtils.AreEqual(max(int4(3456, 1, 2147483647, 2147483647), int4(1234, 2147483647, 1, -2147483648)), int4(3456, 2147483647, 2147483647, 2147483647)); + TestUtils.AreEqual(max(int4(2147483647, 2147483647, 2147483647, 2147483647), int4(2147483647, 2147483647, 2147483647, 2147483647)), int4(2147483647, 2147483647, 2147483647, 2147483647)); + } + + [TestCompiler] + public static void max_uint() + { + TestUtils.AreEqual(max(1234u, 3456u), 3456u); + TestUtils.AreEqual(max(3456u, 1234u), 3456u); + TestUtils.AreEqual(max(4294967040u, 7u), 4294967040u); + TestUtils.AreEqual(max(7u, 4294967040u), 4294967040u); + TestUtils.AreEqual(max(1u, 4294967295u), 4294967295u); + TestUtils.AreEqual(max(4294967295u, 1u), 4294967295u); + TestUtils.AreEqual(max(4294967295u, 4294967295u), 4294967295u); + } + + [TestCompiler] + public static void max_uint2() + { + TestUtils.AreEqual(max(uint2(1234u, 3456u), uint2(3456u, 1234u)), uint2(3456u, 3456u)); + TestUtils.AreEqual(max(uint2(4294967040u, 7u), uint2(7u, 4294967040u)), uint2(4294967040u, 4294967040u)); + TestUtils.AreEqual(max(uint2(1u, 4294967295u), uint2(4294967295u, 1u)), uint2(4294967295u, 4294967295u)); + TestUtils.AreEqual(max(uint2(4294967295u, 4294967295u), uint2(4294967295u, 4294967295u)), uint2(4294967295u, 4294967295u)); + } + + [TestCompiler] + public static void max_uint3() + { + TestUtils.AreEqual(max(uint3(1234u, 3456u, 4294967040u), uint3(3456u, 1234u, 7u)), uint3(3456u, 3456u, 4294967040u)); + TestUtils.AreEqual(max(uint3(7u, 1u, 4294967295u), uint3(4294967040u, 4294967295u, 1u)), uint3(4294967040u, 4294967295u, 4294967295u)); + TestUtils.AreEqual(max(uint3(4294967295u, 4294967295u, 4294967295u), uint3(4294967295u, 4294967295u, 4294967295u)), uint3(4294967295u, 4294967295u, 4294967295u)); + } + + [TestCompiler] + public static void max_uint4() + { + TestUtils.AreEqual(max(uint4(1234u, 3456u, 4294967040u, 7u), uint4(3456u, 1234u, 7u, 4294967040u)), uint4(3456u, 3456u, 4294967040u, 4294967040u)); + TestUtils.AreEqual(max(uint4(1u, 4294967295u, 4294967295u, 4294967295u), uint4(4294967295u, 1u, 4294967295u, 4294967295u)), uint4(4294967295u, 4294967295u, 4294967295u, 4294967295u)); + } + + [TestCompiler] + public static void max_long() + { + TestUtils.AreEqual(max(-9223372036854775808L, -9223372036854775808L), -9223372036854775808L); + TestUtils.AreEqual(max(-9223372036854775808L, -1L), -1L); + TestUtils.AreEqual(max(-1L, -9223372036854775808L), -1L); + TestUtils.AreEqual(max(-1234L, -3456L), -1234L); + TestUtils.AreEqual(max(-3456L, -1234L), -1234L); + TestUtils.AreEqual(max(-1234L, 3456L), 3456L); + TestUtils.AreEqual(max(3456L, -1234L), 3456L); + TestUtils.AreEqual(max(1234L, 3456L), 3456L); + TestUtils.AreEqual(max(3456L, 1234L), 3456L); + TestUtils.AreEqual(max(1L, 9223372036854775807L), 9223372036854775807L); + TestUtils.AreEqual(max(9223372036854775807L, 1L), 9223372036854775807L); + TestUtils.AreEqual(max(9223372036854775807L, -9223372036854775808L), 9223372036854775807L); + TestUtils.AreEqual(max(9223372036854775807L, 9223372036854775807L), 9223372036854775807L); + } + + [TestCompiler] + public static void max_ulong() + { + TestUtils.AreEqual(max(1234UL, 3456UL), 3456UL); + TestUtils.AreEqual(max(3456UL, 1234UL), 3456UL); + TestUtils.AreEqual(max(18446744073709551360UL, 7UL), 18446744073709551360UL); + TestUtils.AreEqual(max(7UL, 18446744073709551360UL), 18446744073709551360UL); + TestUtils.AreEqual(max(1UL, 18446744073709551615UL), 18446744073709551615UL); + TestUtils.AreEqual(max(18446744073709551615UL, 1UL), 18446744073709551615UL); + TestUtils.AreEqual(max(18446744073709551615UL, 18446744073709551615UL), 18446744073709551615UL); + } + + [TestCompiler] + public static void max_float() + { + TestUtils.AreEqual(max(float.NegativeInfinity, float.NegativeInfinity), float.NegativeInfinity); + TestUtils.AreEqual(max(float.NegativeInfinity, -1f), -1f); + TestUtils.AreEqual(max(-1f, float.NegativeInfinity), -1f); + TestUtils.AreEqual(max(-1234.56f, -3456.7f), -1234.56f); + TestUtils.AreEqual(max(-3456.7f, -1234.56f), -1234.56f); + TestUtils.AreEqual(max(-1234.56f, 3456.7f), 3456.7f); + TestUtils.AreEqual(max(3456.7f, -1234.56f), 3456.7f); + TestUtils.AreEqual(max(1234.56f, 3456.7f), 3456.7f); + TestUtils.AreEqual(max(3456.7f, 1234.56f), 3456.7f); + TestUtils.AreEqual(max(1f, float.PositiveInfinity), float.PositiveInfinity); + TestUtils.AreEqual(max(float.PositiveInfinity, 1f), float.PositiveInfinity); + TestUtils.AreEqual(max(float.PositiveInfinity, float.NegativeInfinity), float.PositiveInfinity); + TestUtils.AreEqual(max(float.PositiveInfinity, float.PositiveInfinity), float.PositiveInfinity); + TestUtils.AreEqual(max(float.NaN, 2.3f), 2.3f); + TestUtils.AreEqual(max(2.3f, float.NaN), 2.3f); + TestUtils.AreEqual(max(float.NaN, float.NaN), float.NaN); + } + + [TestCompiler] + public static void max_float2() + { + TestUtils.AreEqual(max(float2(float.NegativeInfinity, float.NegativeInfinity), float2(float.NegativeInfinity, -1f)), float2(float.NegativeInfinity, -1f)); + TestUtils.AreEqual(max(float2(-1f, -1234.56f), float2(float.NegativeInfinity, -3456.7f)), float2(-1f, -1234.56f)); + TestUtils.AreEqual(max(float2(-3456.7f, -1234.56f), float2(-1234.56f, 3456.7f)), float2(-1234.56f, 3456.7f)); + TestUtils.AreEqual(max(float2(3456.7f, 1234.56f), float2(-1234.56f, 3456.7f)), float2(3456.7f, 3456.7f)); + TestUtils.AreEqual(max(float2(3456.7f, 1f), float2(1234.56f, float.PositiveInfinity)), float2(3456.7f, float.PositiveInfinity)); + TestUtils.AreEqual(max(float2(float.PositiveInfinity, float.PositiveInfinity), float2(1f, float.NegativeInfinity)), float2(float.PositiveInfinity, float.PositiveInfinity)); + TestUtils.AreEqual(max(float2(float.PositiveInfinity, float.NaN), float2(float.PositiveInfinity, 2.3f)), float2(float.PositiveInfinity, 2.3f)); + TestUtils.AreEqual(max(float2(2.3f, float.NaN), float2(float.NaN, float.NaN)), float2(2.3f, float.NaN)); + } + + [TestCompiler] + public static void max_float3() + { + TestUtils.AreEqual(max(float3(float.NegativeInfinity, float.NegativeInfinity, -1f), float3(float.NegativeInfinity, -1f, float.NegativeInfinity)), float3(float.NegativeInfinity, -1f, -1f)); + TestUtils.AreEqual(max(float3(-1234.56f, -3456.7f, -1234.56f), float3(-3456.7f, -1234.56f, 3456.7f)), float3(-1234.56f, -1234.56f, 3456.7f)); + TestUtils.AreEqual(max(float3(3456.7f, 1234.56f, 3456.7f), float3(-1234.56f, 3456.7f, 1234.56f)), float3(3456.7f, 3456.7f, 3456.7f)); + TestUtils.AreEqual(max(float3(1f, float.PositiveInfinity, float.PositiveInfinity), float3(float.PositiveInfinity, 1f, float.NegativeInfinity)), float3(float.PositiveInfinity, float.PositiveInfinity, float.PositiveInfinity)); + TestUtils.AreEqual(max(float3(float.PositiveInfinity, float.NaN, 2.3f), float3(float.PositiveInfinity, 2.3f, float.NaN)), float3(float.PositiveInfinity, 2.3f, 2.3f)); + TestUtils.AreEqual(max(float3(float.NaN, float.NaN, float.NaN), float3(float.NaN, float.NaN, float.NaN)), float3(float.NaN, float.NaN, float.NaN)); + } + + [TestCompiler] + public static void max_float4() + { + TestUtils.AreEqual(max(float4(float.NegativeInfinity, float.NegativeInfinity, -1f, -1234.56f), float4(float.NegativeInfinity, -1f, float.NegativeInfinity, -3456.7f)), float4(float.NegativeInfinity, -1f, -1f, -1234.56f)); + TestUtils.AreEqual(max(float4(-3456.7f, -1234.56f, 3456.7f, 1234.56f), float4(-1234.56f, 3456.7f, -1234.56f, 3456.7f)), float4(-1234.56f, 3456.7f, 3456.7f, 3456.7f)); + TestUtils.AreEqual(max(float4(3456.7f, 1f, float.PositiveInfinity, float.PositiveInfinity), float4(1234.56f, float.PositiveInfinity, 1f, float.NegativeInfinity)), float4(3456.7f, float.PositiveInfinity, float.PositiveInfinity, float.PositiveInfinity)); + TestUtils.AreEqual(max(float4(float.PositiveInfinity, float.NaN, 2.3f, float.NaN), float4(float.PositiveInfinity, 2.3f, float.NaN, float.NaN)), float4(float.PositiveInfinity, 2.3f, 2.3f, float.NaN)); + } + + [TestCompiler] + public static void max_double() + { + TestUtils.AreEqual(max(double.NegativeInfinity, double.NegativeInfinity), double.NegativeInfinity); + TestUtils.AreEqual(max(double.NegativeInfinity, -1.0), -1.0); + TestUtils.AreEqual(max(-1.0, double.NegativeInfinity), -1.0); + TestUtils.AreEqual(max(-1234.56, -3456.7), -1234.56); + TestUtils.AreEqual(max(-3456.7, -1234.56), -1234.56); + TestUtils.AreEqual(max(-1234.56, 3456.7), 3456.7); + TestUtils.AreEqual(max(3456.7, -1234.56), 3456.7); + TestUtils.AreEqual(max(1234.56, 3456.7), 3456.7); + TestUtils.AreEqual(max(3456.7, 1234.56), 3456.7); + TestUtils.AreEqual(max(1.0, double.PositiveInfinity), double.PositiveInfinity); + TestUtils.AreEqual(max(double.PositiveInfinity, 1.0), double.PositiveInfinity); + TestUtils.AreEqual(max(double.PositiveInfinity, double.NegativeInfinity), double.PositiveInfinity); + TestUtils.AreEqual(max(double.PositiveInfinity, double.PositiveInfinity), double.PositiveInfinity); + TestUtils.AreEqual(max(double.NaN, 2.3), 2.3); + TestUtils.AreEqual(max(2.3, double.NaN), 2.3); + TestUtils.AreEqual(max(double.NaN, double.NaN), double.NaN); + } + + [TestCompiler] + public static void max_double2() + { + TestUtils.AreEqual(max(double2(double.NegativeInfinity, double.NegativeInfinity), double2(double.NegativeInfinity, -1.0)), double2(double.NegativeInfinity, -1.0)); + TestUtils.AreEqual(max(double2(-1.0, -1234.56), double2(double.NegativeInfinity, -3456.7)), double2(-1.0, -1234.56)); + TestUtils.AreEqual(max(double2(-3456.7, -1234.56), double2(-1234.56, 3456.7)), double2(-1234.56, 3456.7)); + TestUtils.AreEqual(max(double2(3456.7, 1234.56), double2(-1234.56, 3456.7)), double2(3456.7, 3456.7)); + TestUtils.AreEqual(max(double2(3456.7, 1.0), double2(1234.56, double.PositiveInfinity)), double2(3456.7, double.PositiveInfinity)); + TestUtils.AreEqual(max(double2(double.PositiveInfinity, double.PositiveInfinity), double2(1.0, double.NegativeInfinity)), double2(double.PositiveInfinity, double.PositiveInfinity)); + TestUtils.AreEqual(max(double2(double.PositiveInfinity, double.NaN), double2(double.PositiveInfinity, 2.3)), double2(double.PositiveInfinity, 2.3)); + TestUtils.AreEqual(max(double2(2.3, double.NaN), double2(double.NaN, double.NaN)), double2(2.3, double.NaN)); + } + + [TestCompiler] + public static void max_double3() + { + TestUtils.AreEqual(max(double3(double.NegativeInfinity, double.NegativeInfinity, -1.0), double3(double.NegativeInfinity, -1.0, double.NegativeInfinity)), double3(double.NegativeInfinity, -1.0, -1.0)); + TestUtils.AreEqual(max(double3(-1234.56, -3456.7, -1234.56), double3(-3456.7, -1234.56, 3456.7)), double3(-1234.56, -1234.56, 3456.7)); + TestUtils.AreEqual(max(double3(3456.7, 1234.56, 3456.7), double3(-1234.56, 3456.7, 1234.56)), double3(3456.7, 3456.7, 3456.7)); + TestUtils.AreEqual(max(double3(1.0, double.PositiveInfinity, double.PositiveInfinity), double3(double.PositiveInfinity, 1.0, double.NegativeInfinity)), double3(double.PositiveInfinity, double.PositiveInfinity, double.PositiveInfinity)); + TestUtils.AreEqual(max(double3(double.PositiveInfinity, double.NaN, 2.3), double3(double.PositiveInfinity, 2.3, double.NaN)), double3(double.PositiveInfinity, 2.3, 2.3)); + TestUtils.AreEqual(max(double3(double.NaN, double.NaN, double.NaN), double3(double.NaN, double.NaN, double.NaN)), double3(double.NaN, double.NaN, double.NaN)); + } + + [TestCompiler] + public static void max_double4() + { + TestUtils.AreEqual(max(double4(double.NegativeInfinity, double.NegativeInfinity, -1.0, -1234.56), double4(double.NegativeInfinity, -1.0, double.NegativeInfinity, -3456.7)), double4(double.NegativeInfinity, -1.0, -1.0, -1234.56)); + TestUtils.AreEqual(max(double4(-3456.7, -1234.56, 3456.7, 1234.56), double4(-1234.56, 3456.7, -1234.56, 3456.7)), double4(-1234.56, 3456.7, 3456.7, 3456.7)); + TestUtils.AreEqual(max(double4(3456.7, 1.0, double.PositiveInfinity, double.PositiveInfinity), double4(1234.56, double.PositiveInfinity, 1.0, double.NegativeInfinity)), double4(3456.7, double.PositiveInfinity, double.PositiveInfinity, double.PositiveInfinity)); + TestUtils.AreEqual(max(double4(double.PositiveInfinity, double.NaN, 2.3, double.NaN), double4(double.PositiveInfinity, 2.3, double.NaN, double.NaN)), double4(double.PositiveInfinity, 2.3, 2.3, double.NaN)); + } + + [TestCompiler] + public static void smoothstep_float() + { + TestUtils.AreEqual(smoothstep(-123.45f, 345.6f, float.NegativeInfinity), 0f, 8, false); + TestUtils.AreEqual(smoothstep(-123.45f, 345.6f, -200f), 0f, 8, false); + TestUtils.AreEqual(smoothstep(-123.45f, 345.6f, -100f), 0.00724848127f, 8, false); + TestUtils.AreEqual(smoothstep(-123.45f, 345.6f, 400f), 1f, 8, false); + TestUtils.AreEqual(smoothstep(-123.45f, 345.6f, float.PositiveInfinity), 1f, 8, false); + TestUtils.AreEqual(smoothstep(-123.45f, 345.6f, float.NaN), 1f, 8, false); + TestUtils.AreEqual(smoothstep(345.6f, -123.45f, float.NegativeInfinity), 1f, 8, false); + TestUtils.AreEqual(smoothstep(345.6f, -123.45f, -200f), 1f, 8, false); + TestUtils.AreEqual(smoothstep(345.6f, -123.45f, -100f), 0.992751539f, 8, false); + TestUtils.AreEqual(smoothstep(345.6f, -123.45f, 400f), 0f, 8, false); + TestUtils.AreEqual(smoothstep(345.6f, -123.45f, float.PositiveInfinity), 0f, 8, false); + TestUtils.AreEqual(smoothstep(345.6f, -123.45f, float.NaN), 1f, 8, false); + } + + [TestCompiler] + public static void smoothstep_float2() + { + TestUtils.AreEqual(smoothstep(float2(-123.45f, -123.45f), float2(345.6f, 345.6f), float2(float.NegativeInfinity, -200f)), float2(0f, 0f), 8, false); + TestUtils.AreEqual(smoothstep(float2(-123.45f, -123.45f), float2(345.6f, 345.6f), float2(-100f, 400f)), float2(0.00724848127f, 1f), 8, false); + TestUtils.AreEqual(smoothstep(float2(-123.45f, -123.45f), float2(345.6f, 345.6f), float2(float.PositiveInfinity, float.NaN)), float2(1f, 1f), 8, false); + TestUtils.AreEqual(smoothstep(float2(345.6f, 345.6f), float2(-123.45f, -123.45f), float2(float.NegativeInfinity, -200f)), float2(1f, 1f), 8, false); + TestUtils.AreEqual(smoothstep(float2(345.6f, 345.6f), float2(-123.45f, -123.45f), float2(-100f, 400f)), float2(0.992751539f, 0f), 8, false); + TestUtils.AreEqual(smoothstep(float2(345.6f, 345.6f), float2(-123.45f, -123.45f), float2(float.PositiveInfinity, float.NaN)), float2(0f, 1f), 8, false); + } + + [TestCompiler] + public static void smoothstep_float3() + { + TestUtils.AreEqual(smoothstep(float3(-123.45f, -123.45f, -123.45f), float3(345.6f, 345.6f, 345.6f), float3(float.NegativeInfinity, -200f, -100f)), float3(0f, 0f, 0.00724848127f), 8, false); + TestUtils.AreEqual(smoothstep(float3(-123.45f, -123.45f, -123.45f), float3(345.6f, 345.6f, 345.6f), float3(400f, float.PositiveInfinity, float.NaN)), float3(1f, 1f, 1f), 8, false); + TestUtils.AreEqual(smoothstep(float3(345.6f, 345.6f, 345.6f), float3(-123.45f, -123.45f, -123.45f), float3(float.NegativeInfinity, -200f, -100f)), float3(1f, 1f, 0.992751539f), 8, false); + TestUtils.AreEqual(smoothstep(float3(345.6f, 345.6f, 345.6f), float3(-123.45f, -123.45f, -123.45f), float3(400f, float.PositiveInfinity, float.NaN)), float3(0f, 0f, 1f), 8, false); + } + + [TestCompiler] + public static void smoothstep_float4() + { + TestUtils.AreEqual(smoothstep(float4(-123.45f, -123.45f, -123.45f, -123.45f), float4(345.6f, 345.6f, 345.6f, 345.6f), float4(float.NegativeInfinity, -200f, -100f, 400f)), float4(0f, 0f, 0.00724848127f, 1f), 8, false); + TestUtils.AreEqual(smoothstep(float4(-123.45f, -123.45f, 345.6f, 345.6f), float4(345.6f, 345.6f, -123.45f, -123.45f), float4(float.PositiveInfinity, float.NaN, float.NegativeInfinity, -200f)), float4(1f, 1f, 1f, 1f), 8, false); + TestUtils.AreEqual(smoothstep(float4(345.6f, 345.6f, 345.6f, 345.6f), float4(-123.45f, -123.45f, -123.45f, -123.45f), float4(-100f, 400f, float.PositiveInfinity, float.NaN)), float4(0.992751539f, 0f, 0f, 1f), 8, false); + } + + [TestCompiler] + public static void smoothstep_double() + { + TestUtils.AreEqual(smoothstep(-123.45, 345.6, double.NegativeInfinity), 0.0, 8, false); + TestUtils.AreEqual(smoothstep(-123.45, 345.6, -200.0), 0.0, 8, false); + TestUtils.AreEqual(smoothstep(-123.45, 345.6, -100.0), 0.0072484810488798995, 8, false); + TestUtils.AreEqual(smoothstep(-123.45, 345.6, 400.0), 1.0, 8, false); + TestUtils.AreEqual(smoothstep(-123.45, 345.6, double.PositiveInfinity), 1.0, 8, false); + TestUtils.AreEqual(smoothstep(-123.45, 345.6, double.NaN), 1.0, 8, false); + TestUtils.AreEqual(smoothstep(345.6, -123.45, double.NegativeInfinity), 1.0, 8, false); + TestUtils.AreEqual(smoothstep(345.6, -123.45, -200.0), 1.0, 8, false); + TestUtils.AreEqual(smoothstep(345.6, -123.45, -100.0), 0.99275151895112013, 8, false); + TestUtils.AreEqual(smoothstep(345.6, -123.45, 400.0), 0.0, 8, false); + TestUtils.AreEqual(smoothstep(345.6, -123.45, double.PositiveInfinity), 0.0, 8, false); + TestUtils.AreEqual(smoothstep(345.6, -123.45, double.NaN), 1.0, 8, false); + } + + [TestCompiler] + public static void smoothstep_double2() + { + TestUtils.AreEqual(smoothstep(double2(-123.45, -123.45), double2(345.6, 345.6), double2(double.NegativeInfinity, -200.0)), double2(0.0, 0.0), 8, false); + TestUtils.AreEqual(smoothstep(double2(-123.45, -123.45), double2(345.6, 345.6), double2(-100.0, 400.0)), double2(0.0072484810488798995, 1.0), 8, false); + TestUtils.AreEqual(smoothstep(double2(-123.45, -123.45), double2(345.6, 345.6), double2(double.PositiveInfinity, double.NaN)), double2(1.0, 1.0), 8, false); + TestUtils.AreEqual(smoothstep(double2(345.6, 345.6), double2(-123.45, -123.45), double2(double.NegativeInfinity, -200.0)), double2(1.0, 1.0), 8, false); + TestUtils.AreEqual(smoothstep(double2(345.6, 345.6), double2(-123.45, -123.45), double2(-100.0, 400.0)), double2(0.99275151895112013, 0.0), 8, false); + TestUtils.AreEqual(smoothstep(double2(345.6, 345.6), double2(-123.45, -123.45), double2(double.PositiveInfinity, double.NaN)), double2(0.0, 1.0), 8, false); + } + + [TestCompiler] + public static void smoothstep_double3() + { + TestUtils.AreEqual(smoothstep(double3(-123.45, -123.45, -123.45), double3(345.6, 345.6, 345.6), double3(double.NegativeInfinity, -200.0, -100.0)), double3(0.0, 0.0, 0.0072484810488798995), 8, false); + TestUtils.AreEqual(smoothstep(double3(-123.45, -123.45, -123.45), double3(345.6, 345.6, 345.6), double3(400.0, double.PositiveInfinity, double.NaN)), double3(1.0, 1.0, 1.0), 8, false); + TestUtils.AreEqual(smoothstep(double3(345.6, 345.6, 345.6), double3(-123.45, -123.45, -123.45), double3(double.NegativeInfinity, -200.0, -100.0)), double3(1.0, 1.0, 0.99275151895112013), 8, false); + TestUtils.AreEqual(smoothstep(double3(345.6, 345.6, 345.6), double3(-123.45, -123.45, -123.45), double3(400.0, double.PositiveInfinity, double.NaN)), double3(0.0, 0.0, 1.0), 8, false); + } + + [TestCompiler] + public static void smoothstep_double4() + { + TestUtils.AreEqual(smoothstep(double4(-123.45, -123.45, -123.45, -123.45), double4(345.6, 345.6, 345.6, 345.6), double4(double.NegativeInfinity, -200.0, -100.0, 400.0)), double4(0.0, 0.0, 0.0072484810488798995, 1.0), 8, false); + TestUtils.AreEqual(smoothstep(double4(-123.45, -123.45, 345.6, 345.6), double4(345.6, 345.6, -123.45, -123.45), double4(double.PositiveInfinity, double.NaN, double.NegativeInfinity, -200.0)), double4(1.0, 1.0, 1.0, 1.0), 8, false); + TestUtils.AreEqual(smoothstep(double4(345.6, 345.6, 345.6, 345.6), double4(-123.45, -123.45, -123.45, -123.45), double4(-100.0, 400.0, double.PositiveInfinity, double.NaN)), double4(0.99275151895112013, 0.0, 0.0, 1.0), 8, false); + } + + [TestCompiler] + public static void mad_int() + { + TestUtils.AreEqual(mad(1234, 5678, 91011), 7097663); + TestUtils.AreEqual(mad(1234, 5678, -91011), 6915641); + TestUtils.AreEqual(mad(1234, -5678, 91011), -6915641); + TestUtils.AreEqual(mad(1234, -5678, -91011), -7097663); + TestUtils.AreEqual(mad(-1234, 5678, 91011), -6915641); + TestUtils.AreEqual(mad(-1234, 5678, -91011), -7097663); + TestUtils.AreEqual(mad(-1234, -5678, 91011), 7097663); + TestUtils.AreEqual(mad(-1234, -5678, -91011), 6915641); + TestUtils.AreEqual(mad(98765, 56789, 91011), 1313889300); + TestUtils.AreEqual(mad(98765, 56789, -91011), 1313707278); + TestUtils.AreEqual(mad(98765, -56789, 91011), -1313707278); + TestUtils.AreEqual(mad(98765, -56789, -91011), -1313889300); + TestUtils.AreEqual(mad(-98765, 56789, 91011), -1313707278); + TestUtils.AreEqual(mad(-98765, 56789, -91011), -1313889300); + TestUtils.AreEqual(mad(-98765, -56789, 91011), 1313889300); + TestUtils.AreEqual(mad(-98765, -56789, -91011), 1313707278); + } + + [TestCompiler] + public static void mad_int2() + { + TestUtils.AreEqual(mad(int2(1234, 1234), int2(5678, 5678), int2(91011, -91011)), int2(7097663, 6915641)); + TestUtils.AreEqual(mad(int2(1234, 1234), int2(-5678, -5678), int2(91011, -91011)), int2(-6915641, -7097663)); + TestUtils.AreEqual(mad(int2(-1234, -1234), int2(5678, 5678), int2(91011, -91011)), int2(-6915641, -7097663)); + TestUtils.AreEqual(mad(int2(-1234, -1234), int2(-5678, -5678), int2(91011, -91011)), int2(7097663, 6915641)); + TestUtils.AreEqual(mad(int2(98765, 98765), int2(56789, 56789), int2(91011, -91011)), int2(1313889300, 1313707278)); + TestUtils.AreEqual(mad(int2(98765, 98765), int2(-56789, -56789), int2(91011, -91011)), int2(-1313707278, -1313889300)); + TestUtils.AreEqual(mad(int2(-98765, -98765), int2(56789, 56789), int2(91011, -91011)), int2(-1313707278, -1313889300)); + TestUtils.AreEqual(mad(int2(-98765, -98765), int2(-56789, -56789), int2(91011, -91011)), int2(1313889300, 1313707278)); + } + + [TestCompiler] + public static void mad_int3() + { + TestUtils.AreEqual(mad(int3(1234, 1234, 1234), int3(5678, 5678, -5678), int3(91011, -91011, 91011)), int3(7097663, 6915641, -6915641)); + TestUtils.AreEqual(mad(int3(1234, -1234, -1234), int3(-5678, 5678, 5678), int3(-91011, 91011, -91011)), int3(-7097663, -6915641, -7097663)); + TestUtils.AreEqual(mad(int3(-1234, -1234, 98765), int3(-5678, -5678, 56789), int3(91011, -91011, 91011)), int3(7097663, 6915641, 1313889300)); + TestUtils.AreEqual(mad(int3(98765, 98765, 98765), int3(56789, -56789, -56789), int3(-91011, 91011, -91011)), int3(1313707278, -1313707278, -1313889300)); + TestUtils.AreEqual(mad(int3(-98765, -98765, -98765), int3(56789, 56789, -56789), int3(91011, -91011, 91011)), int3(-1313707278, -1313889300, 1313889300)); + TestUtils.AreEqual(mad(int3(-98765, -98765, -98765), int3(-56789, -56789, -56789), int3(-91011, -91011, -91011)), int3(1313707278, 1313707278, 1313707278)); + } + + [TestCompiler] + public static void mad_int4() + { + TestUtils.AreEqual(mad(int4(1234, 1234, 1234, 1234), int4(5678, 5678, -5678, -5678), int4(91011, -91011, 91011, -91011)), int4(7097663, 6915641, -6915641, -7097663)); + TestUtils.AreEqual(mad(int4(-1234, -1234, -1234, -1234), int4(5678, 5678, -5678, -5678), int4(91011, -91011, 91011, -91011)), int4(-6915641, -7097663, 7097663, 6915641)); + TestUtils.AreEqual(mad(int4(98765, 98765, 98765, 98765), int4(56789, 56789, -56789, -56789), int4(91011, -91011, 91011, -91011)), int4(1313889300, 1313707278, -1313707278, -1313889300)); + TestUtils.AreEqual(mad(int4(-98765, -98765, -98765, -98765), int4(56789, 56789, -56789, -56789), int4(91011, -91011, 91011, -91011)), int4(-1313707278, -1313889300, 1313889300, 1313707278)); + } + + [TestCompiler] + public static void mad_uint() + { + TestUtils.AreEqual(mad(1234u, 5678u, 91011u), 7097663u); + TestUtils.AreEqual(mad(98765u, 56789u, 91011u), 1313889300u); + } + + [TestCompiler] + public static void mad_uint2() + { + TestUtils.AreEqual(mad(uint2(1234u, 98765u), uint2(5678u, 56789u), uint2(91011u, 91011u)), uint2(7097663u, 1313889300u)); + } + + [TestCompiler] + public static void mad_uint3() + { + TestUtils.AreEqual(mad(uint3(1234u, 98765u, 98765u), uint3(5678u, 56789u, 56789u), uint3(91011u, 91011u, 91011u)), uint3(7097663u, 1313889300u, 1313889300u)); + } + + [TestCompiler] + public static void mad_uint4() + { + TestUtils.AreEqual(mad(uint4(1234u, 98765u, 98765u, 98765u), uint4(5678u, 56789u, 56789u, 56789u), uint4(91011u, 91011u, 91011u, 91011u)), uint4(7097663u, 1313889300u, 1313889300u, 1313889300u)); + } + + [TestCompiler] + public static void mad_long() + { + TestUtils.AreEqual(mad(1234L, 5678L, 91011L), 7097663L); + TestUtils.AreEqual(mad(1234L, 5678L, -91011L), 6915641L); + TestUtils.AreEqual(mad(1234L, -5678L, 91011L), -6915641L); + TestUtils.AreEqual(mad(1234L, -5678L, -91011L), -7097663L); + TestUtils.AreEqual(mad(-1234L, 5678L, 91011L), -6915641L); + TestUtils.AreEqual(mad(-1234L, 5678L, -91011L), -7097663L); + TestUtils.AreEqual(mad(-1234L, -5678L, 91011L), 7097663L); + TestUtils.AreEqual(mad(-1234L, -5678L, -91011L), 6915641L); + TestUtils.AreEqual(mad(9876543210L, 5678901234L, 9101112134L), 747681210895778426L); + TestUtils.AreEqual(mad(9876543210L, 5678901234L, -9101112134L), 747681192693554158L); + TestUtils.AreEqual(mad(9876543210L, -5678901234L, 9101112134L), -747681192693554158L); + TestUtils.AreEqual(mad(9876543210L, -5678901234L, -9101112134L), -747681210895778426L); + TestUtils.AreEqual(mad(-9876543210L, 5678901234L, 9101112134L), -747681192693554158L); + TestUtils.AreEqual(mad(-9876543210L, 5678901234L, -9101112134L), -747681210895778426L); + TestUtils.AreEqual(mad(-9876543210L, -5678901234L, 9101112134L), 747681210895778426L); + TestUtils.AreEqual(mad(-9876543210L, -5678901234L, -9101112134L), 747681192693554158L); + } + + [TestCompiler] + public static void mad_ulong() + { + TestUtils.AreEqual(mad(1234UL, 5678UL, 91011UL), 7097663L); + TestUtils.AreEqual(mad(9876543210UL, 5678901234UL, 9101112134UL), 747681210895778426L); + } + + [TestCompiler] + public static void mad_float() + { + TestUtils.AreEqual(mad(-123.45f, 345.6f, 4.321f), -42660f, 1, false); + TestUtils.AreEqual(mad(float.NaN, 345.6f, 4.321f), float.NaN, 1, false); + TestUtils.AreEqual(mad(-123.45f, float.NaN, 4.321f), float.NaN, 1, false); + TestUtils.AreEqual(mad(-123.45f, 345.6f, float.NaN), float.NaN, 1, false); + } + + [TestCompiler] + public static void mad_float2() + { + TestUtils.AreEqual(mad(float2(-123.45f, float.NaN), float2(345.6f, 345.6f), float2(4.321f, 4.321f)), float2(-42660f, float.NaN), 1, false); + TestUtils.AreEqual(mad(float2(-123.45f, -123.45f), float2(float.NaN, 345.6f), float2(4.321f, float.NaN)), float2(float.NaN, float.NaN), 1, false); + } + + [TestCompiler] + public static void mad_float3() + { + TestUtils.AreEqual(mad(float3(-123.45f, float.NaN, -123.45f), float3(345.6f, 345.6f, float.NaN), float3(4.321f, 4.321f, 4.321f)), float3(-42660f, float.NaN, float.NaN), 1, false); + TestUtils.AreEqual(mad(float3(-123.45f, -123.45f, -123.45f), float3(345.6f, 345.6f, 345.6f), float3(float.NaN, float.NaN, float.NaN)), float3(float.NaN, float.NaN, float.NaN), 1, false); + } + + [TestCompiler] + public static void mad_float4() + { + TestUtils.AreEqual(mad(float4(-123.45f, float.NaN, -123.45f, -123.45f), float4(345.6f, 345.6f, float.NaN, 345.6f), float4(4.321f, 4.321f, 4.321f, float.NaN)), float4(-42660f, float.NaN, float.NaN, float.NaN), 1, false); + } + + [TestCompiler] + public static void mad_double() + { + TestUtils.AreEqual(mad(-123.45, 345.6, 4.321), -42659.999, 1, false); + TestUtils.AreEqual(mad(double.NaN, 345.6, 4.321), double.NaN, 1, false); + TestUtils.AreEqual(mad(-123.45, double.NaN, 4.321), double.NaN, 1, false); + TestUtils.AreEqual(mad(-123.45, 345.6, double.NaN), double.NaN, 1, false); + } + + [TestCompiler] + public static void mad_double2() + { + TestUtils.AreEqual(mad(double2(-123.45, double.NaN), double2(345.6, 345.6), double2(4.321, 4.321)), double2(-42659.999, double.NaN), 1, false); + TestUtils.AreEqual(mad(double2(-123.45, -123.45), double2(double.NaN, 345.6), double2(4.321, double.NaN)), double2(double.NaN, double.NaN), 1, false); + } + + [TestCompiler] + public static void mad_double3() + { + TestUtils.AreEqual(mad(double3(-123.45, double.NaN, -123.45), double3(345.6, 345.6, double.NaN), double3(4.321, 4.321, 4.321)), double3(-42659.999, double.NaN, double.NaN), 1, false); + TestUtils.AreEqual(mad(double3(-123.45, -123.45, -123.45), double3(345.6, 345.6, 345.6), double3(double.NaN, double.NaN, double.NaN)), double3(double.NaN, double.NaN, double.NaN), 1, false); + } + + [TestCompiler] + public static void mad_double4() + { + TestUtils.AreEqual(mad(double4(-123.45, double.NaN, -123.45, -123.45), double4(345.6, 345.6, double.NaN, 345.6), double4(4.321, 4.321, 4.321, double.NaN)), double4(-42659.999, double.NaN, double.NaN, double.NaN), 1, false); + } + + [TestCompiler] + public static void fmod_float() + { + TestUtils.AreEqual(fmod(float.NegativeInfinity, float.NegativeInfinity), float.NaN, 1, false); + TestUtils.AreEqual(fmod(-323.4f, float.NegativeInfinity), -323.4f, 1, false); + TestUtils.AreEqual(fmod(-0.0f, float.NegativeInfinity), -0.0f, 1, false); + TestUtils.AreEqual(fmod(0f, float.NegativeInfinity), 0f, 1, false); + TestUtils.AreEqual(fmod(323.4f, float.NegativeInfinity), 323.4f, 1, false); + TestUtils.AreEqual(fmod(float.PositiveInfinity, float.NegativeInfinity), float.NaN, 1, false); + TestUtils.AreEqual(fmod(float.NaN, float.NegativeInfinity), float.NaN, 1, false); + TestUtils.AreEqual(fmod(float.NegativeInfinity, -123.6f), float.NaN, 1, false); + TestUtils.AreEqual(fmod(-323.4f, -123.6f), -76.2f, 1, false); + TestUtils.AreEqual(fmod(-0.0f, -123.6f), -0.0f, 1, false); + TestUtils.AreEqual(fmod(0f, -123.6f), 0f, 1, false); + TestUtils.AreEqual(fmod(323.4f, -123.6f), 76.2f, 1, false); + TestUtils.AreEqual(fmod(float.PositiveInfinity, -123.6f), float.NaN, 1, false); + TestUtils.AreEqual(fmod(float.NaN, -123.6f), float.NaN, 1, false); + TestUtils.AreEqual(fmod(float.NegativeInfinity, -0.0f), float.NaN, 1, false); + TestUtils.AreEqual(fmod(-323.4f, -0.0f), float.NaN, 1, false); + TestUtils.AreEqual(fmod(-0.0f, -0.0f), float.NaN, 1, false); + TestUtils.AreEqual(fmod(0f, -0.0f), float.NaN, 1, false); + TestUtils.AreEqual(fmod(323.4f, -0.0f), float.NaN, 1, false); + TestUtils.AreEqual(fmod(float.PositiveInfinity, -0.0f), float.NaN, 1, false); + TestUtils.AreEqual(fmod(float.NaN, -0.0f), float.NaN, 1, false); + TestUtils.AreEqual(fmod(float.NegativeInfinity, 0f), float.NaN, 1, false); + TestUtils.AreEqual(fmod(-323.4f, 0f), float.NaN, 1, false); + TestUtils.AreEqual(fmod(-0.0f, 0f), float.NaN, 1, false); + TestUtils.AreEqual(fmod(0f, 0f), float.NaN, 1, false); + TestUtils.AreEqual(fmod(323.4f, 0f), float.NaN, 1, false); + TestUtils.AreEqual(fmod(float.PositiveInfinity, 0f), float.NaN, 1, false); + TestUtils.AreEqual(fmod(float.NaN, 0f), float.NaN, 1, false); + TestUtils.AreEqual(fmod(float.NegativeInfinity, 123.6f), float.NaN, 1, false); + TestUtils.AreEqual(fmod(-323.4f, 123.6f), -76.2f, 1, false); + TestUtils.AreEqual(fmod(-0.0f, 123.6f), -0.0f, 1, false); + TestUtils.AreEqual(fmod(0f, 123.6f), 0f, 1, false); + TestUtils.AreEqual(fmod(323.4f, 123.6f), 76.2f, 1, false); + TestUtils.AreEqual(fmod(float.PositiveInfinity, 123.6f), float.NaN, 1, false); + TestUtils.AreEqual(fmod(float.NaN, 123.6f), float.NaN, 1, false); + TestUtils.AreEqual(fmod(float.NegativeInfinity, float.PositiveInfinity), float.NaN, 1, false); + TestUtils.AreEqual(fmod(-323.4f, float.PositiveInfinity), -323.4f, 1, false); + TestUtils.AreEqual(fmod(-0.0f, float.PositiveInfinity), -0.0f, 1, false); + TestUtils.AreEqual(fmod(0f, float.PositiveInfinity), 0f, 1, false); + TestUtils.AreEqual(fmod(323.4f, float.PositiveInfinity), 323.4f, 1, false); + TestUtils.AreEqual(fmod(float.PositiveInfinity, float.PositiveInfinity), float.NaN, 1, false); + TestUtils.AreEqual(fmod(float.NaN, float.PositiveInfinity), float.NaN, 1, false); + TestUtils.AreEqual(fmod(float.NegativeInfinity, float.NaN), float.NaN, 1, false); + TestUtils.AreEqual(fmod(-323.4f, float.NaN), float.NaN, 1, false); + TestUtils.AreEqual(fmod(-0.0f, float.NaN), float.NaN, 1, false); + TestUtils.AreEqual(fmod(0f, float.NaN), float.NaN, 1, false); + TestUtils.AreEqual(fmod(323.4f, float.NaN), float.NaN, 1, false); + TestUtils.AreEqual(fmod(float.PositiveInfinity, float.NaN), float.NaN, 1, false); + TestUtils.AreEqual(fmod(float.NaN, float.NaN), float.NaN, 1, false); + } + + [TestCompiler] + public static void fmod_float2() + { + TestUtils.AreEqual(fmod(float2(float.NegativeInfinity, -323.4f), float2(float.NegativeInfinity, float.NegativeInfinity)), float2(float.NaN, -323.4f), 1, false); + TestUtils.AreEqual(fmod(float2(-0.0f, 0f), float2(float.NegativeInfinity, float.NegativeInfinity)), float2(-0.0f, 0f), 1, false); + TestUtils.AreEqual(fmod(float2(323.4f, float.PositiveInfinity), float2(float.NegativeInfinity, float.NegativeInfinity)), float2(323.4f, float.NaN), 1, false); + TestUtils.AreEqual(fmod(float2(float.NaN, float.NegativeInfinity), float2(float.NegativeInfinity, -123.6f)), float2(float.NaN, float.NaN), 1, false); + TestUtils.AreEqual(fmod(float2(-323.4f, -0.0f), float2(-123.6f, -123.6f)), float2(-76.2f, -0.0f), 1, false); + TestUtils.AreEqual(fmod(float2(0f, 323.4f), float2(-123.6f, -123.6f)), float2(0f, 76.2f), 1, false); + TestUtils.AreEqual(fmod(float2(float.PositiveInfinity, float.NaN), float2(-123.6f, -123.6f)), float2(float.NaN, float.NaN), 1, false); + TestUtils.AreEqual(fmod(float2(float.NegativeInfinity, -323.4f), float2(-0.0f, -0.0f)), float2(float.NaN, float.NaN), 1, false); + TestUtils.AreEqual(fmod(float2(-0.0f, 0f), float2(-0.0f, -0.0f)), float2(float.NaN, float.NaN), 1, false); + TestUtils.AreEqual(fmod(float2(323.4f, float.PositiveInfinity), float2(-0.0f, -0.0f)), float2(float.NaN, float.NaN), 1, false); + TestUtils.AreEqual(fmod(float2(float.NaN, float.NegativeInfinity), float2(-0.0f, 0f)), float2(float.NaN, float.NaN), 1, false); + TestUtils.AreEqual(fmod(float2(-323.4f, -0.0f), float2(0f, 0f)), float2(float.NaN, float.NaN), 1, false); + TestUtils.AreEqual(fmod(float2(0f, 323.4f), float2(0f, 0f)), float2(float.NaN, float.NaN), 1, false); + TestUtils.AreEqual(fmod(float2(float.PositiveInfinity, float.NaN), float2(0f, 0f)), float2(float.NaN, float.NaN), 1, false); + TestUtils.AreEqual(fmod(float2(float.NegativeInfinity, -323.4f), float2(123.6f, 123.6f)), float2(float.NaN, -76.2f), 1, false); + TestUtils.AreEqual(fmod(float2(-0.0f, 0f), float2(123.6f, 123.6f)), float2(-0.0f, 0f), 1, false); + TestUtils.AreEqual(fmod(float2(323.4f, float.PositiveInfinity), float2(123.6f, 123.6f)), float2(76.2f, float.NaN), 1, false); + TestUtils.AreEqual(fmod(float2(float.NaN, float.NegativeInfinity), float2(123.6f, float.PositiveInfinity)), float2(float.NaN, float.NaN), 1, false); + TestUtils.AreEqual(fmod(float2(-323.4f, -0.0f), float2(float.PositiveInfinity, float.PositiveInfinity)), float2(-323.4f, -0.0f), 1, false); + TestUtils.AreEqual(fmod(float2(0f, 323.4f), float2(float.PositiveInfinity, float.PositiveInfinity)), float2(0f, 323.4f), 1, false); + TestUtils.AreEqual(fmod(float2(float.PositiveInfinity, float.NaN), float2(float.PositiveInfinity, float.PositiveInfinity)), float2(float.NaN, float.NaN), 1, false); + TestUtils.AreEqual(fmod(float2(float.NegativeInfinity, -323.4f), float2(float.NaN, float.NaN)), float2(float.NaN, float.NaN), 1, false); + TestUtils.AreEqual(fmod(float2(-0.0f, 0f), float2(float.NaN, float.NaN)), float2(float.NaN, float.NaN), 1, false); + TestUtils.AreEqual(fmod(float2(323.4f, float.PositiveInfinity), float2(float.NaN, float.NaN)), float2(float.NaN, float.NaN), 1, false); + TestUtils.AreEqual(fmod(float2(float.NaN, float.NaN), float2(float.NaN, float.NaN)), float2(float.NaN, float.NaN), 1, false); + } + + [TestCompiler] + public static void fmod_float3() + { + TestUtils.AreEqual(fmod(float3(float.NegativeInfinity, -323.4f, -0.0f), float3(float.NegativeInfinity, float.NegativeInfinity, float.NegativeInfinity)), float3(float.NaN, -323.4f, -0.0f), 1, false); + TestUtils.AreEqual(fmod(float3(0f, 323.4f, float.PositiveInfinity), float3(float.NegativeInfinity, float.NegativeInfinity, float.NegativeInfinity)), float3(0f, 323.4f, float.NaN), 1, false); + TestUtils.AreEqual(fmod(float3(float.NaN, float.NegativeInfinity, -323.4f), float3(float.NegativeInfinity, -123.6f, -123.6f)), float3(float.NaN, float.NaN, -76.2f), 1, false); + TestUtils.AreEqual(fmod(float3(-0.0f, 0f, 323.4f), float3(-123.6f, -123.6f, -123.6f)), float3(-0.0f, 0f, 76.2f), 1, false); + TestUtils.AreEqual(fmod(float3(float.PositiveInfinity, float.NaN, float.NegativeInfinity), float3(-123.6f, -123.6f, -0.0f)), float3(float.NaN, float.NaN, float.NaN), 1, false); + TestUtils.AreEqual(fmod(float3(-323.4f, -0.0f, 0f), float3(-0.0f, -0.0f, -0.0f)), float3(float.NaN, float.NaN, float.NaN), 1, false); + TestUtils.AreEqual(fmod(float3(323.4f, float.PositiveInfinity, float.NaN), float3(-0.0f, -0.0f, -0.0f)), float3(float.NaN, float.NaN, float.NaN), 1, false); + TestUtils.AreEqual(fmod(float3(float.NegativeInfinity, -323.4f, -0.0f), float3(0f, 0f, 0f)), float3(float.NaN, float.NaN, float.NaN), 1, false); + TestUtils.AreEqual(fmod(float3(0f, 323.4f, float.PositiveInfinity), float3(0f, 0f, 0f)), float3(float.NaN, float.NaN, float.NaN), 1, false); + TestUtils.AreEqual(fmod(float3(float.NaN, float.NegativeInfinity, -323.4f), float3(0f, 123.6f, 123.6f)), float3(float.NaN, float.NaN, -76.2f), 1, false); + TestUtils.AreEqual(fmod(float3(-0.0f, 0f, 323.4f), float3(123.6f, 123.6f, 123.6f)), float3(-0.0f, 0f, 76.2f), 1, false); + TestUtils.AreEqual(fmod(float3(float.PositiveInfinity, float.NaN, float.NegativeInfinity), float3(123.6f, 123.6f, float.PositiveInfinity)), float3(float.NaN, float.NaN, float.NaN), 1, false); + TestUtils.AreEqual(fmod(float3(-323.4f, -0.0f, 0f), float3(float.PositiveInfinity, float.PositiveInfinity, float.PositiveInfinity)), float3(-323.4f, -0.0f, 0f), 1, false); + TestUtils.AreEqual(fmod(float3(323.4f, float.PositiveInfinity, float.NaN), float3(float.PositiveInfinity, float.PositiveInfinity, float.PositiveInfinity)), float3(323.4f, float.NaN, float.NaN), 1, false); + TestUtils.AreEqual(fmod(float3(float.NegativeInfinity, -323.4f, -0.0f), float3(float.NaN, float.NaN, float.NaN)), float3(float.NaN, float.NaN, float.NaN), 1, false); + TestUtils.AreEqual(fmod(float3(0f, 323.4f, float.PositiveInfinity), float3(float.NaN, float.NaN, float.NaN)), float3(float.NaN, float.NaN, float.NaN), 1, false); + TestUtils.AreEqual(fmod(float3(float.NaN, float.NaN, float.NaN), float3(float.NaN, float.NaN, float.NaN)), float3(float.NaN, float.NaN, float.NaN), 1, false); + } + + [TestCompiler] + public static void fmod_float4() + { + TestUtils.AreEqual(fmod(float4(float.NegativeInfinity, -323.4f, -0.0f, 0f), float4(float.NegativeInfinity, float.NegativeInfinity, float.NegativeInfinity, float.NegativeInfinity)), float4(float.NaN, -323.4f, -0.0f, 0f), 1, false); + TestUtils.AreEqual(fmod(float4(323.4f, float.PositiveInfinity, float.NaN, float.NegativeInfinity), float4(float.NegativeInfinity, float.NegativeInfinity, float.NegativeInfinity, -123.6f)), float4(323.4f, float.NaN, float.NaN, float.NaN), 1, false); + TestUtils.AreEqual(fmod(float4(-323.4f, -0.0f, 0f, 323.4f), float4(-123.6f, -123.6f, -123.6f, -123.6f)), float4(-76.2f, -0.0f, 0f, 76.2f), 1, false); + TestUtils.AreEqual(fmod(float4(float.PositiveInfinity, float.NaN, float.NegativeInfinity, -323.4f), float4(-123.6f, -123.6f, -0.0f, -0.0f)), float4(float.NaN, float.NaN, float.NaN, float.NaN), 1, false); + TestUtils.AreEqual(fmod(float4(-0.0f, 0f, 323.4f, float.PositiveInfinity), float4(-0.0f, -0.0f, -0.0f, -0.0f)), float4(float.NaN, float.NaN, float.NaN, float.NaN), 1, false); + TestUtils.AreEqual(fmod(float4(float.NaN, float.NegativeInfinity, -323.4f, -0.0f), float4(-0.0f, 0f, 0f, 0f)), float4(float.NaN, float.NaN, float.NaN, float.NaN), 1, false); + TestUtils.AreEqual(fmod(float4(0f, 323.4f, float.PositiveInfinity, float.NaN), float4(0f, 0f, 0f, 0f)), float4(float.NaN, float.NaN, float.NaN, float.NaN), 1, false); + TestUtils.AreEqual(fmod(float4(float.NegativeInfinity, -323.4f, -0.0f, 0f), float4(123.6f, 123.6f, 123.6f, 123.6f)), float4(float.NaN, -76.2f, -0.0f, 0f), 1, false); + TestUtils.AreEqual(fmod(float4(323.4f, float.PositiveInfinity, float.NaN, float.NegativeInfinity), float4(123.6f, 123.6f, 123.6f, float.PositiveInfinity)), float4(76.2f, float.NaN, float.NaN, float.NaN), 1, false); + TestUtils.AreEqual(fmod(float4(-323.4f, -0.0f, 0f, 323.4f), float4(float.PositiveInfinity, float.PositiveInfinity, float.PositiveInfinity, float.PositiveInfinity)), float4(-323.4f, -0.0f, 0f, 323.4f), 1, false); + TestUtils.AreEqual(fmod(float4(float.PositiveInfinity, float.NaN, float.NegativeInfinity, -323.4f), float4(float.PositiveInfinity, float.PositiveInfinity, float.NaN, float.NaN)), float4(float.NaN, float.NaN, float.NaN, float.NaN), 1, false); + TestUtils.AreEqual(fmod(float4(-0.0f, 0f, 323.4f, float.PositiveInfinity), float4(float.NaN, float.NaN, float.NaN, float.NaN)), float4(float.NaN, float.NaN, float.NaN, float.NaN), 1, false); + TestUtils.AreEqual(fmod(float4(float.NaN, float.NaN, float.NaN, float.NaN), float4(float.NaN, float.NaN, float.NaN, float.NaN)), float4(float.NaN, float.NaN, float.NaN, float.NaN), 1, false); + } + + [TestCompiler] + public static void fmod_double() + { + TestUtils.AreEqual(fmod(double.NegativeInfinity, double.NegativeInfinity), double.NaN, 1, false); + TestUtils.AreEqual(fmod(-323.4, double.NegativeInfinity), -323.4, 1, false); + TestUtils.AreEqual(fmod(-0.0, double.NegativeInfinity), -0.0, 1, false); + TestUtils.AreEqual(fmod(0.0, double.NegativeInfinity), 0.0, 1, false); + TestUtils.AreEqual(fmod(323.4, double.NegativeInfinity), 323.4, 1, false); + TestUtils.AreEqual(fmod(double.PositiveInfinity, double.NegativeInfinity), double.NaN, 1, false); + TestUtils.AreEqual(fmod(double.NaN, double.NegativeInfinity), double.NaN, 1, false); + TestUtils.AreEqual(fmod(double.NegativeInfinity, -123.6), double.NaN, 1, false); + TestUtils.AreEqual(fmod(-323.4, -123.6), -76.2, 1, false); + TestUtils.AreEqual(fmod(-0.0, -123.6), -0.0, 1, false); + TestUtils.AreEqual(fmod(0.0, -123.6), 0.0, 1, false); + TestUtils.AreEqual(fmod(323.4, -123.6), 76.2, 1, false); + TestUtils.AreEqual(fmod(double.PositiveInfinity, -123.6), double.NaN, 1, false); + TestUtils.AreEqual(fmod(double.NaN, -123.6), double.NaN, 1, false); + TestUtils.AreEqual(fmod(double.NegativeInfinity, -0.0), double.NaN, 1, false); + TestUtils.AreEqual(fmod(-323.4, -0.0), double.NaN, 1, false); + TestUtils.AreEqual(fmod(-0.0, -0.0), double.NaN, 1, false); + TestUtils.AreEqual(fmod(0.0, -0.0), double.NaN, 1, false); + TestUtils.AreEqual(fmod(323.4, -0.0), double.NaN, 1, false); + TestUtils.AreEqual(fmod(double.PositiveInfinity, -0.0), double.NaN, 1, false); + TestUtils.AreEqual(fmod(double.NaN, -0.0), double.NaN, 1, false); + TestUtils.AreEqual(fmod(double.NegativeInfinity, 0.0), double.NaN, 1, false); + TestUtils.AreEqual(fmod(-323.4, 0.0), double.NaN, 1, false); + TestUtils.AreEqual(fmod(-0.0, 0.0), double.NaN, 1, false); + TestUtils.AreEqual(fmod(0.0, 0.0), double.NaN, 1, false); + TestUtils.AreEqual(fmod(323.4, 0.0), double.NaN, 1, false); + TestUtils.AreEqual(fmod(double.PositiveInfinity, 0.0), double.NaN, 1, false); + TestUtils.AreEqual(fmod(double.NaN, 0.0), double.NaN, 1, false); + TestUtils.AreEqual(fmod(double.NegativeInfinity, 123.6), double.NaN, 1, false); + TestUtils.AreEqual(fmod(-323.4, 123.6), -76.2, 1, false); + TestUtils.AreEqual(fmod(-0.0, 123.6), -0.0, 1, false); + TestUtils.AreEqual(fmod(0.0, 123.6), 0.0, 1, false); + TestUtils.AreEqual(fmod(323.4, 123.6), 76.2, 1, false); + TestUtils.AreEqual(fmod(double.PositiveInfinity, 123.6), double.NaN, 1, false); + TestUtils.AreEqual(fmod(double.NaN, 123.6), double.NaN, 1, false); + TestUtils.AreEqual(fmod(double.NegativeInfinity, double.PositiveInfinity), double.NaN, 1, false); + TestUtils.AreEqual(fmod(-323.4, double.PositiveInfinity), -323.4, 1, false); + TestUtils.AreEqual(fmod(-0.0, double.PositiveInfinity), -0.0, 1, false); + TestUtils.AreEqual(fmod(0.0, double.PositiveInfinity), 0.0, 1, false); + TestUtils.AreEqual(fmod(323.4, double.PositiveInfinity), 323.4, 1, false); + TestUtils.AreEqual(fmod(double.PositiveInfinity, double.PositiveInfinity), double.NaN, 1, false); + TestUtils.AreEqual(fmod(double.NaN, double.PositiveInfinity), double.NaN, 1, false); + TestUtils.AreEqual(fmod(double.NegativeInfinity, double.NaN), double.NaN, 1, false); + TestUtils.AreEqual(fmod(-323.4, double.NaN), double.NaN, 1, false); + TestUtils.AreEqual(fmod(-0.0, double.NaN), double.NaN, 1, false); + TestUtils.AreEqual(fmod(0.0, double.NaN), double.NaN, 1, false); + TestUtils.AreEqual(fmod(323.4, double.NaN), double.NaN, 1, false); + TestUtils.AreEqual(fmod(double.PositiveInfinity, double.NaN), double.NaN, 1, false); + TestUtils.AreEqual(fmod(double.NaN, double.NaN), double.NaN, 1, false); + } + + [TestCompiler] + public static void fmod_double2() + { + TestUtils.AreEqual(fmod(double2(double.NegativeInfinity, -323.4), double2(double.NegativeInfinity, double.NegativeInfinity)), double2(double.NaN, -323.4), 1, false); + TestUtils.AreEqual(fmod(double2(-0.0, 0.0), double2(double.NegativeInfinity, double.NegativeInfinity)), double2(-0.0, 0.0), 1, false); + TestUtils.AreEqual(fmod(double2(323.4, double.PositiveInfinity), double2(double.NegativeInfinity, double.NegativeInfinity)), double2(323.4, double.NaN), 1, false); + TestUtils.AreEqual(fmod(double2(double.NaN, double.NegativeInfinity), double2(double.NegativeInfinity, -123.6)), double2(double.NaN, double.NaN), 1, false); + TestUtils.AreEqual(fmod(double2(-323.4, -0.0), double2(-123.6, -123.6)), double2(-76.2, -0.0), 1, false); + TestUtils.AreEqual(fmod(double2(0.0, 323.4), double2(-123.6, -123.6)), double2(0.0, 76.2), 1, false); + TestUtils.AreEqual(fmod(double2(double.PositiveInfinity, double.NaN), double2(-123.6, -123.6)), double2(double.NaN, double.NaN), 1, false); + TestUtils.AreEqual(fmod(double2(double.NegativeInfinity, -323.4), double2(-0.0, -0.0)), double2(double.NaN, double.NaN), 1, false); + TestUtils.AreEqual(fmod(double2(-0.0, 0.0), double2(-0.0, -0.0)), double2(double.NaN, double.NaN), 1, false); + TestUtils.AreEqual(fmod(double2(323.4, double.PositiveInfinity), double2(-0.0, -0.0)), double2(double.NaN, double.NaN), 1, false); + TestUtils.AreEqual(fmod(double2(double.NaN, double.NegativeInfinity), double2(-0.0, 0.0)), double2(double.NaN, double.NaN), 1, false); + TestUtils.AreEqual(fmod(double2(-323.4, -0.0), double2(0.0, 0.0)), double2(double.NaN, double.NaN), 1, false); + TestUtils.AreEqual(fmod(double2(0.0, 323.4), double2(0.0, 0.0)), double2(double.NaN, double.NaN), 1, false); + TestUtils.AreEqual(fmod(double2(double.PositiveInfinity, double.NaN), double2(0.0, 0.0)), double2(double.NaN, double.NaN), 1, false); + TestUtils.AreEqual(fmod(double2(double.NegativeInfinity, -323.4), double2(123.6, 123.6)), double2(double.NaN, -76.2), 1, false); + TestUtils.AreEqual(fmod(double2(-0.0, 0.0), double2(123.6, 123.6)), double2(-0.0, 0.0), 1, false); + TestUtils.AreEqual(fmod(double2(323.4, double.PositiveInfinity), double2(123.6, 123.6)), double2(76.2, double.NaN), 1, false); + TestUtils.AreEqual(fmod(double2(double.NaN, double.NegativeInfinity), double2(123.6, double.PositiveInfinity)), double2(double.NaN, double.NaN), 1, false); + TestUtils.AreEqual(fmod(double2(-323.4, -0.0), double2(double.PositiveInfinity, double.PositiveInfinity)), double2(-323.4, -0.0), 1, false); + TestUtils.AreEqual(fmod(double2(0.0, 323.4), double2(double.PositiveInfinity, double.PositiveInfinity)), double2(0.0, 323.4), 1, false); + TestUtils.AreEqual(fmod(double2(double.PositiveInfinity, double.NaN), double2(double.PositiveInfinity, double.PositiveInfinity)), double2(double.NaN, double.NaN), 1, false); + TestUtils.AreEqual(fmod(double2(double.NegativeInfinity, -323.4), double2(double.NaN, double.NaN)), double2(double.NaN, double.NaN), 1, false); + TestUtils.AreEqual(fmod(double2(-0.0, 0.0), double2(double.NaN, double.NaN)), double2(double.NaN, double.NaN), 1, false); + TestUtils.AreEqual(fmod(double2(323.4, double.PositiveInfinity), double2(double.NaN, double.NaN)), double2(double.NaN, double.NaN), 1, false); + TestUtils.AreEqual(fmod(double2(double.NaN, double.NaN), double2(double.NaN, double.NaN)), double2(double.NaN, double.NaN), 1, false); + } + + [TestCompiler] + public static void fmod_double3() + { + TestUtils.AreEqual(fmod(double3(double.NegativeInfinity, -323.4, -0.0), double3(double.NegativeInfinity, double.NegativeInfinity, double.NegativeInfinity)), double3(double.NaN, -323.4, -0.0), 1, false); + TestUtils.AreEqual(fmod(double3(0.0, 323.4, double.PositiveInfinity), double3(double.NegativeInfinity, double.NegativeInfinity, double.NegativeInfinity)), double3(0.0, 323.4, double.NaN), 1, false); + TestUtils.AreEqual(fmod(double3(double.NaN, double.NegativeInfinity, -323.4), double3(double.NegativeInfinity, -123.6, -123.6)), double3(double.NaN, double.NaN, -76.2), 1, false); + TestUtils.AreEqual(fmod(double3(-0.0, 0.0, 323.4), double3(-123.6, -123.6, -123.6)), double3(-0.0, 0.0, 76.2), 1, false); + TestUtils.AreEqual(fmod(double3(double.PositiveInfinity, double.NaN, double.NegativeInfinity), double3(-123.6, -123.6, -0.0)), double3(double.NaN, double.NaN, double.NaN), 1, false); + TestUtils.AreEqual(fmod(double3(-323.4, -0.0, 0.0), double3(-0.0, -0.0, -0.0)), double3(double.NaN, double.NaN, double.NaN), 1, false); + TestUtils.AreEqual(fmod(double3(323.4, double.PositiveInfinity, double.NaN), double3(-0.0, -0.0, -0.0)), double3(double.NaN, double.NaN, double.NaN), 1, false); + TestUtils.AreEqual(fmod(double3(double.NegativeInfinity, -323.4, -0.0), double3(0.0, 0.0, 0.0)), double3(double.NaN, double.NaN, double.NaN), 1, false); + TestUtils.AreEqual(fmod(double3(0.0, 323.4, double.PositiveInfinity), double3(0.0, 0.0, 0.0)), double3(double.NaN, double.NaN, double.NaN), 1, false); + TestUtils.AreEqual(fmod(double3(double.NaN, double.NegativeInfinity, -323.4), double3(0.0, 123.6, 123.6)), double3(double.NaN, double.NaN, -76.2), 1, false); + TestUtils.AreEqual(fmod(double3(-0.0, 0.0, 323.4), double3(123.6, 123.6, 123.6)), double3(-0.0, 0.0, 76.2), 1, false); + TestUtils.AreEqual(fmod(double3(double.PositiveInfinity, double.NaN, double.NegativeInfinity), double3(123.6, 123.6, double.PositiveInfinity)), double3(double.NaN, double.NaN, double.NaN), 1, false); + TestUtils.AreEqual(fmod(double3(-323.4, -0.0, 0.0), double3(double.PositiveInfinity, double.PositiveInfinity, double.PositiveInfinity)), double3(-323.4, -0.0, 0.0), 1, false); + TestUtils.AreEqual(fmod(double3(323.4, double.PositiveInfinity, double.NaN), double3(double.PositiveInfinity, double.PositiveInfinity, double.PositiveInfinity)), double3(323.4, double.NaN, double.NaN), 1, false); + TestUtils.AreEqual(fmod(double3(double.NegativeInfinity, -323.4, -0.0), double3(double.NaN, double.NaN, double.NaN)), double3(double.NaN, double.NaN, double.NaN), 1, false); + TestUtils.AreEqual(fmod(double3(0.0, 323.4, double.PositiveInfinity), double3(double.NaN, double.NaN, double.NaN)), double3(double.NaN, double.NaN, double.NaN), 1, false); + TestUtils.AreEqual(fmod(double3(double.NaN, double.NaN, double.NaN), double3(double.NaN, double.NaN, double.NaN)), double3(double.NaN, double.NaN, double.NaN), 1, false); + } + + [TestCompiler] + public static void fmod_double4() + { + TestUtils.AreEqual(fmod(double4(double.NegativeInfinity, -323.4, -0.0, 0.0), double4(double.NegativeInfinity, double.NegativeInfinity, double.NegativeInfinity, double.NegativeInfinity)), double4(double.NaN, -323.4, -0.0, 0.0), 1, false); + TestUtils.AreEqual(fmod(double4(323.4, double.PositiveInfinity, double.NaN, double.NegativeInfinity), double4(double.NegativeInfinity, double.NegativeInfinity, double.NegativeInfinity, -123.6)), double4(323.4, double.NaN, double.NaN, double.NaN), 1, false); + TestUtils.AreEqual(fmod(double4(-323.4, -0.0, 0.0, 323.4), double4(-123.6, -123.6, -123.6, -123.6)), double4(-76.2, -0.0, 0.0, 76.2), 1, false); + TestUtils.AreEqual(fmod(double4(double.PositiveInfinity, double.NaN, double.NegativeInfinity, -323.4), double4(-123.6, -123.6, -0.0, -0.0)), double4(double.NaN, double.NaN, double.NaN, double.NaN), 1, false); + TestUtils.AreEqual(fmod(double4(-0.0, 0.0, 323.4, double.PositiveInfinity), double4(-0.0, -0.0, -0.0, -0.0)), double4(double.NaN, double.NaN, double.NaN, double.NaN), 1, false); + TestUtils.AreEqual(fmod(double4(double.NaN, double.NegativeInfinity, -323.4, -0.0), double4(-0.0, 0.0, 0.0, 0.0)), double4(double.NaN, double.NaN, double.NaN, double.NaN), 1, false); + TestUtils.AreEqual(fmod(double4(0.0, 323.4, double.PositiveInfinity, double.NaN), double4(0.0, 0.0, 0.0, 0.0)), double4(double.NaN, double.NaN, double.NaN, double.NaN), 1, false); + TestUtils.AreEqual(fmod(double4(double.NegativeInfinity, -323.4, -0.0, 0.0), double4(123.6, 123.6, 123.6, 123.6)), double4(double.NaN, -76.2, -0.0, 0.0), 1, false); + TestUtils.AreEqual(fmod(double4(323.4, double.PositiveInfinity, double.NaN, double.NegativeInfinity), double4(123.6, 123.6, 123.6, double.PositiveInfinity)), double4(76.2, double.NaN, double.NaN, double.NaN), 1, false); + TestUtils.AreEqual(fmod(double4(-323.4, -0.0, 0.0, 323.4), double4(double.PositiveInfinity, double.PositiveInfinity, double.PositiveInfinity, double.PositiveInfinity)), double4(-323.4, -0.0, 0.0, 323.4), 1, false); + TestUtils.AreEqual(fmod(double4(double.PositiveInfinity, double.NaN, double.NegativeInfinity, -323.4), double4(double.PositiveInfinity, double.PositiveInfinity, double.NaN, double.NaN)), double4(double.NaN, double.NaN, double.NaN, double.NaN), 1, false); + TestUtils.AreEqual(fmod(double4(-0.0, 0.0, 323.4, double.PositiveInfinity), double4(double.NaN, double.NaN, double.NaN, double.NaN)), double4(double.NaN, double.NaN, double.NaN, double.NaN), 1, false); + TestUtils.AreEqual(fmod(double4(double.NaN, double.NaN, double.NaN, double.NaN), double4(double.NaN, double.NaN, double.NaN, double.NaN)), double4(double.NaN, double.NaN, double.NaN, double.NaN), 1, false); + } + + [TestCompiler] + public static void pow_float() + { + TestUtils.AreEqual(pow(float.NegativeInfinity, float.NegativeInfinity), 0f, 1, false); + TestUtils.AreEqual(pow(-3.4f, float.NegativeInfinity), 0f, 1, false); + TestUtils.AreEqual(pow(-0.0f, float.NegativeInfinity), float.PositiveInfinity, 1, false); + TestUtils.AreEqual(pow(0f, float.NegativeInfinity), float.PositiveInfinity, 1, false); + TestUtils.AreEqual(pow(3.4f, float.NegativeInfinity), 0f, 1, false); + TestUtils.AreEqual(pow(float.PositiveInfinity, float.NegativeInfinity), 0f, 1, false); + TestUtils.AreEqual(pow(float.NaN, float.NegativeInfinity), float.NaN, 1, false); + TestUtils.AreEqual(pow(float.NegativeInfinity, -2.6f), 0f, 1, false); + TestUtils.AreEqual(pow(-3.4f, -2.6f), float.NaN, 1, false); + TestUtils.AreEqual(pow(-0.0f, -2.6f), float.PositiveInfinity, 1, false); + TestUtils.AreEqual(pow(0f, -2.6f), float.PositiveInfinity, 1, false); + TestUtils.AreEqual(pow(3.4f, -2.6f), 0.0415102f, 1, false); + TestUtils.AreEqual(pow(float.PositiveInfinity, -2.6f), 0f, 1, false); + TestUtils.AreEqual(pow(float.NaN, -2.6f), float.NaN, 1, false); + TestUtils.AreEqual(pow(float.NegativeInfinity, -0.0f), 1f, 1, false); + TestUtils.AreEqual(pow(-3.4f, -0.0f), 1f, 1, false); + TestUtils.AreEqual(pow(-0.0f, -0.0f), 1f, 1, false); + TestUtils.AreEqual(pow(0f, -0.0f), 1f, 1, false); + TestUtils.AreEqual(pow(3.4f, -0.0f), 1f, 1, false); + TestUtils.AreEqual(pow(float.PositiveInfinity, -0.0f), 1f, 1, false); + TestUtils.AreEqual(pow(float.NegativeInfinity, 0f), 1f, 1, false); + TestUtils.AreEqual(pow(-3.4f, 0f), 1f, 1, false); + TestUtils.AreEqual(pow(-0.0f, 0f), 1f, 1, false); + TestUtils.AreEqual(pow(0f, 0f), 1f, 1, false); + TestUtils.AreEqual(pow(3.4f, 0f), 1f, 1, false); + TestUtils.AreEqual(pow(float.PositiveInfinity, 0f), 1f, 1, false); + TestUtils.AreEqual(pow(float.NegativeInfinity, 2.6f), float.PositiveInfinity, 1, false); + TestUtils.AreEqual(pow(-3.4f, 2.6f), float.NaN, 1, false); + TestUtils.AreEqual(pow(-0.0f, 2.6f), 0f, 1, false); + TestUtils.AreEqual(pow(0f, 2.6f), 0f, 1, false); + TestUtils.AreEqual(pow(3.4f, 2.6f), 24.0904655f, 1, false); + TestUtils.AreEqual(pow(float.PositiveInfinity, 2.6f), float.PositiveInfinity, 1, false); + TestUtils.AreEqual(pow(float.NaN, 2.6f), float.NaN, 1, false); + TestUtils.AreEqual(pow(float.NegativeInfinity, float.PositiveInfinity), float.PositiveInfinity, 1, false); + TestUtils.AreEqual(pow(-3.4f, float.PositiveInfinity), float.PositiveInfinity, 1, false); + TestUtils.AreEqual(pow(-0.0f, float.PositiveInfinity), 0f, 1, false); + TestUtils.AreEqual(pow(0f, float.PositiveInfinity), 0f, 1, false); + TestUtils.AreEqual(pow(3.4f, float.PositiveInfinity), float.PositiveInfinity, 1, false); + TestUtils.AreEqual(pow(float.PositiveInfinity, float.PositiveInfinity), float.PositiveInfinity, 1, false); + TestUtils.AreEqual(pow(float.NaN, float.PositiveInfinity), float.NaN, 1, false); + TestUtils.AreEqual(pow(float.NegativeInfinity, float.NaN), float.NaN, 1, false); + TestUtils.AreEqual(pow(-3.4f, float.NaN), float.NaN, 1, false); + TestUtils.AreEqual(pow(-0.0f, float.NaN), float.NaN, 1, false); + TestUtils.AreEqual(pow(0f, float.NaN), float.NaN, 1, false); + TestUtils.AreEqual(pow(3.4f, float.NaN), float.NaN, 1, false); + TestUtils.AreEqual(pow(float.PositiveInfinity, float.NaN), float.NaN, 1, false); + TestUtils.AreEqual(pow(float.NaN, float.NaN), float.NaN, 1, false); + } + + [TestCompiler] + public static void pow_float2() + { + TestUtils.AreEqual(pow(float2(float.NegativeInfinity, -3.4f), float2(float.NegativeInfinity, float.NegativeInfinity)), float2(0f, 0f), 1, false); + TestUtils.AreEqual(pow(float2(-0.0f, 0f), float2(float.NegativeInfinity, float.NegativeInfinity)), float2(float.PositiveInfinity, float.PositiveInfinity), 1, false); + TestUtils.AreEqual(pow(float2(3.4f, float.PositiveInfinity), float2(float.NegativeInfinity, float.NegativeInfinity)), float2(0f, 0f), 1, false); + TestUtils.AreEqual(pow(float2(float.NaN, float.NegativeInfinity), float2(float.NegativeInfinity, -2.6f)), float2(float.NaN, 0f), 1, false); + TestUtils.AreEqual(pow(float2(-3.4f, -0.0f), float2(-2.6f, -2.6f)), float2(float.NaN, float.PositiveInfinity), 1, false); + TestUtils.AreEqual(pow(float2(0f, 3.4f), float2(-2.6f, -2.6f)), float2(float.PositiveInfinity, 0.0415102f), 1, false); + TestUtils.AreEqual(pow(float2(float.PositiveInfinity, float.NaN), float2(-2.6f, -2.6f)), float2(0f, float.NaN), 1, false); + TestUtils.AreEqual(pow(float2(float.NegativeInfinity, -3.4f), float2(-0.0f, -0.0f)), float2(1f, 1f), 1, false); + TestUtils.AreEqual(pow(float2(-0.0f, 0f), float2(-0.0f, -0.0f)), float2(1f, 1f), 1, false); + TestUtils.AreEqual(pow(float2(3.4f, float.PositiveInfinity), float2(-0.0f, -0.0f)), float2(1f, 1f), 1, false); + TestUtils.AreEqual(pow(float2(float.NegativeInfinity, -3.4f), float2(0f, 0f)), float2(1f, 1f), 1, false); + TestUtils.AreEqual(pow(float2(-0.0f, 0f), float2(0f, 0f)), float2(1f, 1f), 1, false); + TestUtils.AreEqual(pow(float2(3.4f, float.PositiveInfinity), float2(0f, 0f)), float2(1f, 1f), 1, false); + TestUtils.AreEqual(pow(float2(float.NegativeInfinity, -3.4f), float2(2.6f, 2.6f)), float2(float.PositiveInfinity, float.NaN), 1, false); + TestUtils.AreEqual(pow(float2(-0.0f, 0f), float2(2.6f, 2.6f)), float2(0f, 0f), 1, false); + TestUtils.AreEqual(pow(float2(3.4f, float.PositiveInfinity), float2(2.6f, 2.6f)), float2(24.0904655f, float.PositiveInfinity), 1, false); + TestUtils.AreEqual(pow(float2(float.NaN, float.NegativeInfinity), float2(2.6f, float.PositiveInfinity)), float2(float.NaN, float.PositiveInfinity), 1, false); + TestUtils.AreEqual(pow(float2(-3.4f, -0.0f), float2(float.PositiveInfinity, float.PositiveInfinity)), float2(float.PositiveInfinity, 0f), 1, false); + TestUtils.AreEqual(pow(float2(0f, 3.4f), float2(float.PositiveInfinity, float.PositiveInfinity)), float2(0f, float.PositiveInfinity), 1, false); + TestUtils.AreEqual(pow(float2(float.PositiveInfinity, float.NaN), float2(float.PositiveInfinity, float.PositiveInfinity)), float2(float.PositiveInfinity, float.NaN), 1, false); + TestUtils.AreEqual(pow(float2(float.NegativeInfinity, -3.4f), float2(float.NaN, float.NaN)), float2(float.NaN, float.NaN), 1, false); + TestUtils.AreEqual(pow(float2(-0.0f, 0f), float2(float.NaN, float.NaN)), float2(float.NaN, float.NaN), 1, false); + TestUtils.AreEqual(pow(float2(3.4f, float.PositiveInfinity), float2(float.NaN, float.NaN)), float2(float.NaN, float.NaN), 1, false); + TestUtils.AreEqual(pow(float2(float.NaN, float.NaN), float2(float.NaN, float.NaN)), float2(float.NaN, float.NaN), 1, false); + } + + [TestCompiler] + public static void pow_float3() + { + TestUtils.AreEqual(pow(float3(float.NegativeInfinity, -3.4f, -0.0f), float3(float.NegativeInfinity, float.NegativeInfinity, float.NegativeInfinity)), float3(0f, 0f, float.PositiveInfinity), 1, false); + TestUtils.AreEqual(pow(float3(0f, 3.4f, float.PositiveInfinity), float3(float.NegativeInfinity, float.NegativeInfinity, float.NegativeInfinity)), float3(float.PositiveInfinity, 0f, 0f), 1, false); + TestUtils.AreEqual(pow(float3(float.NaN, float.NegativeInfinity, -3.4f), float3(float.NegativeInfinity, -2.6f, -2.6f)), float3(float.NaN, 0f, float.NaN), 1, false); + TestUtils.AreEqual(pow(float3(-0.0f, 0f, 3.4f), float3(-2.6f, -2.6f, -2.6f)), float3(float.PositiveInfinity, float.PositiveInfinity, 0.0415102f), 1, false); + TestUtils.AreEqual(pow(float3(float.PositiveInfinity, float.NaN, float.NegativeInfinity), float3(-2.6f, -2.6f, -0.0f)), float3(0f, float.NaN, 1f), 1, false); + TestUtils.AreEqual(pow(float3(-3.4f, -0.0f, 0f), float3(-0.0f, -0.0f, -0.0f)), float3(1f, 1f, 1f), 1, false); + TestUtils.AreEqual(pow(float3(3.4f, float.PositiveInfinity, float.NegativeInfinity), float3(-0.0f, -0.0f, 0f)), float3(1f, 1f, 1f), 1, false); + TestUtils.AreEqual(pow(float3(-3.4f, -0.0f, 0f), float3(0f, 0f, 0f)), float3(1f, 1f, 1f), 1, false); + TestUtils.AreEqual(pow(float3(3.4f, float.PositiveInfinity, float.NegativeInfinity), float3(0f, 0f, 2.6f)), float3(1f, 1f, float.PositiveInfinity), 1, false); + TestUtils.AreEqual(pow(float3(-3.4f, -0.0f, 0f), float3(2.6f, 2.6f, 2.6f)), float3(float.NaN, 0f, 0f), 1, false); + TestUtils.AreEqual(pow(float3(3.4f, float.PositiveInfinity, float.NaN), float3(2.6f, 2.6f, 2.6f)), float3(24.0904655f, float.PositiveInfinity, float.NaN), 1, false); + TestUtils.AreEqual(pow(float3(float.NegativeInfinity, -3.4f, -0.0f), float3(float.PositiveInfinity, float.PositiveInfinity, float.PositiveInfinity)), float3(float.PositiveInfinity, float.PositiveInfinity, 0f), 1, false); + TestUtils.AreEqual(pow(float3(0f, 3.4f, float.PositiveInfinity), float3(float.PositiveInfinity, float.PositiveInfinity, float.PositiveInfinity)), float3(0f, float.PositiveInfinity, float.PositiveInfinity), 1, false); + TestUtils.AreEqual(pow(float3(float.NaN, float.NegativeInfinity, -3.4f), float3(float.PositiveInfinity, float.NaN, float.NaN)), float3(float.NaN, float.NaN, float.NaN), 1, false); + TestUtils.AreEqual(pow(float3(-0.0f, 0f, 3.4f), float3(float.NaN, float.NaN, float.NaN)), float3(float.NaN, float.NaN, float.NaN), 1, false); + TestUtils.AreEqual(pow(float3(float.PositiveInfinity, float.NaN, float.NaN), float3(float.NaN, float.NaN, float.NaN)), float3(float.NaN, float.NaN, float.NaN), 1, false); + } + + [TestCompiler] + public static void pow_float4() + { + TestUtils.AreEqual(pow(float4(float.NegativeInfinity, -3.4f, -0.0f, 0f), float4(float.NegativeInfinity, float.NegativeInfinity, float.NegativeInfinity, float.NegativeInfinity)), float4(0f, 0f, float.PositiveInfinity, float.PositiveInfinity), 1, false); + TestUtils.AreEqual(pow(float4(3.4f, float.PositiveInfinity, float.NaN, float.NegativeInfinity), float4(float.NegativeInfinity, float.NegativeInfinity, float.NegativeInfinity, -2.6f)), float4(0f, 0f, float.NaN, 0f), 1, false); + TestUtils.AreEqual(pow(float4(-3.4f, -0.0f, 0f, 3.4f), float4(-2.6f, -2.6f, -2.6f, -2.6f)), float4(float.NaN, float.PositiveInfinity, float.PositiveInfinity, 0.0415102f), 1, false); + TestUtils.AreEqual(pow(float4(float.PositiveInfinity, float.NaN, float.NegativeInfinity, -3.4f), float4(-2.6f, -2.6f, -0.0f, -0.0f)), float4(0f, float.NaN, 1f, 1f), 1, false); + TestUtils.AreEqual(pow(float4(-0.0f, 0f, 3.4f, float.PositiveInfinity), float4(-0.0f, -0.0f, -0.0f, -0.0f)), float4(1f, 1f, 1f, 1f), 1, false); + TestUtils.AreEqual(pow(float4(float.NegativeInfinity, -3.4f, -0.0f, 0f), float4(0f, 0f, 0f, 0f)), float4(1f, 1f, 1f, 1f), 1, false); + TestUtils.AreEqual(pow(float4(3.4f, float.PositiveInfinity, float.NegativeInfinity, -3.4f), float4(0f, 0f, 2.6f, 2.6f)), float4(1f, 1f, float.PositiveInfinity, float.NaN), 1, false); + TestUtils.AreEqual(pow(float4(-0.0f, 0f, 3.4f, float.PositiveInfinity), float4(2.6f, 2.6f, 2.6f, 2.6f)), float4(0f, 0f, 24.0904655f, float.PositiveInfinity), 1, false); + TestUtils.AreEqual(pow(float4(float.NaN, float.NegativeInfinity, -3.4f, -0.0f), float4(2.6f, float.PositiveInfinity, float.PositiveInfinity, float.PositiveInfinity)), float4(float.NaN, float.PositiveInfinity, float.PositiveInfinity, 0f), 1, false); + TestUtils.AreEqual(pow(float4(0f, 3.4f, float.PositiveInfinity, float.NaN), float4(float.PositiveInfinity, float.PositiveInfinity, float.PositiveInfinity, float.PositiveInfinity)), float4(0f, float.PositiveInfinity, float.PositiveInfinity, float.NaN), 1, false); + TestUtils.AreEqual(pow(float4(float.NegativeInfinity, -3.4f, -0.0f, 0f), float4(float.NaN, float.NaN, float.NaN, float.NaN)), float4(float.NaN, float.NaN, float.NaN, float.NaN), 1, false); + TestUtils.AreEqual(pow(float4(3.4f, float.PositiveInfinity, float.NaN, float.NaN), float4(float.NaN, float.NaN, float.NaN, float.NaN)), float4(float.NaN, float.NaN, float.NaN, float.NaN), 1, false); + } + + [TestCompiler] + public static void pow_double() + { + TestUtils.AreEqual(pow(double.NegativeInfinity, double.NegativeInfinity), 0.0, 1, false); + TestUtils.AreEqual(pow(-3.4, double.NegativeInfinity), 0.0, 1, false); + TestUtils.AreEqual(pow(-0.0, double.NegativeInfinity), double.PositiveInfinity, 1, false); + TestUtils.AreEqual(pow(0.0, double.NegativeInfinity), double.PositiveInfinity, 1, false); + TestUtils.AreEqual(pow(3.4, double.NegativeInfinity), 0.0, 1, false); + TestUtils.AreEqual(pow(double.PositiveInfinity, double.NegativeInfinity), 0.0, 1, false); + TestUtils.AreEqual(pow(double.NaN, double.NegativeInfinity), double.NaN, 1, false); + TestUtils.AreEqual(pow(double.NegativeInfinity, -2.6), 0.0, 1, false); + TestUtils.AreEqual(pow(-3.4, -2.6), double.NaN, 1, false); + TestUtils.AreEqual(pow(-0.0, -2.6), double.PositiveInfinity, 1, false); + TestUtils.AreEqual(pow(0.0, -2.6), double.PositiveInfinity, 1, false); + TestUtils.AreEqual(pow(3.4, -2.6), 0.041510199028461224, 1, false); + TestUtils.AreEqual(pow(double.PositiveInfinity, -2.6), 0.0, 1, false); + TestUtils.AreEqual(pow(double.NaN, -2.6), double.NaN, 1, false); + TestUtils.AreEqual(pow(double.NegativeInfinity, -0.0), 1.0, 1, false); + TestUtils.AreEqual(pow(-3.4, -0.0), 1.0, 1, false); + TestUtils.AreEqual(pow(-0.0, -0.0), 1.0, 1, false); + TestUtils.AreEqual(pow(0.0, -0.0), 1.0, 1, false); + TestUtils.AreEqual(pow(3.4, -0.0), 1.0, 1, false); + TestUtils.AreEqual(pow(double.PositiveInfinity, -0.0), 1.0, 1, false); + TestUtils.AreEqual(pow(double.NegativeInfinity, 0.0), 1.0, 1, false); + TestUtils.AreEqual(pow(-3.4, 0.0), 1.0, 1, false); + TestUtils.AreEqual(pow(-0.0, 0.0), 1.0, 1, false); + TestUtils.AreEqual(pow(0.0, 0.0), 1.0, 1, false); + TestUtils.AreEqual(pow(3.4, 0.0), 1.0, 1, false); + TestUtils.AreEqual(pow(double.PositiveInfinity, 0.0), 1.0, 1, false); + TestUtils.AreEqual(pow(double.NegativeInfinity, 2.6), double.PositiveInfinity, 1, false); + TestUtils.AreEqual(pow(-3.4, 2.6), double.NaN, 1, false); + TestUtils.AreEqual(pow(-0.0, 2.6), 0.0, 1, false); + TestUtils.AreEqual(pow(0.0, 2.6), 0.0, 1, false); + TestUtils.AreEqual(pow(3.4, 2.6), 24.090465076169735, 1, false); + TestUtils.AreEqual(pow(double.PositiveInfinity, 2.6), double.PositiveInfinity, 1, false); + TestUtils.AreEqual(pow(double.NaN, 2.6), double.NaN, 1, false); + TestUtils.AreEqual(pow(double.NegativeInfinity, double.PositiveInfinity), double.PositiveInfinity, 1, false); + TestUtils.AreEqual(pow(-3.4, double.PositiveInfinity), double.PositiveInfinity, 1, false); + TestUtils.AreEqual(pow(-0.0, double.PositiveInfinity), 0.0, 1, false); + TestUtils.AreEqual(pow(0.0, double.PositiveInfinity), 0.0, 1, false); + TestUtils.AreEqual(pow(3.4, double.PositiveInfinity), double.PositiveInfinity, 1, false); + TestUtils.AreEqual(pow(double.PositiveInfinity, double.PositiveInfinity), double.PositiveInfinity, 1, false); + TestUtils.AreEqual(pow(double.NaN, double.PositiveInfinity), double.NaN, 1, false); + TestUtils.AreEqual(pow(double.NegativeInfinity, double.NaN), double.NaN, 1, false); + TestUtils.AreEqual(pow(-3.4, double.NaN), double.NaN, 1, false); + TestUtils.AreEqual(pow(-0.0, double.NaN), double.NaN, 1, false); + TestUtils.AreEqual(pow(0.0, double.NaN), double.NaN, 1, false); + TestUtils.AreEqual(pow(3.4, double.NaN), double.NaN, 1, false); + TestUtils.AreEqual(pow(double.PositiveInfinity, double.NaN), double.NaN, 1, false); + TestUtils.AreEqual(pow(double.NaN, double.NaN), double.NaN, 1, false); + } + + [TestCompiler] + public static void pow_double2() + { + TestUtils.AreEqual(pow(double2(double.NegativeInfinity, -3.4), double2(double.NegativeInfinity, double.NegativeInfinity)), double2(0.0, 0.0), 1, false); + TestUtils.AreEqual(pow(double2(-0.0, 0.0), double2(double.NegativeInfinity, double.NegativeInfinity)), double2(double.PositiveInfinity, double.PositiveInfinity), 1, false); + TestUtils.AreEqual(pow(double2(3.4, double.PositiveInfinity), double2(double.NegativeInfinity, double.NegativeInfinity)), double2(0.0, 0.0), 1, false); + TestUtils.AreEqual(pow(double2(double.NaN, double.NegativeInfinity), double2(double.NegativeInfinity, -2.6)), double2(double.NaN, 0.0), 1, false); + TestUtils.AreEqual(pow(double2(-3.4, -0.0), double2(-2.6, -2.6)), double2(double.NaN, double.PositiveInfinity), 1, false); + TestUtils.AreEqual(pow(double2(0.0, 3.4), double2(-2.6, -2.6)), double2(double.PositiveInfinity, 0.041510199028461224), 1, false); + TestUtils.AreEqual(pow(double2(double.PositiveInfinity, double.NaN), double2(-2.6, -2.6)), double2(0.0, double.NaN), 1, false); + TestUtils.AreEqual(pow(double2(double.NegativeInfinity, -3.4), double2(-0.0, -0.0)), double2(1.0, 1.0), 1, false); + TestUtils.AreEqual(pow(double2(-0.0, 0.0), double2(-0.0, -0.0)), double2(1.0, 1.0), 1, false); + TestUtils.AreEqual(pow(double2(3.4, double.PositiveInfinity), double2(-0.0, -0.0)), double2(1.0, 1.0), 1, false); + TestUtils.AreEqual(pow(double2(double.NegativeInfinity, -3.4), double2(0.0, 0.0)), double2(1.0, 1.0), 1, false); + TestUtils.AreEqual(pow(double2(-0.0, 0.0), double2(0.0, 0.0)), double2(1.0, 1.0), 1, false); + TestUtils.AreEqual(pow(double2(3.4, double.PositiveInfinity), double2(0.0, 0.0)), double2(1.0, 1.0), 1, false); + TestUtils.AreEqual(pow(double2(double.NegativeInfinity, -3.4), double2(2.6, 2.6)), double2(double.PositiveInfinity, double.NaN), 1, false); + TestUtils.AreEqual(pow(double2(-0.0, 0.0), double2(2.6, 2.6)), double2(0.0, 0.0), 1, false); + TestUtils.AreEqual(pow(double2(3.4, double.PositiveInfinity), double2(2.6, 2.6)), double2(24.090465076169735, double.PositiveInfinity), 1, false); + TestUtils.AreEqual(pow(double2(double.NaN, double.NegativeInfinity), double2(2.6, double.PositiveInfinity)), double2(double.NaN, double.PositiveInfinity), 1, false); + TestUtils.AreEqual(pow(double2(-3.4, -0.0), double2(double.PositiveInfinity, double.PositiveInfinity)), double2(double.PositiveInfinity, 0.0), 1, false); + TestUtils.AreEqual(pow(double2(0.0, 3.4), double2(double.PositiveInfinity, double.PositiveInfinity)), double2(0.0, double.PositiveInfinity), 1, false); + TestUtils.AreEqual(pow(double2(double.PositiveInfinity, double.NaN), double2(double.PositiveInfinity, double.PositiveInfinity)), double2(double.PositiveInfinity, double.NaN), 1, false); + TestUtils.AreEqual(pow(double2(double.NegativeInfinity, -3.4), double2(double.NaN, double.NaN)), double2(double.NaN, double.NaN), 1, false); + TestUtils.AreEqual(pow(double2(-0.0, 0.0), double2(double.NaN, double.NaN)), double2(double.NaN, double.NaN), 1, false); + TestUtils.AreEqual(pow(double2(3.4, double.PositiveInfinity), double2(double.NaN, double.NaN)), double2(double.NaN, double.NaN), 1, false); + TestUtils.AreEqual(pow(double2(double.NaN, double.NaN), double2(double.NaN, double.NaN)), double2(double.NaN, double.NaN), 1, false); + } + + [TestCompiler] + public static void pow_double3() + { + TestUtils.AreEqual(pow(double3(double.NegativeInfinity, -3.4, -0.0), double3(double.NegativeInfinity, double.NegativeInfinity, double.NegativeInfinity)), double3(0.0, 0.0, double.PositiveInfinity), 1, false); + TestUtils.AreEqual(pow(double3(0.0, 3.4, double.PositiveInfinity), double3(double.NegativeInfinity, double.NegativeInfinity, double.NegativeInfinity)), double3(double.PositiveInfinity, 0.0, 0.0), 1, false); + TestUtils.AreEqual(pow(double3(double.NaN, double.NegativeInfinity, -3.4), double3(double.NegativeInfinity, -2.6, -2.6)), double3(double.NaN, 0.0, double.NaN), 1, false); + TestUtils.AreEqual(pow(double3(-0.0, 0.0, 3.4), double3(-2.6, -2.6, -2.6)), double3(double.PositiveInfinity, double.PositiveInfinity, 0.041510199028461224), 1, false); + TestUtils.AreEqual(pow(double3(double.PositiveInfinity, double.NaN, double.NegativeInfinity), double3(-2.6, -2.6, -0.0)), double3(0.0, double.NaN, 1.0), 1, false); + TestUtils.AreEqual(pow(double3(-3.4, -0.0, 0.0), double3(-0.0, -0.0, -0.0)), double3(1.0, 1.0, 1.0), 1, false); + TestUtils.AreEqual(pow(double3(3.4, double.PositiveInfinity, double.NegativeInfinity), double3(-0.0, -0.0, 0.0)), double3(1.0, 1.0, 1.0), 1, false); + TestUtils.AreEqual(pow(double3(-3.4, -0.0, 0.0), double3(0.0, 0.0, 0.0)), double3(1.0, 1.0, 1.0), 1, false); + TestUtils.AreEqual(pow(double3(3.4, double.PositiveInfinity, double.NegativeInfinity), double3(0.0, 0.0, 2.6)), double3(1.0, 1.0, double.PositiveInfinity), 1, false); + TestUtils.AreEqual(pow(double3(-3.4, -0.0, 0.0), double3(2.6, 2.6, 2.6)), double3(double.NaN, 0.0, 0.0), 1, false); + TestUtils.AreEqual(pow(double3(3.4, double.PositiveInfinity, double.NaN), double3(2.6, 2.6, 2.6)), double3(24.090465076169735, double.PositiveInfinity, double.NaN), 1, false); + TestUtils.AreEqual(pow(double3(double.NegativeInfinity, -3.4, -0.0), double3(double.PositiveInfinity, double.PositiveInfinity, double.PositiveInfinity)), double3(double.PositiveInfinity, double.PositiveInfinity, 0.0), 1, false); + TestUtils.AreEqual(pow(double3(0.0, 3.4, double.PositiveInfinity), double3(double.PositiveInfinity, double.PositiveInfinity, double.PositiveInfinity)), double3(0.0, double.PositiveInfinity, double.PositiveInfinity), 1, false); + TestUtils.AreEqual(pow(double3(double.NaN, double.NegativeInfinity, -3.4), double3(double.PositiveInfinity, double.NaN, double.NaN)), double3(double.NaN, double.NaN, double.NaN), 1, false); + TestUtils.AreEqual(pow(double3(-0.0, 0.0, 3.4), double3(double.NaN, double.NaN, double.NaN)), double3(double.NaN, double.NaN, double.NaN), 1, false); + TestUtils.AreEqual(pow(double3(double.PositiveInfinity, double.NaN, double.NaN), double3(double.NaN, double.NaN, double.NaN)), double3(double.NaN, double.NaN, double.NaN), 1, false); + } + + [TestCompiler] + public static void pow_double4() + { + TestUtils.AreEqual(pow(double4(double.NegativeInfinity, -3.4, -0.0, 0.0), double4(double.NegativeInfinity, double.NegativeInfinity, double.NegativeInfinity, double.NegativeInfinity)), double4(0.0, 0.0, double.PositiveInfinity, double.PositiveInfinity), 1, false); + TestUtils.AreEqual(pow(double4(3.4, double.PositiveInfinity, double.NaN, double.NegativeInfinity), double4(double.NegativeInfinity, double.NegativeInfinity, double.NegativeInfinity, -2.6)), double4(0.0, 0.0, double.NaN, 0.0), 1, false); + TestUtils.AreEqual(pow(double4(-3.4, -0.0, 0.0, 3.4), double4(-2.6, -2.6, -2.6, -2.6)), double4(double.NaN, double.PositiveInfinity, double.PositiveInfinity, 0.041510199028461224), 1, false); + TestUtils.AreEqual(pow(double4(double.PositiveInfinity, double.NaN, double.NegativeInfinity, -3.4), double4(-2.6, -2.6, -0.0, -0.0)), double4(0.0, double.NaN, 1.0, 1.0), 1, false); + TestUtils.AreEqual(pow(double4(-0.0, 0.0, 3.4, double.PositiveInfinity), double4(-0.0, -0.0, -0.0, -0.0)), double4(1.0, 1.0, 1.0, 1.0), 1, false); + TestUtils.AreEqual(pow(double4(double.NegativeInfinity, -3.4, -0.0, 0.0), double4(0.0, 0.0, 0.0, 0.0)), double4(1.0, 1.0, 1.0, 1.0), 1, false); + TestUtils.AreEqual(pow(double4(3.4, double.PositiveInfinity, double.NegativeInfinity, -3.4), double4(0.0, 0.0, 2.6, 2.6)), double4(1.0, 1.0, double.PositiveInfinity, double.NaN), 1, false); + TestUtils.AreEqual(pow(double4(-0.0, 0.0, 3.4, double.PositiveInfinity), double4(2.6, 2.6, 2.6, 2.6)), double4(0.0, 0.0, 24.090465076169735, double.PositiveInfinity), 1, false); + TestUtils.AreEqual(pow(double4(double.NaN, double.NegativeInfinity, -3.4, -0.0), double4(2.6, double.PositiveInfinity, double.PositiveInfinity, double.PositiveInfinity)), double4(double.NaN, double.PositiveInfinity, double.PositiveInfinity, 0.0), 1, false); + TestUtils.AreEqual(pow(double4(0.0, 3.4, double.PositiveInfinity, double.NaN), double4(double.PositiveInfinity, double.PositiveInfinity, double.PositiveInfinity, double.PositiveInfinity)), double4(0.0, double.PositiveInfinity, double.PositiveInfinity, double.NaN), 1, false); + TestUtils.AreEqual(pow(double4(double.NegativeInfinity, -3.4, -0.0, 0.0), double4(double.NaN, double.NaN, double.NaN, double.NaN)), double4(double.NaN, double.NaN, double.NaN, double.NaN), 1, false); + TestUtils.AreEqual(pow(double4(3.4, double.PositiveInfinity, double.NaN, double.NaN), double4(double.NaN, double.NaN, double.NaN, double.NaN)), double4(double.NaN, double.NaN, double.NaN, double.NaN), 1, false); + } + + [TestCompiler] + public static void ceilpow2_int() + { + TestUtils.AreEqual(ceilpow2(0), 0); + TestUtils.AreEqual(ceilpow2(1), 1); + TestUtils.AreEqual(ceilpow2(2), 2); + TestUtils.AreEqual(ceilpow2(3), 4); + TestUtils.AreEqual(ceilpow2(1019642234), 1073741824); + TestUtils.AreEqual(ceilpow2(1823423423), -2147483648); + TestUtils.AreEqual(ceilpow2(-2147483647), 0); + } + + [TestCompiler] + public static void ceilpow2_int2() + { + TestUtils.AreEqual(ceilpow2(int2(0, 1)), int2(0, 1)); + TestUtils.AreEqual(ceilpow2(int2(2, 3)), int2(2, 4)); + TestUtils.AreEqual(ceilpow2(int2(1019642234, 1823423423)), int2(1073741824, -2147483648)); + TestUtils.AreEqual(ceilpow2(int2(-2147483647, -2147483647)), int2(0, 0)); + } + + [TestCompiler] + public static void ceilpow2_int3() + { + TestUtils.AreEqual(ceilpow2(int3(0, 1, 2)), int3(0, 1, 2)); + TestUtils.AreEqual(ceilpow2(int3(3, 1019642234, 1823423423)), int3(4, 1073741824, -2147483648)); + TestUtils.AreEqual(ceilpow2(int3(-2147483647, -2147483647, -2147483647)), int3(0, 0, 0)); + } + + [TestCompiler] + public static void ceilpow2_int4() + { + TestUtils.AreEqual(ceilpow2(int4(0, 1, 2, 3)), int4(0, 1, 2, 4)); + TestUtils.AreEqual(ceilpow2(int4(1019642234, 1823423423, -2147483647, -2147483647)), int4(1073741824, -2147483648, 0, 0)); + } + + [TestCompiler] + public static void ceilpow2_uint() + { + TestUtils.AreEqual(ceilpow2(0u), 0u); + TestUtils.AreEqual(ceilpow2(1u), 1u); + TestUtils.AreEqual(ceilpow2(2u), 2u); + TestUtils.AreEqual(ceilpow2(3u), 4u); + TestUtils.AreEqual(ceilpow2(1019642234u), 1073741824u); + TestUtils.AreEqual(ceilpow2(1823423423u), 2147483648u); + TestUtils.AreEqual(ceilpow2(4294967295u), 0u); + } + + [TestCompiler] + public static void ceilpow2_uint2() + { + TestUtils.AreEqual(ceilpow2(uint2(0u, 1u)), uint2(0u, 1u)); + TestUtils.AreEqual(ceilpow2(uint2(2u, 3u)), uint2(2u, 4u)); + TestUtils.AreEqual(ceilpow2(uint2(1019642234u, 1823423423u)), uint2(1073741824u, 2147483648u)); + TestUtils.AreEqual(ceilpow2(uint2(4294967295u, 4294967295u)), uint2(0u, 0u)); + } + + [TestCompiler] + public static void ceilpow2_uint3() + { + TestUtils.AreEqual(ceilpow2(uint3(0u, 1u, 2u)), uint3(0u, 1u, 2u)); + TestUtils.AreEqual(ceilpow2(uint3(3u, 1019642234u, 1823423423u)), uint3(4u, 1073741824u, 2147483648u)); + TestUtils.AreEqual(ceilpow2(uint3(4294967295u, 4294967295u, 4294967295u)), uint3(0u, 0u, 0u)); + } + + [TestCompiler] + public static void ceilpow2_uint4() + { + TestUtils.AreEqual(ceilpow2(uint4(0u, 1u, 2u, 3u)), uint4(0u, 1u, 2u, 4u)); + TestUtils.AreEqual(ceilpow2(uint4(1019642234u, 1823423423u, 4294967295u, 4294967295u)), uint4(1073741824u, 2147483648u, 0u, 0u)); + } + + [TestCompiler] + public static void ceilpow2_long() + { + TestUtils.AreEqual(ceilpow2(0L), 0L); + TestUtils.AreEqual(ceilpow2(1L), 1L); + TestUtils.AreEqual(ceilpow2(2L), 2L); + TestUtils.AreEqual(ceilpow2(3L), 4L); + TestUtils.AreEqual(ceilpow2(1019642234L), 1073741824L); + TestUtils.AreEqual(ceilpow2(1823423423L), 2147483648L); + TestUtils.AreEqual(ceilpow2(2147483648L), 2147483648L); + TestUtils.AreEqual(ceilpow2(4294967295L), 4294967296L); + TestUtils.AreEqual(ceilpow2(4294967296L), 4294967296L); + TestUtils.AreEqual(ceilpow2(7227372236554874814L), -9223372036854775808L); + TestUtils.AreEqual(ceilpow2(-100L), 0L); + } + + [TestCompiler] + public static void ceilpow2_ulong() + { + TestUtils.AreEqual(ceilpow2(0UL), 0UL); + TestUtils.AreEqual(ceilpow2(1UL), 1UL); + TestUtils.AreEqual(ceilpow2(2UL), 2UL); + TestUtils.AreEqual(ceilpow2(3UL), 4UL); + TestUtils.AreEqual(ceilpow2(1019642234UL), 1073741824UL); + TestUtils.AreEqual(ceilpow2(1823423423UL), 2147483648UL); + TestUtils.AreEqual(ceilpow2(2147483648UL), 2147483648UL); + TestUtils.AreEqual(ceilpow2(4294967295UL), 4294967296UL); + TestUtils.AreEqual(ceilpow2(4294967296UL), 4294967296UL); + TestUtils.AreEqual(ceilpow2(7227372236554874814UL), 9223372036854775808UL); + TestUtils.AreEqual(ceilpow2(10223372036854775808UL), 0UL); + } + + + } +} diff --git a/package/Tests/Tests/Shared/TestMath.gen.cs.meta b/package/Tests/Tests/Shared/TestMath.gen.cs.meta new file mode 100755 index 000000000..429eec9af --- /dev/null +++ b/package/Tests/Tests/Shared/TestMath.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 0a9baee454a793140a0be3d7d81d09ee +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/package/Tests/Tests/Shared/TestMatrix.cs b/package/Tests/Tests/Shared/TestMatrix.cs new file mode 100755 index 000000000..6912877b4 --- /dev/null +++ b/package/Tests/Tests/Shared/TestMatrix.cs @@ -0,0 +1,1152 @@ +using NUnit.Framework; +using static Unity.Mathematics.math; +using Burst.Compiler.IL.Tests; + +namespace Unity.Mathematics.Tests +{ + [TestFixture] + class TestMatrix + { + [TestCompiler] + public static void float2x2_constructor_columns() + { + float2x2 a = float2x2(float2(1.0f, 2.0f), + float2(3.0f, 4.0f)); + + TestUtils.AreEqual(a.c0.x, 1.0f); + TestUtils.AreEqual(a.c0.y, 2.0f); + TestUtils.AreEqual(a.c1.x, 3.0f); + TestUtils.AreEqual(a.c1.y, 4.0f); + } + + [TestCompiler] + public static void float3x3_constructor_columns() + { + float3x3 a = float3x3(float3(1.0f, 2.0f, 3.0f), + float3(4.0f, 5.0f, 6.0f), + float3(7.0f, 8.0f, 9.0f)); + + TestUtils.AreEqual(a.c0.x, 1.0f); + TestUtils.AreEqual(a.c0.y, 2.0f); + TestUtils.AreEqual(a.c0.z, 3.0f); + TestUtils.AreEqual(a.c1.x, 4.0f); + TestUtils.AreEqual(a.c1.y, 5.0f); + TestUtils.AreEqual(a.c1.z, 6.0f); + TestUtils.AreEqual(a.c2.x, 7.0f); + TestUtils.AreEqual(a.c2.y, 8.0f); + TestUtils.AreEqual(a.c2.z, 9.0f); + } + + [TestCompiler] + public static void float4x4_constructor_columns() + { + float4x4 a = float4x4(float4( 1.0f, 2.0f, 3.0f, 4.0f), + float4( 5.0f, 6.0f, 7.0f, 8.0f), + float4( 9.0f, 10.0f, 11.0f, 12.0f), + float4(13.0f, 14.0f, 15.0f, 16.0f)); + + TestUtils.AreEqual(a.c0.x, 1.0f); + TestUtils.AreEqual(a.c0.y, 2.0f); + TestUtils.AreEqual(a.c0.z, 3.0f); + TestUtils.AreEqual(a.c0.w, 4.0f); + TestUtils.AreEqual(a.c1.x, 5.0f); + TestUtils.AreEqual(a.c1.y, 6.0f); + TestUtils.AreEqual(a.c1.z, 7.0f); + TestUtils.AreEqual(a.c1.w, 8.0f); + TestUtils.AreEqual(a.c2.x, 9.0f); + TestUtils.AreEqual(a.c2.y, 10.0f); + TestUtils.AreEqual(a.c2.z, 11.0f); + TestUtils.AreEqual(a.c2.w, 12.0f); + TestUtils.AreEqual(a.c3.x, 13.0f); + TestUtils.AreEqual(a.c3.y, 14.0f); + TestUtils.AreEqual(a.c3.z, 15.0f); + TestUtils.AreEqual(a.c3.w, 16.0f); + } + + [TestCompiler] + public static void float2x2_constructor_scalars() + { + float2x2 a = float2x2(1.0f, 2.0f, + 3.0f, 4.0f); + + TestUtils.AreEqual(a.c0.x, 1.0f); + TestUtils.AreEqual(a.c1.x, 2.0f); + TestUtils.AreEqual(a.c0.y, 3.0f); + TestUtils.AreEqual(a.c1.y, 4.0f); + } + + [TestCompiler] + public static void float3x3_constructor_scalars() + { + float3x3 a = float3x3(1.0f, 2.0f, 3.0f, + 4.0f, 5.0f, 6.0f, + 7.0f, 8.0f, 9.0f); + + TestUtils.AreEqual(a.c0.x, 1.0f); + TestUtils.AreEqual(a.c1.x, 2.0f); + TestUtils.AreEqual(a.c2.x, 3.0f); + TestUtils.AreEqual(a.c0.y, 4.0f); + TestUtils.AreEqual(a.c1.y, 5.0f); + TestUtils.AreEqual(a.c2.y, 6.0f); + TestUtils.AreEqual(a.c0.z, 7.0f); + TestUtils.AreEqual(a.c1.z, 8.0f); + TestUtils.AreEqual(a.c2.z, 9.0f); + } + + [TestCompiler] + public static void float4x4_constructor_scalars() + { + float4x4 a = float4x4( 1.0f, 2.0f, 3.0f, 4.0f, + 5.0f, 6.0f, 7.0f, 8.0f, + 9.0f, 10.0f, 11.0f, 12.0f, + 13.0f, 14.0f, 15.0f, 16.0f); + + TestUtils.AreEqual(a.c0.x, 1.0f); + TestUtils.AreEqual(a.c1.x, 2.0f); + TestUtils.AreEqual(a.c2.x, 3.0f); + TestUtils.AreEqual(a.c3.x, 4.0f); + TestUtils.AreEqual(a.c0.y, 5.0f); + TestUtils.AreEqual(a.c1.y, 6.0f); + TestUtils.AreEqual(a.c2.y, 7.0f); + TestUtils.AreEqual(a.c3.y, 8.0f); + TestUtils.AreEqual(a.c0.z, 9.0f); + TestUtils.AreEqual(a.c1.z, 10.0f); + TestUtils.AreEqual(a.c2.z, 11.0f); + TestUtils.AreEqual(a.c3.z, 12.0f); + TestUtils.AreEqual(a.c0.w, 13.0f); + TestUtils.AreEqual(a.c1.w, 14.0f); + TestUtils.AreEqual(a.c2.w, 15.0f); + TestUtils.AreEqual(a.c3.w, 16.0f); + } + + [TestCompiler] + public static void float4x4_constructor_float3x3() + { + float3x3 rot = float3x3(1.0f, 2.0f, 3.0f, + 4.0f, 5.0f, 6.0f, + 7.0f, 8.0f, 9.0f); + float3 pos = float3(10.0f, 11.0f, 12.0f); + float4x4 m = float4x4(rot, pos); + + float4x4 r = float4x4(1.0f, 2.0f, 3.0f, 10.0f, + 4.0f, 5.0f, 6.0f, 11.0f, + 7.0f, 8.0f, 9.0f, 12.0f, + 0.0f, 0.0f, 0.0f, 1.0f); + TestUtils.AreEqual(m, r); + } + + + [TestCompiler] + public static void float3x3_constructor_quaternion() + { + float3x3 m = float3x3(normalize(quaternion(1.0f, 2.5f, 3.3f, 4.6f))); + + float3x3 r = float3x3( 0.12774f, -0.64529f, 0.75318f, + 0.89975f, 0.39491f, 0.18575f, + -0.41730f, 0.65394f, 0.63104f); + + TestUtils.AreEqual(m, r, 0.0001f); + } + + [TestCompiler] + public static void float4x4_constructor_quaternion_position() + { + float4x4 m = float4x4(normalize(quaternion(1.0f, 2.5f, 3.3f, 4.6f)), float3(1.0f, 2.0f, 3.0f)); + + float4x4 r = float4x4( 0.12774f, -0.64529f, 0.75318f, 1.0f, + 0.89975f, 0.39491f, 0.18575f, 2.0f, + -0.41730f, 0.65394f, 0.63104f, 3.0f, + 0.0f, 0.0f, 0.0f, 1.0f); + + TestUtils.AreEqual(m, r, 0.0001f); + } + + [TestCompiler] + public static void float2x2_identity() + { + float2x2 a = float2x2.identity; + TestUtils.AreEqual(a.c0.x, 1.0f); + TestUtils.AreEqual(a.c1.x, 0.0f); + TestUtils.AreEqual(a.c0.y, 0.0f); + TestUtils.AreEqual(a.c1.y, 1.0f); + } + + [TestCompiler] + public static void float3x3_identity() + { + float3x3 a = float3x3.identity; + TestUtils.AreEqual(a.c0.x, 1.0f); + TestUtils.AreEqual(a.c1.x, 0.0f); + TestUtils.AreEqual(a.c2.x, 0.0f); + TestUtils.AreEqual(a.c0.y, 0.0f); + TestUtils.AreEqual(a.c1.y, 1.0f); + TestUtils.AreEqual(a.c2.y, 0.0f); + TestUtils.AreEqual(a.c0.z, 0.0f); + TestUtils.AreEqual(a.c1.z, 0.0f); + TestUtils.AreEqual(a.c2.z, 1.0f); + } + + [TestCompiler] + public static void float4x4_identity() + { + float4x4 a = float4x4.identity; + TestUtils.AreEqual(a.c0.x, 1.0f); + TestUtils.AreEqual(a.c1.x, 0.0f); + TestUtils.AreEqual(a.c2.x, 0.0f); + TestUtils.AreEqual(a.c3.x, 0.0f); + TestUtils.AreEqual(a.c0.y, 0.0f); + TestUtils.AreEqual(a.c1.y, 1.0f); + TestUtils.AreEqual(a.c2.y, 0.0f); + TestUtils.AreEqual(a.c3.y, 0.0f); + TestUtils.AreEqual(a.c0.z, 0.0f); + TestUtils.AreEqual(a.c1.z, 0.0f); + TestUtils.AreEqual(a.c2.z, 1.0f); + TestUtils.AreEqual(a.c3.z, 0.0f); + TestUtils.AreEqual(a.c0.w, 0.0f); + TestUtils.AreEqual(a.c1.w, 0.0f); + TestUtils.AreEqual(a.c2.w, 0.0f); + TestUtils.AreEqual(a.c3.w, 1.0f); + } + + [TestCompiler] + public static void float2x2_rotate() + { + float epsilon = 0.0001f; + float angle = 10.3f; + float2x2 m = float2x2.Rotate(angle); + TestUtils.AreEqual(m.c0.x, cos(angle), epsilon); + TestUtils.AreEqual(m.c0.y, sin(angle), epsilon); + TestUtils.AreEqual(m.c1.x, -sin(angle), epsilon); + TestUtils.AreEqual(m.c1.y, cos(angle), epsilon); + } + + [TestCompiler] + public static void float3x3_axis_angle() + { + float3 axis = normalize(float3(1.1f, 2.3f, -3.6f)); + float angle = 2.7f; + + float3x3 r = float3x3(quaternion.AxisAngle(axis, angle)); + float3x3 m = float3x3.AxisAngle(axis, angle); + TestUtils.AreEqual(m, r, 0.00001f); + } + + [TestCompiler] + public static void float3x3_axis_angle_consistency() + { + TestUtils.AreEqual(float3x3.AxisAngle(float3(1, 0, 0), 1.0f), float3x3.RotateX(1.0f), 0.001f); + TestUtils.AreEqual(float3x3.AxisAngle(float3(0, 1, 0), 1.0f), float3x3.RotateY(1.0f), 0.001f); + TestUtils.AreEqual(float3x3.AxisAngle(float3(0, 0, 1), 1.0f), float3x3.RotateZ(1.0f), 0.001f); + } + + [TestCompiler] + public static void float3x3_rotate_x() + { + float epsilon = 0.0001f; + float angle = 10.3f; + float3x3 m = float3x3.RotateX(angle); + TestUtils.AreEqual(m.c0.x, 1.0f, epsilon); + TestUtils.AreEqual(m.c0.y, 0.0f, epsilon); + TestUtils.AreEqual(m.c0.z, 0.0f, epsilon); + TestUtils.AreEqual(m.c1.x, 0.0f, epsilon); + TestUtils.AreEqual(m.c1.y, cos(angle), epsilon); + TestUtils.AreEqual(m.c1.z, sin(angle), epsilon); + TestUtils.AreEqual(m.c2.x, 0.0f, epsilon); + TestUtils.AreEqual(m.c2.y, -sin(angle), epsilon); + TestUtils.AreEqual(m.c2.z, cos(angle), epsilon); + } + + [TestCompiler] + public static void float3x3_rotate_y() + { + float epsilon = 0.0001f; + float angle = 10.3f; + float3x3 m = float3x3.RotateY(angle); + TestUtils.AreEqual(m.c0.x, cos(angle), epsilon); + TestUtils.AreEqual(m.c0.y, 0.0f, epsilon); + TestUtils.AreEqual(m.c0.z, -sin(angle), epsilon); + TestUtils.AreEqual(m.c1.x, 0.0f, epsilon); + TestUtils.AreEqual(m.c1.y, 1.0f, epsilon); + TestUtils.AreEqual(m.c1.z, 0.0f, epsilon); + TestUtils.AreEqual(m.c2.x, sin(angle), epsilon); + TestUtils.AreEqual(m.c2.y, 0.0f, epsilon); + TestUtils.AreEqual(m.c2.z, cos(angle), epsilon); + } + + [TestCompiler] + public static void float3x3_rotate_z() + { + float epsilon = 0.0001f; + float angle = 10.3f; + float3x3 m = float3x3.RotateZ(angle); + TestUtils.AreEqual(m.c0.x, cos(angle), epsilon); + TestUtils.AreEqual(m.c0.y, sin(angle), epsilon); + TestUtils.AreEqual(m.c0.z, 0.0f, epsilon); + TestUtils.AreEqual(m.c1.x, -sin(angle), epsilon); + TestUtils.AreEqual(m.c1.y, cos(angle), epsilon); + TestUtils.AreEqual(m.c1.z, 0.0f, epsilon); + TestUtils.AreEqual(m.c2.x, 0.0f, epsilon); + TestUtils.AreEqual(m.c2.y, 0.0f, epsilon); + TestUtils.AreEqual(m.c2.z, 1.0f, epsilon); + } + + [TestCompiler] + public static void float3x3_rotate_x_handedness() + { + float3 a = float3(0.0f, 0.3f, 0.7f); + float3x3 m = float3x3.RotateX(0.3f); + float3 b = mul(m, a); + float w = cross(a, b).x; + TestUtils.AreEqual(true, w > 0.0f); + } + + + [TestCompiler] + public static void float3x3_rotate_y_handedness() + { + float3 a = float3(0.3f, 0.0f, 0.7f); + float3x3 m = float3x3.RotateY(0.3f); + float3 b = mul(m, a); + float w = cross(a, b).y; + TestUtils.AreEqual(true, w > 0.0f); + } + + [TestCompiler] + public static void float3x3_rotate_z_handedness() + { + float3 a = float3(0.3f, 0.7f, 0.0f); + float3x3 m = float3x3.RotateZ(0.3f); + float3 b = mul(m, a); + float w = cross(a, b).z; + TestUtils.AreEqual(true, w > 0.0f); + } + + [TestCompiler] + public static void float4x4_axis_angle() + { + float3 axis = normalize(float3(1.1f, 2.3f, -3.6f)); + float angle = 2.7f; + + float4x4 r = float4x4(quaternion.AxisAngle(axis, angle), float3.zero); + float4x4 m = float4x4.AxisAngle(axis, angle); + TestUtils.AreEqual(m, r, 0.00001f); + } + + [TestCompiler] + public static void float4x4_axis_angle_consistency() + { + TestUtils.AreEqual(float4x4.AxisAngle(float3(1, 0, 0), 1.0f), float4x4.RotateX(1.0f), 0.001f); + TestUtils.AreEqual(float4x4.AxisAngle(float3(0, 1, 0), 1.0f), float4x4.RotateY(1.0f), 0.001f); + TestUtils.AreEqual(float4x4.AxisAngle(float3(0, 0, 1), 1.0f), float4x4.RotateZ(1.0f), 0.001f); + } + + [TestCompiler] + public static void float4x4_rotate_x() + { + float epsilon = 0.0001f; + float angle = 10.3f; + float4x4 m = float4x4.RotateX(angle); + TestUtils.AreEqual(m.c0.x, 1.0f, epsilon); + TestUtils.AreEqual(m.c0.y, 0.0f, epsilon); + TestUtils.AreEqual(m.c0.z, 0.0f, epsilon); + TestUtils.AreEqual(m.c0.w, 0.0f, epsilon); + TestUtils.AreEqual(m.c1.x, 0.0f, epsilon); + TestUtils.AreEqual(m.c1.y, cos(angle), epsilon); + TestUtils.AreEqual(m.c1.z, sin(angle), epsilon); + TestUtils.AreEqual(m.c1.w, 0.0f, epsilon); + TestUtils.AreEqual(m.c2.x, 0.0f, epsilon); + TestUtils.AreEqual(m.c2.y, -sin(angle), epsilon); + TestUtils.AreEqual(m.c2.z, cos(angle), epsilon); + TestUtils.AreEqual(m.c2.w, 0.0f, epsilon); + TestUtils.AreEqual(m.c3.x, 0.0f, epsilon); + TestUtils.AreEqual(m.c3.y, 0.0f, epsilon); + TestUtils.AreEqual(m.c3.z, 0.0f, epsilon); + TestUtils.AreEqual(m.c3.w, 1.0f, epsilon); + } + + [TestCompiler] + public static void float4x4_rotate_y() + { + float epsilon = 0.0001f; + float angle = 10.3f; + float4x4 m = float4x4.RotateY(angle); + TestUtils.AreEqual(m.c0.x, cos(angle), epsilon); + TestUtils.AreEqual(m.c0.y, 0.0f, epsilon); + TestUtils.AreEqual(m.c0.z, -sin(angle), epsilon); + TestUtils.AreEqual(m.c0.w, 0.0f, epsilon); + TestUtils.AreEqual(m.c1.x, 0.0f, epsilon); + TestUtils.AreEqual(m.c1.y, 1.0f, epsilon); + TestUtils.AreEqual(m.c1.z, 0.0f, epsilon); + TestUtils.AreEqual(m.c1.w, 0.0f, epsilon); + TestUtils.AreEqual(m.c2.x, sin(angle), epsilon); + TestUtils.AreEqual(m.c2.y, 0.0f, epsilon); + TestUtils.AreEqual(m.c2.z, cos(angle), epsilon); + TestUtils.AreEqual(m.c2.w, 0.0f); + TestUtils.AreEqual(m.c3.x, 0.0f); + TestUtils.AreEqual(m.c3.y, 0.0f); + TestUtils.AreEqual(m.c3.z, 0.0f); + TestUtils.AreEqual(m.c3.w, 1.0f); + } + + [TestCompiler] + public static void float4x4_rotate_z() + { + float epsilon = 0.0001f; + float angle = 10.3f; + float4x4 m = float4x4.RotateZ(angle); + TestUtils.AreEqual(m.c0.x, cos(angle), epsilon); + TestUtils.AreEqual(m.c0.y, sin(angle), epsilon); + TestUtils.AreEqual(m.c0.z, 0.0f, epsilon); + TestUtils.AreEqual(m.c0.w, 0.0f, epsilon); + TestUtils.AreEqual(m.c1.x, -sin(angle), epsilon); + TestUtils.AreEqual(m.c1.y, cos(angle), epsilon); + TestUtils.AreEqual(m.c1.z, 0.0f, epsilon); + TestUtils.AreEqual(m.c1.w, 0.0f, epsilon); + TestUtils.AreEqual(m.c2.x, 0.0f, epsilon); + TestUtils.AreEqual(m.c2.y, 0.0f, epsilon); + TestUtils.AreEqual(m.c2.z, 1.0f, epsilon); + TestUtils.AreEqual(m.c2.w, 0.0f, epsilon); + TestUtils.AreEqual(m.c3.x, 0.0f, epsilon); + TestUtils.AreEqual(m.c3.y, 0.0f, epsilon); + TestUtils.AreEqual(m.c3.z, 0.0f, epsilon); + TestUtils.AreEqual(m.c3.w, 1.0f, epsilon); + } + + [TestCompiler] + public static void float4x4_rotate_x_handedness() + { + float3 a = float3(0.0f, 0.3f, 0.7f); + float4x4 m = float4x4.RotateX(0.3f); + float3 b = rotate(m, a); + float w = cross(a, b).x; + TestUtils.AreEqual(true, w > 0.0f); + } + + + [TestCompiler] + public static void float4x4_rotate_y_handedness() + { + float3 a = float3(0.3f, 0.0f, 0.7f); + float4x4 m = float4x4.RotateY(0.3f); + float3 b = rotate(m, a); + float w = cross(a, b).y; + TestUtils.AreEqual(true, w > 0.0f); + } + + [TestCompiler] + public static void float4x4_rotate_z_handedness() + { + float3 a = float3(0.3f, 0.7f, 0.0f); + float4x4 m = float4x4.RotateZ(0.3f); + float3 b = rotate(m, a); + float w = cross(a, b).z; + TestUtils.AreEqual(true, w > 0.0f); + } + + + // rotation by (-50, 28, 39) degrees from Max + static internal readonly float3 test_angles = math.radians(float3(-50.0f, 28.0f, 39.0f)); + + static internal readonly float3x3 test3x3_xyz = new float3x3( 0.686179155968f, -0.684009078513f, -0.247567660300f, + 0.555656924414f, 0.273213475262f, 0.785238676636f, + -0.469471562786f, -0.676377097075f, 0.567547772692f); + + static internal readonly float3x3 test3x3_xzy = new float3x3( 0.686179155968f, -0.716805468125f, -0.123887395569f, + 0.629320391050f, 0.499539794942f, 0.595328345266f, + -0.364847929038f, -0.486466765705f, 0.793874092373f); + + static internal readonly float3x3 test3x3_yxz = new float3x3( 0.912505475649f, -0.404519349890f, -0.0608099701904f, + 0.276167195792f, 0.499539794942f, 0.8210917568930f, + -0.301770503659f, -0.766044443119f, 0.5675477726920f); + + static internal readonly float3x3 test3x3_yzx = new float3x3( 0.68617915596800f, -0.629320391050f, 0.364847929038f, + -0.00246669562435f, 0.499539794942f, 0.866287428445f, + -0.72742840288700f, -0.595328345266f, 0.341221453011f); + + static internal readonly float3x3 test3x3_zxy = new float3x3( 0.459852836288f, -0.835146653037f, 0.301770503659f, + 0.404519349890f, 0.499539794942f, 0.766044443119f, + -0.790505828266f, -0.230195701935f, 0.567547772692f); + + static internal readonly float3x3 test3x3_zyx = new float3x3( 0.686179155968f, -0.555656924414f, 0.469471562786f, + 0.125029621267f, 0.725866114623f, 0.676377097075f, + -0.716607116711f, -0.405418013897f, 0.567547772692f); + + + static internal readonly float4x4 test4x4_xyz = new float4x4(test3x3_xyz, new float3(0, 0, 0)); + static internal readonly float4x4 test4x4_xzy = new float4x4(test3x3_xzy, new float3(0, 0, 0)); + static internal readonly float4x4 test4x4_yxz = new float4x4(test3x3_yxz, new float3(0, 0, 0)); + static internal readonly float4x4 test4x4_yzx = new float4x4(test3x3_yzx, new float3(0, 0, 0)); + static internal readonly float4x4 test4x4_zxy = new float4x4(test3x3_zxy, new float3(0, 0, 0)); + static internal readonly float4x4 test4x4_zyx = new float4x4(test3x3_zyx, new float3(0, 0, 0)); + + + [TestCompiler] + public static void float3x3_euler() + { + float3x3 m0_xyz = float3x3.EulerXYZ(test_angles); + float3x3 m0_xzy = float3x3.EulerXZY(test_angles); + float3x3 m0_yxz = float3x3.EulerYXZ(test_angles); + float3x3 m0_yzx = float3x3.EulerYZX(test_angles); + float3x3 m0_zxy = float3x3.EulerZXY(test_angles); + float3x3 m0_zyx = float3x3.EulerZYX(test_angles); + + float3x3 m1 = float3x3.Euler(test_angles); + float3x3 m1_xyz = float3x3.Euler(test_angles, RotationOrder.XYZ); + float3x3 m1_xzy = float3x3.Euler(test_angles, RotationOrder.XZY); + float3x3 m1_yxz = float3x3.Euler(test_angles, RotationOrder.YXZ); + float3x3 m1_yzx = float3x3.Euler(test_angles, RotationOrder.YZX); + float3x3 m1_zxy = float3x3.Euler(test_angles, RotationOrder.ZXY); + float3x3 m1_zyx = float3x3.Euler(test_angles, RotationOrder.ZYX); + + + float3x3 m2_xyz = float3x3.EulerXYZ(test_angles.x, test_angles.y, test_angles.z); + float3x3 m2_xzy = float3x3.EulerXZY(test_angles.x, test_angles.y, test_angles.z); + float3x3 m2_yxz = float3x3.EulerYXZ(test_angles.x, test_angles.y, test_angles.z); + float3x3 m2_yzx = float3x3.EulerYZX(test_angles.x, test_angles.y, test_angles.z); + float3x3 m2_zxy = float3x3.EulerZXY(test_angles.x, test_angles.y, test_angles.z); + float3x3 m2_zyx = float3x3.EulerZYX(test_angles.x, test_angles.y, test_angles.z); + + float3x3 m3 = float3x3.Euler(test_angles.x, test_angles.y, test_angles.z); + float3x3 m3_xyz = float3x3.Euler(test_angles.x, test_angles.y, test_angles.z, RotationOrder.XYZ); + float3x3 m3_xzy = float3x3.Euler(test_angles.x, test_angles.y, test_angles.z, RotationOrder.XZY); + float3x3 m3_yxz = float3x3.Euler(test_angles.x, test_angles.y, test_angles.z, RotationOrder.YXZ); + float3x3 m3_yzx = float3x3.Euler(test_angles.x, test_angles.y, test_angles.z, RotationOrder.YZX); + float3x3 m3_zxy = float3x3.Euler(test_angles.x, test_angles.y, test_angles.z, RotationOrder.ZXY); + float3x3 m3_zyx = float3x3.Euler(test_angles.x, test_angles.y, test_angles.z, RotationOrder.ZYX); + + + TestUtils.AreEqual(m0_xyz, test3x3_xyz, 0.0001f); + TestUtils.AreEqual(m0_yzx, test3x3_yzx, 0.0001f); + TestUtils.AreEqual(m0_zxy, test3x3_zxy, 0.0001f); + TestUtils.AreEqual(m0_xzy, test3x3_xzy, 0.0001f); + TestUtils.AreEqual(m0_yxz, test3x3_yxz, 0.0001f); + TestUtils.AreEqual(m0_zyx, test3x3_zyx, 0.0001f); + + TestUtils.AreEqual(m1, test3x3_zxy, 0.0001f); + TestUtils.AreEqual(m1_xyz, test3x3_xyz, 0.0001f); + TestUtils.AreEqual(m1_yzx, test3x3_yzx, 0.0001f); + TestUtils.AreEqual(m1_zxy, test3x3_zxy, 0.0001f); + TestUtils.AreEqual(m1_xzy, test3x3_xzy, 0.0001f); + TestUtils.AreEqual(m1_yxz, test3x3_yxz, 0.0001f); + TestUtils.AreEqual(m1_zyx, test3x3_zyx, 0.0001f); + + + TestUtils.AreEqual(m2_xyz, test3x3_xyz, 0.0001f); + TestUtils.AreEqual(m2_yzx, test3x3_yzx, 0.0001f); + TestUtils.AreEqual(m2_zxy, test3x3_zxy, 0.0001f); + TestUtils.AreEqual(m2_xzy, test3x3_xzy, 0.0001f); + TestUtils.AreEqual(m2_yxz, test3x3_yxz, 0.0001f); + TestUtils.AreEqual(m2_zyx, test3x3_zyx, 0.0001f); + + TestUtils.AreEqual(m3, test3x3_zxy, 0.0001f); + TestUtils.AreEqual(m3_xyz, test3x3_xyz, 0.0001f); + TestUtils.AreEqual(m3_yzx, test3x3_yzx, 0.0001f); + TestUtils.AreEqual(m3_zxy, test3x3_zxy, 0.0001f); + TestUtils.AreEqual(m3_xzy, test3x3_xzy, 0.0001f); + TestUtils.AreEqual(m3_yxz, test3x3_yxz, 0.0001f); + TestUtils.AreEqual(m3_zyx, test3x3_zyx, 0.0001f); + } + + [TestCompiler] + public static void float4x4_euler() + { + float4x4 m0_xyz = float4x4.EulerXYZ(test_angles); + float4x4 m0_xzy = float4x4.EulerXZY(test_angles); + float4x4 m0_yxz = float4x4.EulerYXZ(test_angles); + float4x4 m0_yzx = float4x4.EulerYZX(test_angles); + float4x4 m0_zxy = float4x4.EulerZXY(test_angles); + float4x4 m0_zyx = float4x4.EulerZYX(test_angles); + + float4x4 m1 = float4x4.Euler(test_angles); + float4x4 m1_xyz = float4x4.Euler(test_angles, RotationOrder.XYZ); + float4x4 m1_xzy = float4x4.Euler(test_angles, RotationOrder.XZY); + float4x4 m1_yxz = float4x4.Euler(test_angles, RotationOrder.YXZ); + float4x4 m1_yzx = float4x4.Euler(test_angles, RotationOrder.YZX); + float4x4 m1_zxy = float4x4.Euler(test_angles, RotationOrder.ZXY); + float4x4 m1_zyx = float4x4.Euler(test_angles, RotationOrder.ZYX); + + + float4x4 m2_xyz = float4x4.EulerXYZ(test_angles.x, test_angles.y, test_angles.z); + float4x4 m2_xzy = float4x4.EulerXZY(test_angles.x, test_angles.y, test_angles.z); + float4x4 m2_yxz = float4x4.EulerYXZ(test_angles.x, test_angles.y, test_angles.z); + float4x4 m2_yzx = float4x4.EulerYZX(test_angles.x, test_angles.y, test_angles.z); + float4x4 m2_zxy = float4x4.EulerZXY(test_angles.x, test_angles.y, test_angles.z); + float4x4 m2_zyx = float4x4.EulerZYX(test_angles.x, test_angles.y, test_angles.z); + + float4x4 m3 = float4x4.Euler(test_angles.x, test_angles.y, test_angles.z); + float4x4 m3_xyz = float4x4.Euler(test_angles.x, test_angles.y, test_angles.z, RotationOrder.XYZ); + float4x4 m3_xzy = float4x4.Euler(test_angles.x, test_angles.y, test_angles.z, RotationOrder.XZY); + float4x4 m3_yxz = float4x4.Euler(test_angles.x, test_angles.y, test_angles.z, RotationOrder.YXZ); + float4x4 m3_yzx = float4x4.Euler(test_angles.x, test_angles.y, test_angles.z, RotationOrder.YZX); + float4x4 m3_zxy = float4x4.Euler(test_angles.x, test_angles.y, test_angles.z, RotationOrder.ZXY); + float4x4 m3_zyx = float4x4.Euler(test_angles.x, test_angles.y, test_angles.z, RotationOrder.ZYX); + + + TestUtils.AreEqual(m0_xyz, test4x4_xyz, 0.0001f); + TestUtils.AreEqual(m0_yzx, test4x4_yzx, 0.0001f); + TestUtils.AreEqual(m0_zxy, test4x4_zxy, 0.0001f); + TestUtils.AreEqual(m0_xzy, test4x4_xzy, 0.0001f); + TestUtils.AreEqual(m0_yxz, test4x4_yxz, 0.0001f); + TestUtils.AreEqual(m0_zyx, test4x4_zyx, 0.0001f); + + TestUtils.AreEqual(m1, test4x4_zxy, 0.0001f); + TestUtils.AreEqual(m1_xyz, test4x4_xyz, 0.0001f); + TestUtils.AreEqual(m1_yzx, test4x4_yzx, 0.0001f); + TestUtils.AreEqual(m1_zxy, test4x4_zxy, 0.0001f); + TestUtils.AreEqual(m1_xzy, test4x4_xzy, 0.0001f); + TestUtils.AreEqual(m1_yxz, test4x4_yxz, 0.0001f); + TestUtils.AreEqual(m1_zyx, test4x4_zyx, 0.0001f); + + + TestUtils.AreEqual(m2_xyz, test4x4_xyz, 0.0001f); + TestUtils.AreEqual(m2_yzx, test4x4_yzx, 0.0001f); + TestUtils.AreEqual(m2_zxy, test4x4_zxy, 0.0001f); + TestUtils.AreEqual(m2_xzy, test4x4_xzy, 0.0001f); + TestUtils.AreEqual(m2_yxz, test4x4_yxz, 0.0001f); + TestUtils.AreEqual(m2_zyx, test4x4_zyx, 0.0001f); + + TestUtils.AreEqual(m3, test4x4_zxy, 0.0001f); + TestUtils.AreEqual(m3_xyz, test4x4_xyz, 0.0001f); + TestUtils.AreEqual(m3_yzx, test4x4_yzx, 0.0001f); + TestUtils.AreEqual(m3_zxy, test4x4_zxy, 0.0001f); + TestUtils.AreEqual(m3_xzy, test4x4_xzy, 0.0001f); + TestUtils.AreEqual(m3_yxz, test4x4_yxz, 0.0001f); + TestUtils.AreEqual(m3_zyx, test4x4_zyx, 0.0001f); + } + + [TestCompiler] + public static void float2x2_scale() + { + float2x2 m = float2x2(1.0f, 2.0f, + 3.0f, 4.0f); + + float2x2 r0 = float2x2(2.0f, 4.0f, + 6.0f, 8.0f); + + float2x2 r1 = float2x2(2.0f, 4.0f, + 9.0f, 12.0f); + + float2x2 a = mul(float2x2.Scale(2.0f), m); + float2x2 b = mul(float2x2.Scale(2.0f, 3.0f), m); + float2x2 c = mul(float2x2.Scale(2.0f, 3.0f), m); + + TestUtils.AreEqual(a, r0); + TestUtils.AreEqual(b, r1); + TestUtils.AreEqual(c, r1); + } + + [TestCompiler] + public static void float3x3_scale() + { + float3x3 m = float3x3(1.0f, 2.0f, 3.0f, + 4.0f, 5.0f, 6.0f, + 7.0f, 8.0f, 9.0f); + + + float3x3 r0 = float3x3( 2.0f, 4.0f, 6.0f, + 8.0f, 10.0f, 12.0f, + 14.0f, 16.0f, 18.0f); + + float3x3 r1 = float3x3( 2.0f, 4.0f, 6.0f, + 12.0f, 15.0f, 18.0f, + 28.0f, 32.0f, 36.0f); + + + float3x3 a = mul(float3x3.Scale(2.0f), m); + float3x3 b = mul(float3x3.Scale(2.0f, 3.0f, 4.0f), m); + float3x3 c = mul(float3x3.Scale(2.0f, 3.0f, 4.0f), m); + + TestUtils.AreEqual(a, r0); + TestUtils.AreEqual(b, r1); + TestUtils.AreEqual(c, r1); + } + + [TestCompiler] + public static void float4x4_scale() + { + float4x4 m = float4x4( 1.0f, 2.0f, 3.0f, 4.0f, + 5.0f, 6.0f, 7.0f, 8.0f, + 9.0f, 10.0f, 11.0f, 12.0f, + 13.0f, 14.0f, 15.0f, 16.0f); + + float4x4 r0 = float4x4( 2.0f, 4.0f, 6.0f, 8.0f, + 10.0f, 12.0f, 14.0f, 16.0f, + 18.0f, 20.0f, 22.0f, 24.0f, + 13.0f, 14.0f, 15.0f, 16.0f); + + float4x4 r1 = float4x4( 2.0f, 4.0f, 6.0f, 8.0f, + 15.0f, 18.0f, 21.0f, 24.0f, + 36.0f, 40.0f, 44.0f, 48.0f, + 13.0f, 14.0f, 15.0f, 16.0f); + + float4x4 a = mul(float4x4.Scale(2.0f), m); + float4x4 b = mul(float4x4.Scale(2.0f, 3.0f, 4.0f), m); + float4x4 c = mul(float4x4.Scale(2.0f, 3.0f, 4.0f), m); + + TestUtils.AreEqual(a, r0); + TestUtils.AreEqual(b, r1); + TestUtils.AreEqual(c, r1); + } + + [TestCompiler] + public static void float2x2_matrix_mul() + { + // http://www.wolframalpha.com/input/?i=%5B%5B1,2%5D,%5B3,4%5D%5D*%5B%5B21,22%5D,%5B23,24%5D%5D + float2x2 a = float2x2(1.0f, 2.0f, + 3.0f, 4.0f); + + float2x2 b = float2x2(21.0f, 22.0f, + 23.0f, 24.0f); + + float2x2 c = mul(a, b); + TestUtils.AreEqual(c.c0.x, 67.0f); + TestUtils.AreEqual(c.c1.x, 70.0f); + + TestUtils.AreEqual(c.c0.y, 155.0f); + TestUtils.AreEqual(c.c1.y, 162.0f); + } + + [TestCompiler] + public static void float3x3_matrix_mul() + { + // http://www.wolframalpha.com/input/?i=%5B%5B1,2,3%5D,%5B4,5,6%5D,%5B7,8,9%5D%5D*%5B%5B21,22,23%5D,%5B24,25,26%5D,%5B27,28,29%5D%5D + float3x3 a = float3x3(1.0f, 2.0f, 3.0f, + 4.0f, 5.0f, 6.0f, + 7.0f, 8.0f, 9.0f); + + float3x3 b = float3x3(21.0f, 22.0f, 23.0f, + 24.0f, 25.0f, 26.0f, + 27.0f, 28.0f, 29.0f); + + float3x3 c = mul(a, b); + TestUtils.AreEqual(c.c0.x, 150.0f); + TestUtils.AreEqual(c.c1.x, 156.0f); + TestUtils.AreEqual(c.c2.x, 162.0f); + + TestUtils.AreEqual(c.c0.y, 366.0f); + TestUtils.AreEqual(c.c1.y, 381.0f); + TestUtils.AreEqual(c.c2.y, 396.0f); + + TestUtils.AreEqual(c.c0.z, 582.0f); + TestUtils.AreEqual(c.c1.z, 606.0f); + TestUtils.AreEqual(c.c2.z, 630.0f); + } + + [TestCompiler] + public static void float4x4_matrix_mul() + { + // https://fogbugz.unity3d.com/f/cases/1041176/ + // http://www.wolframalpha.com/input/?i=%5B%5B1,2,3,4%5D,%5B5,6,7,8%5D,%5B9,10,11,12%5D,%5B13,14,15,16%5D%5D*%5B%5B21,22,23,24%5D,%5B25,26,27,28%5D,%5B29,30,31,32%5D,%5B33,34,35,36%5D%5D + float4x4 a = float4x4( 1.0f, 2.0f, 3.0f, 4.0f, + 5.0f, 6.0f, 7.0f, 8.0f, + 9.0f,10.0f,11.0f,12.0f, + 13.0f,14.0f,15.0f,16.0f); + + float4x4 b = float4x4(21.0f,22.0f,23.0f,24.0f, + 25.0f,26.0f,27.0f,28.0f, + 29.0f,30.0f,31.0f,32.0f, + 33.0f,34.0f,35.0f,36.0f); + + float4x4 c = mul(a, b); + TestUtils.AreEqual(c.c0.x, 290.0f); + TestUtils.AreEqual(c.c1.x, 300.0f); + TestUtils.AreEqual(c.c2.x, 310.0f); + TestUtils.AreEqual(c.c3.x, 320.0f); + + TestUtils.AreEqual(c.c0.y, 722.0f); + TestUtils.AreEqual(c.c1.y, 748.0f); + TestUtils.AreEqual(c.c2.y, 774.0f); + TestUtils.AreEqual(c.c3.y, 800.0f); + + TestUtils.AreEqual(c.c0.z, 1154.0f); + TestUtils.AreEqual(c.c1.z, 1196.0f); + TestUtils.AreEqual(c.c2.z, 1238.0f); + TestUtils.AreEqual(c.c3.z, 1280.0f); + + TestUtils.AreEqual(c.c0.w, 1586.0f); + TestUtils.AreEqual(c.c1.w, 1644.0f); + TestUtils.AreEqual(c.c2.w, 1702.0f); + TestUtils.AreEqual(c.c3.w, 1760.0f); + } + + [TestCompiler] + public static void float2x2_transpose() + { + float2x2 a = float2x2(1.0f, 2.0f, + 3.0f, 4.0f); + + float2x2 b = transpose(a); + + TestUtils.AreEqual(b.c0.x, 1.0f); + TestUtils.AreEqual(b.c1.x, 3.0f); + TestUtils.AreEqual(b.c0.y, 2.0f); + TestUtils.AreEqual(b.c1.y, 4.0f); + } + + [TestCompiler] + public static void float3x3_transpose() + { + float3x3 a = float3x3(1.0f, 2.0f, 3.0f, + 4.0f, 5.0f, 6.0f, + 7.0f, 8.0f, 9.0f); + + float3x3 b = transpose(a); + + TestUtils.AreEqual(b.c0.x, 1.0f); + TestUtils.AreEqual(b.c1.x, 4.0f); + TestUtils.AreEqual(b.c2.x, 7.0f); + TestUtils.AreEqual(b.c0.y, 2.0f); + TestUtils.AreEqual(b.c1.y, 5.0f); + TestUtils.AreEqual(b.c2.y, 8.0f); + TestUtils.AreEqual(b.c0.z, 3.0f); + TestUtils.AreEqual(b.c1.z, 6.0f); + TestUtils.AreEqual(b.c2.z, 9.0f); + } + + [TestCompiler] + public static void float4x4_transpose() + { + float4x4 a = float4x4( 1.0f, 2.0f, 3.0f, 4.0f, + 5.0f, 6.0f, 7.0f, 8.0f, + 9.0f, 10.0f, 11.0f, 12.0f, + 13.0f, 14.0f, 15.0f, 16.0f); + + float4x4 b = transpose(a); + + TestUtils.AreEqual(b.c0.x, 1.0f); + TestUtils.AreEqual(b.c1.x, 5.0f); + TestUtils.AreEqual(b.c2.x, 9.0f); + TestUtils.AreEqual(b.c3.x, 13.0f); + TestUtils.AreEqual(b.c0.y, 2.0f); + TestUtils.AreEqual(b.c1.y, 6.0f); + TestUtils.AreEqual(b.c2.y, 10.0f); + TestUtils.AreEqual(b.c3.y, 14.0f); + TestUtils.AreEqual(b.c0.z, 3.0f); + TestUtils.AreEqual(b.c1.z, 7.0f); + TestUtils.AreEqual(b.c2.z, 11.0f); + TestUtils.AreEqual(b.c3.z, 15.0f); + TestUtils.AreEqual(b.c0.w, 4.0f); + TestUtils.AreEqual(b.c1.w, 8.0f); + TestUtils.AreEqual(b.c2.w, 12.0f); + TestUtils.AreEqual(b.c3.w, 16.0f); + } + + [TestCompiler] + public static void float2x2_inverse() + { + float2x2 a = float2x2( 0.542968f, 0.867379f, + -0.270153f, -0.912324f); + + float2x2 invA = float2x2( 3.49499f, 3.32281f, + -1.03492f, -2.08004f); + + float2x2 r = inverse(a); + + float epsilon = 0.0001f; + TestUtils.AreEqual(invA.c0.x, r.c0.x, epsilon); + TestUtils.AreEqual(invA.c1.x, r.c1.x, epsilon); + + TestUtils.AreEqual(invA.c0.y, r.c0.y, epsilon); + TestUtils.AreEqual(invA.c1.y, r.c1.y, epsilon); + } + + [TestCompiler] + public static void float3x3_inverse() + { + float3x3 a = float3x3( 0.542968f, 0.867379f, 0.526616f, + -0.270153f,-0.912324f, 0.148933f, + 0.816727f, 0.905933f, 0.902392f); + + float3x3 invA = float3x3(-15.91790f,-5.077350f,10.1273f, + 6.07051f, 0.994556f,-3.70676f, + 8.31247f, 3.596890f,-4.33645f); + + float3x3 r = inverse(a); + + float epsilon = 0.0001f; + TestUtils.AreEqual(invA.c0.x, r.c0.x, epsilon); + TestUtils.AreEqual(invA.c1.x, r.c1.x, epsilon); + TestUtils.AreEqual(invA.c2.x, r.c2.x, epsilon); + + TestUtils.AreEqual(invA.c0.y, r.c0.y, epsilon); + TestUtils.AreEqual(invA.c1.y, r.c1.y, epsilon); + TestUtils.AreEqual(invA.c2.y, r.c2.y, epsilon); + + TestUtils.AreEqual(invA.c0.z, r.c0.z, epsilon); + TestUtils.AreEqual(invA.c1.z, r.c1.z, epsilon); + TestUtils.AreEqual(invA.c2.z, r.c2.z, epsilon); + } + + [TestCompiler] + public static void float4x4_inverse() + { + float4x4 a = float4x4( 0.542968f, 0.867379f, 0.526616f,-0.943083f, + -0.270153f,-0.912324f, 0.148933f, 0.299995f, + 0.816727f, 0.905933f, 0.902392f,-0.060931f, + -0.254780f, 0.604543f, 0.563340f,-0.383911f); + + float4x4 invA = float4x4( 0.548951f, 0.126367f, 0.487260f,-1.327100f, + -0.582901f,-1.108000f, 0.188292f, 0.536211f, + 0.001968f, 0.970678f, 0.528701f, 0.669759f, + -1.279310f,-0.404277f, 0.748937f, 0.103102f); + + float4x4 r = inverse(a); + + float epsilon = 0.0001f; + TestUtils.AreEqual(invA.c0.x, r.c0.x, epsilon); + TestUtils.AreEqual(invA.c1.x, r.c1.x, epsilon); + TestUtils.AreEqual(invA.c2.x, r.c2.x, epsilon); + TestUtils.AreEqual(invA.c3.x, r.c3.x, epsilon); + + TestUtils.AreEqual(invA.c0.y, r.c0.y, epsilon); + TestUtils.AreEqual(invA.c1.y, r.c1.y, epsilon); + TestUtils.AreEqual(invA.c2.y, r.c2.y, epsilon); + TestUtils.AreEqual(invA.c3.y, r.c3.y, epsilon); + + TestUtils.AreEqual(invA.c0.z, r.c0.z, epsilon); + TestUtils.AreEqual(invA.c1.z, r.c1.z, epsilon); + TestUtils.AreEqual(invA.c2.z, r.c2.z, epsilon); + TestUtils.AreEqual(invA.c3.z, r.c3.z, epsilon); + + TestUtils.AreEqual(invA.c0.w, r.c0.w, epsilon); + TestUtils.AreEqual(invA.c1.w, r.c1.w, epsilon); + TestUtils.AreEqual(invA.c2.w, r.c2.w, epsilon); + TestUtils.AreEqual(invA.c3.w, r.c3.w, epsilon); + } + + [TestCompiler] + public static void float3x4_fastinverse() + { + float4x4 a = test4x4_xyz; + a.c3 = float4(1, 2, 3, 1); + + float3x4 b = float3x4(a.c0.xyz, a.c1.xyz, a.c2.xyz, a.c3.xyz); + + float4x4 invA = inverse(a); + float3x4 fastInvB = fastinverse(b); + + TestUtils.AreEqual(fastInvB.c0.xyz, invA.c0.xyz, 0.0001f); + TestUtils.AreEqual(fastInvB.c1.xyz, invA.c1.xyz, 0.0001f); + TestUtils.AreEqual(fastInvB.c2.xyz, invA.c2.xyz, 0.0001f); + TestUtils.AreEqual(fastInvB.c3.xyz, invA.c3.xyz, 0.0001f); + } + + [TestCompiler] + public static void float4x4_fastinverse() + { + float4x4 a = test4x4_xyz; + a.c3 = float4(1, 2, 3, 1); + + float4x4 invA = inverse(a); + float4x4 fastInvA = fastinverse(a); + + TestUtils.AreEqual(fastInvA, invA, 0.0001f); + } + + [TestCompiler] + public static void float2x2_determinant() + { + float2x2 a = float2x2(0.542968f, 0.867379f, + -0.270153f, -0.912324f); + + float det = determinant(a); + TestUtils.AreEqual(det, -0.2610378f, 0.0001f); + } + + [TestCompiler] + public static void float3x3_determinant() + { + float3x3 a = float3x3( 0.542968f, 0.867379f, 0.526616f, + -0.270153f, -0.912324f, 0.148933f, + 0.816727f, 0.905933f, 0.902392f); + + float det = determinant(a); + TestUtils.AreEqual(det, 0.06019618f, 0.0001f); + } + + [TestCompiler] + public static void float4x4_determinant() + { + float4x4 a = float4x4( 0.542968f, 0.867379f, 0.526616f, -0.943083f, + -0.270153f, -0.912324f, 0.148933f, 0.299995f, + 0.816727f, 0.905933f, 0.902392f, -0.060931f, + -0.254780f, 0.604543f, 0.563340f, -0.383911f); + + float det = determinant(a); + TestUtils.AreEqual(det, 0.5838502f, 0.0001f); + } + + [TestCompiler] + public static void float3x3_look_rotation() + { + float3 forward0 = normalize(float3(1.0f, 2.0f, 3.0f)); + float3 up0 = float3(0.0f, 1.0f, 0.0f); + float3x3 m0 = float3x3.LookRotation(forward0, up0); + TestUtils.AreEqual(m0, + float3x3( 0.948683f, -0.169031f, 0.267261f, + 0.000000f, 0.845154f, 0.534523f, + -0.316228f, -0.507093f, 0.801784f), 0.001f); + TestUtils.AreEqual(m0, float3x3(quaternion.LookRotation(forward0, up0)), 0.001f); + + float3 forward1 = normalize(float3(-3.2f, 2.3f, -1.3f)); + float3 up1 = normalize(float3(1.0f, -3.2f, -1.5f)); + float3x3 m1 = float3x3.LookRotation(forward1, up1); + TestUtils.AreEqual(m1, + float3x3( 0.605102f, -0.197976f, -0.771140f, + 0.485036f, -0.676417f, 0.554257f, + -0.631342f, -0.709413f, -0.313276f), 0.001f); + TestUtils.AreEqual(m1, float3x3(quaternion.LookRotation(forward1, up1)), 0.001f); + + float3 forward2 = normalize(float3(-2.6f, -5.2f, -1.1f)); + float3 up2 = normalize(float3(-4.2f, -1.2f, -4.5f)); + float3x3 m2 = float3x3.LookRotation(forward2, up2); + TestUtils.AreEqual(m2, + float3x3(-0.740918f, -0.507890f, -0.439418f, + 0.237577f, 0.413771f, -0.878835f, + 0.628170f, -0.755540f, -0.185907f), 0.001f); + TestUtils.AreEqual(m2, float3x3(quaternion.LookRotation(forward2, up2)), 0.001f); + + float3 forward3 = normalize(float3(1.3f, 2.1f, 3.4f)); + float3 up3 = normalize(float3(0.2f, -1.0f, 0.3f)); + float3x3 m3 = float3x3.LookRotation(forward3, up3); + TestUtils.AreEqual(m3, + float3x3(-0.917727f, 0.249162f, 0.309349f, + -0.066040f, -0.863668f, 0.499717f, + 0.391685f, 0.438174f, 0.809065f), 0.001f); + TestUtils.AreEqual(m3, float3x3(quaternion.LookRotation(forward3, up3)), 0.001f); + } + + [TestCompiler] + public static void float3x3_look_rotation_safe() + { + float3 forward0 = float3(-3.2f, 2.3f, -1.3f) * 1e-10f; + float3 up0 = float3(1.0f, -3.2f, -1.5f) * 1e10f; + float3x3 m0 = float3x3.LookRotationSafe(forward0, up0); + TestUtils.AreEqual(m0, + float3x3(0.605102f, -0.197976f, -0.771140f, + 0.485036f, -0.676417f, 0.554257f, + -0.631342f, -0.709413f, -0.313276f), 0.001f); + + float3 forward1 = float3(-3.2f, 2.3f, -1.3f) * 1e-30f; + float3 up1 = float3(1.0f, -3.2f, -1.5f); + float3x3 m1 = float3x3.LookRotationSafe(forward1, up1); + TestUtils.AreEqual(m1, float3x3.identity, 0.001f); + } + + + [TestCompiler] + public static void float4x4_lookat() + { + float4x4 m = float4x4.LookAt(float3(0.3f, -0.5f, 3.0f), float3(3.2f, -3.1f, 0.2f), normalize(float3(0.3f, 1.0f, -3.0f))); + float4x4 r = float4x4( + -0.77374f, -0.18930f, 0.60456f, 0.30000f, + -0.57373f, 0.61404f, -0.54202f, -0.50000f, + -0.26862f, -0.76624f, -0.58371f, 3.00000f, + 0.00000f, 0.00000f, 0.00000f, 1.00000f + ); + TestUtils.AreEqual(m, r, 0.001f); + } + + + [TestCompiler] + public static void float4x4_ortho() + { + float4x4 m = float4x4.Ortho(2.0f, 3.0f, -3.0f, 7.0f); + float4x4 r = float4x4( + 1.00000f, 0.00000f, 0.00000f, 0.00000f, + 0.00000f, 0.66667f, 0.00000f, 0.00000f, + 0.00000f, 0.00000f, -0.20000f, -0.40000f, + 0.00000f, 0.00000f, 0.00000f, 1.00000f + ); + TestUtils.AreEqual(m, r, 0.001f); + } + + [TestCompiler] + public static void float4x4_orthoOffCenter() + { + float4x4 m = float4x4.OrthoOffCenter(-2.0f, 1.0f, -3.0f, -1.0f, -3.0f, 7.0f); + float4x4 r = float4x4( + 0.66667f, 0.00000f, 0.00000f, 0.33333f, + 0.00000f, 1.00000f, 0.00000f, 2.00000f, + 0.00000f, 0.00000f, -0.20000f, -0.40000f, + 0.00000f, 0.00000f, 0.00000f, 1.00000f + ); + TestUtils.AreEqual(m, r, 0.001f); + } + + [TestCompiler] + public static void float4x4_perspective() + { + float fovy = 1.6f; + float aspect = 1.3333f; + float near = 0.1f; + float far = 100.0f; + + float height = tan(fovy * 0.5f) * near; + float width = height * 1.3333f; + + float4x4 m = float4x4.PerspectiveFov(fovy, aspect, near, far); + float4x4 r = float4x4( + 0.72843f, 0.00000f, 0.00000f, 0.00000f, + 0.00000f, 0.97121f, 0.00000f, 0.00000f, + 0.00000f, 0.00000f, -1.00200f, -0.20020f, + 0.00000f, 0.00000f, -1.00000f, 0.00000f + ); + TestUtils.AreEqual(m, r, 0.001f); + + float4 p0 = mul(m, float4(-width, -height, -near, 1.0f)); + float4 pp0 = p0 / p0.w; + TestUtils.AreEqual(pp0.xyz, float3(-1.0f, -1.0f, -1.0f), 0.001f); + + float4 p1 = mul(m, float4(width / near * far, height / near * far, -far, 1.0f)); + float4 pp1 = p1 / p1.w; + TestUtils.AreEqual(pp1.xyz, float3(1.0f, 1.0f, 1.0f), 0.001f); + } + + [TestCompiler] + public static void float4x4_perspectiveOffCenter() + { + float fovy = 1.6f; + float aspect = 1.3333f; + float near = 0.1f; + float far = 100.0f; + + float4x4 r0 = float4x4.PerspectiveFov(fovy, aspect, near, far); + + float height = tan(fovy * 0.5f) * near; + float width = height * 1.3333f; + + float4x4 m0 = float4x4.PerspectiveOffCenter(-width, width, -height, height, 0.1f, 100.0f); + TestUtils.AreEqual(m0, r0, 0.001f); + + float left = -0.3f; + float right = -0.1f; + float bottom = -0.2f; + float top = 0.1f; + float4x4 m1 = float4x4.PerspectiveOffCenter(left, right, bottom, top, near, far); + float4 p0 = mul(m1, float4(left, bottom, -near, 1.0f)); + float4 pp0 = p0 / p0.w; + TestUtils.AreEqual(pp0.xyz, float3(-1.0f, -1.0f, -1.0f), 0.001f); + + float4 p1 = mul(m1, float4(right, top, -near, 1.0f)); + float4 pp1 = p1 / p1.w; + TestUtils.AreEqual(pp1.xyz, float3(1.0f, 1.0f, -1.0f), 0.001f); + + float4 p2 = mul(m1, float4(left*far/near, top * far / near, -far, 1.0f)); + float4 pp2 = p2 / p2.w; + TestUtils.AreEqual(pp2.xyz, float3(-1.0f, 1.0f, 1.0f), 0.001f); + } + + [TestCompiler] + public static void float4x4_TRS() + { + float3 scale = float3(1.2f, -0.4f, 2.3f); + quaternion rotation = TestQuaternion.test_q0; + float3 translation = float3(12.3f, -4.3f, 135.99f); + float4x4 r0 = mul(float4x4(quaternion.identity, translation), mul(float4x4(rotation, float3.zero), float4x4.Scale(scale))); + float4x4 m0 = float4x4.TRS(translation, rotation, scale); + TestUtils.AreEqual(m0, r0, 0.001f); + } + + } +} diff --git a/package/Tests/Tests/Shared/TestMatrix.cs.meta b/package/Tests/Tests/Shared/TestMatrix.cs.meta new file mode 100755 index 000000000..5e1f1b32e --- /dev/null +++ b/package/Tests/Tests/Shared/TestMatrix.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 6216aa8a60396374dbab4fbd185eac26 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/package/Tests/Tests/Shared/TestQuaternion.cs b/package/Tests/Tests/Shared/TestQuaternion.cs new file mode 100755 index 000000000..5de441748 --- /dev/null +++ b/package/Tests/Tests/Shared/TestQuaternion.cs @@ -0,0 +1,341 @@ +using NUnit.Framework; +using static Unity.Mathematics.math; +using Burst.Compiler.IL.Tests; + +namespace Unity.Mathematics.Tests +{ + [TestFixture] + class TestQuaternion + { + [TestCompiler] + public static void quaternion_basic_constructors() + { + quaternion q = quaternion(1.0f, 2.0f, 3.0f, 4.0f); + quaternion q2 = quaternion(float4(1.0f, 2.0f, 3.0f, 4.0f)); + + TestUtils.AreEqual(q.value.x, 1.0f); + TestUtils.AreEqual(q.value.y, 2.0f); + TestUtils.AreEqual(q.value.z, 3.0f); + TestUtils.AreEqual(q.value.w, 4.0f); + TestUtils.AreEqual(q2.value.x, 1.0f); + TestUtils.AreEqual(q2.value.y, 2.0f); + TestUtils.AreEqual(q2.value.z, 3.0f); + TestUtils.AreEqual(q2.value.w, 4.0f); + } + + [TestCompiler] + public static void quaternion_construct_from_matrix() + { + TestUtils.AreEqual(TestMatrix.test3x3_xyz, float3x3(quaternion(TestMatrix.test3x3_xyz)), 0.0001f); + TestUtils.AreEqual(TestMatrix.test4x4_xyz, float4x4(quaternion(TestMatrix.test4x4_xyz), float3.zero), 0.0001f); + + // Make sure to hit all 4 cases + float3x3 m0 = float3x3.AxisAngle(normalize(float3(1, 2, 3)), 1.0f); + float3x3 m1 = float3x3.AxisAngle(normalize(float3(3, 2, 1)), 3.0f); + float3x3 m2 = float3x3.AxisAngle(normalize(float3(1, 3, 2)), 3.0f); + float3x3 m3 = float3x3.AxisAngle(normalize(float3(1, 2, 3)), 3.0f); + quaternion q0 = quaternion(m0); + quaternion q1 = quaternion(m1); + quaternion q2 = quaternion(m2); + quaternion q3 = quaternion(m3); + TestUtils.AreEqual(q0, quaternion(0.1281319f, 0.2562638f, 0.3843956f, 0.8775827f), 0.0001f); + TestUtils.AreEqual(q1, quaternion(0.7997754f, 0.5331835f, 0.2665918f, 0.0707372f), 0.0001f); + TestUtils.AreEqual(q2, quaternion(0.2665918f, 0.7997754f, 0.5331835f, 0.0707372f), 0.0001f); + TestUtils.AreEqual(q3, quaternion(0.2665918f, 0.5331835f, 0.7997754f, 0.0707372f), 0.0001f); + } + + + [TestCompiler] + public static void quaternion_construct_from_matrix3x3_torture() + { + Random rnd = new Random(0x12345678); + for(int i = 0; i < 1000; i++) + { + float3x3 r = float3x3(rnd.NextQuaternionRotation()); + quaternion q = quaternion(r); + float3x3 t = float3x3(q); + TestUtils.AreEqual(t, r, 0.001f); + } + } + + [TestCompiler] + public static void quaternion_construct_from_matrix4x4_torture() + { + Random rnd = new Random(0x12345678); + for (int i = 0; i < 1000; i++) + { + float4x4 r = float4x4(rnd.NextQuaternionRotation(), float3.zero); + quaternion q = quaternion(r); + float4x4 t = float4x4(q, float3.zero); + TestUtils.AreEqual(t, r, 0.001f); + } + } + + [TestCompiler] + public static void quaternion_axis_angle() + { + quaternion q = quaternion.AxisAngle(normalize(float3(1.0f, 2.0f, 3.0f)), 10.0f); + + quaternion r = quaternion(-0.2562833f, -0.5125666f, -0.76885f, 0.2836622f); + TestUtils.AreEqual(q, r, 0.0001f); + } + + [TestCompiler] + public static void quaternion_axis_angle_consistency() + { + TestUtils.AreEqual(quaternion.AxisAngle(float3(1, 0, 0), 1.0f), quaternion.RotateX(1.0f), 0.001f); + TestUtils.AreEqual(quaternion.AxisAngle(float3(0, 1, 0), 1.0f), quaternion.RotateY(1.0f), 0.001f); + TestUtils.AreEqual(quaternion.AxisAngle(float3(0, 0, 1), 1.0f), quaternion.RotateZ(1.0f), 0.001f); + } + + [TestCompiler] + public static void quaternion_euler() + { + float3 test_angles = TestMatrix.test_angles; + quaternion q0 = quaternion.Euler(test_angles); + quaternion q0_xyz = quaternion.Euler(test_angles, RotationOrder.XYZ); + quaternion q0_xzy = quaternion.Euler(test_angles, RotationOrder.XZY); + quaternion q0_yxz = quaternion.Euler(test_angles, RotationOrder.YXZ); + quaternion q0_yzx = quaternion.Euler(test_angles, RotationOrder.YZX); + quaternion q0_zxy = quaternion.Euler(test_angles, RotationOrder.ZXY); + quaternion q0_zyx = quaternion.Euler(test_angles, RotationOrder.ZYX); + + quaternion q1 = quaternion.Euler(test_angles.x, test_angles.y, test_angles.z); + quaternion q1_xyz = quaternion.Euler(test_angles.x, test_angles.y, test_angles.z, RotationOrder.XYZ); + quaternion q1_xzy = quaternion.Euler(test_angles.x, test_angles.y, test_angles.z, RotationOrder.XZY); + quaternion q1_yxz = quaternion.Euler(test_angles.x, test_angles.y, test_angles.z, RotationOrder.YXZ); + quaternion q1_yzx = quaternion.Euler(test_angles.x, test_angles.y, test_angles.z, RotationOrder.YZX); + quaternion q1_zxy = quaternion.Euler(test_angles.x, test_angles.y, test_angles.z, RotationOrder.ZXY); + quaternion q1_zyx = quaternion.Euler(test_angles.x, test_angles.y, test_angles.z, RotationOrder.ZYX); + + float epsilon = 0.0001f; + TestUtils.AreEqual(q0, quaternion(-0.3133549f, 0.3435619f, 0.3899215f, 0.7948176f), epsilon); + TestUtils.AreEqual(q0_xyz, quaternion(-0.4597331f, 0.06979711f, 0.3899215f, 0.7948176f), epsilon); + TestUtils.AreEqual(q0_xzy, quaternion(-0.3133549f, 0.06979711f, 0.3899215f, 0.8630749f), epsilon); + TestUtils.AreEqual(q0_yxz, quaternion(-0.4597331f, 0.06979711f, 0.1971690f, 0.8630748f), epsilon); + TestUtils.AreEqual(q0_yzx, quaternion(-0.4597331f, 0.34356190f, 0.1971690f, 0.7948176f), epsilon); + TestUtils.AreEqual(q0_zxy, quaternion(-0.3133549f, 0.34356190f, 0.3899215f, 0.7948176f), epsilon); + TestUtils.AreEqual(q0_zyx, quaternion(-0.3133549f, 0.34356190f, 0.1971690f, 0.8630749f), epsilon); + + TestUtils.AreEqual(q1, quaternion(-0.3133549f, 0.3435619f, 0.3899215f, 0.7948176f), epsilon); + TestUtils.AreEqual(q1_xyz, quaternion(-0.4597331f, 0.06979711f, 0.3899215f, 0.7948176f), epsilon); + TestUtils.AreEqual(q1_xzy, quaternion(-0.3133549f, 0.06979711f, 0.3899215f, 0.8630749f), epsilon); + TestUtils.AreEqual(q1_yxz, quaternion(-0.4597331f, 0.06979711f, 0.1971690f, 0.8630748f), epsilon); + TestUtils.AreEqual(q1_yzx, quaternion(-0.4597331f, 0.34356190f, 0.1971690f, 0.7948176f), epsilon); + TestUtils.AreEqual(q1_zxy, quaternion(-0.3133549f, 0.34356190f, 0.3899215f, 0.7948176f), epsilon); + TestUtils.AreEqual(q1_zyx, quaternion(-0.3133549f, 0.34356190f, 0.1971690f, 0.8630749f), epsilon); + + float3x3 m0 = float3x3(q0); + float3x3 m0_xyz = float3x3(q0_xyz); + float3x3 m0_xzy = float3x3(q0_xzy); + float3x3 m0_yxz = float3x3(q0_yxz); + float3x3 m0_yzx = float3x3(q0_yzx); + float3x3 m0_zxy = float3x3(q0_zxy); + float3x3 m0_zyx = float3x3(q0_zyx); + + float3x3 m1 = float3x3(q1); + float3x3 m1_xyz = float3x3(q1_xyz); + float3x3 m1_xzy = float3x3(q1_xzy); + float3x3 m1_yxz = float3x3(q1_yxz); + float3x3 m1_yzx = float3x3(q1_yzx); + float3x3 m1_zxy = float3x3(q1_zxy); + float3x3 m1_zyx = float3x3(q1_zyx); + + TestUtils.AreEqual(m0, TestMatrix.test3x3_zxy, epsilon); + TestUtils.AreEqual(m0_xyz, TestMatrix.test3x3_xyz, epsilon); + TestUtils.AreEqual(m0_yzx, TestMatrix.test3x3_yzx, epsilon); + TestUtils.AreEqual(m0_zxy, TestMatrix.test3x3_zxy, epsilon); + TestUtils.AreEqual(m0_xzy, TestMatrix.test3x3_xzy, epsilon); + TestUtils.AreEqual(m0_yxz, TestMatrix.test3x3_yxz, epsilon); + TestUtils.AreEqual(m0_zyx, TestMatrix.test3x3_zyx, 0.0001f); + + TestUtils.AreEqual(m1, TestMatrix.test3x3_zxy, epsilon); + TestUtils.AreEqual(m1_xyz, TestMatrix.test3x3_xyz, epsilon); + TestUtils.AreEqual(m1_yzx, TestMatrix.test3x3_yzx, epsilon); + TestUtils.AreEqual(m1_zxy, TestMatrix.test3x3_zxy, epsilon); + TestUtils.AreEqual(m1_xzy, TestMatrix.test3x3_xzy, epsilon); + TestUtils.AreEqual(m1_yxz, TestMatrix.test3x3_yxz, epsilon); + TestUtils.AreEqual(m1_zyx, TestMatrix.test3x3_zyx, epsilon); + } + + [TestCompiler] + public static void quaternion_rotateX() + { + float angle = 2.3f; + quaternion q = quaternion.RotateX(angle); + + quaternion r = quaternion(0.91276394f, 0.0f, 0.0f, 0.40848744f); + TestUtils.AreEqual(q, r, 0.0001f); + } + + [TestCompiler] + public static void quaternion_rotateY() + { + float angle = 2.3f; + quaternion q = quaternion.RotateY(angle); + + quaternion r = quaternion(0.0f, 0.91276394f, 0.0f, 0.40848744f); + TestUtils.AreEqual(q, r, 0.0001f); + } + + [TestCompiler] + public static void quaternion_rotateZ() + { + float angle = 2.3f; + quaternion q = quaternion.RotateZ(angle); + + quaternion r = quaternion(0.0f, 0.0f, 0.91276394f, 0.40848744f); + TestUtils.AreEqual(q, r, 0.0001f); + } + + static internal readonly quaternion test_q0 = new quaternion(0.3270836f, 0.8449658f, -0.1090279f, 0.4088545f); + static internal readonly quaternion test_q1 = new quaternion(-0.05623216f, 0.731018f, -0.6747859f, -0.08434824f); + static internal readonly quaternion test_q2 = new quaternion(-0.2316205f, -0.6022133f, -0.7411857f, -0.1852964f); + static internal readonly quaternion test_q3 = new quaternion(0.3619499f, 0.8352691f, -0.1392115f, 0.3897922f); + + [TestCompiler] + public static void quaternion_conjugate() + { + quaternion q = quaternion(1.0f, -2.0f, 3.0f, -4.0f); + quaternion cq = conjugate(q); + quaternion r = quaternion(-1.0f, 2.0f, -3.0f, -4.0f); + + TestUtils.AreEqual(cq, r); + } + + [TestCompiler] + public static void quaternion_inverse() + { + quaternion q = quaternion(1.0f, -2.0f, 3.0f, -4.0f); + quaternion iq = inverse(q); + quaternion qiq = mul(iq, q); + + TestUtils.AreEqual(qiq, quaternion.identity, 0.00001f); + } + + [TestCompiler] + public static void quaternion_dot() + { + float dot01 = dot(test_q0, test_q1); + float dot02 = dot(test_q0, test_q2); + + TestUtils.AreEqual(dot01, 0.6383769f, 0.00001f); + TestUtils.AreEqual(dot02, -0.5795583f, 0.00001f); + } + + [TestCompiler] + public static void quaternion_nlerp() + { + quaternion r0 = nlerp(test_q0, test_q1, 0.3f); + quaternion r1 = nlerp(test_q0, test_q1, -4.3f); + quaternion r2 = nlerp(test_q0, test_q1, 5.1f); + + TestUtils.AreEqual(r0, quaternion(0.2302977f, 0.8803911f, -0.3026878f, 0.2832927f), 0.0001f); + TestUtils.AreEqual(r1, quaternion(0.4724294f, 0.3192692f, 0.5557517f, 0.604994f), 0.0001f); + TestUtils.AreEqual(r2, quaternion(-0.4054004f, 0.06570576f, -0.7457358f, -0.5246059f), 0.0001f); + } + + [TestCompiler] + public static void quaternion_slerp() + { + quaternion r0 = slerp(test_q0, test_q1, 0.3f); + quaternion r1 = slerp(test_q0, test_q1, -4.3f); + quaternion r2 = slerp(test_q0, test_q1, 5.1f); + + TestUtils.AreEqual(r0, quaternion(0.2261014f, 0.8806396f, -0.3100654f, 0.2778693f), 0.0001f); + TestUtils.AreEqual(r1, quaternion(-0.4676181f, -0.5321988f, -0.3789966f, -0.5953646f), 0.0001f); + TestUtils.AreEqual(r2, quaternion(0.2596942f, -0.4369303f, 0.7902023f, 0.34239f), 0.0001f); + } + + [TestCompiler] + public static void quaternion_mul_vector() + { + float3x3 m = TestMatrix.test3x3_xyz; + quaternion q = quaternion(m); + + float3 vector = float3(1.1f, -2.2f, 3.5f); + + float3 mvector = mul(m, vector); + float3 qvector = mul(q, vector); + + TestUtils.AreEqual(qvector, mvector, 0.0001f); + } + + [TestCompiler] + public static void quaternion_log_exp_identity() + { + quaternion q = quaternion(1.2f, -2.6f, 3.1f, 6.0f); + quaternion log_q = log(q); + quaternion exp_log_q = exp(log_q); + TestUtils.AreEqual(exp_log_q, q, 0.0001f); + } + + [TestCompiler] + public static void quaternion_log_exp_rotation() + { + quaternion q = quaternion(TestMatrix.test3x3_xyz); + quaternion q3 = mul(q, mul(q, q)); + quaternion log_q = log(q); + quaternion t = exp(quaternion(log_q.value * 3.0f)); + TestUtils.AreEqual(t, q3, 0.0001f); + } + + [TestCompiler] + public static void quaternion_unitlog_unitexp_rotation() + { + quaternion q = quaternion(TestMatrix.test3x3_xyz); + quaternion q3 = mul(q, mul(q, q)); + quaternion log_q = unitlog(q); + quaternion t = unitexp(quaternion(log_q.value * 3.0f)); + TestUtils.AreEqual(t, q3, 0.0001f); + } + + [TestCompiler] + public static void quaternion_look_rotation() + { + // Exercise the 4 cases + float3 forward0 = normalize(float3(1.0f, 2.0f, 3.0f)); + float3 up0 = float3(0.0f, 1.0f, 0.0f); + quaternion q0 = quaternion.LookRotation(forward0, up0); + TestUtils.AreEqual(q0, quaternion(-0.274657f, 0.153857f, 0.044571f, 0.948106f), 0.001f); + TestUtils.AreEqual(float3x3(q0), float3x3.LookRotation(forward0, up0), 0.001f); + + float3 forward1 = normalize(float3(-3.2f, 2.3f, -1.3f)); + float3 up1 = normalize(float3(1.0f, -3.2f, -1.5f)); + quaternion q1 = quaternion.LookRotation(forward1, up1); + TestUtils.AreEqual(q1, quaternion(0.805418f, 0.089103f, -0.435327f, -0.392240f), 0.001f); + TestUtils.AreEqual(float3x3(q1), float3x3.LookRotation(forward1, up1), 0.001f); + + float3 forward2 = normalize(float3(-2.6f, -5.2f, -1.1f)); + float3 up2 = normalize(float3(-4.2f, -1.2f, -4.5f)); + quaternion q2 = quaternion.LookRotation(forward2, up2); + TestUtils.AreEqual(q2, quaternion(-0.088343f, 0.764951f, -0.534144f, -0.348907f), 0.001f); + TestUtils.AreEqual(float3x3(q2), float3x3.LookRotation(forward2, up2), 0.001f); + + float3 forward3 = normalize(float3(1.3f, 2.1f, 3.4f)); + float3 up3 = normalize(float3(0.2f, -1.0f, 0.3f)); + quaternion q3 = quaternion.LookRotation(forward3, up3); + TestUtils.AreEqual(q3, quaternion(0.184984f, 0.247484f, 0.947425f, -0.083173f), 0.001f); + TestUtils.AreEqual(float3x3(q3), float3x3.LookRotation(forward3, up3), 0.001f); + } + + [TestCompiler] + public static void quaternion_look_rotation_safe() + { + float3 forward0 = float3(-3.2f, 2.3f, -1.3f) * 1e-10f; + float3 up0 = float3(1.0f, -3.2f, -1.5f) * 1e10f; + quaternion q0 = quaternion.LookRotationSafe(forward0, up0); + TestUtils.AreEqual(q0, quaternion(0.805418f, 0.089103f, -0.435327f, -0.392240f), 0.001f); + + float3 forward1 = float3(-3.2f, 2.3f, -1.3f) * 1e-30f; + float3 up1 = float3(1.0f, -3.2f, -1.5f); + quaternion q1 = quaternion.LookRotationSafe(forward1, up1); + TestUtils.AreEqual(q1, quaternion.identity, 0.001f); + + float3 forward2 = float3(-3.2f, 2.3f, -1.3f); + float3 up2 = forward2; + quaternion q2 = quaternion.LookRotationSafe(forward2, up2); + TestUtils.AreEqual(q2, quaternion.identity, 0.001f); + } + } +} diff --git a/package/Tests/Tests/Shared/TestQuaternion.cs.meta b/package/Tests/Tests/Shared/TestQuaternion.cs.meta new file mode 100755 index 000000000..9ea60bc5b --- /dev/null +++ b/package/Tests/Tests/Shared/TestQuaternion.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 36c7224b1052973439eead9de857ea33 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/package/Tests/Tests/Shared/TestRigidTransform.cs b/package/Tests/Tests/Shared/TestRigidTransform.cs new file mode 100755 index 000000000..5255b652b --- /dev/null +++ b/package/Tests/Tests/Shared/TestRigidTransform.cs @@ -0,0 +1,163 @@ +using NUnit.Framework; +using static Unity.Mathematics.math; +using Burst.Compiler.IL.Tests; + +namespace Unity.Mathematics.Tests +{ + [TestFixture] + class TestRigidTransform + { + [TestCompiler] + public static void rigid_transform_construct_from_matrix() + { + float4x4 m4x4 = TestMatrix.test4x4_zyx; + + RigidTransform q4x4 = RigidTransform(m4x4); + + float4x4 mq4x4 = float4x4(q4x4); + + TestUtils.AreEqual(mq4x4, m4x4, 0.0001f); + } + + [TestCompiler] + public static void rigid_transform_axisAngle() + { + RigidTransform q = RigidTransform.AxisAngle(normalize(float3(1.0f, 2.0f, 3.0f)), 10.0f); + + RigidTransform r = RigidTransform(quaternion(-0.2562833f, -0.5125666f, -0.76885f, 0.2836622f), float3.zero); + TestUtils.AreEqual(q, r, 0.0001f); + } + + [TestCompiler] + public static void rigid_transform_euler() + { + float3 test_angles = TestMatrix.test_angles; + RigidTransform q0 = RigidTransform.Euler(test_angles); + RigidTransform q0_xyz = RigidTransform.Euler(test_angles, RotationOrder.XYZ); + RigidTransform q0_xzy = RigidTransform.Euler(test_angles, RotationOrder.XZY); + RigidTransform q0_yxz = RigidTransform.Euler(test_angles, RotationOrder.YXZ); + RigidTransform q0_yzx = RigidTransform.Euler(test_angles, RotationOrder.YZX); + RigidTransform q0_zxy = RigidTransform.Euler(test_angles, RotationOrder.ZXY); + RigidTransform q0_zyx = RigidTransform.Euler(test_angles, RotationOrder.ZYX); + + RigidTransform q1 = RigidTransform.Euler(test_angles.x, test_angles.y, test_angles.z); + RigidTransform q1_xyz = RigidTransform.Euler(test_angles.x, test_angles.y, test_angles.z, RotationOrder.XYZ); + RigidTransform q1_xzy = RigidTransform.Euler(test_angles.x, test_angles.y, test_angles.z, RotationOrder.XZY); + RigidTransform q1_yxz = RigidTransform.Euler(test_angles.x, test_angles.y, test_angles.z, RotationOrder.YXZ); + RigidTransform q1_yzx = RigidTransform.Euler(test_angles.x, test_angles.y, test_angles.z, RotationOrder.YZX); + RigidTransform q1_zxy = RigidTransform.Euler(test_angles.x, test_angles.y, test_angles.z, RotationOrder.ZXY); + RigidTransform q1_zyx = RigidTransform.Euler(test_angles.x, test_angles.y, test_angles.z, RotationOrder.ZYX); + + float epsilon = 0.0001f; + TestUtils.AreEqual(q0, RigidTransform(quaternion(-0.3133549f, 0.3435619f, 0.3899215f, 0.7948176f), float3.zero), epsilon); + TestUtils.AreEqual(q0_xyz, RigidTransform(quaternion(-0.4597331f, 0.06979711f, 0.3899215f, 0.7948176f), float3.zero), epsilon); + TestUtils.AreEqual(q0_xzy, RigidTransform(quaternion(-0.3133549f, 0.06979711f, 0.3899215f, 0.8630749f), float3.zero), epsilon); + TestUtils.AreEqual(q0_yxz, RigidTransform(quaternion(-0.4597331f, 0.06979711f, 0.1971690f, 0.8630748f), float3.zero), epsilon); + TestUtils.AreEqual(q0_yzx, RigidTransform(quaternion(-0.4597331f, 0.34356190f, 0.1971690f, 0.7948176f), float3.zero), epsilon); + TestUtils.AreEqual(q0_zxy, RigidTransform(quaternion(-0.3133549f, 0.34356190f, 0.3899215f, 0.7948176f), float3.zero), epsilon); + TestUtils.AreEqual(q0_zyx, RigidTransform(quaternion(-0.3133549f, 0.34356190f, 0.1971690f, 0.8630749f), float3.zero), epsilon); + + TestUtils.AreEqual(q1, RigidTransform(quaternion(-0.3133549f, 0.3435619f, 0.3899215f, 0.7948176f), float3.zero), epsilon); + TestUtils.AreEqual(q1_xyz, RigidTransform(quaternion(-0.4597331f, 0.06979711f, 0.3899215f, 0.7948176f), float3.zero), epsilon); + TestUtils.AreEqual(q1_xzy, RigidTransform(quaternion(-0.3133549f, 0.06979711f, 0.3899215f, 0.8630749f), float3.zero), epsilon); + TestUtils.AreEqual(q1_yxz, RigidTransform(quaternion(-0.4597331f, 0.06979711f, 0.1971690f, 0.8630748f), float3.zero), epsilon); + TestUtils.AreEqual(q1_yzx, RigidTransform(quaternion(-0.4597331f, 0.34356190f, 0.1971690f, 0.7948176f), float3.zero), epsilon); + TestUtils.AreEqual(q1_zxy, RigidTransform(quaternion(-0.3133549f, 0.34356190f, 0.3899215f, 0.7948176f), float3.zero), epsilon); + TestUtils.AreEqual(q1_zyx, RigidTransform(quaternion(-0.3133549f, 0.34356190f, 0.1971690f, 0.8630749f), float3.zero), epsilon); + + float3x3 m0 = float3x3(q0.rot); + float3x3 m0_xyz = float3x3(q0_xyz.rot); + float3x3 m0_xzy = float3x3(q0_xzy.rot); + float3x3 m0_yxz = float3x3(q0_yxz.rot); + float3x3 m0_yzx = float3x3(q0_yzx.rot); + float3x3 m0_zxy = float3x3(q0_zxy.rot); + float3x3 m0_zyx = float3x3(q0_zyx.rot); + + float3x3 m1 = float3x3(q1.rot); + float3x3 m1_xyz = float3x3(q1_xyz.rot); + float3x3 m1_xzy = float3x3(q1_xzy.rot); + float3x3 m1_yxz = float3x3(q1_yxz.rot); + float3x3 m1_yzx = float3x3(q1_yzx.rot); + float3x3 m1_zxy = float3x3(q1_zxy.rot); + float3x3 m1_zyx = float3x3(q1_zyx.rot); + + TestUtils.AreEqual(m0, TestMatrix.test3x3_zxy, epsilon); + TestUtils.AreEqual(m0_xyz, TestMatrix.test3x3_xyz, epsilon); + TestUtils.AreEqual(m0_yzx, TestMatrix.test3x3_yzx, epsilon); + TestUtils.AreEqual(m0_zxy, TestMatrix.test3x3_zxy, epsilon); + TestUtils.AreEqual(m0_xzy, TestMatrix.test3x3_xzy, epsilon); + TestUtils.AreEqual(m0_yxz, TestMatrix.test3x3_yxz, epsilon); + TestUtils.AreEqual(m0_zyx, TestMatrix.test3x3_zyx, 0.0001f); + + TestUtils.AreEqual(m1, TestMatrix.test3x3_zxy, epsilon); + TestUtils.AreEqual(m1_xyz, TestMatrix.test3x3_xyz, epsilon); + TestUtils.AreEqual(m1_yzx, TestMatrix.test3x3_yzx, epsilon); + TestUtils.AreEqual(m1_zxy, TestMatrix.test3x3_zxy, epsilon); + TestUtils.AreEqual(m1_xzy, TestMatrix.test3x3_xzy, epsilon); + TestUtils.AreEqual(m1_yxz, TestMatrix.test3x3_yxz, epsilon); + TestUtils.AreEqual(m1_zyx, TestMatrix.test3x3_zyx, epsilon); + } + + [TestCompiler] + public static void rigid_transform_rotateX() + { + float angle = 2.3f; + RigidTransform q = RigidTransform.RotateX(angle); + + RigidTransform r = RigidTransform(quaternion(0.91276394f, 0.0f, 0.0f, 0.40848744f), float3.zero); + TestUtils.AreEqual(q, r, 0.0001f); + } + + [TestCompiler] + public static void rigid_transform_rotateY() + { + float angle = 2.3f; + RigidTransform q = RigidTransform.RotateY(angle); + + RigidTransform r = RigidTransform(quaternion(0.0f, 0.91276394f, 0.0f, 0.40848744f), float3.zero); + TestUtils.AreEqual(q, r, 0.0001f); + } + + [TestCompiler] + public static void rigid_transform_rotateZ() + { + float angle = 2.3f; + RigidTransform q = RigidTransform.RotateZ(angle); + + RigidTransform r = RigidTransform(quaternion(0.0f, 0.0f, 0.91276394f, 0.40848744f), float3.zero); + TestUtils.AreEqual(q, r, 0.0001f); + } + + static internal readonly quaternion test_q0 = new quaternion(0.3270836f, 0.8449658f, -0.1090279f, 0.4088545f); + static internal readonly quaternion test_q1 = new quaternion(-0.05623216f, 0.731018f, -0.6747859f, -0.08434824f); + static internal readonly quaternion test_q2 = new quaternion(-0.2316205f, -0.6022133f, -0.7411857f, -0.1852964f); + static internal readonly quaternion test_q3 = new quaternion(0.3619499f, 0.8352691f, -0.1392115f, 0.3897922f); + + [TestCompiler] + public static void rigid_transform_inverse() + { + RigidTransform q = RigidTransform(quaternion(1.0f, -2.0f, 3.0f, -4.0f), float3(1,2,3)); + RigidTransform iq = inverse(q); + RigidTransform qiq = mul(iq, q); + + TestUtils.AreEqual(qiq, RigidTransform.identity, 0.00001f); + } + + [TestCompiler] + public static void rigid_transform_mul_vector() + { + float4x4 m = TestMatrix.test4x4_xyz; + RigidTransform q = RigidTransform(m); + + float3 vector = float3(1.1f, -2.2f, 3.5f); + + float4 mvector0 = mul(m, float4(vector, 0)); + float4 qvector0 = mul(q, float4(vector, 0)); + TestUtils.AreEqual(qvector0, mvector0, 0.0001f); + + float4 mvector1 = mul(m, float4(vector, 1)); + float4 qvector1 = mul(q, float4(vector, 1)); + TestUtils.AreEqual(qvector1, mvector1, 0.0001f); + } + } +} diff --git a/package/Tests/Tests/Shared/TestRigidTransform.cs.meta b/package/Tests/Tests/Shared/TestRigidTransform.cs.meta new file mode 100755 index 000000000..2d5869d65 --- /dev/null +++ b/package/Tests/Tests/Shared/TestRigidTransform.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 0ea7743c8ecbfba4abe11751b744207e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/package/Tests/Tests/Shared/TestUint2.gen.cs b/package/Tests/Tests/Shared/TestUint2.gen.cs new file mode 100755 index 000000000..c926e8d1b --- /dev/null +++ b/package/Tests/Tests/Shared/TestUint2.gen.cs @@ -0,0 +1,1339 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using NUnit.Framework; +using static Unity.Mathematics.math; +using Burst.Compiler.IL.Tests; + +namespace Unity.Mathematics.Tests +{ + [TestFixture] + public class TestUint2 + { + [TestCompiler] + public static void uint2_zero() + { + TestUtils.AreEqual(uint2.zero.x, 0u); + TestUtils.AreEqual(uint2.zero.y, 0u); + } + + [TestCompiler] + public static void uint2_constructor() + { + uint2 a = new uint2(1, 2); + TestUtils.AreEqual(a.x, 1); + TestUtils.AreEqual(a.y, 2); + } + + [TestCompiler] + public static void uint2_scalar_constructor() + { + uint2 a = new uint2(17u); + TestUtils.AreEqual(a.x, 17u); + TestUtils.AreEqual(a.y, 17u); + } + + [TestCompiler] + public static void uint2_static_constructor() + { + uint2 a = uint2(1, 2); + TestUtils.AreEqual(a.x, 1); + TestUtils.AreEqual(a.y, 2); + } + + [TestCompiler] + public static void uint2_static_scalar_constructor() + { + uint2 a = uint2(17u); + TestUtils.AreEqual(a.x, 17u); + TestUtils.AreEqual(a.y, 17u); + } + + [TestCompiler] + public static void uint2_operator_equal_wide_wide() + { + uint2 a0 = uint2(790229414, 970783976); + uint2 b0 = uint2(612337669, 1214209108); + bool2 r0 = bool2(false, false); + TestUtils.AreEqual(a0 == b0, r0); + + uint2 a1 = uint2(1428432738, 1578747135); + uint2 b1 = uint2(2120643427, 295461214); + bool2 r1 = bool2(false, false); + TestUtils.AreEqual(a1 == b1, r1); + + uint2 a2 = uint2(1733797753, 2001507228); + uint2 b2 = uint2(1510890331, 1893316566); + bool2 r2 = bool2(false, false); + TestUtils.AreEqual(a2 == b2, r2); + + uint2 a3 = uint2(1446876437, 1777406370); + uint2 b3 = uint2(921816149, 1834958575); + bool2 r3 = bool2(false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void uint2_operator_equal_wide_scalar() + { + uint2 a0 = uint2(1211464300, 1921862607); + uint b0 = (746972502); + bool2 r0 = bool2(false, false); + TestUtils.AreEqual(a0 == b0, r0); + + uint2 a1 = uint2(508076684, 1394594555); + uint b1 = (1249127920); + bool2 r1 = bool2(false, false); + TestUtils.AreEqual(a1 == b1, r1); + + uint2 a2 = uint2(746862310, 1884008277); + uint b2 = (1733655277); + bool2 r2 = bool2(false, false); + TestUtils.AreEqual(a2 == b2, r2); + + uint2 a3 = uint2(1682018538, 936027116); + uint b3 = (795585660); + bool2 r3 = bool2(false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void uint2_operator_equal_scalar_wide() + { + uint a0 = (1150044438); + uint2 b0 = uint2(233855098, 924242519); + bool2 r0 = bool2(false, false); + TestUtils.AreEqual(a0 == b0, r0); + + uint a1 = (1402948791); + uint2 b1 = uint2(601381975, 2120518068); + bool2 r1 = bool2(false, false); + TestUtils.AreEqual(a1 == b1, r1); + + uint a2 = (629187703); + uint2 b2 = uint2(1971977031, 47183124); + bool2 r2 = bool2(false, false); + TestUtils.AreEqual(a2 == b2, r2); + + uint a3 = (1061805787); + uint2 b3 = uint2(1009011238, 312511148); + bool2 r3 = bool2(false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void uint2_operator_not_equal_wide_wide() + { + uint2 a0 = uint2(1660932106, 982847023); + uint2 b0 = uint2(107139049, 75478496); + bool2 r0 = bool2(true, true); + TestUtils.AreEqual(a0 != b0, r0); + + uint2 a1 = uint2(97046264, 1739517447); + uint2 b1 = uint2(2055495054, 358586687); + bool2 r1 = bool2(true, true); + TestUtils.AreEqual(a1 != b1, r1); + + uint2 a2 = uint2(1253499180, 1830584069); + uint2 b2 = uint2(942338347, 111564990); + bool2 r2 = bool2(true, true); + TestUtils.AreEqual(a2 != b2, r2); + + uint2 a3 = uint2(1841470429, 1397841646); + uint2 b3 = uint2(113811950, 948912488); + bool2 r3 = bool2(true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void uint2_operator_not_equal_wide_scalar() + { + uint2 a0 = uint2(747758183, 1033001286); + uint b0 = (248693828); + bool2 r0 = bool2(true, true); + TestUtils.AreEqual(a0 != b0, r0); + + uint2 a1 = uint2(1439973882, 1197845089); + uint b1 = (2138928797); + bool2 r1 = bool2(true, true); + TestUtils.AreEqual(a1 != b1, r1); + + uint2 a2 = uint2(1432672459, 238704450); + uint b2 = (950170763); + bool2 r2 = bool2(true, true); + TestUtils.AreEqual(a2 != b2, r2); + + uint2 a3 = uint2(2105962247, 1640688041); + uint b3 = (727205263); + bool2 r3 = bool2(true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void uint2_operator_not_equal_scalar_wide() + { + uint a0 = (2076921066); + uint2 b0 = uint2(2037494727, 1989050616); + bool2 r0 = bool2(true, true); + TestUtils.AreEqual(a0 != b0, r0); + + uint a1 = (48833929); + uint2 b1 = uint2(1897435904, 514354517); + bool2 r1 = bool2(true, true); + TestUtils.AreEqual(a1 != b1, r1); + + uint a2 = (1783749164); + uint2 b2 = uint2(364694471, 754315072); + bool2 r2 = bool2(true, true); + TestUtils.AreEqual(a2 != b2, r2); + + uint a3 = (124108032); + uint2 b3 = uint2(1512967900, 1178825850); + bool2 r3 = bool2(true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void uint2_operator_less_wide_wide() + { + uint2 a0 = uint2(1182186063, 415538999); + uint2 b0 = uint2(524633529, 1032195686); + bool2 r0 = bool2(false, true); + TestUtils.AreEqual(a0 < b0, r0); + + uint2 a1 = uint2(1667335818, 1566618442); + uint2 b1 = uint2(760723389, 1505751409); + bool2 r1 = bool2(false, false); + TestUtils.AreEqual(a1 < b1, r1); + + uint2 a2 = uint2(1166180837, 639095188); + uint2 b2 = uint2(431962172, 1287906509); + bool2 r2 = bool2(false, true); + TestUtils.AreEqual(a2 < b2, r2); + + uint2 a3 = uint2(1080836365, 771119973); + uint2 b3 = uint2(1560084663, 1450178202); + bool2 r3 = bool2(true, true); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void uint2_operator_less_wide_scalar() + { + uint2 a0 = uint2(608447185, 818840405); + uint b0 = (1491216667); + bool2 r0 = bool2(true, true); + TestUtils.AreEqual(a0 < b0, r0); + + uint2 a1 = uint2(869219329, 1214500548); + uint b1 = (2080125385); + bool2 r1 = bool2(true, true); + TestUtils.AreEqual(a1 < b1, r1); + + uint2 a2 = uint2(1361741203, 1615392341); + uint b2 = (1667165786); + bool2 r2 = bool2(true, true); + TestUtils.AreEqual(a2 < b2, r2); + + uint2 a3 = uint2(840091491, 1247103789); + uint b3 = (469591900); + bool2 r3 = bool2(false, false); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void uint2_operator_less_scalar_wide() + { + uint a0 = (548436837); + uint2 b0 = uint2(282703327, 14370648); + bool2 r0 = bool2(false, false); + TestUtils.AreEqual(a0 < b0, r0); + + uint a1 = (1862117300); + uint2 b1 = uint2(1304793311, 826073259); + bool2 r1 = bool2(false, false); + TestUtils.AreEqual(a1 < b1, r1); + + uint a2 = (988910157); + uint2 b2 = uint2(445132446, 1139670255); + bool2 r2 = bool2(false, true); + TestUtils.AreEqual(a2 < b2, r2); + + uint a3 = (111349251); + uint2 b3 = uint2(1102440676, 112183144); + bool2 r3 = bool2(true, true); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void uint2_operator_greater_wide_wide() + { + uint2 a0 = uint2(592884447, 2133928932); + uint2 b0 = uint2(138737040, 192863971); + bool2 r0 = bool2(true, true); + TestUtils.AreEqual(a0 > b0, r0); + + uint2 a1 = uint2(918957182, 1284069471); + uint2 b1 = uint2(1700841444, 1044631301); + bool2 r1 = bool2(false, true); + TestUtils.AreEqual(a1 > b1, r1); + + uint2 a2 = uint2(194584707, 739120780); + uint2 b2 = uint2(1391589821, 730837695); + bool2 r2 = bool2(false, true); + TestUtils.AreEqual(a2 > b2, r2); + + uint2 a3 = uint2(241654068, 1340158550); + uint2 b3 = uint2(253553987, 2078872742); + bool2 r3 = bool2(false, false); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void uint2_operator_greater_wide_scalar() + { + uint2 a0 = uint2(1097138316, 211763648); + uint b0 = (438688675); + bool2 r0 = bool2(true, false); + TestUtils.AreEqual(a0 > b0, r0); + + uint2 a1 = uint2(1883002501, 43662641); + uint b1 = (56406996); + bool2 r1 = bool2(true, false); + TestUtils.AreEqual(a1 > b1, r1); + + uint2 a2 = uint2(1923456111, 1219010035); + uint b2 = (1437755186); + bool2 r2 = bool2(true, false); + TestUtils.AreEqual(a2 > b2, r2); + + uint2 a3 = uint2(2125058448, 893125636); + uint b3 = (304028799); + bool2 r3 = bool2(true, true); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void uint2_operator_greater_scalar_wide() + { + uint a0 = (2024896938); + uint2 b0 = uint2(599356784, 185671342); + bool2 r0 = bool2(true, true); + TestUtils.AreEqual(a0 > b0, r0); + + uint a1 = (1932327391); + uint2 b1 = uint2(2025591013, 1257191721); + bool2 r1 = bool2(false, true); + TestUtils.AreEqual(a1 > b1, r1); + + uint a2 = (1312388500); + uint2 b2 = uint2(1443698859, 779217735); + bool2 r2 = bool2(false, true); + TestUtils.AreEqual(a2 > b2, r2); + + uint a3 = (691047512); + uint2 b3 = uint2(741776730, 732565983); + bool2 r3 = bool2(false, false); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void uint2_operator_less_equal_wide_wide() + { + uint2 a0 = uint2(1577248162, 2043073061); + uint2 b0 = uint2(903445031, 2108974565); + bool2 r0 = bool2(false, true); + TestUtils.AreEqual(a0 <= b0, r0); + + uint2 a1 = uint2(1688380407, 176431985); + uint2 b1 = uint2(210822256, 1281704747); + bool2 r1 = bool2(false, true); + TestUtils.AreEqual(a1 <= b1, r1); + + uint2 a2 = uint2(223299035, 1502802140); + uint2 b2 = uint2(453681718, 66138830); + bool2 r2 = bool2(true, false); + TestUtils.AreEqual(a2 <= b2, r2); + + uint2 a3 = uint2(1691709825, 386789394); + uint2 b3 = uint2(1229799377, 1620922595); + bool2 r3 = bool2(false, true); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void uint2_operator_less_equal_wide_scalar() + { + uint2 a0 = uint2(1722165358, 1219858357); + uint b0 = (1688048545); + bool2 r0 = bool2(false, true); + TestUtils.AreEqual(a0 <= b0, r0); + + uint2 a1 = uint2(860410743, 348104022); + uint b1 = (411099660); + bool2 r1 = bool2(false, true); + TestUtils.AreEqual(a1 <= b1, r1); + + uint2 a2 = uint2(1963256951, 58924407); + uint b2 = (212084836); + bool2 r2 = bool2(false, true); + TestUtils.AreEqual(a2 <= b2, r2); + + uint2 a3 = uint2(1459242706, 532949158); + uint b3 = (1745758438); + bool2 r3 = bool2(true, true); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void uint2_operator_less_equal_scalar_wide() + { + uint a0 = (1777585); + uint2 b0 = uint2(1181030049, 1787703989); + bool2 r0 = bool2(true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + uint a1 = (1729760948); + uint2 b1 = uint2(1816537388, 1359786460); + bool2 r1 = bool2(true, false); + TestUtils.AreEqual(a1 <= b1, r1); + + uint a2 = (874999193); + uint2 b2 = uint2(1678863148, 1711365839); + bool2 r2 = bool2(true, true); + TestUtils.AreEqual(a2 <= b2, r2); + + uint a3 = (762067160); + uint2 b3 = uint2(11953554, 1131583906); + bool2 r3 = bool2(false, true); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void uint2_operator_greater_equal_wide_wide() + { + uint2 a0 = uint2(263000030, 744235661); + uint2 b0 = uint2(1395535146, 1178373944); + bool2 r0 = bool2(false, false); + TestUtils.AreEqual(a0 >= b0, r0); + + uint2 a1 = uint2(1893760267, 237248); + uint2 b1 = uint2(1237373760, 1364855321); + bool2 r1 = bool2(true, false); + TestUtils.AreEqual(a1 >= b1, r1); + + uint2 a2 = uint2(1062370984, 1676977687); + uint2 b2 = uint2(600811864, 362060472); + bool2 r2 = bool2(true, true); + TestUtils.AreEqual(a2 >= b2, r2); + + uint2 a3 = uint2(816766880, 1089431546); + uint2 b3 = uint2(290870624, 1839067862); + bool2 r3 = bool2(true, false); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void uint2_operator_greater_equal_wide_scalar() + { + uint2 a0 = uint2(2112791350, 1043657935); + uint b0 = (1470533736); + bool2 r0 = bool2(true, false); + TestUtils.AreEqual(a0 >= b0, r0); + + uint2 a1 = uint2(101764761, 556026890); + uint b1 = (1529909067); + bool2 r1 = bool2(false, false); + TestUtils.AreEqual(a1 >= b1, r1); + + uint2 a2 = uint2(281734132, 815093894); + uint b2 = (1186600258); + bool2 r2 = bool2(false, false); + TestUtils.AreEqual(a2 >= b2, r2); + + uint2 a3 = uint2(609211196, 829548642); + uint b3 = (1604309397); + bool2 r3 = bool2(false, false); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void uint2_operator_greater_equal_scalar_wide() + { + uint a0 = (1525542481); + uint2 b0 = uint2(1503244746, 861711266); + bool2 r0 = bool2(true, true); + TestUtils.AreEqual(a0 >= b0, r0); + + uint a1 = (817773856); + uint2 b1 = uint2(925984572, 571221723); + bool2 r1 = bool2(false, true); + TestUtils.AreEqual(a1 >= b1, r1); + + uint a2 = (683686810); + uint2 b2 = uint2(118252990, 1653952090); + bool2 r2 = bool2(true, false); + TestUtils.AreEqual(a2 >= b2, r2); + + uint a3 = (1240253990); + uint2 b3 = uint2(1947039008, 1869136019); + bool2 r3 = bool2(false, false); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void uint2_operator_add_wide_wide() + { + uint2 a0 = uint2(2049228671, 1658660009); + uint2 b0 = uint2(2088751567, 645762023); + uint2 r0 = uint2(4137980238, 2304422032); + TestUtils.AreEqual(a0 + b0, r0); + + uint2 a1 = uint2(491719392, 937013355); + uint2 b1 = uint2(306868786, 4360271); + uint2 r1 = uint2(798588178, 941373626); + TestUtils.AreEqual(a1 + b1, r1); + + uint2 a2 = uint2(81108663, 1063894558); + uint2 b2 = uint2(506047997, 2094559874); + uint2 r2 = uint2(587156660, 3158454432); + TestUtils.AreEqual(a2 + b2, r2); + + uint2 a3 = uint2(86954702, 843159721); + uint2 b3 = uint2(1634712736, 1601474440); + uint2 r3 = uint2(1721667438, 2444634161); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void uint2_operator_add_wide_scalar() + { + uint2 a0 = uint2(2038218457, 134923711); + uint b0 = (2124409227); + uint2 r0 = uint2(4162627684, 2259332938); + TestUtils.AreEqual(a0 + b0, r0); + + uint2 a1 = uint2(875689667, 997710928); + uint b1 = (1338884463); + uint2 r1 = uint2(2214574130, 2336595391); + TestUtils.AreEqual(a1 + b1, r1); + + uint2 a2 = uint2(340490871, 70433301); + uint b2 = (1067888129); + uint2 r2 = uint2(1408379000, 1138321430); + TestUtils.AreEqual(a2 + b2, r2); + + uint2 a3 = uint2(2003021861, 1160398286); + uint b3 = (1635971971); + uint2 r3 = uint2(3638993832, 2796370257); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void uint2_operator_add_scalar_wide() + { + uint a0 = (391092078); + uint2 b0 = uint2(519908870, 851424292); + uint2 r0 = uint2(911000948, 1242516370); + TestUtils.AreEqual(a0 + b0, r0); + + uint a1 = (328314822); + uint2 b1 = uint2(135622204, 740923360); + uint2 r1 = uint2(463937026, 1069238182); + TestUtils.AreEqual(a1 + b1, r1); + + uint a2 = (655394201); + uint2 b2 = uint2(1451896269, 1781697072); + uint2 r2 = uint2(2107290470, 2437091273); + TestUtils.AreEqual(a2 + b2, r2); + + uint a3 = (996031825); + uint2 b3 = uint2(1557774949, 779774940); + uint2 r3 = uint2(2553806774, 1775806765); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void uint2_operator_sub_wide_wide() + { + uint2 a0 = uint2(1353441118, 797269833); + uint2 b0 = uint2(1332656812, 1827794007); + uint2 r0 = uint2(20784306, 3264443122); + TestUtils.AreEqual(a0 - b0, r0); + + uint2 a1 = uint2(659988112, 56022121); + uint2 b1 = uint2(972557431, 2078233689); + uint2 r1 = uint2(3982397977, 2272755728); + TestUtils.AreEqual(a1 - b1, r1); + + uint2 a2 = uint2(365847472, 2062899435); + uint2 b2 = uint2(1508184327, 1372307701); + uint2 r2 = uint2(3152630441, 690591734); + TestUtils.AreEqual(a2 - b2, r2); + + uint2 a3 = uint2(1380988474, 799885138); + uint2 b3 = uint2(810327977, 936799885); + uint2 r3 = uint2(570660497, 4158052549); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void uint2_operator_sub_wide_scalar() + { + uint2 a0 = uint2(1176369558, 1934521195); + uint b0 = (462232403); + uint2 r0 = uint2(714137155, 1472288792); + TestUtils.AreEqual(a0 - b0, r0); + + uint2 a1 = uint2(309452150, 108910717); + uint b1 = (1417634074); + uint2 r1 = uint2(3186785372, 2986243939); + TestUtils.AreEqual(a1 - b1, r1); + + uint2 a2 = uint2(1306356714, 1451794815); + uint b2 = (1502312334); + uint2 r2 = uint2(4099011676, 4244449777); + TestUtils.AreEqual(a2 - b2, r2); + + uint2 a3 = uint2(281174200, 1913724431); + uint b3 = (87530840); + uint2 r3 = uint2(193643360, 1826193591); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void uint2_operator_sub_scalar_wide() + { + uint a0 = (1691534405); + uint2 b0 = uint2(2022393810, 1612688515); + uint2 r0 = uint2(3964107891, 78845890); + TestUtils.AreEqual(a0 - b0, r0); + + uint a1 = (496689713); + uint2 b1 = uint2(887037586, 2097630964); + uint2 r1 = uint2(3904619423, 2694026045); + TestUtils.AreEqual(a1 - b1, r1); + + uint a2 = (374934538); + uint2 b2 = uint2(939035482, 935242277); + uint2 r2 = uint2(3730866352, 3734659557); + TestUtils.AreEqual(a2 - b2, r2); + + uint a3 = (1789300421); + uint2 b3 = uint2(264712893, 1231856067); + uint2 r3 = uint2(1524587528, 557444354); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void uint2_operator_mul_wide_wide() + { + uint2 a0 = uint2(245827027, 208934650); + uint2 b0 = uint2(759663997, 350129201); + uint2 r0 = uint2(3662155527, 1402281434); + TestUtils.AreEqual(a0 * b0, r0); + + uint2 a1 = uint2(1019478917, 568231809); + uint2 b1 = uint2(477450108, 1635735015); + uint2 r1 = uint2(332447596, 2361989735); + TestUtils.AreEqual(a1 * b1, r1); + + uint2 a2 = uint2(877289039, 1585782440); + uint2 b2 = uint2(388710278, 757722665); + uint2 r2 = uint2(2624048730, 1455036648); + TestUtils.AreEqual(a2 * b2, r2); + + uint2 a3 = uint2(2111178729, 1186019069); + uint2 b3 = uint2(1509388321, 1841703980); + uint2 r3 = uint2(2128344329, 3700879228); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void uint2_operator_mul_wide_scalar() + { + uint2 a0 = uint2(1762033447, 465343930); + uint b0 = (1476837906); + uint2 r0 = uint2(2981789374, 1326807828); + TestUtils.AreEqual(a0 * b0, r0); + + uint2 a1 = uint2(1570757881, 1824319147); + uint b1 = (1326409563); + uint2 r1 = uint2(1666366339, 4042902473); + TestUtils.AreEqual(a1 * b1, r1); + + uint2 a2 = uint2(1356578909, 154616909); + uint b2 = (72749215); + uint2 r2 = uint2(130042307, 1400257491); + TestUtils.AreEqual(a2 * b2, r2); + + uint2 a3 = uint2(975743632, 1958912969); + uint b3 = (573770299); + uint2 r3 = uint2(414773040, 3595344211); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void uint2_operator_mul_scalar_wide() + { + uint a0 = (99541948); + uint2 b0 = uint2(1764461774, 657072478); + uint2 r0 = uint2(3344568648, 4192918280); + TestUtils.AreEqual(a0 * b0, r0); + + uint a1 = (1459784358); + uint2 b1 = uint2(1610646683, 1632058826); + uint2 r1 = uint2(1040681602, 2635396348); + TestUtils.AreEqual(a1 * b1, r1); + + uint a2 = (868441654); + uint2 b2 = uint2(1408757883, 335917146); + uint2 r2 = uint2(1867178994, 2458009340); + TestUtils.AreEqual(a2 * b2, r2); + + uint a3 = (2105124483); + uint2 b3 = uint2(1178393968, 1963904348); + uint2 r3 = uint2(3266048080, 2084093460); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void uint2_operator_div_wide_wide() + { + uint2 a0 = uint2(1590198532, 507812502); + uint2 b0 = uint2(1434703236, 911965201); + uint2 r0 = uint2(1, 0); + TestUtils.AreEqual(a0 / b0, r0); + + uint2 a1 = uint2(126627032, 1058247011); + uint2 b1 = uint2(390415521, 128746927); + uint2 r1 = uint2(0, 8); + TestUtils.AreEqual(a1 / b1, r1); + + uint2 a2 = uint2(427387861, 290676154); + uint2 b2 = uint2(525835375, 816946613); + uint2 r2 = uint2(0, 0); + TestUtils.AreEqual(a2 / b2, r2); + + uint2 a3 = uint2(1829594484, 1127868739); + uint2 b3 = uint2(878264647, 146789678); + uint2 r3 = uint2(2, 7); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void uint2_operator_div_wide_scalar() + { + uint2 a0 = uint2(560951562, 1218680769); + uint b0 = (947861580); + uint2 r0 = uint2(0, 1); + TestUtils.AreEqual(a0 / b0, r0); + + uint2 a1 = uint2(375341724, 1919409166); + uint b1 = (1613542090); + uint2 r1 = uint2(0, 1); + TestUtils.AreEqual(a1 / b1, r1); + + uint2 a2 = uint2(1397425408, 524526253); + uint b2 = (1349573078); + uint2 r2 = uint2(1, 0); + TestUtils.AreEqual(a2 / b2, r2); + + uint2 a3 = uint2(341995568, 1515313790); + uint b3 = (495895326); + uint2 r3 = uint2(0, 3); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void uint2_operator_div_scalar_wide() + { + uint a0 = (1161272038); + uint2 b0 = uint2(187325733, 1594107378); + uint2 r0 = uint2(6, 0); + TestUtils.AreEqual(a0 / b0, r0); + + uint a1 = (2016183849); + uint2 b1 = uint2(1589343709, 388768753); + uint2 r1 = uint2(1, 5); + TestUtils.AreEqual(a1 / b1, r1); + + uint a2 = (1417077283); + uint2 b2 = uint2(1773486938, 1154044032); + uint2 r2 = uint2(0, 1); + TestUtils.AreEqual(a2 / b2, r2); + + uint a3 = (81831373); + uint2 b3 = uint2(1476877645, 653688843); + uint2 r3 = uint2(0, 0); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void uint2_operator_mod_wide_wide() + { + uint2 a0 = uint2(146150818, 1846543305); + uint2 b0 = uint2(983050390, 771341152); + uint2 r0 = uint2(146150818, 303861001); + TestUtils.AreEqual(a0 % b0, r0); + + uint2 a1 = uint2(1071447756, 308965362); + uint2 b1 = uint2(942375212, 367361754); + uint2 r1 = uint2(129072544, 308965362); + TestUtils.AreEqual(a1 % b1, r1); + + uint2 a2 = uint2(659881575, 1002365460); + uint2 b2 = uint2(749500619, 750718852); + uint2 r2 = uint2(659881575, 251646608); + TestUtils.AreEqual(a2 % b2, r2); + + uint2 a3 = uint2(861198439, 1510617532); + uint2 b3 = uint2(2095151755, 88438806); + uint2 r3 = uint2(861198439, 7157830); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void uint2_operator_mod_wide_scalar() + { + uint2 a0 = uint2(164800505, 1062177828); + uint b0 = (883951171); + uint2 r0 = uint2(164800505, 178226657); + TestUtils.AreEqual(a0 % b0, r0); + + uint2 a1 = uint2(1898749675, 820393245); + uint b1 = (1701653318); + uint2 r1 = uint2(197096357, 820393245); + TestUtils.AreEqual(a1 % b1, r1); + + uint2 a2 = uint2(19002208, 1464010899); + uint b2 = (128329633); + uint2 r2 = uint2(19002208, 52384936); + TestUtils.AreEqual(a2 % b2, r2); + + uint2 a3 = uint2(896587769, 1982762194); + uint b3 = (405208598); + uint2 r3 = uint2(86170573, 361927802); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void uint2_operator_mod_scalar_wide() + { + uint a0 = (242383789); + uint2 b0 = uint2(740000543, 1556450291); + uint2 r0 = uint2(242383789, 242383789); + TestUtils.AreEqual(a0 % b0, r0); + + uint a1 = (1104736385); + uint2 b1 = uint2(437976569, 1911837205); + uint2 r1 = uint2(228783247, 1104736385); + TestUtils.AreEqual(a1 % b1, r1); + + uint a2 = (1507212038); + uint2 b2 = uint2(1906405167, 247693265); + uint2 r2 = uint2(1507212038, 21052448); + TestUtils.AreEqual(a2 % b2, r2); + + uint a3 = (293460573); + uint2 b3 = uint2(1495295166, 873323603); + uint2 r3 = uint2(293460573, 293460573); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void uint2_operator_plus() + { + uint2 a0 = uint2(1643476803, 907898539); + uint2 r0 = uint2(1643476803, 907898539); + TestUtils.AreEqual(+a0, r0); + + uint2 a1 = uint2(379615839, 1735287433); + uint2 r1 = uint2(379615839, 1735287433); + TestUtils.AreEqual(+a1, r1); + + uint2 a2 = uint2(1743199272, 339091479); + uint2 r2 = uint2(1743199272, 339091479); + TestUtils.AreEqual(+a2, r2); + + uint2 a3 = uint2(401565897, 849339193); + uint2 r3 = uint2(401565897, 849339193); + TestUtils.AreEqual(+a3, r3); + } + + [TestCompiler] + public static void uint2_operator_neg() + { + uint2 a0 = uint2(1955022112, 662160019); + uint2 r0 = uint2(2339945184, 3632807277); + TestUtils.AreEqual(-a0, r0); + + uint2 a1 = uint2(370300775, 1004505619); + uint2 r1 = uint2(3924666521, 3290461677); + TestUtils.AreEqual(-a1, r1); + + uint2 a2 = uint2(28153593, 505708349); + uint2 r2 = uint2(4266813703, 3789258947); + TestUtils.AreEqual(-a2, r2); + + uint2 a3 = uint2(1115028238, 694995093); + uint2 r3 = uint2(3179939058, 3599972203); + TestUtils.AreEqual(-a3, r3); + } + + [TestCompiler] + public static void uint2_operator_prefix_inc() + { + uint2 a0 = uint2(864455342, 2035793213); + uint2 r0 = uint2(864455343, 2035793214); + TestUtils.AreEqual(++a0, r0); + + uint2 a1 = uint2(1275443862, 411610189); + uint2 r1 = uint2(1275443863, 411610190); + TestUtils.AreEqual(++a1, r1); + + uint2 a2 = uint2(446210725, 115573442); + uint2 r2 = uint2(446210726, 115573443); + TestUtils.AreEqual(++a2, r2); + + uint2 a3 = uint2(913293639, 1208161871); + uint2 r3 = uint2(913293640, 1208161872); + TestUtils.AreEqual(++a3, r3); + } + + [TestCompiler] + public static void uint2_operator_postfix_inc() + { + uint2 a0 = uint2(1751003569, 2063707595); + uint2 r0 = uint2(1751003569, 2063707595); + TestUtils.AreEqual(a0++, r0); + + uint2 a1 = uint2(1500486291, 1007848192); + uint2 r1 = uint2(1500486291, 1007848192); + TestUtils.AreEqual(a1++, r1); + + uint2 a2 = uint2(2028651936, 1190630527); + uint2 r2 = uint2(2028651936, 1190630527); + TestUtils.AreEqual(a2++, r2); + + uint2 a3 = uint2(1396179607, 177416855); + uint2 r3 = uint2(1396179607, 177416855); + TestUtils.AreEqual(a3++, r3); + } + + [TestCompiler] + public static void uint2_operator_prefix_dec() + { + uint2 a0 = uint2(200904609, 871077500); + uint2 r0 = uint2(200904608, 871077499); + TestUtils.AreEqual(--a0, r0); + + uint2 a1 = uint2(968578728, 1995396216); + uint2 r1 = uint2(968578727, 1995396215); + TestUtils.AreEqual(--a1, r1); + + uint2 a2 = uint2(435367037, 1589827826); + uint2 r2 = uint2(435367036, 1589827825); + TestUtils.AreEqual(--a2, r2); + + uint2 a3 = uint2(1434377580, 1699290403); + uint2 r3 = uint2(1434377579, 1699290402); + TestUtils.AreEqual(--a3, r3); + } + + [TestCompiler] + public static void uint2_operator_postfix_dec() + { + uint2 a0 = uint2(283970262, 1109329936); + uint2 r0 = uint2(283970262, 1109329936); + TestUtils.AreEqual(a0--, r0); + + uint2 a1 = uint2(1073216143, 1932646215); + uint2 r1 = uint2(1073216143, 1932646215); + TestUtils.AreEqual(a1--, r1); + + uint2 a2 = uint2(1174104498, 524156737); + uint2 r2 = uint2(1174104498, 524156737); + TestUtils.AreEqual(a2--, r2); + + uint2 a3 = uint2(691209285, 802721301); + uint2 r3 = uint2(691209285, 802721301); + TestUtils.AreEqual(a3--, r3); + } + + [TestCompiler] + public static void uint2_operator_bitwise_and_wide_wide() + { + uint2 a0 = uint2(779935043, 1097962163); + uint2 b0 = uint2(307705143, 1710882162); + uint2 r0 = uint2(39064835, 1097961522); + TestUtils.AreEqual(a0 & b0, r0); + + uint2 a1 = uint2(1939593304, 800599247); + uint2 b1 = uint2(866836769, 532490608); + uint2 r1 = uint2(864731136, 263727168); + TestUtils.AreEqual(a1 & b1, r1); + + uint2 a2 = uint2(952140918, 782792558); + uint2 b2 = uint2(679371720, 1794035877); + uint2 r2 = uint2(675283008, 715673636); + TestUtils.AreEqual(a2 & b2, r2); + + uint2 a3 = uint2(1608557706, 396446406); + uint2 b3 = uint2(1439832202, 519529812); + uint2 r3 = uint2(1438646410, 379666500); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void uint2_operator_bitwise_and_wide_scalar() + { + uint2 a0 = uint2(443615469, 490057985); + uint b0 = (93423598); + uint2 r0 = uint2(1114348, 85033216); + TestUtils.AreEqual(a0 & b0, r0); + + uint2 a1 = uint2(2042441263, 1405175110); + uint b1 = (1524760558); + uint2 r1 = uint2(1486958126, 1388397894); + TestUtils.AreEqual(a1 & b1, r1); + + uint2 a2 = uint2(510212004, 1236735839); + uint b2 = (1941875181); + uint2 r2 = uint2(304619940, 1102446925); + TestUtils.AreEqual(a2 & b2, r2); + + uint2 a3 = uint2(1365509729, 607982857); + uint b3 = (428270198); + uint2 r3 = uint2(285475424, 262144); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void uint2_operator_bitwise_and_scalar_wide() + { + uint a0 = (1144543590); + uint2 b0 = uint2(420346723, 562416448); + uint2 r0 = uint2(547170, 18752); + TestUtils.AreEqual(a0 & b0, r0); + + uint a1 = (1393127318); + uint2 b1 = uint2(1560699552, 851218057); + uint2 r1 = uint2(1358979712, 302517888); + TestUtils.AreEqual(a1 & b1, r1); + + uint a2 = (703880958); + uint2 b2 = uint2(1159378889, 2031211279); + uint2 r2 = uint2(17831624, 688935438); + TestUtils.AreEqual(a2 & b2, r2); + + uint a3 = (1089518981); + uint2 b3 = uint2(270607307, 1349288930); + uint2 r3 = uint2(2105729, 1080066432); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void uint2_operator_bitwise_or_wide_wide() + { + uint2 a0 = uint2(1731159103, 659068416); + uint2 b0 = uint2(1583847161, 692672727); + uint2 r0 = uint2(2138044159, 793370327); + TestUtils.AreEqual(a0 | b0, r0); + + uint2 a1 = uint2(382702471, 1821032196); + uint2 b1 = uint2(1161585489, 1756207130); + uint2 r1 = uint2(1476391895, 1823457054); + TestUtils.AreEqual(a1 | b1, r1); + + uint2 a2 = uint2(1565773438, 1004000514); + uint2 b2 = uint2(1321374429, 1287357212); + uint2 r2 = uint2(1607720703, 2147473182); + TestUtils.AreEqual(a2 | b2, r2); + + uint2 a3 = uint2(948501377, 600951835); + uint2 b3 = uint2(2075767170, 1273513430); + uint2 r3 = uint2(2075786115, 1811533279); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void uint2_operator_bitwise_or_wide_scalar() + { + uint2 a0 = uint2(961259683, 471103264); + uint b0 = (1666102508); + uint2 r0 = uint2(2068823279, 2136930284); + TestUtils.AreEqual(a0 | b0, r0); + + uint2 a1 = uint2(1733389229, 386953869); + uint b1 = (1591585258); + uint2 r1 = uint2(2145250287, 1608383471); + TestUtils.AreEqual(a1 | b1, r1); + + uint2 a2 = uint2(1148351449, 1814263250); + uint b2 = (1048929715); + uint2 r2 = uint2(2130147323, 2124903923); + TestUtils.AreEqual(a2 | b2, r2); + + uint2 a3 = uint2(860336789, 1227888278); + uint b3 = (1637162093); + uint2 r3 = uint2(1943518973, 1773477631); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void uint2_operator_bitwise_or_scalar_wide() + { + uint a0 = (1213433101); + uint2 b0 = uint2(1212928242, 1614462616); + uint2 r0 = uint2(1213978111, 1752940445); + TestUtils.AreEqual(a0 | b0, r0); + + uint a1 = (936937728); + uint2 b1 = uint2(764766995, 306352095); + uint2 r1 = uint2(1071508243, 937070559); + TestUtils.AreEqual(a1 | b1, r1); + + uint a2 = (574719481); + uint2 b2 = uint2(1283571271, 2109131012); + uint2 r2 = uint2(1858191359, 2146946557); + TestUtils.AreEqual(a2 | b2, r2); + + uint a3 = (979469710); + uint2 b3 = uint2(1348323481, 1407542578); + uint2 r3 = uint2(2055064991, 2078664126); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void uint2_operator_bitwise_xor_wide_wide() + { + uint2 a0 = uint2(1556324760, 207002929); + uint2 b0 = uint2(1054997548, 1523759632); + uint2 r0 = uint2(1646419380, 1451501345); + TestUtils.AreEqual(a0 ^ b0, r0); + + uint2 a1 = uint2(1843444873, 1632079131); + uint2 b1 = uint2(251164872, 110472397); + uint2 r1 = uint2(1662567489, 1741824470); + TestUtils.AreEqual(a1 ^ b1, r1); + + uint2 a2 = uint2(1460334334, 1607815585); + uint2 b2 = uint2(384031112, 1109163205); + uint2 r2 = uint2(1105803126, 499723620); + TestUtils.AreEqual(a2 ^ b2, r2); + + uint2 a3 = uint2(220623650, 38668553); + uint2 b3 = uint2(535118981, 179106262); + uint2 r3 = uint2(314783655, 149092575); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void uint2_operator_bitwise_xor_wide_scalar() + { + uint2 a0 = uint2(2124666952, 177397845); + uint b0 = (493665894); + uint2 r0 = uint2(1674536494, 402546227); + TestUtils.AreEqual(a0 ^ b0, r0); + + uint2 a1 = uint2(574879617, 1136545648); + uint b1 = (1937385541); + uint2 r1 = uint2(1362747332, 818177845); + TestUtils.AreEqual(a1 ^ b1, r1); + + uint2 a2 = uint2(213863690, 289301586); + uint b2 = (535061373); + uint2 r2 = uint2(324742775, 249169711); + TestUtils.AreEqual(a2 ^ b2, r2); + + uint2 a3 = uint2(1305234431, 1308626970); + uint b3 = (353786540); + uint2 r3 = uint2(1490686291, 1528187574); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void uint2_operator_bitwise_xor_scalar_wide() + { + uint a0 = (1288453276); + uint2 b0 = uint2(1077599928, 884741329); + uint2 r0 = uint2(217506340, 2020616269); + TestUtils.AreEqual(a0 ^ b0, r0); + + uint a1 = (212164516); + uint2 b1 = uint2(1585020328, 152985454); + uint2 r1 = uint2(1390158348, 96141514); + TestUtils.AreEqual(a1 ^ b1, r1); + + uint a2 = (1775851275); + uint2 b2 = uint2(1416249064, 1309317737); + uint2 r2 = uint2(1035168227, 668192098); + TestUtils.AreEqual(a2 ^ b2, r2); + + uint a3 = (1773918217); + uint2 b3 = uint2(1509843030, 1206045972); + uint2 r3 = uint2(809875551, 777590045); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void uint2_operator_left_shift() + { + uint2 a0 = uint2(197771193, 622182602); + int b0 = (1321149625); + uint2 r0 = uint2(1912602624, 2483027968); + TestUtils.AreEqual(a0 << b0, r0); + + uint2 a1 = uint2(1283988958, 473415985); + int b1 = (1327917304); + uint2 r1 = uint2(3724541952, 822083584); + TestUtils.AreEqual(a1 << b1, r1); + + uint2 a2 = uint2(432425717, 2058433484); + int b2 = (870301196); + uint2 r2 = uint2(1689210880, 322748416); + TestUtils.AreEqual(a2 << b2, r2); + + uint2 a3 = uint2(1200694230, 1360008038); + int b3 = (1531607705); + uint2 r3 = uint2(2885681152, 3422552064); + TestUtils.AreEqual(a3 << b3, r3); + } + + [TestCompiler] + public static void uint2_operator_right_shift() + { + uint2 a0 = uint2(548167301, 1161338299); + int b0 = (1266801540); + uint2 r0 = uint2(34260456, 72583643); + TestUtils.AreEqual(a0 >> b0, r0); + + uint2 a1 = uint2(1617625829, 713958715); + int b1 = (1860731847); + uint2 r1 = uint2(12637701, 5577802); + TestUtils.AreEqual(a1 >> b1, r1); + + uint2 a2 = uint2(196552656, 1265099998); + int b2 = (770466193); + uint2 r2 = uint2(1499, 9651); + TestUtils.AreEqual(a2 >> b2, r2); + + uint2 a3 = uint2(572763124, 426807581); + int b3 = (506619530); + uint2 r3 = uint2(559338, 416804); + TestUtils.AreEqual(a3 >> b3, r3); + } + + [TestCompiler] + public static void uint2_operator_bitwise_not() + { + uint2 a0 = uint2(1403358969, 831360921); + uint2 r0 = uint2(2891608326, 3463606374); + TestUtils.AreEqual(~a0, r0); + + uint2 a1 = uint2(2088190243, 878283189); + uint2 r1 = uint2(2206777052, 3416684106); + TestUtils.AreEqual(~a1, r1); + + uint2 a2 = uint2(308994339, 1420884856); + uint2 r2 = uint2(3985972956, 2874082439); + TestUtils.AreEqual(~a2, r2); + + uint2 a3 = uint2(472965491, 627580960); + uint2 r3 = uint2(3822001804, 3667386335); + TestUtils.AreEqual(~a3, r3); + } + + [TestCompiler] + public static void uint2_shuffle_result_1() + { + uint2 a = uint2(0, 1); + uint2 b = uint2(2, 3); + + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftX), (0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftY), (1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX), (2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY), (3)); + } + + [TestCompiler] + public static void uint2_shuffle_result_2() + { + uint2 a = uint2(0, 1); + uint2 b = uint2(2, 3); + + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftX, ShuffleComponent.LeftX), uint2(0, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftY, ShuffleComponent.LeftX), uint2(1, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.LeftX), uint2(2, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.LeftX), uint2(3, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftX, ShuffleComponent.LeftY), uint2(0, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftY, ShuffleComponent.LeftY), uint2(1, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.LeftY), uint2(2, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.LeftY), uint2(3, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftX, ShuffleComponent.RightX), uint2(0, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftY, ShuffleComponent.RightX), uint2(1, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.RightX), uint2(2, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.RightX), uint2(3, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftX, ShuffleComponent.RightY), uint2(0, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftY, ShuffleComponent.RightY), uint2(1, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.RightY), uint2(2, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.RightY), uint2(3, 3)); + } + + [TestCompiler] + public static void uint2_shuffle_result_3() + { + uint2 a = uint2(0, 1); + uint2 b = uint2(2, 3); + + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.RightY, ShuffleComponent.RightY), uint3(2, 3, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.LeftX, ShuffleComponent.RightX), uint3(2, 0, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.LeftY, ShuffleComponent.RightY), uint3(3, 1, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftY, ShuffleComponent.LeftY, ShuffleComponent.LeftY), uint3(1, 1, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.LeftY, ShuffleComponent.RightY), uint3(2, 1, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftX, ShuffleComponent.RightY, ShuffleComponent.RightY), uint3(0, 3, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.LeftY, ShuffleComponent.RightY), uint3(2, 1, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.RightY, ShuffleComponent.LeftX), uint3(3, 3, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.RightX, ShuffleComponent.RightY), uint3(2, 2, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.RightX, ShuffleComponent.LeftX), uint3(2, 2, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftX, ShuffleComponent.LeftY, ShuffleComponent.LeftY), uint3(0, 1, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.RightX, ShuffleComponent.RightY), uint3(3, 2, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftX, ShuffleComponent.LeftY, ShuffleComponent.LeftY), uint3(0, 1, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.RightX, ShuffleComponent.RightX), uint3(3, 2, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftX, ShuffleComponent.LeftY, ShuffleComponent.RightY), uint3(0, 1, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.LeftY, ShuffleComponent.LeftY), uint3(3, 1, 1)); + } + + [TestCompiler] + public static void uint2_shuffle_result_4() + { + uint2 a = uint2(0, 1); + uint2 b = uint2(2, 3); + + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftX, ShuffleComponent.LeftX, ShuffleComponent.LeftY, ShuffleComponent.RightX), uint4(0, 0, 1, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.LeftY, ShuffleComponent.LeftX, ShuffleComponent.RightY), uint4(2, 1, 0, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.RightX, ShuffleComponent.RightY, ShuffleComponent.RightX), uint4(3, 2, 3, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.LeftX, ShuffleComponent.RightY, ShuffleComponent.RightY), uint4(2, 0, 3, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftX, ShuffleComponent.RightY, ShuffleComponent.LeftX, ShuffleComponent.RightX), uint4(0, 3, 0, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.LeftX, ShuffleComponent.RightY, ShuffleComponent.LeftY), uint4(3, 0, 3, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.RightX, ShuffleComponent.RightY, ShuffleComponent.LeftX), uint4(2, 2, 3, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.RightX, ShuffleComponent.LeftX, ShuffleComponent.RightY), uint4(2, 2, 0, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftX, ShuffleComponent.LeftY, ShuffleComponent.RightX, ShuffleComponent.LeftY), uint4(0, 1, 2, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.LeftY, ShuffleComponent.RightY, ShuffleComponent.RightY), uint4(2, 1, 3, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.RightY, ShuffleComponent.RightY, ShuffleComponent.LeftY), uint4(3, 3, 3, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.RightX, ShuffleComponent.LeftY, ShuffleComponent.LeftY), uint4(2, 2, 1, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.LeftX, ShuffleComponent.LeftX, ShuffleComponent.LeftX), uint4(3, 0, 0, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.RightX, ShuffleComponent.RightX, ShuffleComponent.RightY), uint4(2, 2, 2, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftX, ShuffleComponent.RightY, ShuffleComponent.LeftX, ShuffleComponent.RightY), uint4(0, 3, 0, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.LeftX, ShuffleComponent.LeftX, ShuffleComponent.LeftX), uint4(2, 0, 0, 0)); + } + + + } +} diff --git a/package/Tests/Tests/Shared/TestUint2.gen.cs.meta b/package/Tests/Tests/Shared/TestUint2.gen.cs.meta new file mode 100755 index 000000000..ade3bfc6c --- /dev/null +++ b/package/Tests/Tests/Shared/TestUint2.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 2b6fc6b61ea1f4f42944befb17029ea1 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/package/Tests/Tests/Shared/TestUint2x2.gen.cs b/package/Tests/Tests/Shared/TestUint2x2.gen.cs new file mode 100755 index 000000000..43881d003 --- /dev/null +++ b/package/Tests/Tests/Shared/TestUint2x2.gen.cs @@ -0,0 +1,1234 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using NUnit.Framework; +using static Unity.Mathematics.math; +using Burst.Compiler.IL.Tests; + +namespace Unity.Mathematics.Tests +{ + [TestFixture] + public class TestUint2x2 + { + [TestCompiler] + public static void uint2x2_zero() + { + TestUtils.AreEqual(uint2x2.zero.c0.x, 0u); + TestUtils.AreEqual(uint2x2.zero.c0.y, 0u); + TestUtils.AreEqual(uint2x2.zero.c1.x, 0u); + TestUtils.AreEqual(uint2x2.zero.c1.y, 0u); + } + + [TestCompiler] + public static void uint2x2_identity() + { + TestUtils.AreEqual(uint2x2.identity.c0.x, 1u); + TestUtils.AreEqual(uint2x2.identity.c0.y, 0u); + TestUtils.AreEqual(uint2x2.identity.c1.x, 0u); + TestUtils.AreEqual(uint2x2.identity.c1.y, 1u); + } + + [TestCompiler] + public static void uint2x2_operator_equal_wide_wide() + { + uint2x2 a0 = uint2x2(790229414, 970783976, 1428432738, 1578747135); + uint2x2 b0 = uint2x2(612337669, 1214209108, 2120643427, 295461214); + bool2x2 r0 = bool2x2(false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + uint2x2 a1 = uint2x2(1733797753, 2001507228, 1446876437, 1777406370); + uint2x2 b1 = uint2x2(1510890331, 1893316566, 921816149, 1834958575); + bool2x2 r1 = bool2x2(false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + uint2x2 a2 = uint2x2(1426387268, 1809275021, 1843770816, 1172185222); + uint2x2 b2 = uint2x2(1482011863, 2062852792, 226398742, 770290735); + bool2x2 r2 = bool2x2(false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + uint2x2 a3 = uint2x2(1469608940, 869874758, 458603090, 581282460); + uint2x2 b3 = uint2x2(36812057, 543224481, 1565350150, 1909926604); + bool2x2 r3 = bool2x2(false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void uint2x2_operator_equal_wide_scalar() + { + uint2x2 a0 = uint2x2(1211464300, 1921862607, 508076684, 1249127920); + uint b0 = (746972502); + bool2x2 r0 = bool2x2(false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + uint2x2 a1 = uint2x2(1394594555, 1733655277, 1884008277, 1682018538); + uint b1 = (746862310); + bool2x2 r1 = bool2x2(false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + uint2x2 a2 = uint2x2(795585660, 927605411, 672785749, 1465584610); + uint b2 = (936027116); + bool2x2 r2 = bool2x2(false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + uint2x2 a3 = uint2x2(585324157, 969511077, 442746747, 1772925698); + uint b3 = (404448210); + bool2x2 r3 = bool2x2(false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void uint2x2_operator_equal_scalar_wide() + { + uint a0 = (1150044438); + uint2x2 b0 = uint2x2(233855098, 924242519, 1402948791, 601381975); + bool2x2 r0 = bool2x2(false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + uint a1 = (2120518068); + uint2x2 b1 = uint2x2(629187703, 1971977031, 47183124, 1061805787); + bool2x2 r1 = bool2x2(false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + uint a2 = (1009011238); + uint2x2 b2 = uint2x2(312511148, 1460673064, 737210539, 1737844479); + bool2x2 r2 = bool2x2(false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + uint a3 = (1892405453); + uint2x2 b3 = uint2x2(2133024000, 455818693, 2003197687, 1276241219); + bool2x2 r3 = bool2x2(false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void uint2x2_operator_not_equal_wide_wide() + { + uint2x2 a0 = uint2x2(1660932106, 982847023, 97046264, 1739517447); + uint2x2 b0 = uint2x2(107139049, 75478496, 2055495054, 358586687); + bool2x2 r0 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + uint2x2 a1 = uint2x2(1253499180, 1830584069, 1841470429, 1397841646); + uint2x2 b1 = uint2x2(942338347, 111564990, 113811950, 948912488); + bool2x2 r1 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + uint2x2 a2 = uint2x2(1770890135, 1906548631, 169082967, 2099271786); + uint2x2 b2 = uint2x2(1080084121, 1400504872, 1032134499, 1061123400); + bool2x2 r2 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + uint2x2 a3 = uint2x2(1909317609, 46519139, 1433204003, 931492669); + uint2x2 b3 = uint2x2(221862069, 858950046, 989094643, 2023070999); + bool2x2 r3 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void uint2x2_operator_not_equal_wide_scalar() + { + uint2x2 a0 = uint2x2(747758183, 1033001286, 1439973882, 2138928797); + uint b0 = (248693828); + bool2x2 r0 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + uint2x2 a1 = uint2x2(1197845089, 950170763, 238704450, 2105962247); + uint b1 = (1432672459); + bool2x2 r1 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + uint2x2 a2 = uint2x2(727205263, 276313906, 2126300423, 791998981); + uint b2 = (1640688041); + bool2x2 r2 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + uint2x2 a3 = uint2x2(2035077187, 1412347883, 1622176923, 768370497); + uint b3 = (1171827730); + bool2x2 r3 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void uint2x2_operator_not_equal_scalar_wide() + { + uint a0 = (2076921066); + uint2x2 b0 = uint2x2(2037494727, 1989050616, 48833929, 1897435904); + bool2x2 r0 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + uint a1 = (514354517); + uint2x2 b1 = uint2x2(1783749164, 364694471, 754315072, 124108032); + bool2x2 r1 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + uint a2 = (1512967900); + uint2x2 b2 = uint2x2(1178825850, 1854793298, 50286949, 2100802631); + bool2x2 r2 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + uint a3 = (1640811853); + uint2x2 b3 = uint2x2(82110247, 472172806, 266984506, 2003668365); + bool2x2 r3 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void uint2x2_operator_less_wide_wide() + { + uint2x2 a0 = uint2x2(1182186063, 415538999, 1667335818, 1566618442); + uint2x2 b0 = uint2x2(524633529, 1032195686, 760723389, 1505751409); + bool2x2 r0 = bool2x2(false, true, false, false); + TestUtils.AreEqual(a0 < b0, r0); + + uint2x2 a1 = uint2x2(1166180837, 639095188, 1080836365, 771119973); + uint2x2 b1 = uint2x2(431962172, 1287906509, 1560084663, 1450178202); + bool2x2 r1 = bool2x2(false, true, true, true); + TestUtils.AreEqual(a1 < b1, r1); + + uint2x2 a2 = uint2x2(928263233, 789225474, 665243110, 1003542034); + uint2x2 b2 = uint2x2(2066166337, 1107069023, 1640077524, 2103263105); + bool2x2 r2 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a2 < b2, r2); + + uint2x2 a3 = uint2x2(1032480172, 1961336172, 923379558, 21210619); + uint2x2 b3 = uint2x2(684229139, 1234033624, 1278743281, 1953079347); + bool2x2 r3 = bool2x2(false, false, true, true); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void uint2x2_operator_less_wide_scalar() + { + uint2x2 a0 = uint2x2(608447185, 818840405, 869219329, 2080125385); + uint b0 = (1491216667); + bool2x2 r0 = bool2x2(true, true, true, false); + TestUtils.AreEqual(a0 < b0, r0); + + uint2x2 a1 = uint2x2(1214500548, 1667165786, 1615392341, 840091491); + uint b1 = (1361741203); + bool2x2 r1 = bool2x2(true, false, false, true); + TestUtils.AreEqual(a1 < b1, r1); + + uint2x2 a2 = uint2x2(469591900, 315321650, 930950514, 1100560246); + uint b2 = (1247103789); + bool2x2 r2 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a2 < b2, r2); + + uint2x2 a3 = uint2x2(933855388, 1127696709, 1286331950, 380753337); + uint b3 = (908563901); + bool2x2 r3 = bool2x2(false, false, false, true); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void uint2x2_operator_less_scalar_wide() + { + uint a0 = (548436837); + uint2x2 b0 = uint2x2(282703327, 14370648, 1862117300, 1304793311); + bool2x2 r0 = bool2x2(false, false, true, true); + TestUtils.AreEqual(a0 < b0, r0); + + uint a1 = (826073259); + uint2x2 b1 = uint2x2(988910157, 445132446, 1139670255, 111349251); + bool2x2 r1 = bool2x2(true, false, true, false); + TestUtils.AreEqual(a1 < b1, r1); + + uint a2 = (1102440676); + uint2x2 b2 = uint2x2(112183144, 1594415311, 1890019295, 2098715503); + bool2x2 r2 = bool2x2(false, true, true, true); + TestUtils.AreEqual(a2 < b2, r2); + + uint a3 = (608933527); + uint2x2 b3 = uint2x2(183989010, 1596056507, 1027318999, 146281093); + bool2x2 r3 = bool2x2(false, true, true, false); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void uint2x2_operator_greater_wide_wide() + { + uint2x2 a0 = uint2x2(592884447, 2133928932, 918957182, 1284069471); + uint2x2 b0 = uint2x2(138737040, 192863971, 1700841444, 1044631301); + bool2x2 r0 = bool2x2(true, true, false, true); + TestUtils.AreEqual(a0 > b0, r0); + + uint2x2 a1 = uint2x2(194584707, 739120780, 241654068, 1340158550); + uint2x2 b1 = uint2x2(1391589821, 730837695, 253553987, 2078872742); + bool2x2 r1 = bool2x2(false, true, false, false); + TestUtils.AreEqual(a1 > b1, r1); + + uint2x2 a2 = uint2x2(2099542537, 1182623667, 1399607274, 789301637); + uint2x2 b2 = uint2x2(910845808, 976047676, 202633078, 1223618940); + bool2x2 r2 = bool2x2(true, true, true, false); + TestUtils.AreEqual(a2 > b2, r2); + + uint2x2 a3 = uint2x2(180400925, 594688333, 1877031463, 1360073500); + uint2x2 b3 = uint2x2(641600530, 1830470354, 1570701388, 1104256103); + bool2x2 r3 = bool2x2(false, false, true, true); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void uint2x2_operator_greater_wide_scalar() + { + uint2x2 a0 = uint2x2(1097138316, 211763648, 1883002501, 56406996); + uint b0 = (438688675); + bool2x2 r0 = bool2x2(true, false, true, false); + TestUtils.AreEqual(a0 > b0, r0); + + uint2x2 a1 = uint2x2(43662641, 1437755186, 1219010035, 2125058448); + uint b1 = (1923456111); + bool2x2 r1 = bool2x2(false, false, false, true); + TestUtils.AreEqual(a1 > b1, r1); + + uint2x2 a2 = uint2x2(304028799, 48044515, 711945018, 1035679270); + uint b2 = (893125636); + bool2x2 r2 = bool2x2(false, false, false, true); + TestUtils.AreEqual(a2 > b2, r2); + + uint2x2 a3 = uint2x2(577943770, 1016617211, 2063134811, 1577403353); + uint b3 = (572743717); + bool2x2 r3 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void uint2x2_operator_greater_scalar_wide() + { + uint a0 = (2024896938); + uint2x2 b0 = uint2x2(599356784, 185671342, 1932327391, 2025591013); + bool2x2 r0 = bool2x2(true, true, true, false); + TestUtils.AreEqual(a0 > b0, r0); + + uint a1 = (1257191721); + uint2x2 b1 = uint2x2(1312388500, 1443698859, 779217735, 691047512); + bool2x2 r1 = bool2x2(false, false, true, true); + TestUtils.AreEqual(a1 > b1, r1); + + uint a2 = (741776730); + uint2x2 b2 = uint2x2(732565983, 668302204, 1556466996, 858599525); + bool2x2 r2 = bool2x2(true, true, false, false); + TestUtils.AreEqual(a2 > b2, r2); + + uint a3 = (1896917159); + uint2x2 b3 = uint2x2(701542098, 1052151621, 1023307544, 1435392907); + bool2x2 r3 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void uint2x2_operator_less_equal_wide_wide() + { + uint2x2 a0 = uint2x2(1577248162, 2043073061, 1688380407, 176431985); + uint2x2 b0 = uint2x2(903445031, 2108974565, 210822256, 1281704747); + bool2x2 r0 = bool2x2(false, true, false, true); + TestUtils.AreEqual(a0 <= b0, r0); + + uint2x2 a1 = uint2x2(223299035, 1502802140, 1691709825, 386789394); + uint2x2 b1 = uint2x2(453681718, 66138830, 1229799377, 1620922595); + bool2x2 r1 = bool2x2(true, false, false, true); + TestUtils.AreEqual(a1 <= b1, r1); + + uint2x2 a2 = uint2x2(117182003, 1665770435, 1958490731, 420032601); + uint2x2 b2 = uint2x2(1715833766, 1366430432, 13102000, 46919981); + bool2x2 r2 = bool2x2(true, false, false, false); + TestUtils.AreEqual(a2 <= b2, r2); + + uint2x2 a3 = uint2x2(1251092689, 2011681765, 749743684, 183784440); + uint2x2 b3 = uint2x2(486470891, 1709514236, 2145785285, 854254454); + bool2x2 r3 = bool2x2(false, false, true, true); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void uint2x2_operator_less_equal_wide_scalar() + { + uint2x2 a0 = uint2x2(1722165358, 1219858357, 860410743, 411099660); + uint b0 = (1688048545); + bool2x2 r0 = bool2x2(false, true, true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + uint2x2 a1 = uint2x2(348104022, 212084836, 58924407, 1459242706); + uint b1 = (1963256951); + bool2x2 r1 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a1 <= b1, r1); + + uint2x2 a2 = uint2x2(1745758438, 262559763, 690091301, 1806172431); + uint b2 = (532949158); + bool2x2 r2 = bool2x2(false, true, false, false); + TestUtils.AreEqual(a2 <= b2, r2); + + uint2x2 a3 = uint2x2(2091514001, 1617221948, 2017733017, 804204255); + uint b3 = (1857173043); + bool2x2 r3 = bool2x2(false, true, false, true); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void uint2x2_operator_less_equal_scalar_wide() + { + uint a0 = (1777585); + uint2x2 b0 = uint2x2(1181030049, 1787703989, 1729760948, 1816537388); + bool2x2 r0 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + uint a1 = (1359786460); + uint2x2 b1 = uint2x2(874999193, 1678863148, 1711365839, 762067160); + bool2x2 r1 = bool2x2(false, true, true, false); + TestUtils.AreEqual(a1 <= b1, r1); + + uint a2 = (11953554); + uint2x2 b2 = uint2x2(1131583906, 1175393186, 1293698493, 48893340); + bool2x2 r2 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a2 <= b2, r2); + + uint a3 = (66196247); + uint2x2 b3 = uint2x2(1958607116, 1576473309, 861890786, 478252419); + bool2x2 r3 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void uint2x2_operator_greater_equal_wide_wide() + { + uint2x2 a0 = uint2x2(263000030, 744235661, 1893760267, 237248); + uint2x2 b0 = uint2x2(1395535146, 1178373944, 1237373760, 1364855321); + bool2x2 r0 = bool2x2(false, false, true, false); + TestUtils.AreEqual(a0 >= b0, r0); + + uint2x2 a1 = uint2x2(1062370984, 1676977687, 816766880, 1089431546); + uint2x2 b1 = uint2x2(600811864, 362060472, 290870624, 1839067862); + bool2x2 r1 = bool2x2(true, true, true, false); + TestUtils.AreEqual(a1 >= b1, r1); + + uint2x2 a2 = uint2x2(1394493730, 1176473380, 1193988637, 1703862455); + uint2x2 b2 = uint2x2(396958580, 1336888643, 1019684398, 1697684196); + bool2x2 r2 = bool2x2(true, false, true, true); + TestUtils.AreEqual(a2 >= b2, r2); + + uint2x2 a3 = uint2x2(1806186947, 1253571980, 589397635, 1951842887); + uint2x2 b3 = uint2x2(1227300220, 2044269675, 1898323839, 874509380); + bool2x2 r3 = bool2x2(true, false, false, true); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void uint2x2_operator_greater_equal_wide_scalar() + { + uint2x2 a0 = uint2x2(2112791350, 1043657935, 101764761, 1529909067); + uint b0 = (1470533736); + bool2x2 r0 = bool2x2(true, false, false, true); + TestUtils.AreEqual(a0 >= b0, r0); + + uint2x2 a1 = uint2x2(556026890, 1186600258, 815093894, 609211196); + uint b1 = (281734132); + bool2x2 r1 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a1 >= b1, r1); + + uint2x2 a2 = uint2x2(1604309397, 244604867, 1419295004, 471843809); + uint b2 = (829548642); + bool2x2 r2 = bool2x2(true, false, true, false); + TestUtils.AreEqual(a2 >= b2, r2); + + uint2x2 a3 = uint2x2(1819986195, 1646290021, 196833647, 1596738181); + uint b3 = (1460027917); + bool2x2 r3 = bool2x2(true, true, false, true); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void uint2x2_operator_greater_equal_scalar_wide() + { + uint a0 = (1525542481); + uint2x2 b0 = uint2x2(1503244746, 861711266, 817773856, 925984572); + bool2x2 r0 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a0 >= b0, r0); + + uint a1 = (571221723); + uint2x2 b1 = uint2x2(683686810, 118252990, 1653952090, 1240253990); + bool2x2 r1 = bool2x2(false, true, false, false); + TestUtils.AreEqual(a1 >= b1, r1); + + uint a2 = (1947039008); + uint2x2 b2 = uint2x2(1869136019, 152012637, 1214546726, 917376832); + bool2x2 r2 = bool2x2(true, true, true, true); + TestUtils.AreEqual(a2 >= b2, r2); + + uint a3 = (303549425); + uint2x2 b3 = uint2x2(2111728811, 945321577, 173706579, 625318949); + bool2x2 r3 = bool2x2(false, false, true, false); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void uint2x2_operator_add_wide_wide() + { + uint2x2 a0 = uint2x2(2049228671, 1658660009, 491719392, 937013355); + uint2x2 b0 = uint2x2(2088751567, 645762023, 306868786, 4360271); + uint2x2 r0 = uint2x2(4137980238, 2304422032, 798588178, 941373626); + TestUtils.AreEqual(a0 + b0, r0); + + uint2x2 a1 = uint2x2(81108663, 1063894558, 86954702, 843159721); + uint2x2 b1 = uint2x2(506047997, 2094559874, 1634712736, 1601474440); + uint2x2 r1 = uint2x2(587156660, 3158454432, 1721667438, 2444634161); + TestUtils.AreEqual(a1 + b1, r1); + + uint2x2 a2 = uint2x2(698977704, 192867135, 1683407172, 137301303); + uint2x2 b2 = uint2x2(1586485231, 908746788, 1812370320, 1247342357); + uint2x2 r2 = uint2x2(2285462935, 1101613923, 3495777492, 1384643660); + TestUtils.AreEqual(a2 + b2, r2); + + uint2x2 a3 = uint2x2(2103582820, 526139155, 447937230, 2127411006); + uint2x2 b3 = uint2x2(2043773873, 223363428, 175115707, 985928617); + uint2x2 r3 = uint2x2(4147356693, 749502583, 623052937, 3113339623); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void uint2x2_operator_add_wide_scalar() + { + uint2x2 a0 = uint2x2(2038218457, 134923711, 875689667, 1338884463); + uint b0 = (2124409227); + uint2x2 r0 = uint2x2(4162627684, 2259332938, 3000098894, 3463293690); + TestUtils.AreEqual(a0 + b0, r0); + + uint2x2 a1 = uint2x2(997710928, 1067888129, 70433301, 2003021861); + uint b1 = (340490871); + uint2x2 r1 = uint2x2(1338201799, 1408379000, 410924172, 2343512732); + TestUtils.AreEqual(a1 + b1, r1); + + uint2x2 a2 = uint2x2(1635971971, 85446202, 1068152966, 1239387100); + uint b2 = (1160398286); + uint2x2 r2 = uint2x2(2796370257, 1245844488, 2228551252, 2399785386); + TestUtils.AreEqual(a2 + b2, r2); + + uint2x2 a3 = uint2x2(1497676888, 1095438654, 756559204, 1818718931); + uint b3 = (1727477485); + uint2x2 r3 = uint2x2(3225154373, 2822916139, 2484036689, 3546196416); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void uint2x2_operator_add_scalar_wide() + { + uint a0 = (391092078); + uint2x2 b0 = uint2x2(519908870, 851424292, 328314822, 135622204); + uint2x2 r0 = uint2x2(911000948, 1242516370, 719406900, 526714282); + TestUtils.AreEqual(a0 + b0, r0); + + uint a1 = (740923360); + uint2x2 b1 = uint2x2(655394201, 1451896269, 1781697072, 996031825); + uint2x2 r1 = uint2x2(1396317561, 2192819629, 2522620432, 1736955185); + TestUtils.AreEqual(a1 + b1, r1); + + uint a2 = (1557774949); + uint2x2 b2 = uint2x2(779774940, 1111541302, 783046445, 1130163944); + uint2x2 r2 = uint2x2(2337549889, 2669316251, 2340821394, 2687938893); + TestUtils.AreEqual(a2 + b2, r2); + + uint a3 = (288279584); + uint2x2 b3 = uint2x2(1397683861, 1636583489, 673263339, 1469300874); + uint2x2 r3 = uint2x2(1685963445, 1924863073, 961542923, 1757580458); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void uint2x2_operator_sub_wide_wide() + { + uint2x2 a0 = uint2x2(1353441118, 797269833, 659988112, 56022121); + uint2x2 b0 = uint2x2(1332656812, 1827794007, 972557431, 2078233689); + uint2x2 r0 = uint2x2(20784306, 3264443122, 3982397977, 2272755728); + TestUtils.AreEqual(a0 - b0, r0); + + uint2x2 a1 = uint2x2(365847472, 2062899435, 1380988474, 799885138); + uint2x2 b1 = uint2x2(1508184327, 1372307701, 810327977, 936799885); + uint2x2 r1 = uint2x2(3152630441, 690591734, 570660497, 4158052549); + TestUtils.AreEqual(a1 - b1, r1); + + uint2x2 a2 = uint2x2(1306058185, 579775276, 1239163824, 344591081); + uint2x2 b2 = uint2x2(71562303, 1418723328, 1971342989, 1226053395); + uint2x2 r2 = uint2x2(1234495882, 3456019244, 3562788131, 3413504982); + TestUtils.AreEqual(a2 - b2, r2); + + uint2x2 a3 = uint2x2(86359575, 1049709943, 721529513, 1767221271); + uint2x2 b3 = uint2x2(136565478, 1979903295, 600719425, 837912956); + uint2x2 r3 = uint2x2(4244761393, 3364773944, 120810088, 929308315); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void uint2x2_operator_sub_wide_scalar() + { + uint2x2 a0 = uint2x2(1176369558, 1934521195, 309452150, 1417634074); + uint b0 = (462232403); + uint2x2 r0 = uint2x2(714137155, 1472288792, 4142187043, 955401671); + TestUtils.AreEqual(a0 - b0, r0); + + uint2x2 a1 = uint2x2(108910717, 1502312334, 1451794815, 281174200); + uint b1 = (1306356714); + uint2x2 r1 = uint2x2(3097521299, 195955620, 145438101, 3269784782); + TestUtils.AreEqual(a1 - b1, r1); + + uint2x2 a2 = uint2x2(87530840, 2041593336, 557239990, 1119051448); + uint b2 = (1913724431); + uint2x2 r2 = uint2x2(2468773705, 127868905, 2938482855, 3500294313); + TestUtils.AreEqual(a2 - b2, r2); + + uint2x2 a3 = uint2x2(1590376732, 816382635, 815920639, 1829033117); + uint b3 = (819090189); + uint2x2 r3 = uint2x2(771286543, 4292259742, 4291797746, 1009942928); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void uint2x2_operator_sub_scalar_wide() + { + uint a0 = (1691534405); + uint2x2 b0 = uint2x2(2022393810, 1612688515, 496689713, 887037586); + uint2x2 r0 = uint2x2(3964107891, 78845890, 1194844692, 804496819); + TestUtils.AreEqual(a0 - b0, r0); + + uint a1 = (2097630964); + uint2x2 b1 = uint2x2(374934538, 939035482, 935242277, 1789300421); + uint2x2 r1 = uint2x2(1722696426, 1158595482, 1162388687, 308330543); + TestUtils.AreEqual(a1 - b1, r1); + + uint a2 = (264712893); + uint2x2 b2 = uint2x2(1231856067, 1818112748, 1428436109, 1258745460); + uint2x2 r2 = uint2x2(3327824122, 2741567441, 3131244080, 3300934729); + TestUtils.AreEqual(a2 - b2, r2); + + uint a3 = (1077380396); + uint2x2 b3 = uint2x2(1330722719, 518111829, 967128529, 344666254); + uint2x2 r3 = uint2x2(4041624973, 559268567, 110251867, 732714142); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void uint2x2_operator_mul_wide_wide() + { + uint2x2 a0 = uint2x2(245827027, 208934650, 1019478917, 568231809); + uint2x2 b0 = uint2x2(759663997, 350129201, 477450108, 1635735015); + uint2x2 r0 = uint2x2(3662155527, 1402281434, 332447596, 2361989735); + TestUtils.AreEqual(a0 * b0, r0); + + uint2x2 a1 = uint2x2(877289039, 1585782440, 2111178729, 1186019069); + uint2x2 b1 = uint2x2(388710278, 757722665, 1509388321, 1841703980); + uint2x2 r1 = uint2x2(2624048730, 1455036648, 2128344329, 3700879228); + TestUtils.AreEqual(a1 * b1, r1); + + uint2x2 a2 = uint2x2(571481445, 1570087048, 629447153, 619383734); + uint2x2 b2 = uint2x2(1826369331, 1524322467, 1605207974, 428419155); + uint2x2 r2 = uint2x2(2640799263, 2093463192, 3087460678, 3161406466); + TestUtils.AreEqual(a2 * b2, r2); + + uint2x2 a3 = uint2x2(2055121568, 700402816, 263414349, 187830569); + uint2x2 b3 = uint2x2(1460605791, 1968043860, 771161742, 2037340417); + uint2x2 r3 = uint2x2(990589280, 3356793344, 2953243830, 1156600361); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void uint2x2_operator_mul_wide_scalar() + { + uint2x2 a0 = uint2x2(1762033447, 465343930, 1570757881, 1326409563); + uint b0 = (1476837906); + uint2x2 r0 = uint2x2(2981789374, 1326807828, 2156411778, 4018813542); + TestUtils.AreEqual(a0 * b0, r0); + + uint2x2 a1 = uint2x2(1824319147, 72749215, 154616909, 975743632); + uint b1 = (1356578909); + uint2x2 r1 = uint2x2(4058582047, 130042307, 1244434425, 2313287248); + TestUtils.AreEqual(a1 * b1, r1); + + uint2x2 a2 = uint2x2(573770299, 971327747, 1818877398, 1324050764); + uint b2 = (1958912969); + uint2x2 r2 = uint2x2(3595344211, 583613531, 2609540870, 377032876); + TestUtils.AreEqual(a2 * b2, r2); + + uint2x2 a3 = uint2x2(660611671, 391009467, 1186856590, 890343818); + uint b3 = (1279757657); + uint2x2 r3 = uint2x2(4252425023, 1120105475, 4272141662, 1972017914); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void uint2x2_operator_mul_scalar_wide() + { + uint a0 = (99541948); + uint2x2 b0 = uint2x2(1764461774, 657072478, 1459784358, 1610646683); + uint2x2 r0 = uint2x2(3344568648, 4192918280, 1260585960, 1158730452); + TestUtils.AreEqual(a0 * b0, r0); + + uint a1 = (1632058826); + uint2x2 b1 = uint2x2(868441654, 1408757883, 335917146, 2105124483); + uint2x2 r1 = uint2x2(4237636764, 2735607822, 712546564, 3489634910); + TestUtils.AreEqual(a1 * b1, r1); + + uint a2 = (1178393968); + uint2x2 b2 = uint2x2(1963904348, 1409533767, 243286231, 1336308795); + uint2x2 r2 = uint2x2(1196573760, 592673296, 209320208, 3942500560); + TestUtils.AreEqual(a2 * b2, r2); + + uint a3 = (517963367); + uint2x2 b3 = uint2x2(1733623488, 459880225, 994616533, 1420531535); + uint2x2 r3 = uint2x2(3520397120, 3023465543, 652617651, 2505294537); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void uint2x2_operator_div_wide_wide() + { + uint2x2 a0 = uint2x2(1590198532, 507812502, 126627032, 1058247011); + uint2x2 b0 = uint2x2(1434703236, 911965201, 390415521, 128746927); + uint2x2 r0 = uint2x2(1, 0, 0, 8); + TestUtils.AreEqual(a0 / b0, r0); + + uint2x2 a1 = uint2x2(427387861, 290676154, 1829594484, 1127868739); + uint2x2 b1 = uint2x2(525835375, 816946613, 878264647, 146789678); + uint2x2 r1 = uint2x2(0, 0, 2, 7); + TestUtils.AreEqual(a1 / b1, r1); + + uint2x2 a2 = uint2x2(499016351, 1341209632, 134906097, 785470242); + uint2x2 b2 = uint2x2(2089524057, 254213018, 1916850021, 1737806518); + uint2x2 r2 = uint2x2(0, 5, 0, 0); + TestUtils.AreEqual(a2 / b2, r2); + + uint2x2 a3 = uint2x2(788249865, 1099825433, 1552968283, 1822367139); + uint2x2 b3 = uint2x2(1906634983, 437754923, 825037958, 902508708); + uint2x2 r3 = uint2x2(0, 2, 1, 2); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void uint2x2_operator_div_wide_scalar() + { + uint2x2 a0 = uint2x2(560951562, 1218680769, 375341724, 1613542090); + uint b0 = (947861580); + uint2x2 r0 = uint2x2(0, 1, 0, 1); + TestUtils.AreEqual(a0 / b0, r0); + + uint2x2 a1 = uint2x2(1919409166, 1349573078, 524526253, 341995568); + uint b1 = (1397425408); + uint2x2 r1 = uint2x2(1, 0, 0, 0); + TestUtils.AreEqual(a1 / b1, r1); + + uint2x2 a2 = uint2x2(495895326, 1676971657, 2131487088, 2105094094); + uint b2 = (1515313790); + uint2x2 r2 = uint2x2(0, 1, 1, 1); + TestUtils.AreEqual(a2 / b2, r2); + + uint2x2 a3 = uint2x2(1017891310, 1646044372, 1447236569, 107215658); + uint b3 = (542666029); + uint2x2 r3 = uint2x2(1, 3, 2, 0); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void uint2x2_operator_div_scalar_wide() + { + uint a0 = (1161272038); + uint2x2 b0 = uint2x2(187325733, 1594107378, 2016183849, 1589343709); + uint2x2 r0 = uint2x2(6, 0, 0, 0); + TestUtils.AreEqual(a0 / b0, r0); + + uint a1 = (388768753); + uint2x2 b1 = uint2x2(1417077283, 1773486938, 1154044032, 81831373); + uint2x2 r1 = uint2x2(0, 0, 0, 4); + TestUtils.AreEqual(a1 / b1, r1); + + uint a2 = (1476877645); + uint2x2 b2 = uint2x2(653688843, 45756703, 631027637, 396671391); + uint2x2 r2 = uint2x2(2, 32, 2, 3); + TestUtils.AreEqual(a2 / b2, r2); + + uint a3 = (784365696); + uint2x2 b3 = uint2x2(1250594097, 1818363859, 1653451772, 270557729); + uint2x2 r3 = uint2x2(0, 0, 0, 2); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void uint2x2_operator_mod_wide_wide() + { + uint2x2 a0 = uint2x2(146150818, 1846543305, 1071447756, 308965362); + uint2x2 b0 = uint2x2(983050390, 771341152, 942375212, 367361754); + uint2x2 r0 = uint2x2(146150818, 303861001, 129072544, 308965362); + TestUtils.AreEqual(a0 % b0, r0); + + uint2x2 a1 = uint2x2(659881575, 1002365460, 861198439, 1510617532); + uint2x2 b1 = uint2x2(749500619, 750718852, 2095151755, 88438806); + uint2x2 r1 = uint2x2(659881575, 251646608, 861198439, 7157830); + TestUtils.AreEqual(a1 % b1, r1); + + uint2x2 a2 = uint2x2(778525078, 1458458044, 101987897, 1249565173); + uint2x2 b2 = uint2x2(769227442, 647214624, 1026513788, 1544950956); + uint2x2 r2 = uint2x2(9297636, 164028796, 101987897, 1249565173); + TestUtils.AreEqual(a2 % b2, r2); + + uint2x2 a3 = uint2x2(938026607, 1692541775, 1518877124, 1806965510); + uint2x2 b3 = uint2x2(160166322, 1099108075, 1158422232, 1798905209); + uint2x2 r3 = uint2x2(137194997, 593433700, 360454892, 8060301); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void uint2x2_operator_mod_wide_scalar() + { + uint2x2 a0 = uint2x2(164800505, 1062177828, 1898749675, 1701653318); + uint b0 = (883951171); + uint2x2 r0 = uint2x2(164800505, 178226657, 130847333, 817702147); + TestUtils.AreEqual(a0 % b0, r0); + + uint2x2 a1 = uint2x2(820393245, 128329633, 1464010899, 896587769); + uint b1 = (19002208); + uint2x2 r1 = uint2x2(3298301, 14316385, 840883, 3483993); + TestUtils.AreEqual(a1 % b1, r1); + + uint2x2 a2 = uint2x2(405208598, 959236935, 712321026, 172564850); + uint b2 = (1982762194); + uint2x2 r2 = uint2x2(405208598, 959236935, 712321026, 172564850); + TestUtils.AreEqual(a2 % b2, r2); + + uint2x2 a3 = uint2x2(1540068445, 1607489717, 165478511, 647846716); + uint b3 = (1085897743); + uint2x2 r3 = uint2x2(454170702, 521591974, 165478511, 647846716); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void uint2x2_operator_mod_scalar_wide() + { + uint a0 = (242383789); + uint2x2 b0 = uint2x2(740000543, 1556450291, 1104736385, 437976569); + uint2x2 r0 = uint2x2(242383789, 242383789, 242383789, 242383789); + TestUtils.AreEqual(a0 % b0, r0); + + uint a1 = (1911837205); + uint2x2 b1 = uint2x2(1507212038, 1906405167, 247693265, 293460573); + uint2x2 r1 = uint2x2(404625167, 5432038, 177984350, 151073767); + TestUtils.AreEqual(a1 % b1, r1); + + uint a2 = (1495295166); + uint2x2 b2 = uint2x2(873323603, 530681233, 1298102643, 2057984657); + uint2x2 r2 = uint2x2(621971563, 433932700, 197192523, 1495295166); + TestUtils.AreEqual(a2 % b2, r2); + + uint a3 = (1000742091); + uint2x2 b3 = uint2x2(1461372131, 1859742342, 797184687, 821888842); + uint2x2 r3 = uint2x2(1000742091, 1000742091, 203557404, 178853249); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void uint2x2_operator_plus() + { + uint2x2 a0 = uint2x2(1643476803, 907898539, 379615839, 1140483021); + uint2x2 r0 = uint2x2(1643476803, 907898539, 379615839, 1140483021); + TestUtils.AreEqual(+a0, r0); + + uint2x2 a1 = uint2x2(1735287433, 1472881565, 339091479, 401565897); + uint2x2 r1 = uint2x2(1735287433, 1472881565, 339091479, 401565897); + TestUtils.AreEqual(+a1, r1); + + uint2x2 a2 = uint2x2(1287765427, 174532915, 1864850812, 1566098441); + uint2x2 r2 = uint2x2(1287765427, 174532915, 1864850812, 1566098441); + TestUtils.AreEqual(+a2, r2); + + uint2x2 a3 = uint2x2(1145639744, 2049663954, 1723005749, 409076474); + uint2x2 r3 = uint2x2(1145639744, 2049663954, 1723005749, 409076474); + TestUtils.AreEqual(+a3, r3); + } + + [TestCompiler] + public static void uint2x2_operator_neg() + { + uint2x2 a0 = uint2x2(1955022112, 662160019, 370300775, 2141283773); + uint2x2 r0 = uint2x2(2339945184, 3632807277, 3924666521, 2153683523); + TestUtils.AreEqual(-a0, r0); + + uint2x2 a1 = uint2x2(1004505619, 33894270, 505708349, 1115028238); + uint2x2 r1 = uint2x2(3290461677, 4261073026, 3789258947, 3179939058); + TestUtils.AreEqual(-a1, r1); + + uint2x2 a2 = uint2x2(1636274969, 1542206286, 213087293, 243937487); + uint2x2 r2 = uint2x2(2658692327, 2752761010, 4081880003, 4051029809); + TestUtils.AreEqual(-a2, r2); + + uint2x2 a3 = uint2x2(341522275, 574159094, 1687250035, 2057919693); + uint2x2 r3 = uint2x2(3953445021, 3720808202, 2607717261, 2237047603); + TestUtils.AreEqual(-a3, r3); + } + + [TestCompiler] + public static void uint2x2_operator_prefix_inc() + { + uint2x2 a0 = uint2x2(864455342, 2035793213, 1275443862, 971919915); + uint2x2 r0 = uint2x2(864455343, 2035793214, 1275443863, 971919916); + TestUtils.AreEqual(++a0, r0); + + uint2x2 a1 = uint2x2(411610189, 395072276, 115573442, 913293639); + uint2x2 r1 = uint2x2(411610190, 395072277, 115573443, 913293640); + TestUtils.AreEqual(++a1, r1); + + uint2x2 a2 = uint2x2(432884105, 1385544935, 1835605516, 831396561); + uint2x2 r2 = uint2x2(432884106, 1385544936, 1835605517, 831396562); + TestUtils.AreEqual(++a2, r2); + + uint2x2 a3 = uint2x2(388229350, 1786514683, 993189311, 752093909); + uint2x2 r3 = uint2x2(388229351, 1786514684, 993189312, 752093910); + TestUtils.AreEqual(++a3, r3); + } + + [TestCompiler] + public static void uint2x2_operator_postfix_inc() + { + uint2x2 a0 = uint2x2(1751003569, 2063707595, 1500486291, 969189211); + uint2x2 r0 = uint2x2(1751003569, 2063707595, 1500486291, 969189211); + TestUtils.AreEqual(a0++, r0); + + uint2x2 a1 = uint2x2(1007848192, 1643023524, 1190630527, 1396179607); + uint2x2 r1 = uint2x2(1007848192, 1643023524, 1190630527, 1396179607); + TestUtils.AreEqual(a1++, r1); + + uint2x2 a2 = uint2x2(708474528, 1524860667, 1408994706, 375284401); + uint2x2 r2 = uint2x2(708474528, 1524860667, 1408994706, 375284401); + TestUtils.AreEqual(a2++, r2); + + uint2x2 a3 = uint2x2(1580130369, 717006530, 506142468, 732199129); + uint2x2 r3 = uint2x2(1580130369, 717006530, 506142468, 732199129); + TestUtils.AreEqual(a3++, r3); + } + + [TestCompiler] + public static void uint2x2_operator_prefix_dec() + { + uint2x2 a0 = uint2x2(200904609, 871077500, 968578728, 638967721); + uint2x2 r0 = uint2x2(200904608, 871077499, 968578727, 638967720); + TestUtils.AreEqual(--a0, r0); + + uint2x2 a1 = uint2x2(1995396216, 1782514098, 1589827826, 1434377580); + uint2x2 r1 = uint2x2(1995396215, 1782514097, 1589827825, 1434377579); + TestUtils.AreEqual(--a1, r1); + + uint2x2 a2 = uint2x2(596759698, 1758478358, 1914114460, 71237375); + uint2x2 r2 = uint2x2(596759697, 1758478357, 1914114459, 71237374); + TestUtils.AreEqual(--a2, r2); + + uint2x2 a3 = uint2x2(389120307, 1310293956, 356565557, 18299409); + uint2x2 r3 = uint2x2(389120306, 1310293955, 356565556, 18299408); + TestUtils.AreEqual(--a3, r3); + } + + [TestCompiler] + public static void uint2x2_operator_postfix_dec() + { + uint2x2 a0 = uint2x2(283970262, 1109329936, 1073216143, 649439137); + uint2x2 r0 = uint2x2(283970262, 1109329936, 1073216143, 649439137); + TestUtils.AreEqual(a0--, r0); + + uint2x2 a1 = uint2x2(1932646215, 484207852, 524156737, 691209285); + uint2x2 r1 = uint2x2(1932646215, 484207852, 524156737, 691209285); + TestUtils.AreEqual(a1--, r1); + + uint2x2 a2 = uint2x2(2017728859, 377162390, 526366486, 1504625034); + uint2x2 r2 = uint2x2(2017728859, 377162390, 526366486, 1504625034); + TestUtils.AreEqual(a2--, r2); + + uint2x2 a3 = uint2x2(590919177, 1867810045, 2095777993, 670715645); + uint2x2 r3 = uint2x2(590919177, 1867810045, 2095777993, 670715645); + TestUtils.AreEqual(a3--, r3); + } + + [TestCompiler] + public static void uint2x2_operator_bitwise_and_wide_wide() + { + uint2x2 a0 = uint2x2(779935043, 1097962163, 1939593304, 800599247); + uint2x2 b0 = uint2x2(307705143, 1710882162, 866836769, 532490608); + uint2x2 r0 = uint2x2(39064835, 1097961522, 864731136, 263727168); + TestUtils.AreEqual(a0 & b0, r0); + + uint2x2 a1 = uint2x2(952140918, 782792558, 1608557706, 396446406); + uint2x2 b1 = uint2x2(679371720, 1794035877, 1439832202, 519529812); + uint2x2 r1 = uint2x2(675283008, 715673636, 1438646410, 379666500); + TestUtils.AreEqual(a1 & b1, r1); + + uint2x2 a2 = uint2x2(2039894114, 1286974642, 442394124, 1759739564); + uint2x2 b2 = uint2x2(23633139, 1209152681, 646737179, 1255867027); + uint2x2 r2 = uint2x2(16781410, 1209017504, 34366472, 1220739712); + TestUtils.AreEqual(a2 & b2, r2); + + uint2x2 a3 = uint2x2(233435438, 665207770, 1942050241, 1022352952); + uint2x2 b3 = uint2x2(1900854122, 413173763, 1409138251, 2087190272); + uint2x2 r3 = uint2x2(21541162, 10485762, 1405162561, 1013440000); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void uint2x2_operator_bitwise_and_wide_scalar() + { + uint2x2 a0 = uint2x2(443615469, 490057985, 2042441263, 1524760558); + uint b0 = (93423598); + uint2x2 r0 = uint2x2(1114348, 85033216, 26281518, 8488942); + TestUtils.AreEqual(a0 & b0, r0); + + uint2x2 a1 = uint2x2(1405175110, 1941875181, 1236735839, 1365509729); + uint b1 = (510212004); + uint2x2 r1 = uint2x2(306251012, 304619940, 136386308, 274728480); + TestUtils.AreEqual(a1 & b1, r1); + + uint2x2 a2 = uint2x2(428270198, 650270920, 1249238550, 814629680); + uint b2 = (607982857); + uint2x2 r2 = uint2x2(262144, 603983880, 3478528, 537657600); + TestUtils.AreEqual(a2 & b2, r2); + + uint2x2 a3 = uint2x2(1862276471, 861733033, 1408932942, 957693145); + uint b3 = (143502472); + uint2x2 r3 = uint2x2(134218752, 852104, 8948744, 134556808); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void uint2x2_operator_bitwise_and_scalar_wide() + { + uint a0 = (1144543590); + uint2x2 b0 = uint2x2(420346723, 562416448, 1393127318, 1560699552); + uint2x2 r0 = uint2x2(547170, 18752, 1074284806, 1140867104); + TestUtils.AreEqual(a0 & b0, r0); + + uint a1 = (851218057); + uint2x2 b1 = uint2x2(703880958, 1159378889, 2031211279, 1089518981); + uint2x2 r1 = uint2x2(548671112, 1607305, 806388233, 11570305); + TestUtils.AreEqual(a1 & b1, r1); + + uint a2 = (270607307); + uint2x2 b2 = uint2x2(1349288930, 520199596, 1763483957, 1248975349); + uint2x2 r2 = uint2x2(270533570, 268501384, 8449, 2163137); + TestUtils.AreEqual(a2 & b2, r2); + + uint a3 = (236938635); + uint2x2 b3 = uint2x2(185023291, 1085233038, 1845693112, 946052961); + uint2x2 r3 = uint2x2(168239371, 1000842, 235077768, 134415617); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void uint2x2_operator_bitwise_or_wide_wide() + { + uint2x2 a0 = uint2x2(1731159103, 659068416, 382702471, 1821032196); + uint2x2 b0 = uint2x2(1583847161, 692672727, 1161585489, 1756207130); + uint2x2 r0 = uint2x2(2138044159, 793370327, 1476391895, 1823457054); + TestUtils.AreEqual(a0 | b0, r0); + + uint2x2 a1 = uint2x2(1565773438, 1004000514, 948501377, 600951835); + uint2x2 b1 = uint2x2(1321374429, 1287357212, 2075767170, 1273513430); + uint2x2 r1 = uint2x2(1607720703, 2147473182, 2075786115, 1811533279); + TestUtils.AreEqual(a1 | b1, r1); + + uint2x2 a2 = uint2x2(669346222, 396691477, 2108560248, 2117522137); + uint2x2 b2 = uint2x2(1610830169, 1316929125, 511625048, 573925879); + uint2x2 r2 = uint2x2(1743223295, 1610595957, 2147407736, 2117598207); + TestUtils.AreEqual(a2 | b2, r2); + + uint2x2 a3 = uint2x2(330307355, 818676817, 1774459567, 1117506257); + uint2x2 b3 = uint2x2(1502255628, 1841676448, 1682928938, 1115131952); + uint2x2 r3 = uint2x2(1538957087, 2110637297, 1842315183, 1124063985); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void uint2x2_operator_bitwise_or_wide_scalar() + { + uint2x2 a0 = uint2x2(961259683, 471103264, 1733389229, 1591585258); + uint b0 = (1666102508); + uint2x2 r0 = uint2x2(2068823279, 2136930284, 1734344685, 2145369582); + TestUtils.AreEqual(a0 | b0, r0); + + uint2x2 a1 = uint2x2(386953869, 1048929715, 1814263250, 860336789); + uint b1 = (1148351449); + uint2x2 r1 = uint2x2(1467118557, 2130147323, 1819506651, 2004349917); + TestUtils.AreEqual(a1 | b1, r1); + + uint2x2 a2 = uint2x2(1637162093, 774029856, 879300408, 1179087439); + uint b2 = (1227888278); + uint2x2 r2 = uint2x2(1773477631, 1865602742, 2105089982, 1333229279); + TestUtils.AreEqual(a2 | b2, r2); + + uint2x2 a3 = uint2x2(797240690, 46921989, 1980838747, 284225881); + uint b3 = (1977614655); + uint2x2 r3 = uint2x2(2145709439, 2011953471, 2012296063, 1978724735); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void uint2x2_operator_bitwise_or_scalar_wide() + { + uint a0 = (1213433101); + uint2x2 b0 = uint2x2(1212928242, 1614462616, 936937728, 764766995); + uint2x2 r0 = uint2x2(1213978111, 1752940445, 2145094925, 1842867999); + TestUtils.AreEqual(a0 | b0, r0); + + uint a1 = (306352095); + uint2x2 b1 = uint2x2(574719481, 1283571271, 2109131012, 979469710); + uint2x2 r1 = uint2x2(843288575, 1589886943, 2146881503, 979603423); + TestUtils.AreEqual(a1 | b1, r1); + + uint a2 = (1348323481); + uint2x2 b2 = uint2x2(1407542578, 697517649, 1059093741, 627815046); + uint2x2 r2 = uint2x2(1409150395, 2044710617, 2138963197, 1971321503); + TestUtils.AreEqual(a2 | b2, r2); + + uint a3 = (418822515); + uint2x2 b3 = uint2x2(83214352, 424663473, 447949225, 527022375); + uint2x2 r3 = uint2x2(486013299, 436206067, 452442619, 536852855); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void uint2x2_operator_bitwise_xor_wide_wide() + { + uint2x2 a0 = uint2x2(1556324760, 207002929, 1843444873, 1632079131); + uint2x2 b0 = uint2x2(1054997548, 1523759632, 251164872, 110472397); + uint2x2 r0 = uint2x2(1646419380, 1451501345, 1662567489, 1741824470); + TestUtils.AreEqual(a0 ^ b0, r0); + + uint2x2 a1 = uint2x2(1460334334, 1607815585, 220623650, 38668553); + uint2x2 b1 = uint2x2(384031112, 1109163205, 535118981, 179106262); + uint2x2 r1 = uint2x2(1105803126, 499723620, 314783655, 149092575); + TestUtils.AreEqual(a1 ^ b1, r1); + + uint2x2 a2 = uint2x2(47193340, 643663548, 1371932564, 94957188); + uint2x2 b2 = uint2x2(1523031711, 1713313372, 1294118730, 520360641); + uint2x2 r2 = uint2x2(1477935715, 1078104288, 484747486, 447544389); + TestUtils.AreEqual(a2 ^ b2, r2); + + uint2x2 a3 = uint2x2(700973621, 370621508, 2087573076, 351476570); + uint2x2 b3 = uint2x2(1040688781, 1020757245, 1143954843, 1281933464); + uint2x2 r3 = uint2x2(399484088, 717273273, 943885263, 1486609346); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void uint2x2_operator_bitwise_xor_wide_scalar() + { + uint2x2 a0 = uint2x2(2124666952, 177397845, 574879617, 1937385541); + uint b0 = (493665894); + uint2x2 r0 = uint2x2(1674536494, 402546227, 1060063719, 1846973987); + TestUtils.AreEqual(a0 ^ b0, r0); + + uint2x2 a1 = uint2x2(1136545648, 535061373, 289301586, 1305234431); + uint b1 = (213863690); + uint2x2 r1 = uint2x2(1325466234, 324742775, 495003992, 1098057461); + TestUtils.AreEqual(a1 ^ b1, r1); + + uint2x2 a2 = uint2x2(353786540, 1267729267, 125659640, 1315625690); + uint b2 = (1308626970); + uint2x2 r2 = uint2x2(1528187574, 93328233, 1232959970, 6998720); + TestUtils.AreEqual(a2 ^ b2, r2); + + uint2x2 a3 = uint2x2(1730088797, 375757978, 491079274, 191750702); + uint b3 = (116862046); + uint2x2 r3 = uint2x2(1642603267, 278048964, 464677428, 228249200); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void uint2x2_operator_bitwise_xor_scalar_wide() + { + uint a0 = (1288453276); + uint2x2 b0 = uint2x2(1077599928, 884741329, 212164516, 1585020328); + uint2x2 r0 = uint2x2(217506340, 2020616269, 1080648504, 313868596); + TestUtils.AreEqual(a0 ^ b0, r0); + + uint a1 = (152985454); + uint2x2 b1 = uint2x2(1775851275, 1416249064, 1309317737, 1773918217); + uint2x2 r1 = uint2x2(1623656549, 1567908230, 1192543495, 1621460839); + TestUtils.AreEqual(a1 ^ b1, r1); + + uint a2 = (1509843030); + uint2x2 b2 = uint2x2(1206045972, 1154916424, 1947871003, 1774252400); + uint2x2 r2 = uint2x2(505195842, 489209886, 769935181, 809406758); + TestUtils.AreEqual(a2 ^ b2, r2); + + uint a3 = (1946113778); + uint2x2 b3 = uint2x2(1079717492, 290620937, 1382343363, 939045099); + uint2x2 r3 = uint2x2(866416774, 1655558395, 563852337, 1141368345); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void uint2x2_operator_left_shift() + { + uint2x2 a0 = uint2x2(197771193, 622182602, 1283988958, 1327917304); + int b0 = (1321149625); + uint2x2 r0 = uint2x2(1912602624, 2483027968, 3154116608, 4026531840); + TestUtils.AreEqual(a0 << b0, r0); + + uint2x2 a1 = uint2x2(473415985, 870301196, 2058433484, 1200694230); + int b1 = (432425717); + uint2x2 r1 = uint2x2(639631360, 3246391296, 2038431744, 2059403264); + TestUtils.AreEqual(a1 << b1, r1); + + uint2x2 a2 = uint2x2(1531607705, 1008296534, 1447702302, 1079614371); + int b2 = (1360008038); + uint2x2 r2 = uint2x2(3533612608, 106468736, 2458634112, 375843008); + TestUtils.AreEqual(a2 << b2, r2); + + uint2x2 a3 = uint2x2(35667343, 2045594989, 2077023268, 592678686); + int b3 = (1664454606); + uint2x2 r3 = uint2x2(258195456, 1398489088, 923336704, 3821502464); + TestUtils.AreEqual(a3 << b3, r3); + } + + [TestCompiler] + public static void uint2x2_operator_right_shift() + { + uint2x2 a0 = uint2x2(548167301, 1161338299, 1617625829, 1860731847); + int b0 = (1266801540); + uint2x2 r0 = uint2x2(34260456, 72583643, 101101614, 116295740); + TestUtils.AreEqual(a0 >> b0, r0); + + uint2x2 a1 = uint2x2(713958715, 770466193, 1265099998, 572763124); + int b1 = (196552656); + uint2x2 r1 = uint2x2(10894, 11756, 19303, 8739); + TestUtils.AreEqual(a1 >> b1, r1); + + uint2x2 a2 = uint2x2(506619530, 2031319045, 701927980, 917785020); + int b2 = (426807581); + uint2x2 r2 = uint2x2(0, 3, 1, 1); + TestUtils.AreEqual(a2 >> b2, r2); + + uint2x2 a3 = uint2x2(569504877, 1102123711, 334005460, 1624751550); + int b3 = (185593382); + uint2x2 r3 = uint2x2(8898513, 17220682, 5218835, 25386742); + TestUtils.AreEqual(a3 >> b3, r3); + } + + [TestCompiler] + public static void uint2x2_operator_bitwise_not() + { + uint2x2 a0 = uint2x2(1403358969, 831360921, 2088190243, 976721016); + uint2x2 r0 = uint2x2(2891608326, 3463606374, 2206777052, 3318246279); + TestUtils.AreEqual(~a0, r0); + + uint2x2 a1 = uint2x2(878283189, 1935567517, 1420884856, 472965491); + uint2x2 r1 = uint2x2(3416684106, 2359399778, 2874082439, 3822001804); + TestUtils.AreEqual(~a1, r1); + + uint2x2 a2 = uint2x2(771711426, 2061524024, 753208488, 2097179283); + uint2x2 r2 = uint2x2(3523255869, 2233443271, 3541758807, 2197788012); + TestUtils.AreEqual(~a2, r2); + + uint2x2 a3 = uint2x2(1303022493, 1289372466, 1635981125, 1951018596); + uint2x2 r3 = uint2x2(2991944802, 3005594829, 2658986170, 2343948699); + TestUtils.AreEqual(~a3, r3); + } + + + } +} diff --git a/package/Tests/Tests/Shared/TestUint2x2.gen.cs.meta b/package/Tests/Tests/Shared/TestUint2x2.gen.cs.meta new file mode 100755 index 000000000..998b402a8 --- /dev/null +++ b/package/Tests/Tests/Shared/TestUint2x2.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 103b5058df216b7488fb5bf96d18666e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/package/Tests/Tests/Shared/TestUint2x3.gen.cs b/package/Tests/Tests/Shared/TestUint2x3.gen.cs new file mode 100755 index 000000000..8e3912ef9 --- /dev/null +++ b/package/Tests/Tests/Shared/TestUint2x3.gen.cs @@ -0,0 +1,1227 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using NUnit.Framework; +using static Unity.Mathematics.math; +using Burst.Compiler.IL.Tests; + +namespace Unity.Mathematics.Tests +{ + [TestFixture] + public class TestUint2x3 + { + [TestCompiler] + public static void uint2x3_zero() + { + TestUtils.AreEqual(uint2x3.zero.c0.x, 0u); + TestUtils.AreEqual(uint2x3.zero.c0.y, 0u); + TestUtils.AreEqual(uint2x3.zero.c1.x, 0u); + TestUtils.AreEqual(uint2x3.zero.c1.y, 0u); + TestUtils.AreEqual(uint2x3.zero.c2.x, 0u); + TestUtils.AreEqual(uint2x3.zero.c2.y, 0u); + } + + [TestCompiler] + public static void uint2x3_operator_equal_wide_wide() + { + uint2x3 a0 = uint2x3(790229414, 970783976, 1428432738, 1578747135, 1733797753, 2001507228); + uint2x3 b0 = uint2x3(612337669, 1214209108, 2120643427, 295461214, 1510890331, 1893316566); + bool2x3 r0 = bool2x3(false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + uint2x3 a1 = uint2x3(1446876437, 1777406370, 1426387268, 1809275021, 1843770816, 1172185222); + uint2x3 b1 = uint2x3(921816149, 1834958575, 1482011863, 2062852792, 226398742, 770290735); + bool2x3 r1 = bool2x3(false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + uint2x3 a2 = uint2x3(1469608940, 869874758, 458603090, 581282460, 1948324909, 1129078206); + uint2x3 b2 = uint2x3(36812057, 543224481, 1565350150, 1909926604, 1619900436, 1849990483); + bool2x3 r2 = bool2x3(false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + uint2x3 a3 = uint2x3(1638391029, 1135553683, 2079295200, 576232476, 608208235, 11172509); + uint2x3 b3 = uint2x3(1261604411, 161864811, 843379453, 1780425458, 215681636, 2123130580); + bool2x3 r3 = bool2x3(false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void uint2x3_operator_equal_wide_scalar() + { + uint2x3 a0 = uint2x3(1211464300, 1921862607, 508076684, 1249127920, 1394594555, 746862310); + uint b0 = (746972502); + bool2x3 r0 = bool2x3(false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + uint2x3 a1 = uint2x3(1733655277, 1682018538, 795585660, 936027116, 927605411, 672785749); + uint b1 = (1884008277); + bool2x3 r1 = bool2x3(false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + uint2x3 a2 = uint2x3(1465584610, 404448210, 969511077, 442746747, 1772925698, 1884034177); + uint b2 = (585324157); + bool2x3 r2 = bool2x3(false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + uint2x3 a3 = uint2x3(451512860, 1370577708, 597010220, 1249636005, 211986678, 1305479811); + uint b3 = (425476075); + bool2x3 r3 = bool2x3(false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void uint2x3_operator_equal_scalar_wide() + { + uint a0 = (1150044438); + uint2x3 b0 = uint2x3(233855098, 924242519, 1402948791, 601381975, 2120518068, 629187703); + bool2x3 r0 = bool2x3(false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + uint a1 = (1971977031); + uint2x3 b1 = uint2x3(47183124, 1061805787, 1009011238, 312511148, 1460673064, 737210539); + bool2x3 r1 = bool2x3(false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + uint a2 = (1737844479); + uint2x3 b2 = uint2x3(1892405453, 2133024000, 455818693, 2003197687, 1276241219, 534746610); + bool2x3 r2 = bool2x3(false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + uint a3 = (559824292); + uint2x3 b3 = uint2x3(1758388240, 1023494292, 719963017, 1883763832, 597498209, 367814403); + bool2x3 r3 = bool2x3(false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void uint2x3_operator_not_equal_wide_wide() + { + uint2x3 a0 = uint2x3(1660932106, 982847023, 97046264, 1739517447, 1253499180, 1830584069); + uint2x3 b0 = uint2x3(107139049, 75478496, 2055495054, 358586687, 942338347, 111564990); + bool2x3 r0 = bool2x3(true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + uint2x3 a1 = uint2x3(1841470429, 1397841646, 1770890135, 1906548631, 169082967, 2099271786); + uint2x3 b1 = uint2x3(113811950, 948912488, 1080084121, 1400504872, 1032134499, 1061123400); + bool2x3 r1 = bool2x3(true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + uint2x3 a2 = uint2x3(1909317609, 46519139, 1433204003, 931492669, 670504132, 1551558665); + uint2x3 b2 = uint2x3(221862069, 858950046, 989094643, 2023070999, 1269317127, 531883744); + bool2x3 r2 = bool2x3(true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + uint2x3 a3 = uint2x3(1204055048, 1623586740, 226381077, 1145987803, 644253929, 475189890); + uint2x3 b3 = uint2x3(687761409, 278427731, 296354221, 536981557, 1134676193, 1749879634); + bool2x3 r3 = bool2x3(true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void uint2x3_operator_not_equal_wide_scalar() + { + uint2x3 a0 = uint2x3(747758183, 1033001286, 1439973882, 2138928797, 1197845089, 1432672459); + uint b0 = (248693828); + bool2x3 r0 = bool2x3(true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + uint2x3 a1 = uint2x3(950170763, 2105962247, 727205263, 1640688041, 276313906, 2126300423); + uint b1 = (238704450); + bool2x3 r1 = bool2x3(true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + uint2x3 a2 = uint2x3(791998981, 1171827730, 1412347883, 1622176923, 768370497, 1072798259); + uint b2 = (2035077187); + bool2x3 r2 = bool2x3(true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + uint2x3 a3 = uint2x3(1808712713, 1582645163, 1876273820, 90244766, 30493685, 904014575); + uint b3 = (1497830076); + bool2x3 r3 = bool2x3(true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void uint2x3_operator_not_equal_scalar_wide() + { + uint a0 = (2076921066); + uint2x3 b0 = uint2x3(2037494727, 1989050616, 48833929, 1897435904, 514354517, 1783749164); + bool2x3 r0 = bool2x3(true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + uint a1 = (364694471); + uint2x3 b1 = uint2x3(754315072, 124108032, 1512967900, 1178825850, 1854793298, 50286949); + bool2x3 r1 = bool2x3(true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + uint a2 = (2100802631); + uint2x3 b2 = uint2x3(1640811853, 82110247, 472172806, 266984506, 2003668365, 1826089250); + bool2x3 r2 = bool2x3(true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + uint a3 = (1041416160); + uint2x3 b3 = uint2x3(356140110, 2057237962, 799920703, 1916347720, 510966350, 572038024); + bool2x3 r3 = bool2x3(true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void uint2x3_operator_less_wide_wide() + { + uint2x3 a0 = uint2x3(1182186063, 415538999, 1667335818, 1566618442, 1166180837, 639095188); + uint2x3 b0 = uint2x3(524633529, 1032195686, 760723389, 1505751409, 431962172, 1287906509); + bool2x3 r0 = bool2x3(false, true, false, false, false, true); + TestUtils.AreEqual(a0 < b0, r0); + + uint2x3 a1 = uint2x3(1080836365, 771119973, 928263233, 789225474, 665243110, 1003542034); + uint2x3 b1 = uint2x3(1560084663, 1450178202, 2066166337, 1107069023, 1640077524, 2103263105); + bool2x3 r1 = bool2x3(true, true, true, true, true, true); + TestUtils.AreEqual(a1 < b1, r1); + + uint2x3 a2 = uint2x3(1032480172, 1961336172, 923379558, 21210619, 1089772116, 1707633052); + uint2x3 b2 = uint2x3(684229139, 1234033624, 1278743281, 1953079347, 1228832942, 2082539723); + bool2x3 r2 = bool2x3(false, false, true, true, true, true); + TestUtils.AreEqual(a2 < b2, r2); + + uint2x3 a3 = uint2x3(778986024, 158153146, 336715101, 1839141169, 1706859710, 1928438162); + uint2x3 b3 = uint2x3(1088437561, 1058382082, 207459172, 750531081, 2015788562, 2126542133); + bool2x3 r3 = bool2x3(true, true, false, false, true, true); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void uint2x3_operator_less_wide_scalar() + { + uint2x3 a0 = uint2x3(608447185, 818840405, 869219329, 2080125385, 1214500548, 1361741203); + uint b0 = (1491216667); + bool2x3 r0 = bool2x3(true, true, true, false, true, true); + TestUtils.AreEqual(a0 < b0, r0); + + uint2x3 a1 = uint2x3(1667165786, 840091491, 469591900, 1247103789, 315321650, 930950514); + uint b1 = (1615392341); + bool2x3 r1 = bool2x3(false, true, true, true, true, true); + TestUtils.AreEqual(a1 < b1, r1); + + uint2x3 a2 = uint2x3(1100560246, 908563901, 1127696709, 1286331950, 380753337, 971148054); + uint b2 = (933855388); + bool2x3 r2 = bool2x3(false, true, false, false, true, false); + TestUtils.AreEqual(a2 < b2, r2); + + uint2x3 a3 = uint2x3(1827886929, 1579735991, 689044913, 1960894027, 371987110, 867559111); + uint b3 = (1056649851); + bool2x3 r3 = bool2x3(false, false, true, false, true, true); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void uint2x3_operator_less_scalar_wide() + { + uint a0 = (548436837); + uint2x3 b0 = uint2x3(282703327, 14370648, 1862117300, 1304793311, 826073259, 988910157); + bool2x3 r0 = bool2x3(false, false, true, true, true, true); + TestUtils.AreEqual(a0 < b0, r0); + + uint a1 = (445132446); + uint2x3 b1 = uint2x3(1139670255, 111349251, 1102440676, 112183144, 1594415311, 1890019295); + bool2x3 r1 = bool2x3(true, false, true, false, true, true); + TestUtils.AreEqual(a1 < b1, r1); + + uint a2 = (2098715503); + uint2x3 b2 = uint2x3(608933527, 183989010, 1596056507, 1027318999, 146281093, 358911716); + bool2x3 r2 = bool2x3(false, false, false, false, false, false); + TestUtils.AreEqual(a2 < b2, r2); + + uint a3 = (874278078); + uint2x3 b3 = uint2x3(1106057699, 1256807459, 2111973919, 1736480659, 810406400, 1329939911); + bool2x3 r3 = bool2x3(true, true, true, true, false, true); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void uint2x3_operator_greater_wide_wide() + { + uint2x3 a0 = uint2x3(592884447, 2133928932, 918957182, 1284069471, 194584707, 739120780); + uint2x3 b0 = uint2x3(138737040, 192863971, 1700841444, 1044631301, 1391589821, 730837695); + bool2x3 r0 = bool2x3(true, true, false, true, false, true); + TestUtils.AreEqual(a0 > b0, r0); + + uint2x3 a1 = uint2x3(241654068, 1340158550, 2099542537, 1182623667, 1399607274, 789301637); + uint2x3 b1 = uint2x3(253553987, 2078872742, 910845808, 976047676, 202633078, 1223618940); + bool2x3 r1 = bool2x3(false, false, true, true, true, false); + TestUtils.AreEqual(a1 > b1, r1); + + uint2x3 a2 = uint2x3(180400925, 594688333, 1877031463, 1360073500, 1091782422, 546676424); + uint2x3 b2 = uint2x3(641600530, 1830470354, 1570701388, 1104256103, 1838646932, 740166101); + bool2x3 r2 = bool2x3(false, false, true, true, false, false); + TestUtils.AreEqual(a2 > b2, r2); + + uint2x3 a3 = uint2x3(348221770, 716039145, 458742739, 1365508046, 1523167942, 1574478622); + uint2x3 b3 = uint2x3(1549021845, 1457092873, 1790630950, 907793213, 555122804, 1418910265); + bool2x3 r3 = bool2x3(false, false, false, true, true, true); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void uint2x3_operator_greater_wide_scalar() + { + uint2x3 a0 = uint2x3(1097138316, 211763648, 1883002501, 56406996, 43662641, 1923456111); + uint b0 = (438688675); + bool2x3 r0 = bool2x3(true, false, true, false, false, true); + TestUtils.AreEqual(a0 > b0, r0); + + uint2x3 a1 = uint2x3(1437755186, 2125058448, 304028799, 893125636, 48044515, 711945018); + uint b1 = (1219010035); + bool2x3 r1 = bool2x3(true, true, false, false, false, false); + TestUtils.AreEqual(a1 > b1, r1); + + uint2x3 a2 = uint2x3(1035679270, 572743717, 1016617211, 2063134811, 1577403353, 64009107); + uint b2 = (577943770); + bool2x3 r2 = bool2x3(true, false, true, true, true, false); + TestUtils.AreEqual(a2 > b2, r2); + + uint2x3 a3 = uint2x3(1462961460, 3715845, 689362811, 263973424, 1045140419, 1058332184); + uint b3 = (1143565920); + bool2x3 r3 = bool2x3(true, false, false, false, false, false); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void uint2x3_operator_greater_scalar_wide() + { + uint a0 = (2024896938); + uint2x3 b0 = uint2x3(599356784, 185671342, 1932327391, 2025591013, 1257191721, 1312388500); + bool2x3 r0 = bool2x3(true, true, true, false, true, true); + TestUtils.AreEqual(a0 > b0, r0); + + uint a1 = (1443698859); + uint2x3 b1 = uint2x3(779217735, 691047512, 741776730, 732565983, 668302204, 1556466996); + bool2x3 r1 = bool2x3(true, true, true, true, true, false); + TestUtils.AreEqual(a1 > b1, r1); + + uint a2 = (858599525); + uint2x3 b2 = uint2x3(1896917159, 701542098, 1052151621, 1023307544, 1435392907, 1858177345); + bool2x3 r2 = bool2x3(false, true, false, false, false, false); + TestUtils.AreEqual(a2 > b2, r2); + + uint a3 = (299897686); + uint2x3 b3 = uint2x3(632930355, 1387203601, 483722222, 863042711, 1713088900, 315569296); + bool2x3 r3 = bool2x3(false, false, false, false, false, false); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void uint2x3_operator_less_equal_wide_wide() + { + uint2x3 a0 = uint2x3(1577248162, 2043073061, 1688380407, 176431985, 223299035, 1502802140); + uint2x3 b0 = uint2x3(903445031, 2108974565, 210822256, 1281704747, 453681718, 66138830); + bool2x3 r0 = bool2x3(false, true, false, true, true, false); + TestUtils.AreEqual(a0 <= b0, r0); + + uint2x3 a1 = uint2x3(1691709825, 386789394, 117182003, 1665770435, 1958490731, 420032601); + uint2x3 b1 = uint2x3(1229799377, 1620922595, 1715833766, 1366430432, 13102000, 46919981); + bool2x3 r1 = bool2x3(false, true, true, false, false, false); + TestUtils.AreEqual(a1 <= b1, r1); + + uint2x3 a2 = uint2x3(1251092689, 2011681765, 749743684, 183784440, 1150674774, 1633828822); + uint2x3 b2 = uint2x3(486470891, 1709514236, 2145785285, 854254454, 1273278658, 810263315); + bool2x3 r2 = bool2x3(false, false, true, true, true, false); + TestUtils.AreEqual(a2 <= b2, r2); + + uint2x3 a3 = uint2x3(1719442172, 336047314, 743733218, 1393995865, 1854442658, 1498138884); + uint2x3 b3 = uint2x3(1862773824, 201799013, 974166844, 1320622967, 2058099616, 522102017); + bool2x3 r3 = bool2x3(true, false, true, false, true, false); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void uint2x3_operator_less_equal_wide_scalar() + { + uint2x3 a0 = uint2x3(1722165358, 1219858357, 860410743, 411099660, 348104022, 1963256951); + uint b0 = (1688048545); + bool2x3 r0 = bool2x3(false, true, true, true, true, false); + TestUtils.AreEqual(a0 <= b0, r0); + + uint2x3 a1 = uint2x3(212084836, 1459242706, 1745758438, 532949158, 262559763, 690091301); + uint b1 = (58924407); + bool2x3 r1 = bool2x3(false, false, false, false, false, false); + TestUtils.AreEqual(a1 <= b1, r1); + + uint2x3 a2 = uint2x3(1806172431, 1857173043, 1617221948, 2017733017, 804204255, 981729559); + uint b2 = (2091514001); + bool2x3 r2 = bool2x3(true, true, true, true, true, true); + TestUtils.AreEqual(a2 <= b2, r2); + + uint2x3 a3 = uint2x3(2032949254, 2079225209, 26179915, 238796519, 1917813750, 1258115260); + uint b3 = (910922522); + bool2x3 r3 = bool2x3(false, false, true, true, false, false); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void uint2x3_operator_less_equal_scalar_wide() + { + uint a0 = (1777585); + uint2x3 b0 = uint2x3(1181030049, 1787703989, 1729760948, 1816537388, 1359786460, 874999193); + bool2x3 r0 = bool2x3(true, true, true, true, true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + uint a1 = (1678863148); + uint2x3 b1 = uint2x3(1711365839, 762067160, 11953554, 1131583906, 1175393186, 1293698493); + bool2x3 r1 = bool2x3(true, false, false, false, false, false); + TestUtils.AreEqual(a1 <= b1, r1); + + uint a2 = (48893340); + uint2x3 b2 = uint2x3(66196247, 1958607116, 1576473309, 861890786, 478252419, 957887737); + bool2x3 r2 = bool2x3(true, true, true, true, true, true); + TestUtils.AreEqual(a2 <= b2, r2); + + uint a3 = (117849810); + uint2x3 b3 = uint2x3(1348693584, 105489302, 259034238, 530713566, 601413850, 830430286); + bool2x3 r3 = bool2x3(true, false, true, true, true, true); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void uint2x3_operator_greater_equal_wide_wide() + { + uint2x3 a0 = uint2x3(263000030, 744235661, 1893760267, 237248, 1062370984, 1676977687); + uint2x3 b0 = uint2x3(1395535146, 1178373944, 1237373760, 1364855321, 600811864, 362060472); + bool2x3 r0 = bool2x3(false, false, true, false, true, true); + TestUtils.AreEqual(a0 >= b0, r0); + + uint2x3 a1 = uint2x3(816766880, 1089431546, 1394493730, 1176473380, 1193988637, 1703862455); + uint2x3 b1 = uint2x3(290870624, 1839067862, 396958580, 1336888643, 1019684398, 1697684196); + bool2x3 r1 = bool2x3(true, false, true, false, true, true); + TestUtils.AreEqual(a1 >= b1, r1); + + uint2x3 a2 = uint2x3(1806186947, 1253571980, 589397635, 1951842887, 798931197, 808426484); + uint2x3 b2 = uint2x3(1227300220, 2044269675, 1898323839, 874509380, 1873505472, 1268843918); + bool2x3 r2 = bool2x3(true, false, false, true, false, false); + TestUtils.AreEqual(a2 >= b2, r2); + + uint2x3 a3 = uint2x3(744869638, 1959531616, 207430702, 1533946595, 1148381840, 2011549474); + uint2x3 b3 = uint2x3(1606949562, 1263896445, 1805518202, 1412091359, 1240330374, 1955056253); + bool2x3 r3 = bool2x3(false, true, false, true, false, true); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void uint2x3_operator_greater_equal_wide_scalar() + { + uint2x3 a0 = uint2x3(2112791350, 1043657935, 101764761, 1529909067, 556026890, 281734132); + uint b0 = (1470533736); + bool2x3 r0 = bool2x3(true, false, false, true, false, false); + TestUtils.AreEqual(a0 >= b0, r0); + + uint2x3 a1 = uint2x3(1186600258, 609211196, 1604309397, 829548642, 244604867, 1419295004); + uint b1 = (815093894); + bool2x3 r1 = bool2x3(true, false, true, true, false, true); + TestUtils.AreEqual(a1 >= b1, r1); + + uint2x3 a2 = uint2x3(471843809, 1460027917, 1646290021, 196833647, 1596738181, 1905036391); + uint b2 = (1819986195); + bool2x3 r2 = bool2x3(false, false, false, false, false, true); + TestUtils.AreEqual(a2 >= b2, r2); + + uint2x3 a3 = uint2x3(1771391775, 370941146, 440219668, 1607345862, 1449142607, 1223010129); + uint b3 = (1584946560); + bool2x3 r3 = bool2x3(true, false, false, true, false, false); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void uint2x3_operator_greater_equal_scalar_wide() + { + uint a0 = (1525542481); + uint2x3 b0 = uint2x3(1503244746, 861711266, 817773856, 925984572, 571221723, 683686810); + bool2x3 r0 = bool2x3(true, true, true, true, true, true); + TestUtils.AreEqual(a0 >= b0, r0); + + uint a1 = (118252990); + uint2x3 b1 = uint2x3(1653952090, 1240253990, 1947039008, 1869136019, 152012637, 1214546726); + bool2x3 r1 = bool2x3(false, false, false, false, false, false); + TestUtils.AreEqual(a1 >= b1, r1); + + uint a2 = (917376832); + uint2x3 b2 = uint2x3(303549425, 2111728811, 945321577, 173706579, 625318949, 519443238); + bool2x3 r2 = bool2x3(true, false, false, true, true, true); + TestUtils.AreEqual(a2 >= b2, r2); + + uint a3 = (1583588379); + uint2x3 b3 = uint2x3(1026799433, 1713083717, 394922760, 1216218189, 1336522452, 233894308); + bool2x3 r3 = bool2x3(true, false, true, true, true, true); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void uint2x3_operator_add_wide_wide() + { + uint2x3 a0 = uint2x3(2049228671, 1658660009, 491719392, 937013355, 81108663, 1063894558); + uint2x3 b0 = uint2x3(2088751567, 645762023, 306868786, 4360271, 506047997, 2094559874); + uint2x3 r0 = uint2x3(4137980238, 2304422032, 798588178, 941373626, 587156660, 3158454432); + TestUtils.AreEqual(a0 + b0, r0); + + uint2x3 a1 = uint2x3(86954702, 843159721, 698977704, 192867135, 1683407172, 137301303); + uint2x3 b1 = uint2x3(1634712736, 1601474440, 1586485231, 908746788, 1812370320, 1247342357); + uint2x3 r1 = uint2x3(1721667438, 2444634161, 2285462935, 1101613923, 3495777492, 1384643660); + TestUtils.AreEqual(a1 + b1, r1); + + uint2x3 a2 = uint2x3(2103582820, 526139155, 447937230, 2127411006, 1670579390, 1914969141); + uint2x3 b2 = uint2x3(2043773873, 223363428, 175115707, 985928617, 507662836, 1231457019); + uint2x3 r2 = uint2x3(4147356693, 749502583, 623052937, 3113339623, 2178242226, 3146426160); + TestUtils.AreEqual(a2 + b2, r2); + + uint2x3 a3 = uint2x3(997691756, 857841794, 2129024875, 267535529, 978891383, 657092366); + uint2x3 b3 = uint2x3(776127866, 607782424, 1160366210, 1384832242, 702057048, 703554905); + uint2x3 r3 = uint2x3(1773819622, 1465624218, 3289391085, 1652367771, 1680948431, 1360647271); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void uint2x3_operator_add_wide_scalar() + { + uint2x3 a0 = uint2x3(2038218457, 134923711, 875689667, 1338884463, 997710928, 340490871); + uint b0 = (2124409227); + uint2x3 r0 = uint2x3(4162627684, 2259332938, 3000098894, 3463293690, 3122120155, 2464900098); + TestUtils.AreEqual(a0 + b0, r0); + + uint2x3 a1 = uint2x3(1067888129, 2003021861, 1635971971, 1160398286, 85446202, 1068152966); + uint b1 = (70433301); + uint2x3 r1 = uint2x3(1138321430, 2073455162, 1706405272, 1230831587, 155879503, 1138586267); + TestUtils.AreEqual(a1 + b1, r1); + + uint2x3 a2 = uint2x3(1239387100, 1727477485, 1095438654, 756559204, 1818718931, 658923552); + uint b2 = (1497676888); + uint2x3 r2 = uint2x3(2737063988, 3225154373, 2593115542, 2254236092, 3316395819, 2156600440); + TestUtils.AreEqual(a2 + b2, r2); + + uint2x3 a3 = uint2x3(1610518921, 692843300, 1068593469, 1704776233, 577782260, 736972565); + uint b3 = (1585755398); + uint2x3 r3 = uint2x3(3196274319, 2278598698, 2654348867, 3290531631, 2163537658, 2322727963); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void uint2x3_operator_add_scalar_wide() + { + uint a0 = (391092078); + uint2x3 b0 = uint2x3(519908870, 851424292, 328314822, 135622204, 740923360, 655394201); + uint2x3 r0 = uint2x3(911000948, 1242516370, 719406900, 526714282, 1132015438, 1046486279); + TestUtils.AreEqual(a0 + b0, r0); + + uint a1 = (1451896269); + uint2x3 b1 = uint2x3(1781697072, 996031825, 1557774949, 779774940, 1111541302, 783046445); + uint2x3 r1 = uint2x3(3233593341, 2447928094, 3009671218, 2231671209, 2563437571, 2234942714); + TestUtils.AreEqual(a1 + b1, r1); + + uint a2 = (1130163944); + uint2x3 b2 = uint2x3(288279584, 1397683861, 1636583489, 673263339, 1469300874, 14855965); + uint2x3 r2 = uint2x3(1418443528, 2527847805, 2766747433, 1803427283, 2599464818, 1145019909); + TestUtils.AreEqual(a2 + b2, r2); + + uint a3 = (1116636999); + uint2x3 b3 = uint2x3(1488863300, 1600990886, 190651301, 1307459768, 920085839, 2082229835); + uint2x3 r3 = uint2x3(2605500299, 2717627885, 1307288300, 2424096767, 2036722838, 3198866834); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void uint2x3_operator_sub_wide_wide() + { + uint2x3 a0 = uint2x3(1353441118, 797269833, 659988112, 56022121, 365847472, 2062899435); + uint2x3 b0 = uint2x3(1332656812, 1827794007, 972557431, 2078233689, 1508184327, 1372307701); + uint2x3 r0 = uint2x3(20784306, 3264443122, 3982397977, 2272755728, 3152630441, 690591734); + TestUtils.AreEqual(a0 - b0, r0); + + uint2x3 a1 = uint2x3(1380988474, 799885138, 1306058185, 579775276, 1239163824, 344591081); + uint2x3 b1 = uint2x3(810327977, 936799885, 71562303, 1418723328, 1971342989, 1226053395); + uint2x3 r1 = uint2x3(570660497, 4158052549, 1234495882, 3456019244, 3562788131, 3413504982); + TestUtils.AreEqual(a1 - b1, r1); + + uint2x3 a2 = uint2x3(86359575, 1049709943, 721529513, 1767221271, 7652784, 545192611); + uint2x3 b2 = uint2x3(136565478, 1979903295, 600719425, 837912956, 632054793, 711091688); + uint2x3 r2 = uint2x3(4244761393, 3364773944, 120810088, 929308315, 3670565287, 4129068219); + TestUtils.AreEqual(a2 - b2, r2); + + uint2x3 a3 = uint2x3(176298787, 1477774126, 1426963688, 2032787858, 2059525977, 445200454); + uint2x3 b3 = uint2x3(904695656, 1640069560, 750244414, 1385118097, 1102391291, 1221949855); + uint2x3 r3 = uint2x3(3566570427, 4132671862, 676719274, 647669761, 957134686, 3518217895); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void uint2x3_operator_sub_wide_scalar() + { + uint2x3 a0 = uint2x3(1176369558, 1934521195, 309452150, 1417634074, 108910717, 1306356714); + uint b0 = (462232403); + uint2x3 r0 = uint2x3(714137155, 1472288792, 4142187043, 955401671, 3941645610, 844124311); + TestUtils.AreEqual(a0 - b0, r0); + + uint2x3 a1 = uint2x3(1502312334, 281174200, 87530840, 1913724431, 2041593336, 557239990); + uint b1 = (1451794815); + uint2x3 r1 = uint2x3(50517519, 3124346681, 2930703321, 461929616, 589798521, 3400412471); + TestUtils.AreEqual(a1 - b1, r1); + + uint2x3 a2 = uint2x3(1119051448, 819090189, 816382635, 815920639, 1829033117, 1792801932); + uint b2 = (1590376732); + uint2x3 r2 = uint2x3(3823642012, 3523680753, 3520973199, 3520511203, 238656385, 202425200); + TestUtils.AreEqual(a2 - b2, r2); + + uint2x3 a3 = uint2x3(1113440549, 1277257189, 2092779398, 642236742, 1605250794, 819644478); + uint b3 = (1418937976); + uint2x3 r3 = uint2x3(3989469869, 4153286509, 673841422, 3518266062, 186312818, 3695673798); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void uint2x3_operator_sub_scalar_wide() + { + uint a0 = (1691534405); + uint2x3 b0 = uint2x3(2022393810, 1612688515, 496689713, 887037586, 2097630964, 374934538); + uint2x3 r0 = uint2x3(3964107891, 78845890, 1194844692, 804496819, 3888870737, 1316599867); + TestUtils.AreEqual(a0 - b0, r0); + + uint a1 = (939035482); + uint2x3 b1 = uint2x3(935242277, 1789300421, 264712893, 1231856067, 1818112748, 1428436109); + uint2x3 r1 = uint2x3(3793205, 3444702357, 674322589, 4002146711, 3415890030, 3805566669); + TestUtils.AreEqual(a1 - b1, r1); + + uint a2 = (1258745460); + uint2x3 b2 = uint2x3(1077380396, 1330722719, 518111829, 967128529, 344666254, 1082267918); + uint2x3 r2 = uint2x3(181365064, 4222990037, 740633631, 291616931, 914079206, 176477542); + TestUtils.AreEqual(a2 - b2, r2); + + uint a3 = (907866696); + uint2x3 b3 = uint2x3(1816885123, 460340568, 962154498, 557113461, 1701216709, 1980098777); + uint2x3 r3 = uint2x3(3385948869, 447526128, 4240679494, 350753235, 3501617283, 3222735215); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void uint2x3_operator_mul_wide_wide() + { + uint2x3 a0 = uint2x3(245827027, 208934650, 1019478917, 568231809, 877289039, 1585782440); + uint2x3 b0 = uint2x3(759663997, 350129201, 477450108, 1635735015, 388710278, 757722665); + uint2x3 r0 = uint2x3(3662155527, 1402281434, 332447596, 2361989735, 2624048730, 1455036648); + TestUtils.AreEqual(a0 * b0, r0); + + uint2x3 a1 = uint2x3(2111178729, 1186019069, 571481445, 1570087048, 629447153, 619383734); + uint2x3 b1 = uint2x3(1509388321, 1841703980, 1826369331, 1524322467, 1605207974, 428419155); + uint2x3 r1 = uint2x3(2128344329, 3700879228, 2640799263, 2093463192, 3087460678, 3161406466); + TestUtils.AreEqual(a1 * b1, r1); + + uint2x3 a2 = uint2x3(2055121568, 700402816, 263414349, 187830569, 2048056680, 546694675); + uint2x3 b2 = uint2x3(1460605791, 1968043860, 771161742, 2037340417, 322304267, 651448359); + uint2x3 r2 = uint2x3(990589280, 3356793344, 2953243830, 1156600361, 649177976, 678952165); + TestUtils.AreEqual(a2 * b2, r2); + + uint2x3 a3 = uint2x3(853585367, 933370718, 990212476, 1915885905, 1984212358, 368146234); + uint2x3 b3 = uint2x3(1608326767, 1427155898, 1092185338, 665119139, 223634707, 694718952); + uint2x3 r3 = uint2x3(1063621177, 2683284556, 2152538904, 3721713555, 2642853618, 1626072720); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void uint2x3_operator_mul_wide_scalar() + { + uint2x3 a0 = uint2x3(1762033447, 465343930, 1570757881, 1326409563, 1824319147, 1356578909); + uint b0 = (1476837906); + uint2x3 r0 = uint2x3(2981789374, 1326807828, 2156411778, 4018813542, 4229418502, 2976383114); + TestUtils.AreEqual(a0 * b0, r0); + + uint2x3 a1 = uint2x3(72749215, 975743632, 573770299, 1958912969, 971327747, 1818877398); + uint b1 = (154616909); + uint2x3 r1 = uint2x3(1400257491, 7966032, 499040191, 322676597, 469811687, 3921580382); + TestUtils.AreEqual(a1 * b1, r1); + + uint2x3 a2 = uint2x3(1324050764, 1279757657, 391009467, 1186856590, 890343818, 800117742); + uint b2 = (660611671); + uint2x3 r2 = uint2x3(645718228, 4252425023, 2516558221, 1570790978, 4161587686, 1820172770); + TestUtils.AreEqual(a2 * b2, r2); + + uint2x3 a3 = uint2x3(606927173, 1688964615, 1439447294, 387721300, 1192501703, 1613845584); + uint b3 = (1338014500); + uint2x3 r3 = uint2x3(4040635572, 1134384636, 1352273336, 4065724368, 1766808828, 645024576); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void uint2x3_operator_mul_scalar_wide() + { + uint a0 = (99541948); + uint2x3 b0 = uint2x3(1764461774, 657072478, 1459784358, 1610646683, 1632058826, 868441654); + uint2x3 r0 = uint2x3(3344568648, 4192918280, 1260585960, 1158730452, 4293361240, 3828814248); + TestUtils.AreEqual(a0 * b0, r0); + + uint a1 = (1408757883); + uint2x3 b1 = uint2x3(335917146, 2105124483, 1178393968, 1963904348, 1409533767, 243286231); + uint2x3 r1 = uint2x3(1223039806, 1995624689, 3320276176, 375843636, 858017565, 2027534157); + TestUtils.AreEqual(a1 * b1, r1); + + uint a2 = (1336308795); + uint2x3 b2 = uint2x3(517963367, 1733623488, 459880225, 994616533, 1420531535, 1821413700); + uint2x3 r2 = uint2x3(580046269, 3297097280, 3969951899, 831291671, 3260394293, 3040627372); + TestUtils.AreEqual(a2 * b2, r2); + + uint a3 = (677771573); + uint2x3 b3 = uint2x3(2132626845, 1158827713, 640102997, 944551639, 1323243330, 1186460236); + uint2x3 r3 = uint2x3(4169123457, 1435043573, 698030233, 9173379, 3470328490, 113055164); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void uint2x3_operator_div_wide_wide() + { + uint2x3 a0 = uint2x3(1590198532, 507812502, 126627032, 1058247011, 427387861, 290676154); + uint2x3 b0 = uint2x3(1434703236, 911965201, 390415521, 128746927, 525835375, 816946613); + uint2x3 r0 = uint2x3(1, 0, 0, 8, 0, 0); + TestUtils.AreEqual(a0 / b0, r0); + + uint2x3 a1 = uint2x3(1829594484, 1127868739, 499016351, 1341209632, 134906097, 785470242); + uint2x3 b1 = uint2x3(878264647, 146789678, 2089524057, 254213018, 1916850021, 1737806518); + uint2x3 r1 = uint2x3(2, 7, 0, 5, 0, 0); + TestUtils.AreEqual(a1 / b1, r1); + + uint2x3 a2 = uint2x3(788249865, 1099825433, 1552968283, 1822367139, 1021812060, 1937073018); + uint2x3 b2 = uint2x3(1906634983, 437754923, 825037958, 902508708, 896853614, 49452028); + uint2x3 r2 = uint2x3(0, 2, 1, 2, 1, 39); + TestUtils.AreEqual(a2 / b2, r2); + + uint2x3 a3 = uint2x3(645757349, 1097576782, 1246027674, 1152153253, 1900577195, 172149343); + uint2x3 b3 = uint2x3(1921327824, 787000669, 1032149621, 858558868, 1422112429, 837098844); + uint2x3 r3 = uint2x3(0, 1, 1, 1, 1, 0); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void uint2x3_operator_div_wide_scalar() + { + uint2x3 a0 = uint2x3(560951562, 1218680769, 375341724, 1613542090, 1919409166, 1397425408); + uint b0 = (947861580); + uint2x3 r0 = uint2x3(0, 1, 0, 1, 2, 1); + TestUtils.AreEqual(a0 / b0, r0); + + uint2x3 a1 = uint2x3(1349573078, 341995568, 495895326, 1515313790, 1676971657, 2131487088); + uint b1 = (524526253); + uint2x3 r1 = uint2x3(2, 0, 0, 2, 3, 4); + TestUtils.AreEqual(a1 / b1, r1); + + uint2x3 a2 = uint2x3(2105094094, 542666029, 1646044372, 1447236569, 107215658, 19616726); + uint b2 = (1017891310); + uint2x3 r2 = uint2x3(2, 0, 1, 1, 0, 0); + TestUtils.AreEqual(a2 / b2, r2); + + uint2x3 a3 = uint2x3(896899915, 1249475421, 1486968988, 1738891885, 1919705924, 1244966864); + uint b3 = (707389627); + uint2x3 r3 = uint2x3(1, 1, 2, 2, 2, 1); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void uint2x3_operator_div_scalar_wide() + { + uint a0 = (1161272038); + uint2x3 b0 = uint2x3(187325733, 1594107378, 2016183849, 1589343709, 388768753, 1417077283); + uint2x3 r0 = uint2x3(6, 0, 0, 0, 2, 0); + TestUtils.AreEqual(a0 / b0, r0); + + uint a1 = (1773486938); + uint2x3 b1 = uint2x3(1154044032, 81831373, 1476877645, 653688843, 45756703, 631027637); + uint2x3 r1 = uint2x3(1, 21, 1, 2, 38, 2); + TestUtils.AreEqual(a1 / b1, r1); + + uint a2 = (396671391); + uint2x3 b2 = uint2x3(784365696, 1250594097, 1818363859, 1653451772, 270557729, 48974453); + uint2x3 r2 = uint2x3(0, 0, 0, 0, 1, 8); + TestUtils.AreEqual(a2 / b2, r2); + + uint a3 = (1796936382); + uint2x3 b3 = uint2x3(1427856423, 981056957, 1955700573, 705450043, 1054404890, 351914083); + uint2x3 r3 = uint2x3(1, 1, 0, 2, 1, 5); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void uint2x3_operator_mod_wide_wide() + { + uint2x3 a0 = uint2x3(146150818, 1846543305, 1071447756, 308965362, 659881575, 1002365460); + uint2x3 b0 = uint2x3(983050390, 771341152, 942375212, 367361754, 749500619, 750718852); + uint2x3 r0 = uint2x3(146150818, 303861001, 129072544, 308965362, 659881575, 251646608); + TestUtils.AreEqual(a0 % b0, r0); + + uint2x3 a1 = uint2x3(861198439, 1510617532, 778525078, 1458458044, 101987897, 1249565173); + uint2x3 b1 = uint2x3(2095151755, 88438806, 769227442, 647214624, 1026513788, 1544950956); + uint2x3 r1 = uint2x3(861198439, 7157830, 9297636, 164028796, 101987897, 1249565173); + TestUtils.AreEqual(a1 % b1, r1); + + uint2x3 a2 = uint2x3(938026607, 1692541775, 1518877124, 1806965510, 1325139851, 994457255); + uint2x3 b2 = uint2x3(160166322, 1099108075, 1158422232, 1798905209, 164686701, 327889784); + uint2x3 r2 = uint2x3(137194997, 593433700, 360454892, 8060301, 7646243, 10787903); + TestUtils.AreEqual(a2 % b2, r2); + + uint2x3 a3 = uint2x3(1372400564, 1770508529, 100255877, 452674793, 1545968777, 629019189); + uint2x3 b3 = uint2x3(1082162785, 1213537518, 608481038, 329133821, 1824387961, 1223426748); + uint2x3 r3 = uint2x3(290237779, 556971011, 100255877, 123540972, 1545968777, 629019189); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void uint2x3_operator_mod_wide_scalar() + { + uint2x3 a0 = uint2x3(164800505, 1062177828, 1898749675, 1701653318, 820393245, 19002208); + uint b0 = (883951171); + uint2x3 r0 = uint2x3(164800505, 178226657, 130847333, 817702147, 820393245, 19002208); + TestUtils.AreEqual(a0 % b0, r0); + + uint2x3 a1 = uint2x3(128329633, 896587769, 405208598, 1982762194, 959236935, 712321026); + uint b1 = (1464010899); + uint2x3 r1 = uint2x3(128329633, 896587769, 405208598, 518751295, 959236935, 712321026); + TestUtils.AreEqual(a1 % b1, r1); + + uint2x3 a2 = uint2x3(172564850, 1085897743, 1607489717, 165478511, 647846716, 915707999); + uint b2 = (1540068445); + uint2x3 r2 = uint2x3(172564850, 1085897743, 67421272, 165478511, 647846716, 915707999); + TestUtils.AreEqual(a2 % b2, r2); + + uint2x3 a3 = uint2x3(1602830401, 1084934806, 488509689, 2087820912, 377501313, 1778384846); + uint b3 = (928191283); + uint2x3 r3 = uint2x3(674639118, 156743523, 488509689, 231438346, 377501313, 850193563); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void uint2x3_operator_mod_scalar_wide() + { + uint a0 = (242383789); + uint2x3 b0 = uint2x3(740000543, 1556450291, 1104736385, 437976569, 1911837205, 1507212038); + uint2x3 r0 = uint2x3(242383789, 242383789, 242383789, 242383789, 242383789, 242383789); + TestUtils.AreEqual(a0 % b0, r0); + + uint a1 = (1906405167); + uint2x3 b1 = uint2x3(247693265, 293460573, 1495295166, 873323603, 530681233, 1298102643); + uint2x3 r1 = uint2x3(172552312, 145641729, 411110001, 159757961, 314361468, 608302524); + TestUtils.AreEqual(a1 % b1, r1); + + uint a2 = (2057984657); + uint2x3 b2 = uint2x3(1000742091, 1461372131, 1859742342, 797184687, 821888842, 1083192997); + uint2x3 r2 = uint2x3(56500475, 596612526, 198242315, 463615283, 414206973, 974791660); + TestUtils.AreEqual(a2 % b2, r2); + + uint a3 = (840114986); + uint2x3 b3 = uint2x3(1894865954, 615159964, 1485575122, 2028738, 2122220318, 164578061); + uint2x3 r3 = uint2x3(840114986, 224955022, 840114986, 217454, 840114986, 17224681); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void uint2x3_operator_plus() + { + uint2x3 a0 = uint2x3(1643476803, 907898539, 379615839, 1140483021, 1735287433, 1743199272); + uint2x3 r0 = uint2x3(1643476803, 907898539, 379615839, 1140483021, 1735287433, 1743199272); + TestUtils.AreEqual(+a0, r0); + + uint2x3 a1 = uint2x3(1472881565, 401565897, 1287765427, 849339193, 174532915, 1864850812); + uint2x3 r1 = uint2x3(1472881565, 401565897, 1287765427, 849339193, 174532915, 1864850812); + TestUtils.AreEqual(+a1, r1); + + uint2x3 a2 = uint2x3(1566098441, 1615499926, 2049663954, 1723005749, 409076474, 591286416); + uint2x3 r2 = uint2x3(1566098441, 1615499926, 2049663954, 1723005749, 409076474, 591286416); + TestUtils.AreEqual(+a2, r2); + + uint2x3 a3 = uint2x3(1706631096, 1808261782, 1201290141, 82958939, 308695413, 1575280693); + uint2x3 r3 = uint2x3(1706631096, 1808261782, 1201290141, 82958939, 308695413, 1575280693); + TestUtils.AreEqual(+a3, r3); + } + + [TestCompiler] + public static void uint2x3_operator_neg() + { + uint2x3 a0 = uint2x3(1955022112, 662160019, 370300775, 2141283773, 1004505619, 28153593); + uint2x3 r0 = uint2x3(2339945184, 3632807277, 3924666521, 2153683523, 3290461677, 4266813703); + TestUtils.AreEqual(-a0, r0); + + uint2x3 a1 = uint2x3(33894270, 1115028238, 1636274969, 694995093, 1542206286, 213087293); + uint2x3 r1 = uint2x3(4261073026, 3179939058, 2658692327, 3599972203, 2752761010, 4081880003); + TestUtils.AreEqual(-a1, r1); + + uint2x3 a2 = uint2x3(243937487, 841085242, 574159094, 1687250035, 2057919693, 1175014732); + uint2x3 r2 = uint2x3(4051029809, 3453882054, 3720808202, 2607717261, 2237047603, 3119952564); + TestUtils.AreEqual(-a2, r2); + + uint2x3 a3 = uint2x3(1259809073, 1190569920, 2047955772, 2120729864, 1440774928, 1485596454); + uint2x3 r3 = uint2x3(3035158223, 3104397376, 2247011524, 2174237432, 2854192368, 2809370842); + TestUtils.AreEqual(-a3, r3); + } + + [TestCompiler] + public static void uint2x3_operator_prefix_inc() + { + uint2x3 a0 = uint2x3(864455342, 2035793213, 1275443862, 971919915, 411610189, 446210725); + uint2x3 r0 = uint2x3(864455343, 2035793214, 1275443863, 971919916, 411610190, 446210726); + TestUtils.AreEqual(++a0, r0); + + uint2x3 a1 = uint2x3(395072276, 913293639, 432884105, 1208161871, 1385544935, 1835605516); + uint2x3 r1 = uint2x3(395072277, 913293640, 432884106, 1208161872, 1385544936, 1835605517); + TestUtils.AreEqual(++a1, r1); + + uint2x3 a2 = uint2x3(831396561, 696475402, 1786514683, 993189311, 752093909, 1622410417); + uint2x3 r2 = uint2x3(831396562, 696475403, 1786514684, 993189312, 752093910, 1622410418); + TestUtils.AreEqual(++a2, r2); + + uint2x3 a3 = uint2x3(1398865015, 1705625817, 609525897, 172599489, 504806865, 519296647); + uint2x3 r3 = uint2x3(1398865016, 1705625818, 609525898, 172599490, 504806866, 519296648); + TestUtils.AreEqual(++a3, r3); + } + + [TestCompiler] + public static void uint2x3_operator_postfix_inc() + { + uint2x3 a0 = uint2x3(1751003569, 2063707595, 1500486291, 969189211, 1007848192, 2028651936); + uint2x3 r0 = uint2x3(1751003569, 2063707595, 1500486291, 969189211, 1007848192, 2028651936); + TestUtils.AreEqual(a0++, r0); + + uint2x3 a1 = uint2x3(1643023524, 1396179607, 708474528, 177416855, 1524860667, 1408994706); + uint2x3 r1 = uint2x3(1643023524, 1396179607, 708474528, 177416855, 1524860667, 1408994706); + TestUtils.AreEqual(a1++, r1); + + uint2x3 a2 = uint2x3(375284401, 1676086778, 717006530, 506142468, 732199129, 2026873940); + uint2x3 r2 = uint2x3(375284401, 1676086778, 717006530, 506142468, 732199129, 2026873940); + TestUtils.AreEqual(a2++, r2); + + uint2x3 a3 = uint2x3(130175844, 420613464, 1219979307, 586574160, 357567451, 1468020171); + uint2x3 r3 = uint2x3(130175844, 420613464, 1219979307, 586574160, 357567451, 1468020171); + TestUtils.AreEqual(a3++, r3); + } + + [TestCompiler] + public static void uint2x3_operator_prefix_dec() + { + uint2x3 a0 = uint2x3(200904609, 871077500, 968578728, 638967721, 1995396216, 435367037); + uint2x3 r0 = uint2x3(200904608, 871077499, 968578727, 638967720, 1995396215, 435367036); + TestUtils.AreEqual(--a0, r0); + + uint2x3 a1 = uint2x3(1782514098, 1434377580, 596759698, 1699290403, 1758478358, 1914114460); + uint2x3 r1 = uint2x3(1782514097, 1434377579, 596759697, 1699290402, 1758478357, 1914114459); + TestUtils.AreEqual(--a1, r1); + + uint2x3 a2 = uint2x3(71237375, 1022184392, 1310293956, 356565557, 18299409, 906734601); + uint2x3 r2 = uint2x3(71237374, 1022184391, 1310293955, 356565556, 18299408, 906734600); + TestUtils.AreEqual(--a2, r2); + + uint2x3 a3 = uint2x3(799006218, 1040798388, 1469596990, 1719228297, 220897829, 1454322707); + uint2x3 r3 = uint2x3(799006217, 1040798387, 1469596989, 1719228296, 220897828, 1454322706); + TestUtils.AreEqual(--a3, r3); + } + + [TestCompiler] + public static void uint2x3_operator_postfix_dec() + { + uint2x3 a0 = uint2x3(283970262, 1109329936, 1073216143, 649439137, 1932646215, 1174104498); + uint2x3 r0 = uint2x3(283970262, 1109329936, 1073216143, 649439137, 1932646215, 1174104498); + TestUtils.AreEqual(a0--, r0); + + uint2x3 a1 = uint2x3(484207852, 691209285, 2017728859, 802721301, 377162390, 526366486); + uint2x3 r1 = uint2x3(484207852, 691209285, 2017728859, 802721301, 377162390, 526366486); + TestUtils.AreEqual(a1--, r1); + + uint2x3 a2 = uint2x3(1504625034, 60677868, 1867810045, 2095777993, 670715645, 324944916); + uint2x3 r2 = uint2x3(1504625034, 60677868, 1867810045, 2095777993, 670715645, 324944916); + TestUtils.AreEqual(a2--, r2); + + uint2x3 a3 = uint2x3(242636153, 1316734088, 1030072405, 1751972064, 1868889881, 1726583208); + uint2x3 r3 = uint2x3(242636153, 1316734088, 1030072405, 1751972064, 1868889881, 1726583208); + TestUtils.AreEqual(a3--, r3); + } + + [TestCompiler] + public static void uint2x3_operator_bitwise_and_wide_wide() + { + uint2x3 a0 = uint2x3(779935043, 1097962163, 1939593304, 800599247, 952140918, 782792558); + uint2x3 b0 = uint2x3(307705143, 1710882162, 866836769, 532490608, 679371720, 1794035877); + uint2x3 r0 = uint2x3(39064835, 1097961522, 864731136, 263727168, 675283008, 715673636); + TestUtils.AreEqual(a0 & b0, r0); + + uint2x3 a1 = uint2x3(1608557706, 396446406, 2039894114, 1286974642, 442394124, 1759739564); + uint2x3 b1 = uint2x3(1439832202, 519529812, 23633139, 1209152681, 646737179, 1255867027); + uint2x3 r1 = uint2x3(1438646410, 379666500, 16781410, 1209017504, 34366472, 1220739712); + TestUtils.AreEqual(a1 & b1, r1); + + uint2x3 a2 = uint2x3(233435438, 665207770, 1942050241, 1022352952, 60340400, 329119345); + uint2x3 b2 = uint2x3(1900854122, 413173763, 1409138251, 2087190272, 563439483, 354579077); + uint2x3 r2 = uint2x3(21541162, 10485762, 1405162561, 1013440000, 26222640, 285241857); + TestUtils.AreEqual(a2 & b2, r2); + + uint2x3 a3 = uint2x3(406517382, 1126764634, 343425836, 1957552749, 1624478957, 341972372); + uint2x3 b3 = uint2x3(642224854, 1650432515, 755290290, 902865191, 661389406, 2134212586); + uint2x3 r3 = uint2x3(168582, 1107890178, 67125280, 880844837, 541065292, 337646976); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void uint2x3_operator_bitwise_and_wide_scalar() + { + uint2x3 a0 = uint2x3(443615469, 490057985, 2042441263, 1524760558, 1405175110, 510212004); + uint b0 = (93423598); + uint2x3 r0 = uint2x3(1114348, 85033216, 26281518, 8488942, 25232710, 67176356); + TestUtils.AreEqual(a0 & b0, r0); + + uint2x3 a1 = uint2x3(1941875181, 1365509729, 428270198, 607982857, 650270920, 1249238550); + uint b1 = (1236735839); + uint2x3 r1 = uint2x3(1102446925, 1092879937, 159777366, 3478793, 8523848, 1211438614); + TestUtils.AreEqual(a1 & b1, r1); + + uint2x3 a2 = uint2x3(814629680, 143502472, 861733033, 1408932942, 957693145, 1567715668); + uint b2 = (1862276471); + uint2x3 r2 = uint2x3(536871216, 134218752, 587202593, 1124078662, 687871057, 1291850068); + TestUtils.AreEqual(a2 & b2, r2); + + uint2x3 a3 = uint2x3(1102952410, 1599352836, 208656708, 1272226025, 462670926, 1817145060); + uint b3 = (322053683); + uint2x3 r3 = uint2x3(19932690, 319823872, 2228224, 51388449, 319947778, 140832); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void uint2x3_operator_bitwise_and_scalar_wide() + { + uint a0 = (1144543590); + uint2x3 b0 = uint2x3(420346723, 562416448, 1393127318, 1560699552, 851218057, 703880958); + uint2x3 r0 = uint2x3(547170, 18752, 1074284806, 1140867104, 3672064, 3168358); + TestUtils.AreEqual(a0 & b0, r0); + + uint a1 = (1159378889); + uint2x3 b1 = uint2x3(2031211279, 1089518981, 270607307, 1349288930, 520199596, 1763483957); + uint2x3 r1 = uint2x3(1091605257, 1074836865, 9161, 1074299840, 83924360, 1092133121); + TestUtils.AreEqual(a1 & b1, r1); + + uint a2 = (1248975349); + uint2x3 b2 = uint2x3(236938635, 185023291, 1085233038, 1845693112, 946052961, 1436238522); + uint2x3 r2 = uint2x3(168903041, 167844145, 1075925380, 1241581744, 140613985, 1074872496); + TestUtils.AreEqual(a2 & b2, r2); + + uint a3 = (2042776519); + uint2x3 b3 = uint2x3(56356886, 1770159840, 1872339579, 1439201366, 1233066417, 1214109404); + uint2x3 r3 = uint2x3(21118982, 1770146496, 1769996867, 1371555910, 1229064577, 1212170948); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void uint2x3_operator_bitwise_or_wide_wide() + { + uint2x3 a0 = uint2x3(1731159103, 659068416, 382702471, 1821032196, 1565773438, 1004000514); + uint2x3 b0 = uint2x3(1583847161, 692672727, 1161585489, 1756207130, 1321374429, 1287357212); + uint2x3 r0 = uint2x3(2138044159, 793370327, 1476391895, 1823457054, 1607720703, 2147473182); + TestUtils.AreEqual(a0 | b0, r0); + + uint2x3 a1 = uint2x3(948501377, 600951835, 669346222, 396691477, 2108560248, 2117522137); + uint2x3 b1 = uint2x3(2075767170, 1273513430, 1610830169, 1316929125, 511625048, 573925879); + uint2x3 r1 = uint2x3(2075786115, 1811533279, 1743223295, 1610595957, 2147407736, 2117598207); + TestUtils.AreEqual(a1 | b1, r1); + + uint2x3 a2 = uint2x3(330307355, 818676817, 1774459567, 1117506257, 1254511182, 1017865993); + uint2x3 b2 = uint2x3(1502255628, 1841676448, 1682928938, 1115131952, 1541423910, 1416096228); + uint2x3 r2 = uint2x3(1538957087, 2110637297, 1842315183, 1124063985, 1541821294, 2096099309); + TestUtils.AreEqual(a2 | b2, r2); + + uint2x3 a3 = uint2x3(1883021644, 1140203470, 759288967, 2122744307, 335621148, 715028074); + uint2x3 b3 = uint2x3(188606371, 1041599540, 219545389, 560097663, 1087543661, 936383841); + uint2x3 r3 = uint2x3(2067654639, 2146934782, 760610735, 2145839615, 1423162749, 1071544171); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void uint2x3_operator_bitwise_or_wide_scalar() + { + uint2x3 a0 = uint2x3(961259683, 471103264, 1733389229, 1591585258, 386953869, 1148351449); + uint b0 = (1666102508); + uint2x3 r0 = uint2x3(2068823279, 2136930284, 1734344685, 2145369582, 2002712301, 1736374269); + TestUtils.AreEqual(a0 | b0, r0); + + uint2x3 a1 = uint2x3(1048929715, 860336789, 1637162093, 1227888278, 774029856, 879300408); + uint b1 = (1814263250); + uint2x3 r1 = uint2x3(2124903923, 2137520087, 1840741887, 1832089558, 1847850994, 2087419898); + TestUtils.AreEqual(a1 | b1, r1); + + uint2x3 a2 = uint2x3(1179087439, 1977614655, 46921989, 1980838747, 284225881, 64304104); + uint b2 = (797240690); + uint2x3 r2 = uint2x3(1875378047, 2145709439, 802159991, 2140536699, 1073020283, 802553850); + TestUtils.AreEqual(a2 | b2, r2); + + uint2x3 a3 = uint2x3(313591807, 1890090886, 521303722, 2021379070, 2055963359, 1511253082); + uint b3 = (1393862490); + uint2x3 r3 = uint2x3(1404413951, 1941766110, 1595340794, 2071982078, 2074060767, 1528293210); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void uint2x3_operator_bitwise_or_scalar_wide() + { + uint a0 = (1213433101); + uint2x3 b0 = uint2x3(1212928242, 1614462616, 936937728, 764766995, 306352095, 574719481); + uint2x3 r0 = uint2x3(1213978111, 1752940445, 2145094925, 1842867999, 1515425759, 1783858685); + TestUtils.AreEqual(a0 | b0, r0); + + uint a1 = (1283571271); + uint2x3 b1 = uint2x3(2109131012, 979469710, 1348323481, 1407542578, 697517649, 1059093741); + uint2x3 r1 = uint2x3(2109210439, 2128723919, 1558052575, 1608908663, 1838415447, 2141322991); + TestUtils.AreEqual(a1 | b1, r1); + + uint a2 = (627815046); + uint2x3 b2 = uint2x3(418822515, 83214352, 424663473, 447949225, 527022375, 1947148461); + uint2x3 r2 = uint2x3(1040169975, 637530774, 1030749111, 1073462191, 1064024999, 1970254511); + TestUtils.AreEqual(a2 | b2, r2); + + uint a3 = (305251437); + uint2x3 b3 = uint2x3(1254601325, 1752329425, 1592402684, 1587055329, 1088734150, 298563808); + uint2x3 r3 = uint2x3(1526199917, 2054417661, 1593566973, 1589235437, 1391839215, 335281389); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void uint2x3_operator_bitwise_xor_wide_wide() + { + uint2x3 a0 = uint2x3(1556324760, 207002929, 1843444873, 1632079131, 1460334334, 1607815585); + uint2x3 b0 = uint2x3(1054997548, 1523759632, 251164872, 110472397, 384031112, 1109163205); + uint2x3 r0 = uint2x3(1646419380, 1451501345, 1662567489, 1741824470, 1105803126, 499723620); + TestUtils.AreEqual(a0 ^ b0, r0); + + uint2x3 a1 = uint2x3(220623650, 38668553, 47193340, 643663548, 1371932564, 94957188); + uint2x3 b1 = uint2x3(535118981, 179106262, 1523031711, 1713313372, 1294118730, 520360641); + uint2x3 r1 = uint2x3(314783655, 149092575, 1477935715, 1078104288, 484747486, 447544389); + TestUtils.AreEqual(a1 ^ b1, r1); + + uint2x3 a2 = uint2x3(700973621, 370621508, 2087573076, 351476570, 1340815927, 681577472); + uint2x3 b2 = uint2x3(1040688781, 1020757245, 1143954843, 1281933464, 175288469, 326874157); + uint2x3 r2 = uint2x3(399484088, 717273273, 943885263, 1486609346, 1167690402, 1004255277); + TestUtils.AreEqual(a2 ^ b2, r2); + + uint2x3 a3 = uint2x3(314138777, 446857644, 1368661599, 1672499683, 1259759761, 2049102405); + uint2x3 b3 = uint2x3(1192052687, 1087083643, 1900865484, 1521193463, 569695524, 1622101483); + uint2x3 r3 = uint2x3(1437869910, 1516836311, 551090579, 958119956, 1793242549, 445489070); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void uint2x3_operator_bitwise_xor_wide_scalar() + { + uint2x3 a0 = uint2x3(2124666952, 177397845, 574879617, 1937385541, 1136545648, 213863690); + uint b0 = (493665894); + uint2x3 r0 = uint2x3(1674536494, 402546227, 1060063719, 1846973987, 1590882582, 299103084); + TestUtils.AreEqual(a0 ^ b0, r0); + + uint2x3 a1 = uint2x3(535061373, 1305234431, 353786540, 1308626970, 1267729267, 125659640); + uint b1 = (289301586); + uint2x3 r1 = uint2x3(249169711, 1559375789, 69746430, 1597928520, 1521379105, 373493162); + TestUtils.AreEqual(a1 ^ b1, r1); + + uint2x3 a2 = uint2x3(1315625690, 116862046, 375757978, 491079274, 191750702, 187129429); + uint b2 = (1730088797); + uint2x3 r2 = uint2x3(695588231, 1642603267, 1903858631, 2052737335, 1819471219, 1815630088); + TestUtils.AreEqual(a2 ^ b2, r2); + + uint2x3 a3 = uint2x3(967051293, 653124416, 788984, 1479174924, 1680011736, 447453839); + uint b3 = (549951551); + uint2x3 r3 = uint2x3(425955362, 103447423, 550212039, 2028860211, 1155885543, 980157104); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void uint2x3_operator_bitwise_xor_scalar_wide() + { + uint a0 = (1288453276); + uint2x3 b0 = uint2x3(1077599928, 884741329, 212164516, 1585020328, 152985454, 1775851275); + uint2x3 r0 = uint2x3(217506340, 2020616269, 1080648504, 313868596, 1171416050, 622160791); + TestUtils.AreEqual(a0 ^ b0, r0); + + uint a1 = (1416249064); + uint2x3 b1 = uint2x3(1309317737, 1773918217, 1509843030, 1206045972, 1154916424, 1947871003); + uint2x3 r1 = uint2x3(442541185, 1037166305, 227827390, 327742460, 280796832, 544217587); + TestUtils.AreEqual(a1 ^ b1, r1); + + uint a2 = (1774252400); + uint2x3 b2 = uint2x3(1946113778, 1079717492, 290620937, 1382343363, 939045099, 1309568053); + uint2x3 r2 = uint2x3(440379266, 698081028, 2022864761, 1000608691, 1580745115, 667852101); + TestUtils.AreEqual(a2 ^ b2, r2); + + uint a3 = (221134131); + uint2x3 b3 = uint2x3(885841718, 612068188, 194068085, 1396957881, 573581481, 1813817520); + uint2x3 r3 = uint2x3(971170309, 693458543, 113181510, 1584258954, 790500762, 1630705027); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void uint2x3_operator_left_shift() + { + uint2x3 a0 = uint2x3(197771193, 622182602, 1283988958, 1327917304, 473415985, 432425717); + int b0 = (1321149625); + uint2x3 r0 = uint2x3(1912602624, 2483027968, 3154116608, 4026531840, 1644167168, 3925868544); + TestUtils.AreEqual(a0 << b0, r0); + + uint2x3 a1 = uint2x3(870301196, 1200694230, 1531607705, 1360008038, 1008296534, 1447702302); + int b1 = (2058433484); + uint2x3 r1 = uint2x3(4225810432, 306012160, 2812907520, 20340736, 2519031808, 2733760512); + TestUtils.AreEqual(a1 << b1, r1); + + uint2x3 a2 = uint2x3(1079614371, 1664454606, 2045594989, 2077023268, 592678686, 297755411); + int b2 = (35667343); + uint2x3 r2 = uint2x3(3453059072, 3353804800, 2796978176, 1846673408, 3348037632, 2978578432); + TestUtils.AreEqual(a2 << b2, r2); + + uint2x3 a3 = uint2x3(1722762487, 37265945, 997793693, 1521705181, 263886278, 221147365); + int b3 = (1161625759); + uint2x3 r3 = uint2x3(2147483648, 2147483648, 2147483648, 2147483648, 0, 2147483648); + TestUtils.AreEqual(a3 << b3, r3); + } + + [TestCompiler] + public static void uint2x3_operator_right_shift() + { + uint2x3 a0 = uint2x3(548167301, 1161338299, 1617625829, 1860731847, 713958715, 196552656); + int b0 = (1266801540); + uint2x3 r0 = uint2x3(34260456, 72583643, 101101614, 116295740, 44622419, 12284541); + TestUtils.AreEqual(a0 >> b0, r0); + + uint2x3 a1 = uint2x3(770466193, 572763124, 506619530, 426807581, 2031319045, 701927980); + int b1 = (1265099998); + uint2x3 r1 = uint2x3(0, 0, 0, 0, 1, 0); + TestUtils.AreEqual(a1 >> b1, r1); + + uint2x3 a2 = uint2x3(917785020, 185593382, 1102123711, 334005460, 1624751550, 280138733); + int b2 = (569504877); + uint2x3 r2 = uint2x3(112034, 22655, 134536, 40772, 198333, 34196); + TestUtils.AreEqual(a2 >> b2, r2); + + uint2x3 a3 = uint2x3(1598620011, 736389149, 1279158873, 408822762, 763607760, 348013684); + int b3 = (1840564178); + uint2x3 r3 = uint2x3(6098, 2809, 4879, 1559, 2912, 1327); + TestUtils.AreEqual(a3 >> b3, r3); + } + + [TestCompiler] + public static void uint2x3_operator_bitwise_not() + { + uint2x3 a0 = uint2x3(1403358969, 831360921, 2088190243, 976721016, 878283189, 308994339); + uint2x3 r0 = uint2x3(2891608326, 3463606374, 2206777052, 3318246279, 3416684106, 3985972956); + TestUtils.AreEqual(~a0, r0); + + uint2x3 a1 = uint2x3(1935567517, 472965491, 771711426, 627580960, 2061524024, 753208488); + uint2x3 r1 = uint2x3(2359399778, 3822001804, 3523255869, 3667386335, 2233443271, 3541758807); + TestUtils.AreEqual(~a1, r1); + + uint2x3 a2 = uint2x3(2097179283, 664744603, 1289372466, 1635981125, 1951018596, 1545651937); + uint2x3 r2 = uint2x3(2197788012, 3630222692, 3005594829, 2658986170, 2343948699, 2749315358); + TestUtils.AreEqual(~a2, r2); + + uint2x3 a3 = uint2x3(717936457, 1342785385, 869629475, 2045854321, 1282546942, 1562433528); + uint2x3 r3 = uint2x3(3577030838, 2952181910, 3425337820, 2249112974, 3012420353, 2732533767); + TestUtils.AreEqual(~a3, r3); + } + + + } +} diff --git a/package/Tests/Tests/Shared/TestUint2x3.gen.cs.meta b/package/Tests/Tests/Shared/TestUint2x3.gen.cs.meta new file mode 100755 index 000000000..cdbcfb3da --- /dev/null +++ b/package/Tests/Tests/Shared/TestUint2x3.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 957fb6da77f246049898f0ef4647166d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/package/Tests/Tests/Shared/TestUint2x4.gen.cs b/package/Tests/Tests/Shared/TestUint2x4.gen.cs new file mode 100755 index 000000000..b9bbbe668 --- /dev/null +++ b/package/Tests/Tests/Shared/TestUint2x4.gen.cs @@ -0,0 +1,1229 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using NUnit.Framework; +using static Unity.Mathematics.math; +using Burst.Compiler.IL.Tests; + +namespace Unity.Mathematics.Tests +{ + [TestFixture] + public class TestUint2x4 + { + [TestCompiler] + public static void uint2x4_zero() + { + TestUtils.AreEqual(uint2x4.zero.c0.x, 0u); + TestUtils.AreEqual(uint2x4.zero.c0.y, 0u); + TestUtils.AreEqual(uint2x4.zero.c1.x, 0u); + TestUtils.AreEqual(uint2x4.zero.c1.y, 0u); + TestUtils.AreEqual(uint2x4.zero.c2.x, 0u); + TestUtils.AreEqual(uint2x4.zero.c2.y, 0u); + TestUtils.AreEqual(uint2x4.zero.c3.x, 0u); + TestUtils.AreEqual(uint2x4.zero.c3.y, 0u); + } + + [TestCompiler] + public static void uint2x4_operator_equal_wide_wide() + { + uint2x4 a0 = uint2x4(790229414, 970783976, 1428432738, 1578747135, 1733797753, 2001507228, 1446876437, 1777406370); + uint2x4 b0 = uint2x4(612337669, 1214209108, 2120643427, 295461214, 1510890331, 1893316566, 921816149, 1834958575); + bool2x4 r0 = bool2x4(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + uint2x4 a1 = uint2x4(1426387268, 1809275021, 1843770816, 1172185222, 1469608940, 869874758, 458603090, 581282460); + uint2x4 b1 = uint2x4(1482011863, 2062852792, 226398742, 770290735, 36812057, 543224481, 1565350150, 1909926604); + bool2x4 r1 = bool2x4(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + uint2x4 a2 = uint2x4(1948324909, 1129078206, 1638391029, 1135553683, 2079295200, 576232476, 608208235, 11172509); + uint2x4 b2 = uint2x4(1619900436, 1849990483, 1261604411, 161864811, 843379453, 1780425458, 215681636, 2123130580); + bool2x4 r2 = bool2x4(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + uint2x4 a3 = uint2x4(1025529486, 2095601864, 193500113, 1780908384, 1587636094, 1892083815, 1250768669, 1984341771); + uint2x4 b3 = uint2x4(708665810, 1902328998, 1808456602, 563830672, 200493241, 1391620681, 1035522654, 168447603); + bool2x4 r3 = bool2x4(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void uint2x4_operator_equal_wide_scalar() + { + uint2x4 a0 = uint2x4(1211464300, 1921862607, 508076684, 1249127920, 1394594555, 746862310, 1733655277, 1884008277); + uint b0 = (746972502); + bool2x4 r0 = bool2x4(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + uint2x4 a1 = uint2x4(1682018538, 936027116, 927605411, 672785749, 1465584610, 585324157, 404448210, 969511077); + uint b1 = (795585660); + bool2x4 r1 = bool2x4(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + uint2x4 a2 = uint2x4(442746747, 1884034177, 451512860, 425476075, 1370577708, 597010220, 1249636005, 211986678); + uint b2 = (1772925698); + bool2x4 r2 = bool2x4(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + uint2x4 a3 = uint2x4(1305479811, 1150443719, 177122433, 511346787, 1442445694, 667984966, 1684122010, 1962874832); + uint b3 = (255635293); + bool2x4 r3 = bool2x4(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void uint2x4_operator_equal_scalar_wide() + { + uint a0 = (1150044438); + uint2x4 b0 = uint2x4(233855098, 924242519, 1402948791, 601381975, 2120518068, 629187703, 1971977031, 47183124); + bool2x4 r0 = bool2x4(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + uint a1 = (1061805787); + uint2x4 b1 = uint2x4(1009011238, 312511148, 1460673064, 737210539, 1737844479, 1892405453, 2133024000, 455818693); + bool2x4 r1 = bool2x4(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + uint a2 = (2003197687); + uint2x4 b2 = uint2x4(1276241219, 534746610, 559824292, 1758388240, 1023494292, 719963017, 1883763832, 597498209); + bool2x4 r2 = bool2x4(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + uint a3 = (367814403); + uint2x4 b3 = uint2x4(1839429063, 223575614, 79701214, 1699606118, 759455864, 2017599457, 1395605233, 1191785903); + bool2x4 r3 = bool2x4(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void uint2x4_operator_not_equal_wide_wide() + { + uint2x4 a0 = uint2x4(1660932106, 982847023, 97046264, 1739517447, 1253499180, 1830584069, 1841470429, 1397841646); + uint2x4 b0 = uint2x4(107139049, 75478496, 2055495054, 358586687, 942338347, 111564990, 113811950, 948912488); + bool2x4 r0 = bool2x4(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + uint2x4 a1 = uint2x4(1770890135, 1906548631, 169082967, 2099271786, 1909317609, 46519139, 1433204003, 931492669); + uint2x4 b1 = uint2x4(1080084121, 1400504872, 1032134499, 1061123400, 221862069, 858950046, 989094643, 2023070999); + bool2x4 r1 = bool2x4(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + uint2x4 a2 = uint2x4(670504132, 1551558665, 1204055048, 1623586740, 226381077, 1145987803, 644253929, 475189890); + uint2x4 b2 = uint2x4(1269317127, 531883744, 687761409, 278427731, 296354221, 536981557, 1134676193, 1749879634); + bool2x4 r2 = bool2x4(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + uint2x4 a3 = uint2x4(922313145, 2006448607, 1574579050, 1839580033, 155350910, 313644534, 2008975915, 1072866331); + uint2x4 b3 = uint2x4(1944210269, 92849031, 164029425, 628797607, 2069207270, 2022667842, 880567401, 264404537); + bool2x4 r3 = bool2x4(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void uint2x4_operator_not_equal_wide_scalar() + { + uint2x4 a0 = uint2x4(747758183, 1033001286, 1439973882, 2138928797, 1197845089, 1432672459, 950170763, 238704450); + uint b0 = (248693828); + bool2x4 r0 = bool2x4(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + uint2x4 a1 = uint2x4(2105962247, 1640688041, 276313906, 2126300423, 791998981, 2035077187, 1171827730, 1412347883); + uint b1 = (727205263); + bool2x4 r1 = bool2x4(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + uint2x4 a2 = uint2x4(1622176923, 1072798259, 1808712713, 1497830076, 1582645163, 1876273820, 90244766, 30493685); + uint b2 = (768370497); + bool2x4 r2 = bool2x4(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + uint2x4 a3 = uint2x4(904014575, 11554610, 2016093187, 1515760622, 1596313927, 363921847, 1555396158, 913218907); + uint b3 = (384643370); + bool2x4 r3 = bool2x4(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void uint2x4_operator_not_equal_scalar_wide() + { + uint a0 = (2076921066); + uint2x4 b0 = uint2x4(2037494727, 1989050616, 48833929, 1897435904, 514354517, 1783749164, 364694471, 754315072); + bool2x4 r0 = bool2x4(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + uint a1 = (124108032); + uint2x4 b1 = uint2x4(1512967900, 1178825850, 1854793298, 50286949, 2100802631, 1640811853, 82110247, 472172806); + bool2x4 r1 = bool2x4(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + uint a2 = (266984506); + uint2x4 b2 = uint2x4(2003668365, 1826089250, 1041416160, 356140110, 2057237962, 799920703, 1916347720, 510966350); + bool2x4 r2 = bool2x4(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + uint a3 = (572038024); + uint2x4 b3 = uint2x4(1936481966, 1366859342, 1775285431, 604757336, 1047551607, 1311703338, 676012224, 627370253); + bool2x4 r3 = bool2x4(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void uint2x4_operator_less_wide_wide() + { + uint2x4 a0 = uint2x4(1182186063, 415538999, 1667335818, 1566618442, 1166180837, 639095188, 1080836365, 771119973); + uint2x4 b0 = uint2x4(524633529, 1032195686, 760723389, 1505751409, 431962172, 1287906509, 1560084663, 1450178202); + bool2x4 r0 = bool2x4(false, true, false, false, false, true, true, true); + TestUtils.AreEqual(a0 < b0, r0); + + uint2x4 a1 = uint2x4(928263233, 789225474, 665243110, 1003542034, 1032480172, 1961336172, 923379558, 21210619); + uint2x4 b1 = uint2x4(2066166337, 1107069023, 1640077524, 2103263105, 684229139, 1234033624, 1278743281, 1953079347); + bool2x4 r1 = bool2x4(true, true, true, true, false, false, true, true); + TestUtils.AreEqual(a1 < b1, r1); + + uint2x4 a2 = uint2x4(1089772116, 1707633052, 778986024, 158153146, 336715101, 1839141169, 1706859710, 1928438162); + uint2x4 b2 = uint2x4(1228832942, 2082539723, 1088437561, 1058382082, 207459172, 750531081, 2015788562, 2126542133); + bool2x4 r2 = bool2x4(true, true, true, true, false, false, true, true); + TestUtils.AreEqual(a2 < b2, r2); + + uint2x4 a3 = uint2x4(1638101724, 2044698552, 1543260981, 471462349, 1668575142, 2147199161, 946870864, 582371851); + uint2x4 b3 = uint2x4(271967348, 1601249324, 1373999400, 1689592186, 459759541, 983106679, 332584818, 2034921203); + bool2x4 r3 = bool2x4(false, false, false, true, false, false, false, true); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void uint2x4_operator_less_wide_scalar() + { + uint2x4 a0 = uint2x4(608447185, 818840405, 869219329, 2080125385, 1214500548, 1361741203, 1667165786, 1615392341); + uint b0 = (1491216667); + bool2x4 r0 = bool2x4(true, true, true, false, true, true, false, false); + TestUtils.AreEqual(a0 < b0, r0); + + uint2x4 a1 = uint2x4(840091491, 1247103789, 315321650, 930950514, 1100560246, 933855388, 908563901, 1127696709); + uint b1 = (469591900); + bool2x4 r1 = bool2x4(false, false, true, false, false, false, false, false); + TestUtils.AreEqual(a1 < b1, r1); + + uint2x4 a2 = uint2x4(1286331950, 971148054, 1827886929, 1056649851, 1579735991, 689044913, 1960894027, 371987110); + uint b2 = (380753337); + bool2x4 r2 = bool2x4(false, false, false, false, false, false, false, true); + TestUtils.AreEqual(a2 < b2, r2); + + uint2x4 a3 = uint2x4(867559111, 1698536333, 41716206, 243673862, 1274625476, 611065092, 118750042, 1829327996); + uint b3 = (1703747625); + bool2x4 r3 = bool2x4(true, true, true, true, true, true, true, false); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void uint2x4_operator_less_scalar_wide() + { + uint a0 = (548436837); + uint2x4 b0 = uint2x4(282703327, 14370648, 1862117300, 1304793311, 826073259, 988910157, 445132446, 1139670255); + bool2x4 r0 = bool2x4(false, false, true, true, true, true, false, true); + TestUtils.AreEqual(a0 < b0, r0); + + uint a1 = (111349251); + uint2x4 b1 = uint2x4(1102440676, 112183144, 1594415311, 1890019295, 2098715503, 608933527, 183989010, 1596056507); + bool2x4 r1 = bool2x4(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 < b1, r1); + + uint a2 = (1027318999); + uint2x4 b2 = uint2x4(146281093, 358911716, 874278078, 1106057699, 1256807459, 2111973919, 1736480659, 810406400); + bool2x4 r2 = bool2x4(false, false, false, true, true, true, true, false); + TestUtils.AreEqual(a2 < b2, r2); + + uint a3 = (1329939911); + uint2x4 b3 = uint2x4(1276652605, 593690439, 771851138, 590897155, 386688344, 1290583204, 1984930954, 743544838); + bool2x4 r3 = bool2x4(false, false, false, false, false, false, true, false); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void uint2x4_operator_greater_wide_wide() + { + uint2x4 a0 = uint2x4(592884447, 2133928932, 918957182, 1284069471, 194584707, 739120780, 241654068, 1340158550); + uint2x4 b0 = uint2x4(138737040, 192863971, 1700841444, 1044631301, 1391589821, 730837695, 253553987, 2078872742); + bool2x4 r0 = bool2x4(true, true, false, true, false, true, false, false); + TestUtils.AreEqual(a0 > b0, r0); + + uint2x4 a1 = uint2x4(2099542537, 1182623667, 1399607274, 789301637, 180400925, 594688333, 1877031463, 1360073500); + uint2x4 b1 = uint2x4(910845808, 976047676, 202633078, 1223618940, 641600530, 1830470354, 1570701388, 1104256103); + bool2x4 r1 = bool2x4(true, true, true, false, false, false, true, true); + TestUtils.AreEqual(a1 > b1, r1); + + uint2x4 a2 = uint2x4(1091782422, 546676424, 348221770, 716039145, 458742739, 1365508046, 1523167942, 1574478622); + uint2x4 b2 = uint2x4(1838646932, 740166101, 1549021845, 1457092873, 1790630950, 907793213, 555122804, 1418910265); + bool2x4 r2 = bool2x4(false, false, false, false, false, true, true, true); + TestUtils.AreEqual(a2 > b2, r2); + + uint2x4 a3 = uint2x4(1295065160, 715285504, 1130323487, 677530432, 1496919050, 12463046, 1106153111, 1315083485); + uint2x4 b3 = uint2x4(335209251, 1094341422, 1465325455, 390251369, 910309992, 277356652, 1601082764, 771366966); + bool2x4 r3 = bool2x4(true, false, false, true, true, false, false, true); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void uint2x4_operator_greater_wide_scalar() + { + uint2x4 a0 = uint2x4(1097138316, 211763648, 1883002501, 56406996, 43662641, 1923456111, 1437755186, 1219010035); + uint b0 = (438688675); + bool2x4 r0 = bool2x4(true, false, true, false, false, true, true, true); + TestUtils.AreEqual(a0 > b0, r0); + + uint2x4 a1 = uint2x4(2125058448, 893125636, 48044515, 711945018, 1035679270, 577943770, 572743717, 1016617211); + uint b1 = (304028799); + bool2x4 r1 = bool2x4(true, true, false, true, true, true, true, true); + TestUtils.AreEqual(a1 > b1, r1); + + uint2x4 a2 = uint2x4(2063134811, 64009107, 1462961460, 1143565920, 3715845, 689362811, 263973424, 1045140419); + uint b2 = (1577403353); + bool2x4 r2 = bool2x4(true, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 > b2, r2); + + uint2x4 a3 = uint2x4(1058332184, 1183316983, 1107974092, 212839726, 523727054, 112709358, 614746280, 1000986708); + uint b3 = (524569092); + bool2x4 r3 = bool2x4(true, true, true, false, false, false, true, true); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void uint2x4_operator_greater_scalar_wide() + { + uint a0 = (2024896938); + uint2x4 b0 = uint2x4(599356784, 185671342, 1932327391, 2025591013, 1257191721, 1312388500, 1443698859, 779217735); + bool2x4 r0 = bool2x4(true, true, true, false, true, true, true, true); + TestUtils.AreEqual(a0 > b0, r0); + + uint a1 = (691047512); + uint2x4 b1 = uint2x4(741776730, 732565983, 668302204, 1556466996, 858599525, 1896917159, 701542098, 1052151621); + bool2x4 r1 = bool2x4(false, false, true, false, false, false, false, false); + TestUtils.AreEqual(a1 > b1, r1); + + uint a2 = (1023307544); + uint2x4 b2 = uint2x4(1435392907, 1858177345, 299897686, 632930355, 1387203601, 483722222, 863042711, 1713088900); + bool2x4 r2 = bool2x4(false, false, true, true, false, true, true, false); + TestUtils.AreEqual(a2 > b2, r2); + + uint a3 = (315569296); + uint2x4 b3 = uint2x4(292652611, 1002628348, 927789921, 108145064, 425005337, 2093233588, 2063431853, 2079035844); + bool2x4 r3 = bool2x4(true, false, false, true, false, false, false, false); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void uint2x4_operator_less_equal_wide_wide() + { + uint2x4 a0 = uint2x4(1577248162, 2043073061, 1688380407, 176431985, 223299035, 1502802140, 1691709825, 386789394); + uint2x4 b0 = uint2x4(903445031, 2108974565, 210822256, 1281704747, 453681718, 66138830, 1229799377, 1620922595); + bool2x4 r0 = bool2x4(false, true, false, true, true, false, false, true); + TestUtils.AreEqual(a0 <= b0, r0); + + uint2x4 a1 = uint2x4(117182003, 1665770435, 1958490731, 420032601, 1251092689, 2011681765, 749743684, 183784440); + uint2x4 b1 = uint2x4(1715833766, 1366430432, 13102000, 46919981, 486470891, 1709514236, 2145785285, 854254454); + bool2x4 r1 = bool2x4(true, false, false, false, false, false, true, true); + TestUtils.AreEqual(a1 <= b1, r1); + + uint2x4 a2 = uint2x4(1150674774, 1633828822, 1719442172, 336047314, 743733218, 1393995865, 1854442658, 1498138884); + uint2x4 b2 = uint2x4(1273278658, 810263315, 1862773824, 201799013, 974166844, 1320622967, 2058099616, 522102017); + bool2x4 r2 = bool2x4(true, false, true, false, true, false, true, false); + TestUtils.AreEqual(a2 <= b2, r2); + + uint2x4 a3 = uint2x4(912169992, 1992682021, 1619593455, 1883313982, 483412430, 857881876, 346624138, 531961063); + uint2x4 b3 = uint2x4(620752145, 1213693681, 1281818305, 1564146162, 1996153080, 1201909516, 614401396, 224997397); + bool2x4 r3 = bool2x4(false, false, false, false, true, true, true, false); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void uint2x4_operator_less_equal_wide_scalar() + { + uint2x4 a0 = uint2x4(1722165358, 1219858357, 860410743, 411099660, 348104022, 1963256951, 212084836, 58924407); + uint b0 = (1688048545); + bool2x4 r0 = bool2x4(false, true, true, true, true, false, true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + uint2x4 a1 = uint2x4(1459242706, 532949158, 262559763, 690091301, 1806172431, 2091514001, 1857173043, 1617221948); + uint b1 = (1745758438); + bool2x4 r1 = bool2x4(true, true, true, true, false, false, false, true); + TestUtils.AreEqual(a1 <= b1, r1); + + uint2x4 a2 = uint2x4(2017733017, 981729559, 2032949254, 910922522, 2079225209, 26179915, 238796519, 1917813750); + uint b2 = (804204255); + bool2x4 r2 = bool2x4(false, false, false, false, false, true, true, false); + TestUtils.AreEqual(a2 <= b2, r2); + + uint2x4 a3 = uint2x4(1258115260, 1337879822, 959460446, 1599429457, 1279143037, 1551937606, 626254356, 1162369122); + uint b3 = (20607406); + bool2x4 r3 = bool2x4(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void uint2x4_operator_less_equal_scalar_wide() + { + uint a0 = (1777585); + uint2x4 b0 = uint2x4(1181030049, 1787703989, 1729760948, 1816537388, 1359786460, 874999193, 1678863148, 1711365839); + bool2x4 r0 = bool2x4(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + uint a1 = (762067160); + uint2x4 b1 = uint2x4(11953554, 1131583906, 1175393186, 1293698493, 48893340, 66196247, 1958607116, 1576473309); + bool2x4 r1 = bool2x4(false, true, true, true, false, false, true, true); + TestUtils.AreEqual(a1 <= b1, r1); + + uint a2 = (861890786); + uint2x4 b2 = uint2x4(478252419, 957887737, 117849810, 1348693584, 105489302, 259034238, 530713566, 601413850); + bool2x4 r2 = bool2x4(false, true, false, true, false, false, false, false); + TestUtils.AreEqual(a2 <= b2, r2); + + uint a3 = (830430286); + uint2x4 b3 = uint2x4(145552297, 1697295044, 1150680564, 2091065664, 1796096704, 1572008712, 1556906486, 205552788); + bool2x4 r3 = bool2x4(false, true, true, true, true, true, true, false); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void uint2x4_operator_greater_equal_wide_wide() + { + uint2x4 a0 = uint2x4(263000030, 744235661, 1893760267, 237248, 1062370984, 1676977687, 816766880, 1089431546); + uint2x4 b0 = uint2x4(1395535146, 1178373944, 1237373760, 1364855321, 600811864, 362060472, 290870624, 1839067862); + bool2x4 r0 = bool2x4(false, false, true, false, true, true, true, false); + TestUtils.AreEqual(a0 >= b0, r0); + + uint2x4 a1 = uint2x4(1394493730, 1176473380, 1193988637, 1703862455, 1806186947, 1253571980, 589397635, 1951842887); + uint2x4 b1 = uint2x4(396958580, 1336888643, 1019684398, 1697684196, 1227300220, 2044269675, 1898323839, 874509380); + bool2x4 r1 = bool2x4(true, false, true, true, true, false, false, true); + TestUtils.AreEqual(a1 >= b1, r1); + + uint2x4 a2 = uint2x4(798931197, 808426484, 744869638, 1959531616, 207430702, 1533946595, 1148381840, 2011549474); + uint2x4 b2 = uint2x4(1873505472, 1268843918, 1606949562, 1263896445, 1805518202, 1412091359, 1240330374, 1955056253); + bool2x4 r2 = bool2x4(false, false, false, true, false, true, false, true); + TestUtils.AreEqual(a2 >= b2, r2); + + uint2x4 a3 = uint2x4(605043041, 1707339660, 2038122892, 345761584, 1839156338, 1519670644, 2131285427, 775457686); + uint2x4 b3 = uint2x4(2025187918, 750755999, 869709740, 1390799279, 1194035112, 666460047, 103451220, 1311530792); + bool2x4 r3 = bool2x4(false, true, true, false, true, true, true, false); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void uint2x4_operator_greater_equal_wide_scalar() + { + uint2x4 a0 = uint2x4(2112791350, 1043657935, 101764761, 1529909067, 556026890, 281734132, 1186600258, 815093894); + uint b0 = (1470533736); + bool2x4 r0 = bool2x4(true, false, false, true, false, false, false, false); + TestUtils.AreEqual(a0 >= b0, r0); + + uint2x4 a1 = uint2x4(609211196, 829548642, 244604867, 1419295004, 471843809, 1819986195, 1460027917, 1646290021); + uint b1 = (1604309397); + bool2x4 r1 = bool2x4(false, false, false, false, false, true, false, true); + TestUtils.AreEqual(a1 >= b1, r1); + + uint2x4 a2 = uint2x4(196833647, 1905036391, 1771391775, 1584946560, 370941146, 440219668, 1607345862, 1449142607); + uint b2 = (1596738181); + bool2x4 r2 = bool2x4(false, true, true, false, false, false, true, false); + TestUtils.AreEqual(a2 >= b2, r2); + + uint2x4 a3 = uint2x4(1223010129, 1719435169, 258833609, 1389585003, 612593660, 42612027, 1138747386, 1491562090); + uint b3 = (379014762); + bool2x4 r3 = bool2x4(true, true, false, true, true, false, true, true); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void uint2x4_operator_greater_equal_scalar_wide() + { + uint a0 = (1525542481); + uint2x4 b0 = uint2x4(1503244746, 861711266, 817773856, 925984572, 571221723, 683686810, 118252990, 1653952090); + bool2x4 r0 = bool2x4(true, true, true, true, true, true, true, false); + TestUtils.AreEqual(a0 >= b0, r0); + + uint a1 = (1240253990); + uint2x4 b1 = uint2x4(1947039008, 1869136019, 152012637, 1214546726, 917376832, 303549425, 2111728811, 945321577); + bool2x4 r1 = bool2x4(false, false, true, true, true, true, false, true); + TestUtils.AreEqual(a1 >= b1, r1); + + uint a2 = (173706579); + uint2x4 b2 = uint2x4(625318949, 519443238, 1583588379, 1026799433, 1713083717, 394922760, 1216218189, 1336522452); + bool2x4 r2 = bool2x4(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 >= b2, r2); + + uint a3 = (233894308); + uint2x4 b3 = uint2x4(479913036, 984991199, 172993285, 2121050903, 465645173, 788510727, 337378780, 273010835); + bool2x4 r3 = bool2x4(false, false, true, false, false, false, false, false); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void uint2x4_operator_add_wide_wide() + { + uint2x4 a0 = uint2x4(2049228671, 1658660009, 491719392, 937013355, 81108663, 1063894558, 86954702, 843159721); + uint2x4 b0 = uint2x4(2088751567, 645762023, 306868786, 4360271, 506047997, 2094559874, 1634712736, 1601474440); + uint2x4 r0 = uint2x4(4137980238, 2304422032, 798588178, 941373626, 587156660, 3158454432, 1721667438, 2444634161); + TestUtils.AreEqual(a0 + b0, r0); + + uint2x4 a1 = uint2x4(698977704, 192867135, 1683407172, 137301303, 2103582820, 526139155, 447937230, 2127411006); + uint2x4 b1 = uint2x4(1586485231, 908746788, 1812370320, 1247342357, 2043773873, 223363428, 175115707, 985928617); + uint2x4 r1 = uint2x4(2285462935, 1101613923, 3495777492, 1384643660, 4147356693, 749502583, 623052937, 3113339623); + TestUtils.AreEqual(a1 + b1, r1); + + uint2x4 a2 = uint2x4(1670579390, 1914969141, 997691756, 857841794, 2129024875, 267535529, 978891383, 657092366); + uint2x4 b2 = uint2x4(507662836, 1231457019, 776127866, 607782424, 1160366210, 1384832242, 702057048, 703554905); + uint2x4 r2 = uint2x4(2178242226, 3146426160, 1773819622, 1465624218, 3289391085, 1652367771, 1680948431, 1360647271); + TestUtils.AreEqual(a2 + b2, r2); + + uint2x4 a3 = uint2x4(941872903, 906908654, 1940071697, 862186205, 1951450264, 689662850, 1928213278, 1703906688); + uint2x4 b3 = uint2x4(2106992817, 1994483489, 539473, 236858351, 411317652, 595429166, 713649927, 2053476603); + uint2x4 r3 = uint2x4(3048865720, 2901392143, 1940611170, 1099044556, 2362767916, 1285092016, 2641863205, 3757383291); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void uint2x4_operator_add_wide_scalar() + { + uint2x4 a0 = uint2x4(2038218457, 134923711, 875689667, 1338884463, 997710928, 340490871, 1067888129, 70433301); + uint b0 = (2124409227); + uint2x4 r0 = uint2x4(4162627684, 2259332938, 3000098894, 3463293690, 3122120155, 2464900098, 3192297356, 2194842528); + TestUtils.AreEqual(a0 + b0, r0); + + uint2x4 a1 = uint2x4(2003021861, 1160398286, 85446202, 1068152966, 1239387100, 1497676888, 1727477485, 1095438654); + uint b1 = (1635971971); + uint2x4 r1 = uint2x4(3638993832, 2796370257, 1721418173, 2704124937, 2875359071, 3133648859, 3363449456, 2731410625); + TestUtils.AreEqual(a1 + b1, r1); + + uint2x4 a2 = uint2x4(756559204, 658923552, 1610518921, 1585755398, 692843300, 1068593469, 1704776233, 577782260); + uint b2 = (1818718931); + uint2x4 r2 = uint2x4(2575278135, 2477642483, 3429237852, 3404474329, 2511562231, 2887312400, 3523495164, 2396501191); + TestUtils.AreEqual(a2 + b2, r2); + + uint2x4 a3 = uint2x4(736972565, 564257439, 2051736283, 1572837697, 1628006545, 1855700263, 656748782, 272774516); + uint b3 = (711894571); + uint2x4 r3 = uint2x4(1448867136, 1276152010, 2763630854, 2284732268, 2339901116, 2567594834, 1368643353, 984669087); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void uint2x4_operator_add_scalar_wide() + { + uint a0 = (391092078); + uint2x4 b0 = uint2x4(519908870, 851424292, 328314822, 135622204, 740923360, 655394201, 1451896269, 1781697072); + uint2x4 r0 = uint2x4(911000948, 1242516370, 719406900, 526714282, 1132015438, 1046486279, 1842988347, 2172789150); + TestUtils.AreEqual(a0 + b0, r0); + + uint a1 = (996031825); + uint2x4 b1 = uint2x4(1557774949, 779774940, 1111541302, 783046445, 1130163944, 288279584, 1397683861, 1636583489); + uint2x4 r1 = uint2x4(2553806774, 1775806765, 2107573127, 1779078270, 2126195769, 1284311409, 2393715686, 2632615314); + TestUtils.AreEqual(a1 + b1, r1); + + uint a2 = (673263339); + uint2x4 b2 = uint2x4(1469300874, 14855965, 1116636999, 1488863300, 1600990886, 190651301, 1307459768, 920085839); + uint2x4 r2 = uint2x4(2142564213, 688119304, 1789900338, 2162126639, 2274254225, 863914640, 1980723107, 1593349178); + TestUtils.AreEqual(a2 + b2, r2); + + uint a3 = (2082229835); + uint2x4 b3 = uint2x4(1992405574, 1213924458, 505841452, 981421162, 1488337699, 1113826640, 1806146508, 1841791222); + uint2x4 r3 = uint2x4(4074635409, 3296154293, 2588071287, 3063650997, 3570567534, 3196056475, 3888376343, 3924021057); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void uint2x4_operator_sub_wide_wide() + { + uint2x4 a0 = uint2x4(1353441118, 797269833, 659988112, 56022121, 365847472, 2062899435, 1380988474, 799885138); + uint2x4 b0 = uint2x4(1332656812, 1827794007, 972557431, 2078233689, 1508184327, 1372307701, 810327977, 936799885); + uint2x4 r0 = uint2x4(20784306, 3264443122, 3982397977, 2272755728, 3152630441, 690591734, 570660497, 4158052549); + TestUtils.AreEqual(a0 - b0, r0); + + uint2x4 a1 = uint2x4(1306058185, 579775276, 1239163824, 344591081, 86359575, 1049709943, 721529513, 1767221271); + uint2x4 b1 = uint2x4(71562303, 1418723328, 1971342989, 1226053395, 136565478, 1979903295, 600719425, 837912956); + uint2x4 r1 = uint2x4(1234495882, 3456019244, 3562788131, 3413504982, 4244761393, 3364773944, 120810088, 929308315); + TestUtils.AreEqual(a1 - b1, r1); + + uint2x4 a2 = uint2x4(7652784, 545192611, 176298787, 1477774126, 1426963688, 2032787858, 2059525977, 445200454); + uint2x4 b2 = uint2x4(632054793, 711091688, 904695656, 1640069560, 750244414, 1385118097, 1102391291, 1221949855); + uint2x4 r2 = uint2x4(3670565287, 4129068219, 3566570427, 4132671862, 676719274, 647669761, 957134686, 3518217895); + TestUtils.AreEqual(a2 - b2, r2); + + uint2x4 a3 = uint2x4(425848588, 2026967474, 1128492011, 61421784, 988065731, 1741434432, 2070331135, 1356704176); + uint2x4 b3 = uint2x4(609588723, 1054324682, 1678086165, 1529581776, 1718700085, 523422634, 223602473, 1912611694); + uint2x4 r3 = uint2x4(4111227161, 972642792, 3745373142, 2826807304, 3564332942, 1218011798, 1846728662, 3739059778); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void uint2x4_operator_sub_wide_scalar() + { + uint2x4 a0 = uint2x4(1176369558, 1934521195, 309452150, 1417634074, 108910717, 1306356714, 1502312334, 1451794815); + uint b0 = (462232403); + uint2x4 r0 = uint2x4(714137155, 1472288792, 4142187043, 955401671, 3941645610, 844124311, 1040079931, 989562412); + TestUtils.AreEqual(a0 - b0, r0); + + uint2x4 a1 = uint2x4(281174200, 1913724431, 2041593336, 557239990, 1119051448, 1590376732, 819090189, 816382635); + uint b1 = (87530840); + uint2x4 r1 = uint2x4(193643360, 1826193591, 1954062496, 469709150, 1031520608, 1502845892, 731559349, 728851795); + TestUtils.AreEqual(a1 - b1, r1); + + uint2x4 a2 = uint2x4(815920639, 1792801932, 1113440549, 1418937976, 1277257189, 2092779398, 642236742, 1605250794); + uint b2 = (1829033117); + uint2x4 r2 = uint2x4(3281854818, 4258736111, 3579374728, 3884872155, 3743191368, 263746281, 3108170921, 4071184973); + TestUtils.AreEqual(a2 - b2, r2); + + uint2x4 a3 = uint2x4(819644478, 128303186, 553494257, 1017126971, 1999744782, 2017272758, 1817991764, 1280985500); + uint b3 = (1468003019); + uint2x4 r3 = uint2x4(3646608755, 2955267463, 3380458534, 3844091248, 531741763, 549269739, 349988745, 4107949777); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void uint2x4_operator_sub_scalar_wide() + { + uint a0 = (1691534405); + uint2x4 b0 = uint2x4(2022393810, 1612688515, 496689713, 887037586, 2097630964, 374934538, 939035482, 935242277); + uint2x4 r0 = uint2x4(3964107891, 78845890, 1194844692, 804496819, 3888870737, 1316599867, 752498923, 756292128); + TestUtils.AreEqual(a0 - b0, r0); + + uint a1 = (1789300421); + uint2x4 b1 = uint2x4(264712893, 1231856067, 1818112748, 1428436109, 1258745460, 1077380396, 1330722719, 518111829); + uint2x4 r1 = uint2x4(1524587528, 557444354, 4266154969, 360864312, 530554961, 711920025, 458577702, 1271188592); + TestUtils.AreEqual(a1 - b1, r1); + + uint a2 = (967128529); + uint2x4 b2 = uint2x4(344666254, 1082267918, 907866696, 1816885123, 460340568, 962154498, 557113461, 1701216709); + uint2x4 r2 = uint2x4(622462275, 4179827907, 59261833, 3445210702, 506787961, 4974031, 410015068, 3560879116); + TestUtils.AreEqual(a2 - b2, r2); + + uint a3 = (1980098777); + uint2x4 b3 = uint2x4(730060552, 1444397827, 853570556, 138836432, 1013190428, 718089530, 506757390, 1216448041); + uint2x4 r3 = uint2x4(1250038225, 535700950, 1126528221, 1841262345, 966908349, 1262009247, 1473341387, 763650736); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void uint2x4_operator_mul_wide_wide() + { + uint2x4 a0 = uint2x4(245827027, 208934650, 1019478917, 568231809, 877289039, 1585782440, 2111178729, 1186019069); + uint2x4 b0 = uint2x4(759663997, 350129201, 477450108, 1635735015, 388710278, 757722665, 1509388321, 1841703980); + uint2x4 r0 = uint2x4(3662155527, 1402281434, 332447596, 2361989735, 2624048730, 1455036648, 2128344329, 3700879228); + TestUtils.AreEqual(a0 * b0, r0); + + uint2x4 a1 = uint2x4(571481445, 1570087048, 629447153, 619383734, 2055121568, 700402816, 263414349, 187830569); + uint2x4 b1 = uint2x4(1826369331, 1524322467, 1605207974, 428419155, 1460605791, 1968043860, 771161742, 2037340417); + uint2x4 r1 = uint2x4(2640799263, 2093463192, 3087460678, 3161406466, 990589280, 3356793344, 2953243830, 1156600361); + TestUtils.AreEqual(a1 * b1, r1); + + uint2x4 a2 = uint2x4(2048056680, 546694675, 853585367, 933370718, 990212476, 1915885905, 1984212358, 368146234); + uint2x4 b2 = uint2x4(322304267, 651448359, 1608326767, 1427155898, 1092185338, 665119139, 223634707, 694718952); + uint2x4 r2 = uint2x4(649177976, 678952165, 1063621177, 2683284556, 2152538904, 3721713555, 2642853618, 1626072720); + TestUtils.AreEqual(a2 * b2, r2); + + uint2x4 a3 = uint2x4(899438811, 1765718681, 409003054, 2069758852, 140280263, 442491280, 1924530939, 1372320666); + uint2x4 b3 = uint2x4(675813713, 999254223, 1326064110, 788102700, 1927999142, 1706356773, 747671596, 106127297); + uint2x4 r3 = uint2x4(1891467339, 335415735, 1128927428, 2638713520, 2861115658, 479369680, 3928339236, 4044803354); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void uint2x4_operator_mul_wide_scalar() + { + uint2x4 a0 = uint2x4(1762033447, 465343930, 1570757881, 1326409563, 1824319147, 1356578909, 72749215, 154616909); + uint b0 = (1476837906); + uint2x4 r0 = uint2x4(2981789374, 1326807828, 2156411778, 4018813542, 4229418502, 2976383114, 2455742766, 2574460778); + TestUtils.AreEqual(a0 * b0, r0); + + uint2x4 a1 = uint2x4(975743632, 1958912969, 971327747, 1818877398, 1324050764, 660611671, 1279757657, 391009467); + uint b1 = (573770299); + uint2x4 r1 = uint2x4(414773040, 3595344211, 1045098929, 3165813842, 1954692228, 970215437, 1522404739, 631100697); + TestUtils.AreEqual(a1 * b1, r1); + + uint2x4 a2 = uint2x4(1186856590, 800117742, 606927173, 1338014500, 1688964615, 1439447294, 387721300, 1192501703); + uint b2 = (890343818); + uint2x4 r2 = uint2x4(218605196, 908725324, 3489887282, 2766521704, 1365477062, 1262261996, 2040090952, 691203142); + TestUtils.AreEqual(a2 * b2, r2); + + uint2x4 a3 = uint2x4(1613845584, 124378112, 970518733, 1370700538, 1978842602, 1451974062, 987919119, 1659987051); + uint b3 = (76318055); + uint2x4 r3 = uint2x4(2959506480, 1256424448, 3749667707, 628661398, 357366566, 753276674, 2132219401, 3469671949); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void uint2x4_operator_mul_scalar_wide() + { + uint a0 = (99541948); + uint2x4 b0 = uint2x4(1764461774, 657072478, 1459784358, 1610646683, 1632058826, 868441654, 1408757883, 335917146); + uint2x4 r0 = uint2x4(3344568648, 4192918280, 1260585960, 1158730452, 4293361240, 3828814248, 2108402516, 1966690328); + TestUtils.AreEqual(a0 * b0, r0); + + uint a1 = (2105124483); + uint2x4 b1 = uint2x4(1178393968, 1963904348, 1409533767, 243286231, 1336308795, 517963367, 1733623488, 459880225); + uint2x4 r1 = uint2x4(3266048080, 2084093460, 1286996821, 910923781, 1886305329, 3255007413, 644799552, 1815059427); + TestUtils.AreEqual(a1 * b1, r1); + + uint a2 = (994616533); + uint2x4 b2 = uint2x4(1420531535, 1821413700, 677771573, 2132626845, 1158827713, 640102997, 944551639, 1323243330); + uint2x4 r2 = uint2x4(585859259, 2021158292, 1046891801, 2353145761, 3556190869, 2579715257, 4134395107, 1259643370); + TestUtils.AreEqual(a2 * b2, r2); + + uint a3 = (1186460236); + uint2x4 b3 = uint2x4(657101857, 1275563580, 1031291523, 1008470115, 1155301041, 1046199281, 2138825098, 1273008873); + uint2x4 r3 = uint2x4(3393334220, 3415667152, 1278776548, 1761940324, 3619679884, 2049744268, 3919669496, 2350571308); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void uint2x4_operator_div_wide_wide() + { + uint2x4 a0 = uint2x4(1590198532, 507812502, 126627032, 1058247011, 427387861, 290676154, 1829594484, 1127868739); + uint2x4 b0 = uint2x4(1434703236, 911965201, 390415521, 128746927, 525835375, 816946613, 878264647, 146789678); + uint2x4 r0 = uint2x4(1, 0, 0, 8, 0, 0, 2, 7); + TestUtils.AreEqual(a0 / b0, r0); + + uint2x4 a1 = uint2x4(499016351, 1341209632, 134906097, 785470242, 788249865, 1099825433, 1552968283, 1822367139); + uint2x4 b1 = uint2x4(2089524057, 254213018, 1916850021, 1737806518, 1906634983, 437754923, 825037958, 902508708); + uint2x4 r1 = uint2x4(0, 5, 0, 0, 0, 2, 1, 2); + TestUtils.AreEqual(a1 / b1, r1); + + uint2x4 a2 = uint2x4(1021812060, 1937073018, 645757349, 1097576782, 1246027674, 1152153253, 1900577195, 172149343); + uint2x4 b2 = uint2x4(896853614, 49452028, 1921327824, 787000669, 1032149621, 858558868, 1422112429, 837098844); + uint2x4 r2 = uint2x4(1, 39, 0, 1, 1, 1, 1, 0); + TestUtils.AreEqual(a2 / b2, r2); + + uint2x4 a3 = uint2x4(1735128704, 816492592, 2012272185, 632330092, 649232994, 123715336, 1438073735, 723262291); + uint2x4 b3 = uint2x4(616122946, 2035322800, 1324534444, 1820832158, 917489631, 367475696, 620492088, 1749833550); + uint2x4 r3 = uint2x4(2, 0, 1, 0, 0, 0, 2, 0); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void uint2x4_operator_div_wide_scalar() + { + uint2x4 a0 = uint2x4(560951562, 1218680769, 375341724, 1613542090, 1919409166, 1397425408, 1349573078, 524526253); + uint b0 = (947861580); + uint2x4 r0 = uint2x4(0, 1, 0, 1, 2, 1, 1, 0); + TestUtils.AreEqual(a0 / b0, r0); + + uint2x4 a1 = uint2x4(341995568, 1515313790, 1676971657, 2131487088, 2105094094, 1017891310, 542666029, 1646044372); + uint b1 = (495895326); + uint2x4 r1 = uint2x4(0, 3, 3, 4, 4, 2, 1, 3); + TestUtils.AreEqual(a1 / b1, r1); + + uint2x4 a2 = uint2x4(1447236569, 19616726, 896899915, 707389627, 1249475421, 1486968988, 1738891885, 1919705924); + uint b2 = (107215658); + uint2x4 r2 = uint2x4(13, 0, 8, 6, 11, 13, 16, 17); + TestUtils.AreEqual(a2 / b2, r2); + + uint2x4 a3 = uint2x4(1244966864, 206442634, 1508567412, 1825701056, 1117255783, 929925156, 1725332114, 1949103348); + uint b3 = (1200843642); + uint2x4 r3 = uint2x4(1, 0, 1, 1, 0, 0, 1, 1); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void uint2x4_operator_div_scalar_wide() + { + uint a0 = (1161272038); + uint2x4 b0 = uint2x4(187325733, 1594107378, 2016183849, 1589343709, 388768753, 1417077283, 1773486938, 1154044032); + uint2x4 r0 = uint2x4(6, 0, 0, 0, 2, 0, 0, 1); + TestUtils.AreEqual(a0 / b0, r0); + + uint a1 = (81831373); + uint2x4 b1 = uint2x4(1476877645, 653688843, 45756703, 631027637, 396671391, 784365696, 1250594097, 1818363859); + uint2x4 r1 = uint2x4(0, 0, 1, 0, 0, 0, 0, 0); + TestUtils.AreEqual(a1 / b1, r1); + + uint a2 = (1653451772); + uint2x4 b2 = uint2x4(270557729, 48974453, 1796936382, 1427856423, 981056957, 1955700573, 705450043, 1054404890); + uint2x4 r2 = uint2x4(6, 33, 0, 1, 1, 0, 2, 1); + TestUtils.AreEqual(a2 / b2, r2); + + uint a3 = (351914083); + uint2x4 b3 = uint2x4(131970646, 1320586926, 366944102, 1575786200, 257204865, 1582754309, 2114509003, 1266146708); + uint2x4 r3 = uint2x4(2, 0, 0, 0, 1, 0, 0, 0); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void uint2x4_operator_mod_wide_wide() + { + uint2x4 a0 = uint2x4(146150818, 1846543305, 1071447756, 308965362, 659881575, 1002365460, 861198439, 1510617532); + uint2x4 b0 = uint2x4(983050390, 771341152, 942375212, 367361754, 749500619, 750718852, 2095151755, 88438806); + uint2x4 r0 = uint2x4(146150818, 303861001, 129072544, 308965362, 659881575, 251646608, 861198439, 7157830); + TestUtils.AreEqual(a0 % b0, r0); + + uint2x4 a1 = uint2x4(778525078, 1458458044, 101987897, 1249565173, 938026607, 1692541775, 1518877124, 1806965510); + uint2x4 b1 = uint2x4(769227442, 647214624, 1026513788, 1544950956, 160166322, 1099108075, 1158422232, 1798905209); + uint2x4 r1 = uint2x4(9297636, 164028796, 101987897, 1249565173, 137194997, 593433700, 360454892, 8060301); + TestUtils.AreEqual(a1 % b1, r1); + + uint2x4 a2 = uint2x4(1325139851, 994457255, 1372400564, 1770508529, 100255877, 452674793, 1545968777, 629019189); + uint2x4 b2 = uint2x4(164686701, 327889784, 1082162785, 1213537518, 608481038, 329133821, 1824387961, 1223426748); + uint2x4 r2 = uint2x4(7646243, 10787903, 290237779, 556971011, 100255877, 123540972, 1545968777, 629019189); + TestUtils.AreEqual(a2 % b2, r2); + + uint2x4 a3 = uint2x4(1402964707, 2138294579, 1641714420, 1782022072, 1880968864, 1980798192, 1397317084, 995968277); + uint2x4 b3 = uint2x4(798137669, 79717779, 1233582258, 1267120677, 301592349, 911281434, 1357340934, 1648942990); + uint2x4 r3 = uint2x4(604827038, 65632325, 408132162, 514901395, 71414770, 158235324, 39976150, 995968277); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void uint2x4_operator_mod_wide_scalar() + { + uint2x4 a0 = uint2x4(164800505, 1062177828, 1898749675, 1701653318, 820393245, 19002208, 128329633, 1464010899); + uint b0 = (883951171); + uint2x4 r0 = uint2x4(164800505, 178226657, 130847333, 817702147, 820393245, 19002208, 128329633, 580059728); + TestUtils.AreEqual(a0 % b0, r0); + + uint2x4 a1 = uint2x4(896587769, 1982762194, 959236935, 712321026, 172564850, 1540068445, 1085897743, 1607489717); + uint b1 = (405208598); + uint2x4 r1 = uint2x4(86170573, 361927802, 148819739, 307112428, 172564850, 324442651, 275480547, 391863923); + TestUtils.AreEqual(a1 % b1, r1); + + uint2x4 a2 = uint2x4(165478511, 915707999, 1602830401, 928191283, 1084934806, 488509689, 2087820912, 377501313); + uint b2 = (647846716); + uint2x4 r2 = uint2x4(165478511, 267861283, 307136969, 280344567, 437088090, 488509689, 144280764, 377501313); + TestUtils.AreEqual(a2 % b2, r2); + + uint2x4 a3 = uint2x4(1778384846, 812183417, 1153802502, 1642671870, 1924710742, 665297470, 1568090825, 2050982942); + uint b3 = (1216011754); + uint2x4 r3 = uint2x4(562373092, 812183417, 1153802502, 426660116, 708698988, 665297470, 352079071, 834971188); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void uint2x4_operator_mod_scalar_wide() + { + uint a0 = (242383789); + uint2x4 b0 = uint2x4(740000543, 1556450291, 1104736385, 437976569, 1911837205, 1507212038, 1906405167, 247693265); + uint2x4 r0 = uint2x4(242383789, 242383789, 242383789, 242383789, 242383789, 242383789, 242383789, 242383789); + TestUtils.AreEqual(a0 % b0, r0); + + uint a1 = (293460573); + uint2x4 b1 = uint2x4(1495295166, 873323603, 530681233, 1298102643, 2057984657, 1000742091, 1461372131, 1859742342); + uint2x4 r1 = uint2x4(293460573, 293460573, 293460573, 293460573, 293460573, 293460573, 293460573, 293460573); + TestUtils.AreEqual(a1 % b1, r1); + + uint a2 = (797184687); + uint2x4 b2 = uint2x4(821888842, 1083192997, 840114986, 1894865954, 615159964, 1485575122, 2028738, 2122220318); + uint2x4 r2 = uint2x4(797184687, 797184687, 797184687, 797184687, 182024723, 797184687, 1919391, 797184687); + TestUtils.AreEqual(a2 % b2, r2); + + uint a3 = (164578061); + uint2x4 b3 = uint2x4(730088119, 1444946139, 1305792037, 1110829011, 872723581, 166847388, 1477846418, 511428733); + uint2x4 r3 = uint2x4(164578061, 164578061, 164578061, 164578061, 164578061, 164578061, 164578061, 164578061); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void uint2x4_operator_plus() + { + uint2x4 a0 = uint2x4(1643476803, 907898539, 379615839, 1140483021, 1735287433, 1743199272, 1472881565, 339091479); + uint2x4 r0 = uint2x4(1643476803, 907898539, 379615839, 1140483021, 1735287433, 1743199272, 1472881565, 339091479); + TestUtils.AreEqual(+a0, r0); + + uint2x4 a1 = uint2x4(401565897, 849339193, 174532915, 1864850812, 1566098441, 1145639744, 1615499926, 2049663954); + uint2x4 r1 = uint2x4(401565897, 849339193, 174532915, 1864850812, 1566098441, 1145639744, 1615499926, 2049663954); + TestUtils.AreEqual(+a1, r1); + + uint2x4 a2 = uint2x4(1723005749, 591286416, 1706631096, 1079164488, 1808261782, 1201290141, 82958939, 308695413); + uint2x4 r2 = uint2x4(1723005749, 591286416, 1706631096, 1079164488, 1808261782, 1201290141, 82958939, 308695413); + TestUtils.AreEqual(+a2, r2); + + uint2x4 a3 = uint2x4(1575280693, 1673126612, 500666137, 640289062, 836003812, 336058393, 829347661, 33442669); + uint2x4 r3 = uint2x4(1575280693, 1673126612, 500666137, 640289062, 836003812, 336058393, 829347661, 33442669); + TestUtils.AreEqual(+a3, r3); + } + + [TestCompiler] + public static void uint2x4_operator_neg() + { + uint2x4 a0 = uint2x4(1955022112, 662160019, 370300775, 2141283773, 1004505619, 28153593, 33894270, 505708349); + uint2x4 r0 = uint2x4(2339945184, 3632807277, 3924666521, 2153683523, 3290461677, 4266813703, 4261073026, 3789258947); + TestUtils.AreEqual(-a0, r0); + + uint2x4 a1 = uint2x4(1115028238, 694995093, 1542206286, 213087293, 243937487, 341522275, 841085242, 574159094); + uint2x4 r1 = uint2x4(3179939058, 3599972203, 2752761010, 4081880003, 4051029809, 3953445021, 3453882054, 3720808202); + TestUtils.AreEqual(-a1, r1); + + uint2x4 a2 = uint2x4(1687250035, 1175014732, 1259809073, 1212465326, 1190569920, 2047955772, 2120729864, 1440774928); + uint2x4 r2 = uint2x4(2607717261, 3119952564, 3035158223, 3082501970, 3104397376, 2247011524, 2174237432, 2854192368); + TestUtils.AreEqual(-a2, r2); + + uint2x4 a3 = uint2x4(1485596454, 1387601718, 1745651998, 319115626, 1119959806, 739132284, 1954173314, 1709857098); + uint2x4 r3 = uint2x4(2809370842, 2907365578, 2549315298, 3975851670, 3175007490, 3555835012, 2340793982, 2585110198); + TestUtils.AreEqual(-a3, r3); + } + + [TestCompiler] + public static void uint2x4_operator_prefix_inc() + { + uint2x4 a0 = uint2x4(864455342, 2035793213, 1275443862, 971919915, 411610189, 446210725, 395072276, 115573442); + uint2x4 r0 = uint2x4(864455343, 2035793214, 1275443863, 971919916, 411610190, 446210726, 395072277, 115573443); + TestUtils.AreEqual(++a0, r0); + + uint2x4 a1 = uint2x4(913293639, 1208161871, 1385544935, 1835605516, 831396561, 388229350, 696475402, 1786514683); + uint2x4 r1 = uint2x4(913293640, 1208161872, 1385544936, 1835605517, 831396562, 388229351, 696475403, 1786514684); + TestUtils.AreEqual(++a1, r1); + + uint2x4 a2 = uint2x4(993189311, 1622410417, 1398865015, 241906003, 1705625817, 609525897, 172599489, 504806865); + uint2x4 r2 = uint2x4(993189312, 1622410418, 1398865016, 241906004, 1705625818, 609525898, 172599490, 504806866); + TestUtils.AreEqual(++a2, r2); + + uint2x4 a3 = uint2x4(519296647, 1541894135, 924683935, 259568871, 1349062584, 1120518661, 65514038, 1495168208); + uint2x4 r3 = uint2x4(519296648, 1541894136, 924683936, 259568872, 1349062585, 1120518662, 65514039, 1495168209); + TestUtils.AreEqual(++a3, r3); + } + + [TestCompiler] + public static void uint2x4_operator_postfix_inc() + { + uint2x4 a0 = uint2x4(1751003569, 2063707595, 1500486291, 969189211, 1007848192, 2028651936, 1643023524, 1190630527); + uint2x4 r0 = uint2x4(1751003569, 2063707595, 1500486291, 969189211, 1007848192, 2028651936, 1643023524, 1190630527); + TestUtils.AreEqual(a0++, r0); + + uint2x4 a1 = uint2x4(1396179607, 177416855, 1524860667, 1408994706, 375284401, 1580130369, 1676086778, 717006530); + uint2x4 r1 = uint2x4(1396179607, 177416855, 1524860667, 1408994706, 375284401, 1580130369, 1676086778, 717006530); + TestUtils.AreEqual(a1++, r1); + + uint2x4 a2 = uint2x4(506142468, 2026873940, 130175844, 1513142653, 420613464, 1219979307, 586574160, 357567451); + uint2x4 r2 = uint2x4(506142468, 2026873940, 130175844, 1513142653, 420613464, 1219979307, 586574160, 357567451); + TestUtils.AreEqual(a2++, r2); + + uint2x4 a3 = uint2x4(1468020171, 1127356901, 101238629, 2131648021, 423320704, 827539403, 1919960927, 840371710); + uint2x4 r3 = uint2x4(1468020171, 1127356901, 101238629, 2131648021, 423320704, 827539403, 1919960927, 840371710); + TestUtils.AreEqual(a3++, r3); + } + + [TestCompiler] + public static void uint2x4_operator_prefix_dec() + { + uint2x4 a0 = uint2x4(200904609, 871077500, 968578728, 638967721, 1995396216, 435367037, 1782514098, 1589827826); + uint2x4 r0 = uint2x4(200904608, 871077499, 968578727, 638967720, 1995396215, 435367036, 1782514097, 1589827825); + TestUtils.AreEqual(--a0, r0); + + uint2x4 a1 = uint2x4(1434377580, 1699290403, 1758478358, 1914114460, 71237375, 389120307, 1022184392, 1310293956); + uint2x4 r1 = uint2x4(1434377579, 1699290402, 1758478357, 1914114459, 71237374, 389120306, 1022184391, 1310293955); + TestUtils.AreEqual(--a1, r1); + + uint2x4 a2 = uint2x4(356565557, 906734601, 799006218, 1383897383, 1040798388, 1469596990, 1719228297, 220897829); + uint2x4 r2 = uint2x4(356565556, 906734600, 799006217, 1383897382, 1040798387, 1469596989, 1719228296, 220897828); + TestUtils.AreEqual(--a2, r2); + + uint2x4 a3 = uint2x4(1454322707, 14227726, 293093918, 1065286595, 1249415499, 1009503100, 157482354, 965385343); + uint2x4 r3 = uint2x4(1454322706, 14227725, 293093917, 1065286594, 1249415498, 1009503099, 157482353, 965385342); + TestUtils.AreEqual(--a3, r3); + } + + [TestCompiler] + public static void uint2x4_operator_postfix_dec() + { + uint2x4 a0 = uint2x4(283970262, 1109329936, 1073216143, 649439137, 1932646215, 1174104498, 484207852, 524156737); + uint2x4 r0 = uint2x4(283970262, 1109329936, 1073216143, 649439137, 1932646215, 1174104498, 484207852, 524156737); + TestUtils.AreEqual(a0--, r0); + + uint2x4 a1 = uint2x4(691209285, 802721301, 377162390, 526366486, 1504625034, 590919177, 60677868, 1867810045); + uint2x4 r1 = uint2x4(691209285, 802721301, 377162390, 526366486, 1504625034, 590919177, 60677868, 1867810045); + TestUtils.AreEqual(a1--, r1); + + uint2x4 a2 = uint2x4(2095777993, 324944916, 242636153, 1659736954, 1316734088, 1030072405, 1751972064, 1868889881); + uint2x4 r2 = uint2x4(2095777993, 324944916, 242636153, 1659736954, 1316734088, 1030072405, 1751972064, 1868889881); + TestUtils.AreEqual(a2--, r2); + + uint2x4 a3 = uint2x4(1726583208, 175622377, 181847458, 665549439, 530897466, 635466911, 416440036, 1447690298); + uint2x4 r3 = uint2x4(1726583208, 175622377, 181847458, 665549439, 530897466, 635466911, 416440036, 1447690298); + TestUtils.AreEqual(a3--, r3); + } + + [TestCompiler] + public static void uint2x4_operator_bitwise_and_wide_wide() + { + uint2x4 a0 = uint2x4(779935043, 1097962163, 1939593304, 800599247, 952140918, 782792558, 1608557706, 396446406); + uint2x4 b0 = uint2x4(307705143, 1710882162, 866836769, 532490608, 679371720, 1794035877, 1439832202, 519529812); + uint2x4 r0 = uint2x4(39064835, 1097961522, 864731136, 263727168, 675283008, 715673636, 1438646410, 379666500); + TestUtils.AreEqual(a0 & b0, r0); + + uint2x4 a1 = uint2x4(2039894114, 1286974642, 442394124, 1759739564, 233435438, 665207770, 1942050241, 1022352952); + uint2x4 b1 = uint2x4(23633139, 1209152681, 646737179, 1255867027, 1900854122, 413173763, 1409138251, 2087190272); + uint2x4 r1 = uint2x4(16781410, 1209017504, 34366472, 1220739712, 21541162, 10485762, 1405162561, 1013440000); + TestUtils.AreEqual(a1 & b1, r1); + + uint2x4 a2 = uint2x4(60340400, 329119345, 406517382, 1126764634, 343425836, 1957552749, 1624478957, 341972372); + uint2x4 b2 = uint2x4(563439483, 354579077, 642224854, 1650432515, 755290290, 902865191, 661389406, 2134212586); + uint2x4 r2 = uint2x4(26222640, 285241857, 168582, 1107890178, 67125280, 880844837, 541065292, 337646976); + TestUtils.AreEqual(a2 & b2, r2); + + uint2x4 a3 = uint2x4(181537307, 130347414, 1240828622, 526120460, 695449226, 1477446724, 201628999, 737924014); + uint2x4 b3 = uint2x4(1855189321, 185194029, 810374380, 133197864, 1989578783, 38739182, 387425484, 1690486314); + uint2x4 r3 = uint2x4(177340425, 50384900, 4522188, 122712072, 538087434, 3140, 67404868, 549634602); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void uint2x4_operator_bitwise_and_wide_scalar() + { + uint2x4 a0 = uint2x4(443615469, 490057985, 2042441263, 1524760558, 1405175110, 510212004, 1941875181, 1236735839); + uint b0 = (93423598); + uint2x4 r0 = uint2x4(1114348, 85033216, 26281518, 8488942, 25232710, 67176356, 26247660, 26281806); + TestUtils.AreEqual(a0 & b0, r0); + + uint2x4 a1 = uint2x4(1365509729, 607982857, 650270920, 1249238550, 814629680, 1862276471, 143502472, 861733033); + uint b1 = (428270198); + uint2x4 r1 = uint2x4(285475424, 262144, 8536128, 134529558, 277234224, 150995062, 142909440, 285474848); + TestUtils.AreEqual(a1 & b1, r1); + + uint2x4 a2 = uint2x4(1408932942, 1567715668, 1102952410, 322053683, 1599352836, 208656708, 1272226025, 462670926); + uint b2 = (957693145); + uint2x4 r2 = uint2x4(286268488, 420556880, 18167000, 286270481, 420753408, 134551616, 152314057, 420547656); + TestUtils.AreEqual(a2 & b2, r2); + + uint2x4 a3 = uint2x4(1817145060, 1817277774, 818900583, 772681077, 1630437952, 546018772, 872875431, 1143080525); + uint b3 = (1466722981); + uint2x4 r3 = uint2x4(1145858724, 1145069572, 273443365, 101460005, 1093403136, 524420, 335806629, 1142948357); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void uint2x4_operator_bitwise_and_scalar_wide() + { + uint a0 = (1144543590); + uint2x4 b0 = uint2x4(420346723, 562416448, 1393127318, 1560699552, 851218057, 703880958, 1159378889, 2031211279); + uint2x4 r0 = uint2x4(547170, 18752, 1074284806, 1140867104, 3672064, 3168358, 1142427968, 1074811142); + TestUtils.AreEqual(a0 & b0, r0); + + uint a1 = (1089518981); + uint2x4 b1 = uint2x4(270607307, 1349288930, 520199596, 1763483957, 1248975349, 236938635, 185023291, 1085233038); + uint2x4 r1 = uint2x4(2105729, 1080066432, 40324, 1074831621, 1081121157, 1058177, 14593, 1084233092); + TestUtils.AreEqual(a1 & b1, r1); + + uint a2 = (1845693112); + uint2x4 b2 = uint2x4(946052961, 1436238522, 2042776519, 56356886, 1770159840, 1872339579, 1439201366, 1233066417); + uint2x4 r2 = uint2x4(671287840, 1141047992, 1744964224, 33751056, 1744964256, 1845559864, 1140852752, 1208158384); + TestUtils.AreEqual(a2 & b2, r2); + + uint a3 = (1214109404); + uint2x4 b3 = uint2x4(2255485, 1814885263, 1711986588, 1286898282, 915476451, 1870138851, 372814411, 1623486506); + uint2x4 r3 = uint2x4(16988, 1208799884, 1074321052, 1209303624, 1115840, 1213727936, 1610312, 1078218760); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void uint2x4_operator_bitwise_or_wide_wide() + { + uint2x4 a0 = uint2x4(1731159103, 659068416, 382702471, 1821032196, 1565773438, 1004000514, 948501377, 600951835); + uint2x4 b0 = uint2x4(1583847161, 692672727, 1161585489, 1756207130, 1321374429, 1287357212, 2075767170, 1273513430); + uint2x4 r0 = uint2x4(2138044159, 793370327, 1476391895, 1823457054, 1607720703, 2147473182, 2075786115, 1811533279); + TestUtils.AreEqual(a0 | b0, r0); + + uint2x4 a1 = uint2x4(669346222, 396691477, 2108560248, 2117522137, 330307355, 818676817, 1774459567, 1117506257); + uint2x4 b1 = uint2x4(1610830169, 1316929125, 511625048, 573925879, 1502255628, 1841676448, 1682928938, 1115131952); + uint2x4 r1 = uint2x4(1743223295, 1610595957, 2147407736, 2117598207, 1538957087, 2110637297, 1842315183, 1124063985); + TestUtils.AreEqual(a1 | b1, r1); + + uint2x4 a2 = uint2x4(1254511182, 1017865993, 1883021644, 1140203470, 759288967, 2122744307, 335621148, 715028074); + uint2x4 b2 = uint2x4(1541423910, 1416096228, 188606371, 1041599540, 219545389, 560097663, 1087543661, 936383841); + uint2x4 r2 = uint2x4(1541821294, 2096099309, 2067654639, 2146934782, 760610735, 2145839615, 1423162749, 1071544171); + TestUtils.AreEqual(a2 | b2, r2); + + uint2x4 a3 = uint2x4(543305337, 662107399, 1934997335, 436754869, 1613808671, 362365372, 342908672, 2129231210); + uint2x4 b3 = uint2x4(108816721, 1694053551, 452638547, 1219534055, 85142537, 1027930490, 2126839395, 2030328147); + uint2x4 r3 = uint2x4(645820281, 1744827823, 2080356183, 1522064887, 1697901599, 1037957630, 2129985379, 2146270587); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void uint2x4_operator_bitwise_or_wide_scalar() + { + uint2x4 a0 = uint2x4(961259683, 471103264, 1733389229, 1591585258, 386953869, 1148351449, 1048929715, 1814263250); + uint b0 = (1666102508); + uint2x4 r0 = uint2x4(2068823279, 2136930284, 1734344685, 2145369582, 2002712301, 1736374269, 2144335359, 1869608446); + TestUtils.AreEqual(a0 | b0, r0); + + uint2x4 a1 = uint2x4(860336789, 1227888278, 774029856, 879300408, 1179087439, 797240690, 1977614655, 46921989); + uint b1 = (1637162093); + uint2x4 r1 = uint2x4(1943518973, 1773477631, 1874321005, 1979522941, 1742175855, 1872100735, 1978998143, 1675623789); + TestUtils.AreEqual(a1 | b1, r1); + + uint2x4 a2 = uint2x4(1980838747, 64304104, 313591807, 1393862490, 1890090886, 521303722, 2021379070, 2055963359); + uint b2 = (284225881); + uint2x4 r2 = uint2x4(1995567963, 334885881, 317847551, 1408563035, 1895366623, 536016891, 2029779967, 2063332319); + TestUtils.AreEqual(a2 | b2, r2); + + uint2x4 a3 = uint2x4(1511253082, 1142751163, 1767274359, 1421981808, 1501294791, 485944015, 539526284, 310877895); + uint b3 = (1775629833); + uint2x4 r3 = uint2x4(2077750875, 1843265467, 1775761279, 2111176313, 2046817999, 2113404623, 1778251405, 2077753039); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void uint2x4_operator_bitwise_or_scalar_wide() + { + uint a0 = (1213433101); + uint2x4 b0 = uint2x4(1212928242, 1614462616, 936937728, 764766995, 306352095, 574719481, 1283571271, 2109131012); + uint2x4 r0 = uint2x4(1213978111, 1752940445, 2145094925, 1842867999, 1515425759, 1783858685, 1288945487, 2113391885); + TestUtils.AreEqual(a0 | b0, r0); + + uint a1 = (979469710); + uint2x4 b1 = uint2x4(1348323481, 1407542578, 697517649, 1059093741, 627815046, 418822515, 83214352, 424663473); + uint2x4 r1 = uint2x4(2055064991, 2078664126, 1005832159, 1063386607, 1064023950, 989314559, 1056294302, 997187007); + TestUtils.AreEqual(a1 | b1, r1); + + uint a2 = (447949225); + uint2x4 b2 = uint2x4(527022375, 1947148461, 305251437, 1254601325, 1752329425, 1592402684, 1587055329, 1088734150); + uint2x4 r2 = uint2x4(536590767, 2126457261, 447999469, 1526184941, 2062773753, 1593519101, 1589357545, 1526197231); + TestUtils.AreEqual(a2 | b2, r2); + + uint a3 = (298563808); + uint2x4 b3 = uint2x4(2052547661, 582843231, 656983670, 1944993640, 1081208038, 829763560, 990961386, 547309556); + uint2x4 r3 = uint2x4(2078276845, 872414207, 938213110, 1945092072, 1375468774, 838844392, 1004273386, 836763636); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void uint2x4_operator_bitwise_xor_wide_wide() + { + uint2x4 a0 = uint2x4(1556324760, 207002929, 1843444873, 1632079131, 1460334334, 1607815585, 220623650, 38668553); + uint2x4 b0 = uint2x4(1054997548, 1523759632, 251164872, 110472397, 384031112, 1109163205, 535118981, 179106262); + uint2x4 r0 = uint2x4(1646419380, 1451501345, 1662567489, 1741824470, 1105803126, 499723620, 314783655, 149092575); + TestUtils.AreEqual(a0 ^ b0, r0); + + uint2x4 a1 = uint2x4(47193340, 643663548, 1371932564, 94957188, 700973621, 370621508, 2087573076, 351476570); + uint2x4 b1 = uint2x4(1523031711, 1713313372, 1294118730, 520360641, 1040688781, 1020757245, 1143954843, 1281933464); + uint2x4 r1 = uint2x4(1477935715, 1078104288, 484747486, 447544389, 399484088, 717273273, 943885263, 1486609346); + TestUtils.AreEqual(a1 ^ b1, r1); + + uint2x4 a2 = uint2x4(1340815927, 681577472, 314138777, 446857644, 1368661599, 1672499683, 1259759761, 2049102405); + uint2x4 b2 = uint2x4(175288469, 326874157, 1192052687, 1087083643, 1900865484, 1521193463, 569695524, 1622101483); + uint2x4 r2 = uint2x4(1167690402, 1004255277, 1437869910, 1516836311, 551090579, 958119956, 1793242549, 445489070); + TestUtils.AreEqual(a2 ^ b2, r2); + + uint2x4 a3 = uint2x4(1972524935, 91962333, 1960780785, 1303778459, 960040360, 822786011, 2028027011, 170382968); + uint2x4 b3 = uint2x4(1340735463, 546583617, 1034420616, 262206030, 1834125935, 802756092, 611321886, 316379491); + uint2x4 r3 = uint2x4(981182560, 636424092, 1232544377, 1108797141, 1416333255, 517186087, 1553020061, 419186459); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void uint2x4_operator_bitwise_xor_wide_scalar() + { + uint2x4 a0 = uint2x4(2124666952, 177397845, 574879617, 1937385541, 1136545648, 213863690, 535061373, 289301586); + uint b0 = (493665894); + uint2x4 r0 = uint2x4(1674536494, 402546227, 1060063719, 1846973987, 1590882582, 299103084, 42523931, 206756404); + TestUtils.AreEqual(a0 ^ b0, r0); + + uint2x4 a1 = uint2x4(1305234431, 1308626970, 1267729267, 125659640, 1315625690, 1730088797, 116862046, 375757978); + uint b1 = (353786540); + uint2x4 r1 = uint2x4(1490686291, 1528187574, 1585863135, 309015380, 1534886006, 1913214449, 333543154, 57919030); + TestUtils.AreEqual(a1 ^ b1, r1); + + uint2x4 a2 = uint2x4(491079274, 187129429, 967051293, 549951551, 653124416, 788984, 1479174924, 1680011736); + uint b2 = (191750702); + uint2x4 r2 = uint2x4(371762244, 4897915, 852093491, 732592657, 763363694, 190966742, 1397197090, 1867453430); + TestUtils.AreEqual(a2 ^ b2, r2); + + uint2x4 a3 = uint2x4(447453839, 293394300, 527727631, 529042816, 1382138962, 1206186973, 1059509471, 744733291); + uint b3 = (890841598); + uint2x4 r3 = uint2x4(800240497, 610664066, 711808497, 714187902, 1735978412, 1929239075, 171965729, 427463573); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void uint2x4_operator_bitwise_xor_scalar_wide() + { + uint a0 = (1288453276); + uint2x4 b0 = uint2x4(1077599928, 884741329, 212164516, 1585020328, 152985454, 1775851275, 1416249064, 1309317737); + uint2x4 r0 = uint2x4(217506340, 2020616269, 1080648504, 313868596, 1171416050, 622160791, 413532788, 46573301); + TestUtils.AreEqual(a0 ^ b0, r0); + + uint a1 = (1773918217); + uint2x4 b1 = uint2x4(1509843030, 1206045972, 1154916424, 1947871003, 1774252400, 1946113778, 1079717492, 290620937); + uint2x4 r1 = uint2x4(809875551, 777590045, 762148929, 497155858, 8071545, 440700667, 702609021, 2028559872); + TestUtils.AreEqual(a1 ^ b1, r1); + + uint a2 = (1382343363); + uint2x4 b2 = uint2x4(939045099, 1309568053, 221134131, 885841718, 612068188, 194068085, 1396957881, 573581481); + uint2x4 r2 = uint2x4(1704743464, 476745462, 1598742512, 1722301941, 1981778335, 1509285046, 19333242, 1884605034); + TestUtils.AreEqual(a2 ^ b2, r2); + + uint a3 = (1813817520); + uint2x4 b3 = uint2x4(86594349, 2006985393, 1431761813, 905646837, 1522414781, 192882943, 714832744, 374210759); + uint2x4 r3 = uint2x4(1765145501, 465338881, 961174309, 1508358725, 916626445, 1734574159, 1183306712, 2052237431); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void uint2x4_operator_left_shift() + { + uint2x4 a0 = uint2x4(197771193, 622182602, 1283988958, 1327917304, 473415985, 432425717, 870301196, 2058433484); + int b0 = (1321149625); + uint2x4 r0 = uint2x4(1912602624, 2483027968, 3154116608, 4026531840, 1644167168, 3925868544, 402653184, 2550136832); + TestUtils.AreEqual(a0 << b0, r0); + + uint2x4 a1 = uint2x4(1200694230, 1360008038, 1008296534, 1447702302, 1079614371, 35667343, 1664454606, 2045594989); + int b1 = (1531607705); + uint2x4 r1 = uint2x4(2885681152, 3422552064, 2885681152, 1006632960, 1174405120, 503316480, 2617245696, 3657433088); + TestUtils.AreEqual(a1 << b1, r1); + + uint2x4 a2 = uint2x4(2077023268, 297755411, 1722762487, 1161625759, 37265945, 997793693, 1521705181, 263886278); + int b2 = (592678686); + uint2x4 r2 = uint2x4(0, 3221225472, 3221225472, 3221225472, 1073741824, 1073741824, 1073741824, 2147483648); + TestUtils.AreEqual(a2 << b2, r2); + + uint2x4 a3 = uint2x4(221147365, 230910816, 71403448, 481375728, 1176038816, 1382694875, 1824729613, 1535276688); + int b3 = (2084190583); + uint2x4 r3 = uint2x4(1920991232, 2952790016, 3690987520, 4160749568, 3489660928, 3984588800, 109051904, 1207959552); + TestUtils.AreEqual(a3 << b3, r3); + } + + [TestCompiler] + public static void uint2x4_operator_right_shift() + { + uint2x4 a0 = uint2x4(548167301, 1161338299, 1617625829, 1860731847, 713958715, 196552656, 770466193, 1265099998); + int b0 = (1266801540); + uint2x4 r0 = uint2x4(34260456, 72583643, 101101614, 116295740, 44622419, 12284541, 48154137, 79068749); + TestUtils.AreEqual(a0 >> b0, r0); + + uint2x4 a1 = uint2x4(572763124, 426807581, 2031319045, 701927980, 917785020, 569504877, 185593382, 1102123711); + int b1 = (506619530); + uint2x4 r1 = uint2x4(559338, 416804, 1983710, 685476, 896274, 556157, 181243, 1076292); + TestUtils.AreEqual(a1 >> b1, r1); + + uint2x4 a2 = uint2x4(334005460, 280138733, 1598620011, 1840564178, 736389149, 1279158873, 408822762, 763607760); + int b2 = (1624751550); + uint2x4 r2 = uint2x4(0, 0, 1, 1, 0, 1, 0, 0); + TestUtils.AreEqual(a2 >> b2, r2); + + uint2x4 a3 = uint2x4(348013684, 774126687, 1587054000, 600069797, 29576474, 1880981389, 352174824, 1164508476); + int b3 = (1568185874); + uint2x4 r3 = uint2x4(1327, 2953, 6054, 2289, 112, 7175, 1343, 4442); + TestUtils.AreEqual(a3 >> b3, r3); + } + + [TestCompiler] + public static void uint2x4_operator_bitwise_not() + { + uint2x4 a0 = uint2x4(1403358969, 831360921, 2088190243, 976721016, 878283189, 308994339, 1935567517, 1420884856); + uint2x4 r0 = uint2x4(2891608326, 3463606374, 2206777052, 3318246279, 3416684106, 3985972956, 2359399778, 2874082439); + TestUtils.AreEqual(~a0, r0); + + uint2x4 a1 = uint2x4(472965491, 627580960, 2061524024, 753208488, 2097179283, 1303022493, 664744603, 1289372466); + uint2x4 r1 = uint2x4(3822001804, 3667386335, 2233443271, 3541758807, 2197788012, 2991944802, 3630222692, 3005594829); + TestUtils.AreEqual(~a1, r1); + + uint2x4 a2 = uint2x4(1635981125, 1545651937, 717936457, 1284504687, 1342785385, 869629475, 2045854321, 1282546942); + uint2x4 r2 = uint2x4(2658986170, 2749315358, 3577030838, 3010462608, 2952181910, 3425337820, 2249112974, 3012420353); + TestUtils.AreEqual(~a2, r2); + + uint2x4 a3 = uint2x4(1562433528, 1736570715, 508906058, 2060752880, 1867418756, 388530274, 695179852, 1766938039); + uint2x4 r3 = uint2x4(2732533767, 2558396580, 3786061237, 2234214415, 2427548539, 3906437021, 3599787443, 2528029256); + TestUtils.AreEqual(~a3, r3); + } + + + } +} diff --git a/package/Tests/Tests/Shared/TestUint2x4.gen.cs.meta b/package/Tests/Tests/Shared/TestUint2x4.gen.cs.meta new file mode 100755 index 000000000..7ef0b944e --- /dev/null +++ b/package/Tests/Tests/Shared/TestUint2x4.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 27ff3548fed6aa741b4d1d7cb7a291e2 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/package/Tests/Tests/Shared/TestUint3.gen.cs b/package/Tests/Tests/Shared/TestUint3.gen.cs new file mode 100755 index 000000000..bc4bb8ab4 --- /dev/null +++ b/package/Tests/Tests/Shared/TestUint3.gen.cs @@ -0,0 +1,1346 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using NUnit.Framework; +using static Unity.Mathematics.math; +using Burst.Compiler.IL.Tests; + +namespace Unity.Mathematics.Tests +{ + [TestFixture] + public class TestUint3 + { + [TestCompiler] + public static void uint3_zero() + { + TestUtils.AreEqual(uint3.zero.x, 0u); + TestUtils.AreEqual(uint3.zero.y, 0u); + TestUtils.AreEqual(uint3.zero.z, 0u); + } + + [TestCompiler] + public static void uint3_constructor() + { + uint3 a = new uint3(1, 2, 3); + TestUtils.AreEqual(a.x, 1); + TestUtils.AreEqual(a.y, 2); + TestUtils.AreEqual(a.z, 3); + } + + [TestCompiler] + public static void uint3_scalar_constructor() + { + uint3 a = new uint3(17u); + TestUtils.AreEqual(a.x, 17u); + TestUtils.AreEqual(a.y, 17u); + TestUtils.AreEqual(a.z, 17u); + } + + [TestCompiler] + public static void uint3_static_constructor() + { + uint3 a = uint3(1, 2, 3); + TestUtils.AreEqual(a.x, 1); + TestUtils.AreEqual(a.y, 2); + TestUtils.AreEqual(a.z, 3); + } + + [TestCompiler] + public static void uint3_static_scalar_constructor() + { + uint3 a = uint3(17u); + TestUtils.AreEqual(a.x, 17u); + TestUtils.AreEqual(a.y, 17u); + TestUtils.AreEqual(a.z, 17u); + } + + [TestCompiler] + public static void uint3_operator_equal_wide_wide() + { + uint3 a0 = uint3(790229414, 970783976, 1428432738); + uint3 b0 = uint3(612337669, 1214209108, 2120643427); + bool3 r0 = bool3(false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + uint3 a1 = uint3(1578747135, 1733797753, 2001507228); + uint3 b1 = uint3(295461214, 1510890331, 1893316566); + bool3 r1 = bool3(false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + uint3 a2 = uint3(1446876437, 1777406370, 1426387268); + uint3 b2 = uint3(921816149, 1834958575, 1482011863); + bool3 r2 = bool3(false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + uint3 a3 = uint3(1809275021, 1843770816, 1172185222); + uint3 b3 = uint3(2062852792, 226398742, 770290735); + bool3 r3 = bool3(false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void uint3_operator_equal_wide_scalar() + { + uint3 a0 = uint3(1211464300, 1921862607, 508076684); + uint b0 = (746972502); + bool3 r0 = bool3(false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + uint3 a1 = uint3(1249127920, 746862310, 1733655277); + uint b1 = (1394594555); + bool3 r1 = bool3(false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + uint3 a2 = uint3(1884008277, 795585660, 936027116); + uint b2 = (1682018538); + bool3 r2 = bool3(false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + uint3 a3 = uint3(927605411, 1465584610, 585324157); + uint b3 = (672785749); + bool3 r3 = bool3(false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void uint3_operator_equal_scalar_wide() + { + uint a0 = (1150044438); + uint3 b0 = uint3(233855098, 924242519, 1402948791); + bool3 r0 = bool3(false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + uint a1 = (601381975); + uint3 b1 = uint3(2120518068, 629187703, 1971977031); + bool3 r1 = bool3(false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + uint a2 = (47183124); + uint3 b2 = uint3(1061805787, 1009011238, 312511148); + bool3 r2 = bool3(false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + uint a3 = (1460673064); + uint3 b3 = uint3(737210539, 1737844479, 1892405453); + bool3 r3 = bool3(false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void uint3_operator_not_equal_wide_wide() + { + uint3 a0 = uint3(1660932106, 982847023, 97046264); + uint3 b0 = uint3(107139049, 75478496, 2055495054); + bool3 r0 = bool3(true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + uint3 a1 = uint3(1739517447, 1253499180, 1830584069); + uint3 b1 = uint3(358586687, 942338347, 111564990); + bool3 r1 = bool3(true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + uint3 a2 = uint3(1841470429, 1397841646, 1770890135); + uint3 b2 = uint3(113811950, 948912488, 1080084121); + bool3 r2 = bool3(true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + uint3 a3 = uint3(1906548631, 169082967, 2099271786); + uint3 b3 = uint3(1400504872, 1032134499, 1061123400); + bool3 r3 = bool3(true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void uint3_operator_not_equal_wide_scalar() + { + uint3 a0 = uint3(747758183, 1033001286, 1439973882); + uint b0 = (248693828); + bool3 r0 = bool3(true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + uint3 a1 = uint3(2138928797, 1432672459, 950170763); + uint b1 = (1197845089); + bool3 r1 = bool3(true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + uint3 a2 = uint3(238704450, 727205263, 1640688041); + uint b2 = (2105962247); + bool3 r2 = bool3(true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + uint3 a3 = uint3(276313906, 791998981, 2035077187); + uint b3 = (2126300423); + bool3 r3 = bool3(true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void uint3_operator_not_equal_scalar_wide() + { + uint a0 = (2076921066); + uint3 b0 = uint3(2037494727, 1989050616, 48833929); + bool3 r0 = bool3(true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + uint a1 = (1897435904); + uint3 b1 = uint3(514354517, 1783749164, 364694471); + bool3 r1 = bool3(true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + uint a2 = (754315072); + uint3 b2 = uint3(124108032, 1512967900, 1178825850); + bool3 r2 = bool3(true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + uint a3 = (1854793298); + uint3 b3 = uint3(50286949, 2100802631, 1640811853); + bool3 r3 = bool3(true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void uint3_operator_less_wide_wide() + { + uint3 a0 = uint3(1182186063, 415538999, 1667335818); + uint3 b0 = uint3(524633529, 1032195686, 760723389); + bool3 r0 = bool3(false, true, false); + TestUtils.AreEqual(a0 < b0, r0); + + uint3 a1 = uint3(1566618442, 1166180837, 639095188); + uint3 b1 = uint3(1505751409, 431962172, 1287906509); + bool3 r1 = bool3(false, false, true); + TestUtils.AreEqual(a1 < b1, r1); + + uint3 a2 = uint3(1080836365, 771119973, 928263233); + uint3 b2 = uint3(1560084663, 1450178202, 2066166337); + bool3 r2 = bool3(true, true, true); + TestUtils.AreEqual(a2 < b2, r2); + + uint3 a3 = uint3(789225474, 665243110, 1003542034); + uint3 b3 = uint3(1107069023, 1640077524, 2103263105); + bool3 r3 = bool3(true, true, true); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void uint3_operator_less_wide_scalar() + { + uint3 a0 = uint3(608447185, 818840405, 869219329); + uint b0 = (1491216667); + bool3 r0 = bool3(true, true, true); + TestUtils.AreEqual(a0 < b0, r0); + + uint3 a1 = uint3(2080125385, 1361741203, 1667165786); + uint b1 = (1214500548); + bool3 r1 = bool3(false, false, false); + TestUtils.AreEqual(a1 < b1, r1); + + uint3 a2 = uint3(1615392341, 469591900, 1247103789); + uint b2 = (840091491); + bool3 r2 = bool3(false, true, false); + TestUtils.AreEqual(a2 < b2, r2); + + uint3 a3 = uint3(315321650, 1100560246, 933855388); + uint b3 = (930950514); + bool3 r3 = bool3(true, false, false); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void uint3_operator_less_scalar_wide() + { + uint a0 = (548436837); + uint3 b0 = uint3(282703327, 14370648, 1862117300); + bool3 r0 = bool3(false, false, true); + TestUtils.AreEqual(a0 < b0, r0); + + uint a1 = (1304793311); + uint3 b1 = uint3(826073259, 988910157, 445132446); + bool3 r1 = bool3(false, false, false); + TestUtils.AreEqual(a1 < b1, r1); + + uint a2 = (1139670255); + uint3 b2 = uint3(111349251, 1102440676, 112183144); + bool3 r2 = bool3(false, false, false); + TestUtils.AreEqual(a2 < b2, r2); + + uint a3 = (1594415311); + uint3 b3 = uint3(1890019295, 2098715503, 608933527); + bool3 r3 = bool3(true, true, false); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void uint3_operator_greater_wide_wide() + { + uint3 a0 = uint3(592884447, 2133928932, 918957182); + uint3 b0 = uint3(138737040, 192863971, 1700841444); + bool3 r0 = bool3(true, true, false); + TestUtils.AreEqual(a0 > b0, r0); + + uint3 a1 = uint3(1284069471, 194584707, 739120780); + uint3 b1 = uint3(1044631301, 1391589821, 730837695); + bool3 r1 = bool3(true, false, true); + TestUtils.AreEqual(a1 > b1, r1); + + uint3 a2 = uint3(241654068, 1340158550, 2099542537); + uint3 b2 = uint3(253553987, 2078872742, 910845808); + bool3 r2 = bool3(false, false, true); + TestUtils.AreEqual(a2 > b2, r2); + + uint3 a3 = uint3(1182623667, 1399607274, 789301637); + uint3 b3 = uint3(976047676, 202633078, 1223618940); + bool3 r3 = bool3(true, true, false); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void uint3_operator_greater_wide_scalar() + { + uint3 a0 = uint3(1097138316, 211763648, 1883002501); + uint b0 = (438688675); + bool3 r0 = bool3(true, false, true); + TestUtils.AreEqual(a0 > b0, r0); + + uint3 a1 = uint3(56406996, 1923456111, 1437755186); + uint b1 = (43662641); + bool3 r1 = bool3(true, true, true); + TestUtils.AreEqual(a1 > b1, r1); + + uint3 a2 = uint3(1219010035, 304028799, 893125636); + uint b2 = (2125058448); + bool3 r2 = bool3(false, false, false); + TestUtils.AreEqual(a2 > b2, r2); + + uint3 a3 = uint3(48044515, 1035679270, 577943770); + uint b3 = (711945018); + bool3 r3 = bool3(false, true, false); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void uint3_operator_greater_scalar_wide() + { + uint a0 = (2024896938); + uint3 b0 = uint3(599356784, 185671342, 1932327391); + bool3 r0 = bool3(true, true, true); + TestUtils.AreEqual(a0 > b0, r0); + + uint a1 = (2025591013); + uint3 b1 = uint3(1257191721, 1312388500, 1443698859); + bool3 r1 = bool3(true, true, true); + TestUtils.AreEqual(a1 > b1, r1); + + uint a2 = (779217735); + uint3 b2 = uint3(691047512, 741776730, 732565983); + bool3 r2 = bool3(true, true, true); + TestUtils.AreEqual(a2 > b2, r2); + + uint a3 = (668302204); + uint3 b3 = uint3(1556466996, 858599525, 1896917159); + bool3 r3 = bool3(false, false, false); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void uint3_operator_less_equal_wide_wide() + { + uint3 a0 = uint3(1577248162, 2043073061, 1688380407); + uint3 b0 = uint3(903445031, 2108974565, 210822256); + bool3 r0 = bool3(false, true, false); + TestUtils.AreEqual(a0 <= b0, r0); + + uint3 a1 = uint3(176431985, 223299035, 1502802140); + uint3 b1 = uint3(1281704747, 453681718, 66138830); + bool3 r1 = bool3(true, true, false); + TestUtils.AreEqual(a1 <= b1, r1); + + uint3 a2 = uint3(1691709825, 386789394, 117182003); + uint3 b2 = uint3(1229799377, 1620922595, 1715833766); + bool3 r2 = bool3(false, true, true); + TestUtils.AreEqual(a2 <= b2, r2); + + uint3 a3 = uint3(1665770435, 1958490731, 420032601); + uint3 b3 = uint3(1366430432, 13102000, 46919981); + bool3 r3 = bool3(false, false, false); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void uint3_operator_less_equal_wide_scalar() + { + uint3 a0 = uint3(1722165358, 1219858357, 860410743); + uint b0 = (1688048545); + bool3 r0 = bool3(false, true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + uint3 a1 = uint3(411099660, 1963256951, 212084836); + uint b1 = (348104022); + bool3 r1 = bool3(false, false, true); + TestUtils.AreEqual(a1 <= b1, r1); + + uint3 a2 = uint3(58924407, 1745758438, 532949158); + uint b2 = (1459242706); + bool3 r2 = bool3(true, false, true); + TestUtils.AreEqual(a2 <= b2, r2); + + uint3 a3 = uint3(262559763, 1806172431, 2091514001); + uint b3 = (690091301); + bool3 r3 = bool3(true, false, false); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void uint3_operator_less_equal_scalar_wide() + { + uint a0 = (1777585); + uint3 b0 = uint3(1181030049, 1787703989, 1729760948); + bool3 r0 = bool3(true, true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + uint a1 = (1816537388); + uint3 b1 = uint3(1359786460, 874999193, 1678863148); + bool3 r1 = bool3(false, false, false); + TestUtils.AreEqual(a1 <= b1, r1); + + uint a2 = (1711365839); + uint3 b2 = uint3(762067160, 11953554, 1131583906); + bool3 r2 = bool3(false, false, false); + TestUtils.AreEqual(a2 <= b2, r2); + + uint a3 = (1175393186); + uint3 b3 = uint3(1293698493, 48893340, 66196247); + bool3 r3 = bool3(true, false, false); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void uint3_operator_greater_equal_wide_wide() + { + uint3 a0 = uint3(263000030, 744235661, 1893760267); + uint3 b0 = uint3(1395535146, 1178373944, 1237373760); + bool3 r0 = bool3(false, false, true); + TestUtils.AreEqual(a0 >= b0, r0); + + uint3 a1 = uint3(237248, 1062370984, 1676977687); + uint3 b1 = uint3(1364855321, 600811864, 362060472); + bool3 r1 = bool3(false, true, true); + TestUtils.AreEqual(a1 >= b1, r1); + + uint3 a2 = uint3(816766880, 1089431546, 1394493730); + uint3 b2 = uint3(290870624, 1839067862, 396958580); + bool3 r2 = bool3(true, false, true); + TestUtils.AreEqual(a2 >= b2, r2); + + uint3 a3 = uint3(1176473380, 1193988637, 1703862455); + uint3 b3 = uint3(1336888643, 1019684398, 1697684196); + bool3 r3 = bool3(false, true, true); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void uint3_operator_greater_equal_wide_scalar() + { + uint3 a0 = uint3(2112791350, 1043657935, 101764761); + uint b0 = (1470533736); + bool3 r0 = bool3(true, false, false); + TestUtils.AreEqual(a0 >= b0, r0); + + uint3 a1 = uint3(1529909067, 281734132, 1186600258); + uint b1 = (556026890); + bool3 r1 = bool3(true, false, true); + TestUtils.AreEqual(a1 >= b1, r1); + + uint3 a2 = uint3(815093894, 1604309397, 829548642); + uint b2 = (609211196); + bool3 r2 = bool3(true, true, true); + TestUtils.AreEqual(a2 >= b2, r2); + + uint3 a3 = uint3(244604867, 471843809, 1819986195); + uint b3 = (1419295004); + bool3 r3 = bool3(false, false, true); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void uint3_operator_greater_equal_scalar_wide() + { + uint a0 = (1525542481); + uint3 b0 = uint3(1503244746, 861711266, 817773856); + bool3 r0 = bool3(true, true, true); + TestUtils.AreEqual(a0 >= b0, r0); + + uint a1 = (925984572); + uint3 b1 = uint3(571221723, 683686810, 118252990); + bool3 r1 = bool3(true, true, true); + TestUtils.AreEqual(a1 >= b1, r1); + + uint a2 = (1653952090); + uint3 b2 = uint3(1240253990, 1947039008, 1869136019); + bool3 r2 = bool3(true, false, false); + TestUtils.AreEqual(a2 >= b2, r2); + + uint a3 = (152012637); + uint3 b3 = uint3(1214546726, 917376832, 303549425); + bool3 r3 = bool3(false, false, false); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void uint3_operator_add_wide_wide() + { + uint3 a0 = uint3(2049228671, 1658660009, 491719392); + uint3 b0 = uint3(2088751567, 645762023, 306868786); + uint3 r0 = uint3(4137980238, 2304422032, 798588178); + TestUtils.AreEqual(a0 + b0, r0); + + uint3 a1 = uint3(937013355, 81108663, 1063894558); + uint3 b1 = uint3(4360271, 506047997, 2094559874); + uint3 r1 = uint3(941373626, 587156660, 3158454432); + TestUtils.AreEqual(a1 + b1, r1); + + uint3 a2 = uint3(86954702, 843159721, 698977704); + uint3 b2 = uint3(1634712736, 1601474440, 1586485231); + uint3 r2 = uint3(1721667438, 2444634161, 2285462935); + TestUtils.AreEqual(a2 + b2, r2); + + uint3 a3 = uint3(192867135, 1683407172, 137301303); + uint3 b3 = uint3(908746788, 1812370320, 1247342357); + uint3 r3 = uint3(1101613923, 3495777492, 1384643660); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void uint3_operator_add_wide_scalar() + { + uint3 a0 = uint3(2038218457, 134923711, 875689667); + uint b0 = (2124409227); + uint3 r0 = uint3(4162627684, 2259332938, 3000098894); + TestUtils.AreEqual(a0 + b0, r0); + + uint3 a1 = uint3(1338884463, 340490871, 1067888129); + uint b1 = (997710928); + uint3 r1 = uint3(2336595391, 1338201799, 2065599057); + TestUtils.AreEqual(a1 + b1, r1); + + uint3 a2 = uint3(70433301, 1635971971, 1160398286); + uint b2 = (2003021861); + uint3 r2 = uint3(2073455162, 3638993832, 3163420147); + TestUtils.AreEqual(a2 + b2, r2); + + uint3 a3 = uint3(85446202, 1239387100, 1497676888); + uint b3 = (1068152966); + uint3 r3 = uint3(1153599168, 2307540066, 2565829854); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void uint3_operator_add_scalar_wide() + { + uint a0 = (391092078); + uint3 b0 = uint3(519908870, 851424292, 328314822); + uint3 r0 = uint3(911000948, 1242516370, 719406900); + TestUtils.AreEqual(a0 + b0, r0); + + uint a1 = (135622204); + uint3 b1 = uint3(740923360, 655394201, 1451896269); + uint3 r1 = uint3(876545564, 791016405, 1587518473); + TestUtils.AreEqual(a1 + b1, r1); + + uint a2 = (1781697072); + uint3 b2 = uint3(996031825, 1557774949, 779774940); + uint3 r2 = uint3(2777728897, 3339472021, 2561472012); + TestUtils.AreEqual(a2 + b2, r2); + + uint a3 = (1111541302); + uint3 b3 = uint3(783046445, 1130163944, 288279584); + uint3 r3 = uint3(1894587747, 2241705246, 1399820886); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void uint3_operator_sub_wide_wide() + { + uint3 a0 = uint3(1353441118, 797269833, 659988112); + uint3 b0 = uint3(1332656812, 1827794007, 972557431); + uint3 r0 = uint3(20784306, 3264443122, 3982397977); + TestUtils.AreEqual(a0 - b0, r0); + + uint3 a1 = uint3(56022121, 365847472, 2062899435); + uint3 b1 = uint3(2078233689, 1508184327, 1372307701); + uint3 r1 = uint3(2272755728, 3152630441, 690591734); + TestUtils.AreEqual(a1 - b1, r1); + + uint3 a2 = uint3(1380988474, 799885138, 1306058185); + uint3 b2 = uint3(810327977, 936799885, 71562303); + uint3 r2 = uint3(570660497, 4158052549, 1234495882); + TestUtils.AreEqual(a2 - b2, r2); + + uint3 a3 = uint3(579775276, 1239163824, 344591081); + uint3 b3 = uint3(1418723328, 1971342989, 1226053395); + uint3 r3 = uint3(3456019244, 3562788131, 3413504982); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void uint3_operator_sub_wide_scalar() + { + uint3 a0 = uint3(1176369558, 1934521195, 309452150); + uint b0 = (462232403); + uint3 r0 = uint3(714137155, 1472288792, 4142187043); + TestUtils.AreEqual(a0 - b0, r0); + + uint3 a1 = uint3(1417634074, 1306356714, 1502312334); + uint b1 = (108910717); + uint3 r1 = uint3(1308723357, 1197445997, 1393401617); + TestUtils.AreEqual(a1 - b1, r1); + + uint3 a2 = uint3(1451794815, 87530840, 1913724431); + uint b2 = (281174200); + uint3 r2 = uint3(1170620615, 4101323936, 1632550231); + TestUtils.AreEqual(a2 - b2, r2); + + uint3 a3 = uint3(2041593336, 1119051448, 1590376732); + uint b3 = (557239990); + uint3 r3 = uint3(1484353346, 561811458, 1033136742); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void uint3_operator_sub_scalar_wide() + { + uint a0 = (1691534405); + uint3 b0 = uint3(2022393810, 1612688515, 496689713); + uint3 r0 = uint3(3964107891, 78845890, 1194844692); + TestUtils.AreEqual(a0 - b0, r0); + + uint a1 = (887037586); + uint3 b1 = uint3(2097630964, 374934538, 939035482); + uint3 r1 = uint3(3084373918, 512103048, 4242969400); + TestUtils.AreEqual(a1 - b1, r1); + + uint a2 = (935242277); + uint3 b2 = uint3(1789300421, 264712893, 1231856067); + uint3 r2 = uint3(3440909152, 670529384, 3998353506); + TestUtils.AreEqual(a2 - b2, r2); + + uint a3 = (1818112748); + uint3 b3 = uint3(1428436109, 1258745460, 1077380396); + uint3 r3 = uint3(389676639, 559367288, 740732352); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void uint3_operator_mul_wide_wide() + { + uint3 a0 = uint3(245827027, 208934650, 1019478917); + uint3 b0 = uint3(759663997, 350129201, 477450108); + uint3 r0 = uint3(3662155527, 1402281434, 332447596); + TestUtils.AreEqual(a0 * b0, r0); + + uint3 a1 = uint3(568231809, 877289039, 1585782440); + uint3 b1 = uint3(1635735015, 388710278, 757722665); + uint3 r1 = uint3(2361989735, 2624048730, 1455036648); + TestUtils.AreEqual(a1 * b1, r1); + + uint3 a2 = uint3(2111178729, 1186019069, 571481445); + uint3 b2 = uint3(1509388321, 1841703980, 1826369331); + uint3 r2 = uint3(2128344329, 3700879228, 2640799263); + TestUtils.AreEqual(a2 * b2, r2); + + uint3 a3 = uint3(1570087048, 629447153, 619383734); + uint3 b3 = uint3(1524322467, 1605207974, 428419155); + uint3 r3 = uint3(2093463192, 3087460678, 3161406466); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void uint3_operator_mul_wide_scalar() + { + uint3 a0 = uint3(1762033447, 465343930, 1570757881); + uint b0 = (1476837906); + uint3 r0 = uint3(2981789374, 1326807828, 2156411778); + TestUtils.AreEqual(a0 * b0, r0); + + uint3 a1 = uint3(1326409563, 1356578909, 72749215); + uint b1 = (1824319147); + uint3 r1 = uint3(4042902473, 4058582047, 2167403573); + TestUtils.AreEqual(a1 * b1, r1); + + uint3 a2 = uint3(154616909, 573770299, 1958912969); + uint b2 = (975743632); + uint3 r2 = uint3(7966032, 414773040, 262642448); + TestUtils.AreEqual(a2 * b2, r2); + + uint3 a3 = uint3(971327747, 1324050764, 660611671); + uint b3 = (1818877398); + uint3 r3 = uint3(2347605890, 1927061896, 2981154746); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void uint3_operator_mul_scalar_wide() + { + uint a0 = (99541948); + uint3 b0 = uint3(1764461774, 657072478, 1459784358); + uint3 r0 = uint3(3344568648, 4192918280, 1260585960); + TestUtils.AreEqual(a0 * b0, r0); + + uint a1 = (1610646683); + uint3 b1 = uint3(1632058826, 868441654, 1408757883); + uint3 r1 = uint3(1644073294, 1407050418, 3474851449); + TestUtils.AreEqual(a1 * b1, r1); + + uint a2 = (335917146); + uint3 b2 = uint3(2105124483, 1178393968, 1963904348); + uint3 r2 = uint3(1003330062, 2631063904, 2268033624); + TestUtils.AreEqual(a2 * b2, r2); + + uint a3 = (1409533767); + uint3 b3 = uint3(243286231, 1336308795, 517963367); + uint3 r3 = uint3(108928161, 875895133, 2457018257); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void uint3_operator_div_wide_wide() + { + uint3 a0 = uint3(1590198532, 507812502, 126627032); + uint3 b0 = uint3(1434703236, 911965201, 390415521); + uint3 r0 = uint3(1, 0, 0); + TestUtils.AreEqual(a0 / b0, r0); + + uint3 a1 = uint3(1058247011, 427387861, 290676154); + uint3 b1 = uint3(128746927, 525835375, 816946613); + uint3 r1 = uint3(8, 0, 0); + TestUtils.AreEqual(a1 / b1, r1); + + uint3 a2 = uint3(1829594484, 1127868739, 499016351); + uint3 b2 = uint3(878264647, 146789678, 2089524057); + uint3 r2 = uint3(2, 7, 0); + TestUtils.AreEqual(a2 / b2, r2); + + uint3 a3 = uint3(1341209632, 134906097, 785470242); + uint3 b3 = uint3(254213018, 1916850021, 1737806518); + uint3 r3 = uint3(5, 0, 0); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void uint3_operator_div_wide_scalar() + { + uint3 a0 = uint3(560951562, 1218680769, 375341724); + uint b0 = (947861580); + uint3 r0 = uint3(0, 1, 0); + TestUtils.AreEqual(a0 / b0, r0); + + uint3 a1 = uint3(1613542090, 1397425408, 1349573078); + uint b1 = (1919409166); + uint3 r1 = uint3(0, 0, 0); + TestUtils.AreEqual(a1 / b1, r1); + + uint3 a2 = uint3(524526253, 495895326, 1515313790); + uint b2 = (341995568); + uint3 r2 = uint3(1, 1, 4); + TestUtils.AreEqual(a2 / b2, r2); + + uint3 a3 = uint3(1676971657, 2105094094, 1017891310); + uint b3 = (2131487088); + uint3 r3 = uint3(0, 0, 0); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void uint3_operator_div_scalar_wide() + { + uint a0 = (1161272038); + uint3 b0 = uint3(187325733, 1594107378, 2016183849); + uint3 r0 = uint3(6, 0, 0); + TestUtils.AreEqual(a0 / b0, r0); + + uint a1 = (1589343709); + uint3 b1 = uint3(388768753, 1417077283, 1773486938); + uint3 r1 = uint3(4, 1, 0); + TestUtils.AreEqual(a1 / b1, r1); + + uint a2 = (1154044032); + uint3 b2 = uint3(81831373, 1476877645, 653688843); + uint3 r2 = uint3(14, 0, 1); + TestUtils.AreEqual(a2 / b2, r2); + + uint a3 = (45756703); + uint3 b3 = uint3(631027637, 396671391, 784365696); + uint3 r3 = uint3(0, 0, 0); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void uint3_operator_mod_wide_wide() + { + uint3 a0 = uint3(146150818, 1846543305, 1071447756); + uint3 b0 = uint3(983050390, 771341152, 942375212); + uint3 r0 = uint3(146150818, 303861001, 129072544); + TestUtils.AreEqual(a0 % b0, r0); + + uint3 a1 = uint3(308965362, 659881575, 1002365460); + uint3 b1 = uint3(367361754, 749500619, 750718852); + uint3 r1 = uint3(308965362, 659881575, 251646608); + TestUtils.AreEqual(a1 % b1, r1); + + uint3 a2 = uint3(861198439, 1510617532, 778525078); + uint3 b2 = uint3(2095151755, 88438806, 769227442); + uint3 r2 = uint3(861198439, 7157830, 9297636); + TestUtils.AreEqual(a2 % b2, r2); + + uint3 a3 = uint3(1458458044, 101987897, 1249565173); + uint3 b3 = uint3(647214624, 1026513788, 1544950956); + uint3 r3 = uint3(164028796, 101987897, 1249565173); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void uint3_operator_mod_wide_scalar() + { + uint3 a0 = uint3(164800505, 1062177828, 1898749675); + uint b0 = (883951171); + uint3 r0 = uint3(164800505, 178226657, 130847333); + TestUtils.AreEqual(a0 % b0, r0); + + uint3 a1 = uint3(1701653318, 19002208, 128329633); + uint b1 = (820393245); + uint3 r1 = uint3(60866828, 19002208, 128329633); + TestUtils.AreEqual(a1 % b1, r1); + + uint3 a2 = uint3(1464010899, 405208598, 1982762194); + uint b2 = (896587769); + uint3 r2 = uint3(567423130, 405208598, 189586656); + TestUtils.AreEqual(a2 % b2, r2); + + uint3 a3 = uint3(959236935, 172564850, 1540068445); + uint b3 = (712321026); + uint3 r3 = uint3(246915909, 172564850, 115426393); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void uint3_operator_mod_scalar_wide() + { + uint a0 = (242383789); + uint3 b0 = uint3(740000543, 1556450291, 1104736385); + uint3 r0 = uint3(242383789, 242383789, 242383789); + TestUtils.AreEqual(a0 % b0, r0); + + uint a1 = (437976569); + uint3 b1 = uint3(1911837205, 1507212038, 1906405167); + uint3 r1 = uint3(437976569, 437976569, 437976569); + TestUtils.AreEqual(a1 % b1, r1); + + uint a2 = (247693265); + uint3 b2 = uint3(293460573, 1495295166, 873323603); + uint3 r2 = uint3(247693265, 247693265, 247693265); + TestUtils.AreEqual(a2 % b2, r2); + + uint a3 = (530681233); + uint3 b3 = uint3(1298102643, 2057984657, 1000742091); + uint3 r3 = uint3(530681233, 530681233, 530681233); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void uint3_operator_plus() + { + uint3 a0 = uint3(1643476803, 907898539, 379615839); + uint3 r0 = uint3(1643476803, 907898539, 379615839); + TestUtils.AreEqual(+a0, r0); + + uint3 a1 = uint3(1140483021, 1743199272, 1472881565); + uint3 r1 = uint3(1140483021, 1743199272, 1472881565); + TestUtils.AreEqual(+a1, r1); + + uint3 a2 = uint3(339091479, 1287765427, 849339193); + uint3 r2 = uint3(339091479, 1287765427, 849339193); + TestUtils.AreEqual(+a2, r2); + + uint3 a3 = uint3(174532915, 1566098441, 1145639744); + uint3 r3 = uint3(174532915, 1566098441, 1145639744); + TestUtils.AreEqual(+a3, r3); + } + + [TestCompiler] + public static void uint3_operator_neg() + { + uint3 a0 = uint3(1955022112, 662160019, 370300775); + uint3 r0 = uint3(2339945184, 3632807277, 3924666521); + TestUtils.AreEqual(-a0, r0); + + uint3 a1 = uint3(2141283773, 28153593, 33894270); + uint3 r1 = uint3(2153683523, 4266813703, 4261073026); + TestUtils.AreEqual(-a1, r1); + + uint3 a2 = uint3(505708349, 1636274969, 694995093); + uint3 r2 = uint3(3789258947, 2658692327, 3599972203); + TestUtils.AreEqual(-a2, r2); + + uint3 a3 = uint3(1542206286, 243937487, 341522275); + uint3 r3 = uint3(2752761010, 4051029809, 3953445021); + TestUtils.AreEqual(-a3, r3); + } + + [TestCompiler] + public static void uint3_operator_prefix_inc() + { + uint3 a0 = uint3(864455342, 2035793213, 1275443862); + uint3 r0 = uint3(864455343, 2035793214, 1275443863); + TestUtils.AreEqual(++a0, r0); + + uint3 a1 = uint3(971919915, 446210725, 395072276); + uint3 r1 = uint3(971919916, 446210726, 395072277); + TestUtils.AreEqual(++a1, r1); + + uint3 a2 = uint3(115573442, 432884105, 1208161871); + uint3 r2 = uint3(115573443, 432884106, 1208161872); + TestUtils.AreEqual(++a2, r2); + + uint3 a3 = uint3(1385544935, 831396561, 388229350); + uint3 r3 = uint3(1385544936, 831396562, 388229351); + TestUtils.AreEqual(++a3, r3); + } + + [TestCompiler] + public static void uint3_operator_postfix_inc() + { + uint3 a0 = uint3(1751003569, 2063707595, 1500486291); + uint3 r0 = uint3(1751003569, 2063707595, 1500486291); + TestUtils.AreEqual(a0++, r0); + + uint3 a1 = uint3(969189211, 2028651936, 1643023524); + uint3 r1 = uint3(969189211, 2028651936, 1643023524); + TestUtils.AreEqual(a1++, r1); + + uint3 a2 = uint3(1190630527, 708474528, 177416855); + uint3 r2 = uint3(1190630527, 708474528, 177416855); + TestUtils.AreEqual(a2++, r2); + + uint3 a3 = uint3(1524860667, 375284401, 1580130369); + uint3 r3 = uint3(1524860667, 375284401, 1580130369); + TestUtils.AreEqual(a3++, r3); + } + + [TestCompiler] + public static void uint3_operator_prefix_dec() + { + uint3 a0 = uint3(200904609, 871077500, 968578728); + uint3 r0 = uint3(200904608, 871077499, 968578727); + TestUtils.AreEqual(--a0, r0); + + uint3 a1 = uint3(638967721, 435367037, 1782514098); + uint3 r1 = uint3(638967720, 435367036, 1782514097); + TestUtils.AreEqual(--a1, r1); + + uint3 a2 = uint3(1589827826, 596759698, 1699290403); + uint3 r2 = uint3(1589827825, 596759697, 1699290402); + TestUtils.AreEqual(--a2, r2); + + uint3 a3 = uint3(1758478358, 71237375, 389120307); + uint3 r3 = uint3(1758478357, 71237374, 389120306); + TestUtils.AreEqual(--a3, r3); + } + + [TestCompiler] + public static void uint3_operator_postfix_dec() + { + uint3 a0 = uint3(283970262, 1109329936, 1073216143); + uint3 r0 = uint3(283970262, 1109329936, 1073216143); + TestUtils.AreEqual(a0--, r0); + + uint3 a1 = uint3(649439137, 1174104498, 484207852); + uint3 r1 = uint3(649439137, 1174104498, 484207852); + TestUtils.AreEqual(a1--, r1); + + uint3 a2 = uint3(524156737, 2017728859, 802721301); + uint3 r2 = uint3(524156737, 2017728859, 802721301); + TestUtils.AreEqual(a2--, r2); + + uint3 a3 = uint3(377162390, 1504625034, 590919177); + uint3 r3 = uint3(377162390, 1504625034, 590919177); + TestUtils.AreEqual(a3--, r3); + } + + [TestCompiler] + public static void uint3_operator_bitwise_and_wide_wide() + { + uint3 a0 = uint3(779935043, 1097962163, 1939593304); + uint3 b0 = uint3(307705143, 1710882162, 866836769); + uint3 r0 = uint3(39064835, 1097961522, 864731136); + TestUtils.AreEqual(a0 & b0, r0); + + uint3 a1 = uint3(800599247, 952140918, 782792558); + uint3 b1 = uint3(532490608, 679371720, 1794035877); + uint3 r1 = uint3(263727168, 675283008, 715673636); + TestUtils.AreEqual(a1 & b1, r1); + + uint3 a2 = uint3(1608557706, 396446406, 2039894114); + uint3 b2 = uint3(1439832202, 519529812, 23633139); + uint3 r2 = uint3(1438646410, 379666500, 16781410); + TestUtils.AreEqual(a2 & b2, r2); + + uint3 a3 = uint3(1286974642, 442394124, 1759739564); + uint3 b3 = uint3(1209152681, 646737179, 1255867027); + uint3 r3 = uint3(1209017504, 34366472, 1220739712); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void uint3_operator_bitwise_and_wide_scalar() + { + uint3 a0 = uint3(443615469, 490057985, 2042441263); + uint b0 = (93423598); + uint3 r0 = uint3(1114348, 85033216, 26281518); + TestUtils.AreEqual(a0 & b0, r0); + + uint3 a1 = uint3(1524760558, 510212004, 1941875181); + uint b1 = (1405175110); + uint3 r1 = uint3(1388397894, 306251012, 1400897860); + TestUtils.AreEqual(a1 & b1, r1); + + uint3 a2 = uint3(1236735839, 428270198, 607982857); + uint b2 = (1365509729); + uint3 r2 = uint3(1092879937, 285475424, 2360321); + TestUtils.AreEqual(a2 & b2, r2); + + uint3 a3 = uint3(650270920, 814629680, 1862276471); + uint b3 = (1249238550); + uint3 r3 = uint3(37771264, 279056, 1241519126); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void uint3_operator_bitwise_and_scalar_wide() + { + uint a0 = (1144543590); + uint3 b0 = uint3(420346723, 562416448, 1393127318); + uint3 r0 = uint3(547170, 18752, 1074284806); + TestUtils.AreEqual(a0 & b0, r0); + + uint a1 = (1560699552); + uint3 b1 = uint3(851218057, 703880958, 1159378889); + uint3 r1 = uint3(268698240, 151274144, 1157767808); + TestUtils.AreEqual(a1 & b1, r1); + + uint a2 = (2031211279); + uint3 b2 = uint3(1089518981, 270607307, 1349288930); + uint3 r2 = uint3(1074827525, 268501771, 1342210818); + TestUtils.AreEqual(a2 & b2, r2); + + uint a3 = (520199596); + uint3 b3 = uint3(1763483957, 1248975349, 236938635); + uint3 r3 = uint3(151028004, 167877028, 234947976); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void uint3_operator_bitwise_or_wide_wide() + { + uint3 a0 = uint3(1731159103, 659068416, 382702471); + uint3 b0 = uint3(1583847161, 692672727, 1161585489); + uint3 r0 = uint3(2138044159, 793370327, 1476391895); + TestUtils.AreEqual(a0 | b0, r0); + + uint3 a1 = uint3(1821032196, 1565773438, 1004000514); + uint3 b1 = uint3(1756207130, 1321374429, 1287357212); + uint3 r1 = uint3(1823457054, 1607720703, 2147473182); + TestUtils.AreEqual(a1 | b1, r1); + + uint3 a2 = uint3(948501377, 600951835, 669346222); + uint3 b2 = uint3(2075767170, 1273513430, 1610830169); + uint3 r2 = uint3(2075786115, 1811533279, 1743223295); + TestUtils.AreEqual(a2 | b2, r2); + + uint3 a3 = uint3(396691477, 2108560248, 2117522137); + uint3 b3 = uint3(1316929125, 511625048, 573925879); + uint3 r3 = uint3(1610595957, 2147407736, 2117598207); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void uint3_operator_bitwise_or_wide_scalar() + { + uint3 a0 = uint3(961259683, 471103264, 1733389229); + uint b0 = (1666102508); + uint3 r0 = uint3(2068823279, 2136930284, 1734344685); + TestUtils.AreEqual(a0 | b0, r0); + + uint3 a1 = uint3(1591585258, 1148351449, 1048929715); + uint b1 = (386953869); + uint3 r1 = uint3(1608383471, 1467118557, 1066760127); + TestUtils.AreEqual(a1 | b1, r1); + + uint3 a2 = uint3(1814263250, 1637162093, 1227888278); + uint b2 = (860336789); + uint3 r2 = uint3(2137520087, 1943518973, 2071443095); + TestUtils.AreEqual(a2 | b2, r2); + + uint3 a3 = uint3(774029856, 1179087439, 797240690); + uint b3 = (879300408); + uint3 r3 = uint3(1047252792, 1987018623, 1072557946); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void uint3_operator_bitwise_or_scalar_wide() + { + uint a0 = (1213433101); + uint3 b0 = uint3(1212928242, 1614462616, 936937728); + uint3 r0 = uint3(1213978111, 1752940445, 2145094925); + TestUtils.AreEqual(a0 | b0, r0); + + uint a1 = (764766995); + uint3 b1 = uint3(306352095, 574719481, 1283571271); + uint3 r1 = uint3(1071116255, 802549755, 1838546775); + TestUtils.AreEqual(a1 | b1, r1); + + uint a2 = (2109131012); + uint3 b2 = uint3(979469710, 1348323481, 1407542578); + uint3 r2 = uint3(2146946446, 2113915293, 2146954550); + TestUtils.AreEqual(a2 | b2, r2); + + uint a3 = (697517649); + uint3 b3 = uint3(1059093741, 627815046, 418822515); + uint3 r3 = uint3(1068728061, 771487447, 972554099); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void uint3_operator_bitwise_xor_wide_wide() + { + uint3 a0 = uint3(1556324760, 207002929, 1843444873); + uint3 b0 = uint3(1054997548, 1523759632, 251164872); + uint3 r0 = uint3(1646419380, 1451501345, 1662567489); + TestUtils.AreEqual(a0 ^ b0, r0); + + uint3 a1 = uint3(1632079131, 1460334334, 1607815585); + uint3 b1 = uint3(110472397, 384031112, 1109163205); + uint3 r1 = uint3(1741824470, 1105803126, 499723620); + TestUtils.AreEqual(a1 ^ b1, r1); + + uint3 a2 = uint3(220623650, 38668553, 47193340); + uint3 b2 = uint3(535118981, 179106262, 1523031711); + uint3 r2 = uint3(314783655, 149092575, 1477935715); + TestUtils.AreEqual(a2 ^ b2, r2); + + uint3 a3 = uint3(643663548, 1371932564, 94957188); + uint3 b3 = uint3(1713313372, 1294118730, 520360641); + uint3 r3 = uint3(1078104288, 484747486, 447544389); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void uint3_operator_bitwise_xor_wide_scalar() + { + uint3 a0 = uint3(2124666952, 177397845, 574879617); + uint b0 = (493665894); + uint3 r0 = uint3(1674536494, 402546227, 1060063719); + TestUtils.AreEqual(a0 ^ b0, r0); + + uint3 a1 = uint3(1937385541, 213863690, 535061373); + uint b1 = (1136545648); + uint3 r1 = uint3(818177845, 1325466234, 1549413389); + TestUtils.AreEqual(a1 ^ b1, r1); + + uint3 a2 = uint3(289301586, 353786540, 1308626970); + uint b2 = (1305234431); + uint3 r2 = uint3(1559375789, 1490686291, 63724517); + TestUtils.AreEqual(a2 ^ b2, r2); + + uint3 a3 = uint3(1267729267, 1315625690, 1730088797); + uint b3 = (125659640); + uint3 r3 = uint3(1290627723, 1226289954, 1617061541); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void uint3_operator_bitwise_xor_scalar_wide() + { + uint a0 = (1288453276); + uint3 b0 = uint3(1077599928, 884741329, 212164516); + uint3 r0 = uint3(217506340, 2020616269, 1080648504); + TestUtils.AreEqual(a0 ^ b0, r0); + + uint a1 = (1585020328); + uint3 b1 = uint3(152985454, 1775851275, 1416249064); + uint3 r1 = uint3(1466376902, 933243555, 169034560); + TestUtils.AreEqual(a1 ^ b1, r1); + + uint a2 = (1309317737); + uint3 b2 = uint3(1773918217, 1509843030, 1206045972); + uint3 r2 = uint3(665928288, 401930815, 166221693); + TestUtils.AreEqual(a2 ^ b2, r2); + + uint a3 = (1154916424); + uint3 b3 = uint3(1947871003, 1774252400, 1946113778); + uint3 r3 = uint3(818710355, 756437304, 925497018); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void uint3_operator_left_shift() + { + uint3 a0 = uint3(197771193, 622182602, 1283988958); + int b0 = (1321149625); + uint3 r0 = uint3(1912602624, 2483027968, 3154116608); + TestUtils.AreEqual(a0 << b0, r0); + + uint3 a1 = uint3(1327917304, 432425717, 870301196); + int b1 = (473415985); + uint3 r1 = uint3(3522166784, 2515140608, 2081947648); + TestUtils.AreEqual(a1 << b1, r1); + + uint3 a2 = uint3(2058433484, 1531607705, 1360008038); + int b2 = (1200694230); + uint3 r2 = uint3(4076863488, 2789212160, 3649044480); + TestUtils.AreEqual(a2 << b2, r2); + + uint3 a3 = uint3(1008296534, 1079614371, 35667343); + int b3 = (1447702302); + uint3 r3 = uint3(2147483648, 3221225472, 3221225472); + TestUtils.AreEqual(a3 << b3, r3); + } + + [TestCompiler] + public static void uint3_operator_right_shift() + { + uint3 a0 = uint3(548167301, 1161338299, 1617625829); + int b0 = (1266801540); + uint3 r0 = uint3(34260456, 72583643, 101101614); + TestUtils.AreEqual(a0 >> b0, r0); + + uint3 a1 = uint3(1860731847, 196552656, 770466193); + int b1 = (713958715); + uint3 r1 = uint3(13, 1, 5); + TestUtils.AreEqual(a1 >> b1, r1); + + uint3 a2 = uint3(1265099998, 506619530, 426807581); + int b2 = (572763124); + uint3 r2 = uint3(1206, 483, 407); + TestUtils.AreEqual(a2 >> b2, r2); + + uint3 a3 = uint3(2031319045, 917785020, 569504877); + int b3 = (701927980); + uint3 r3 = uint3(495927, 224068, 139039); + TestUtils.AreEqual(a3 >> b3, r3); + } + + [TestCompiler] + public static void uint3_operator_bitwise_not() + { + uint3 a0 = uint3(1403358969, 831360921, 2088190243); + uint3 r0 = uint3(2891608326, 3463606374, 2206777052); + TestUtils.AreEqual(~a0, r0); + + uint3 a1 = uint3(976721016, 308994339, 1935567517); + uint3 r1 = uint3(3318246279, 3985972956, 2359399778); + TestUtils.AreEqual(~a1, r1); + + uint3 a2 = uint3(1420884856, 771711426, 627580960); + uint3 r2 = uint3(2874082439, 3523255869, 3667386335); + TestUtils.AreEqual(~a2, r2); + + uint3 a3 = uint3(2061524024, 2097179283, 1303022493); + uint3 r3 = uint3(2233443271, 2197788012, 2991944802); + TestUtils.AreEqual(~a3, r3); + } + + [TestCompiler] + public static void uint3_shuffle_result_1() + { + uint3 a = uint3(0, 1, 2); + uint3 b = uint3(3, 4, 5); + + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftX), (0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftY), (1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftZ), (2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX), (3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY), (4)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ), (5)); + } + + [TestCompiler] + public static void uint3_shuffle_result_2() + { + uint3 a = uint3(0, 1, 2); + uint3 b = uint3(3, 4, 5); + + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.RightY), uint2(4, 4)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.RightX), uint2(4, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftY, ShuffleComponent.RightX), uint2(1, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ, ShuffleComponent.LeftZ), uint2(5, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ, ShuffleComponent.LeftY), uint2(5, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftY, ShuffleComponent.LeftZ), uint2(1, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.LeftZ), uint2(3, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ, ShuffleComponent.LeftX), uint2(5, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ, ShuffleComponent.RightZ), uint2(5, 5)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.LeftY), uint2(4, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.RightZ), uint2(4, 5)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ, ShuffleComponent.LeftX), uint2(5, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.RightX), uint2(4, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ, ShuffleComponent.RightY), uint2(5, 4)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.LeftX), uint2(3, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftY, ShuffleComponent.LeftZ), uint2(1, 2)); + } + + [TestCompiler] + public static void uint3_shuffle_result_3() + { + uint3 a = uint3(0, 1, 2); + uint3 b = uint3(3, 4, 5); + + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftY, ShuffleComponent.RightZ, ShuffleComponent.RightX), uint3(1, 5, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.LeftX, ShuffleComponent.LeftZ), uint3(4, 0, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftZ, ShuffleComponent.RightZ, ShuffleComponent.RightX), uint3(2, 5, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.LeftX, ShuffleComponent.LeftY), uint3(4, 0, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ, ShuffleComponent.RightY, ShuffleComponent.LeftZ), uint3(5, 4, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftZ, ShuffleComponent.LeftX, ShuffleComponent.LeftY), uint3(2, 0, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftZ, ShuffleComponent.RightY, ShuffleComponent.RightX), uint3(2, 4, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftZ, ShuffleComponent.LeftY, ShuffleComponent.RightZ), uint3(2, 1, 5)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.RightY, ShuffleComponent.RightZ), uint3(4, 4, 5)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.RightX, ShuffleComponent.LeftY), uint3(4, 3, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ, ShuffleComponent.RightZ, ShuffleComponent.LeftX), uint3(5, 5, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ, ShuffleComponent.LeftY, ShuffleComponent.RightX), uint3(5, 1, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.LeftY, ShuffleComponent.RightZ), uint3(4, 1, 5)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftZ, ShuffleComponent.RightX, ShuffleComponent.RightY), uint3(2, 3, 4)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.LeftX, ShuffleComponent.RightY), uint3(4, 0, 4)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.LeftX, ShuffleComponent.RightZ), uint3(4, 0, 5)); + } + + [TestCompiler] + public static void uint3_shuffle_result_4() + { + uint3 a = uint3(0, 1, 2); + uint3 b = uint3(3, 4, 5); + + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftY, ShuffleComponent.LeftZ, ShuffleComponent.RightX, ShuffleComponent.LeftY), uint4(1, 2, 3, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.LeftZ, ShuffleComponent.RightZ, ShuffleComponent.RightY), uint4(4, 2, 5, 4)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.RightY, ShuffleComponent.RightZ, ShuffleComponent.LeftY), uint4(4, 4, 5, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.RightX, ShuffleComponent.LeftY, ShuffleComponent.LeftY), uint4(3, 3, 1, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.LeftY, ShuffleComponent.LeftY, ShuffleComponent.LeftX), uint4(4, 1, 1, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.RightY, ShuffleComponent.RightX, ShuffleComponent.RightZ), uint4(3, 4, 3, 5)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftY, ShuffleComponent.RightZ, ShuffleComponent.LeftX, ShuffleComponent.RightZ), uint4(1, 5, 0, 5)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.LeftX, ShuffleComponent.LeftX, ShuffleComponent.LeftX), uint4(4, 0, 0, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.RightZ, ShuffleComponent.LeftZ, ShuffleComponent.LeftX), uint4(3, 5, 2, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.RightX, ShuffleComponent.LeftY, ShuffleComponent.RightX), uint4(4, 3, 1, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftX, ShuffleComponent.LeftZ, ShuffleComponent.RightZ, ShuffleComponent.LeftX), uint4(0, 2, 5, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftY, ShuffleComponent.RightY, ShuffleComponent.RightZ, ShuffleComponent.RightZ), uint4(1, 4, 5, 5)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftZ, ShuffleComponent.RightX, ShuffleComponent.LeftY, ShuffleComponent.RightX), uint4(2, 3, 1, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.LeftX, ShuffleComponent.LeftY, ShuffleComponent.LeftZ), uint4(3, 0, 1, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ, ShuffleComponent.RightX, ShuffleComponent.LeftX, ShuffleComponent.RightY), uint4(5, 3, 0, 4)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftZ, ShuffleComponent.RightZ, ShuffleComponent.LeftX, ShuffleComponent.RightY), uint4(2, 5, 0, 4)); + } + + + } +} diff --git a/package/Tests/Tests/Shared/TestUint3.gen.cs.meta b/package/Tests/Tests/Shared/TestUint3.gen.cs.meta new file mode 100755 index 000000000..1fb2cc260 --- /dev/null +++ b/package/Tests/Tests/Shared/TestUint3.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 1e540f901d21a5c4c94afaaa341f0eba +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/package/Tests/Tests/Shared/TestUint3x2.gen.cs b/package/Tests/Tests/Shared/TestUint3x2.gen.cs new file mode 100755 index 000000000..6eab9de08 --- /dev/null +++ b/package/Tests/Tests/Shared/TestUint3x2.gen.cs @@ -0,0 +1,1227 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using NUnit.Framework; +using static Unity.Mathematics.math; +using Burst.Compiler.IL.Tests; + +namespace Unity.Mathematics.Tests +{ + [TestFixture] + public class TestUint3x2 + { + [TestCompiler] + public static void uint3x2_zero() + { + TestUtils.AreEqual(uint3x2.zero.c0.x, 0u); + TestUtils.AreEqual(uint3x2.zero.c0.y, 0u); + TestUtils.AreEqual(uint3x2.zero.c0.z, 0u); + TestUtils.AreEqual(uint3x2.zero.c1.x, 0u); + TestUtils.AreEqual(uint3x2.zero.c1.y, 0u); + TestUtils.AreEqual(uint3x2.zero.c1.z, 0u); + } + + [TestCompiler] + public static void uint3x2_operator_equal_wide_wide() + { + uint3x2 a0 = uint3x2(790229414, 970783976, 1428432738, 1578747135, 1733797753, 2001507228); + uint3x2 b0 = uint3x2(612337669, 1214209108, 2120643427, 295461214, 1510890331, 1893316566); + bool3x2 r0 = bool3x2(false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + uint3x2 a1 = uint3x2(1446876437, 1777406370, 1426387268, 1809275021, 1843770816, 1172185222); + uint3x2 b1 = uint3x2(921816149, 1834958575, 1482011863, 2062852792, 226398742, 770290735); + bool3x2 r1 = bool3x2(false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + uint3x2 a2 = uint3x2(1469608940, 869874758, 458603090, 581282460, 1948324909, 1129078206); + uint3x2 b2 = uint3x2(36812057, 543224481, 1565350150, 1909926604, 1619900436, 1849990483); + bool3x2 r2 = bool3x2(false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + uint3x2 a3 = uint3x2(1638391029, 1135553683, 2079295200, 576232476, 608208235, 11172509); + uint3x2 b3 = uint3x2(1261604411, 161864811, 843379453, 1780425458, 215681636, 2123130580); + bool3x2 r3 = bool3x2(false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void uint3x2_operator_equal_wide_scalar() + { + uint3x2 a0 = uint3x2(1211464300, 1921862607, 508076684, 1249127920, 1394594555, 746862310); + uint b0 = (746972502); + bool3x2 r0 = bool3x2(false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + uint3x2 a1 = uint3x2(1733655277, 1682018538, 795585660, 936027116, 927605411, 672785749); + uint b1 = (1884008277); + bool3x2 r1 = bool3x2(false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + uint3x2 a2 = uint3x2(1465584610, 404448210, 969511077, 442746747, 1772925698, 1884034177); + uint b2 = (585324157); + bool3x2 r2 = bool3x2(false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + uint3x2 a3 = uint3x2(451512860, 1370577708, 597010220, 1249636005, 211986678, 1305479811); + uint b3 = (425476075); + bool3x2 r3 = bool3x2(false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void uint3x2_operator_equal_scalar_wide() + { + uint a0 = (1150044438); + uint3x2 b0 = uint3x2(233855098, 924242519, 1402948791, 601381975, 2120518068, 629187703); + bool3x2 r0 = bool3x2(false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + uint a1 = (1971977031); + uint3x2 b1 = uint3x2(47183124, 1061805787, 1009011238, 312511148, 1460673064, 737210539); + bool3x2 r1 = bool3x2(false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + uint a2 = (1737844479); + uint3x2 b2 = uint3x2(1892405453, 2133024000, 455818693, 2003197687, 1276241219, 534746610); + bool3x2 r2 = bool3x2(false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + uint a3 = (559824292); + uint3x2 b3 = uint3x2(1758388240, 1023494292, 719963017, 1883763832, 597498209, 367814403); + bool3x2 r3 = bool3x2(false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void uint3x2_operator_not_equal_wide_wide() + { + uint3x2 a0 = uint3x2(1660932106, 982847023, 97046264, 1739517447, 1253499180, 1830584069); + uint3x2 b0 = uint3x2(107139049, 75478496, 2055495054, 358586687, 942338347, 111564990); + bool3x2 r0 = bool3x2(true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + uint3x2 a1 = uint3x2(1841470429, 1397841646, 1770890135, 1906548631, 169082967, 2099271786); + uint3x2 b1 = uint3x2(113811950, 948912488, 1080084121, 1400504872, 1032134499, 1061123400); + bool3x2 r1 = bool3x2(true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + uint3x2 a2 = uint3x2(1909317609, 46519139, 1433204003, 931492669, 670504132, 1551558665); + uint3x2 b2 = uint3x2(221862069, 858950046, 989094643, 2023070999, 1269317127, 531883744); + bool3x2 r2 = bool3x2(true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + uint3x2 a3 = uint3x2(1204055048, 1623586740, 226381077, 1145987803, 644253929, 475189890); + uint3x2 b3 = uint3x2(687761409, 278427731, 296354221, 536981557, 1134676193, 1749879634); + bool3x2 r3 = bool3x2(true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void uint3x2_operator_not_equal_wide_scalar() + { + uint3x2 a0 = uint3x2(747758183, 1033001286, 1439973882, 2138928797, 1197845089, 1432672459); + uint b0 = (248693828); + bool3x2 r0 = bool3x2(true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + uint3x2 a1 = uint3x2(950170763, 2105962247, 727205263, 1640688041, 276313906, 2126300423); + uint b1 = (238704450); + bool3x2 r1 = bool3x2(true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + uint3x2 a2 = uint3x2(791998981, 1171827730, 1412347883, 1622176923, 768370497, 1072798259); + uint b2 = (2035077187); + bool3x2 r2 = bool3x2(true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + uint3x2 a3 = uint3x2(1808712713, 1582645163, 1876273820, 90244766, 30493685, 904014575); + uint b3 = (1497830076); + bool3x2 r3 = bool3x2(true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void uint3x2_operator_not_equal_scalar_wide() + { + uint a0 = (2076921066); + uint3x2 b0 = uint3x2(2037494727, 1989050616, 48833929, 1897435904, 514354517, 1783749164); + bool3x2 r0 = bool3x2(true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + uint a1 = (364694471); + uint3x2 b1 = uint3x2(754315072, 124108032, 1512967900, 1178825850, 1854793298, 50286949); + bool3x2 r1 = bool3x2(true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + uint a2 = (2100802631); + uint3x2 b2 = uint3x2(1640811853, 82110247, 472172806, 266984506, 2003668365, 1826089250); + bool3x2 r2 = bool3x2(true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + uint a3 = (1041416160); + uint3x2 b3 = uint3x2(356140110, 2057237962, 799920703, 1916347720, 510966350, 572038024); + bool3x2 r3 = bool3x2(true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void uint3x2_operator_less_wide_wide() + { + uint3x2 a0 = uint3x2(1182186063, 415538999, 1667335818, 1566618442, 1166180837, 639095188); + uint3x2 b0 = uint3x2(524633529, 1032195686, 760723389, 1505751409, 431962172, 1287906509); + bool3x2 r0 = bool3x2(false, true, false, false, false, true); + TestUtils.AreEqual(a0 < b0, r0); + + uint3x2 a1 = uint3x2(1080836365, 771119973, 928263233, 789225474, 665243110, 1003542034); + uint3x2 b1 = uint3x2(1560084663, 1450178202, 2066166337, 1107069023, 1640077524, 2103263105); + bool3x2 r1 = bool3x2(true, true, true, true, true, true); + TestUtils.AreEqual(a1 < b1, r1); + + uint3x2 a2 = uint3x2(1032480172, 1961336172, 923379558, 21210619, 1089772116, 1707633052); + uint3x2 b2 = uint3x2(684229139, 1234033624, 1278743281, 1953079347, 1228832942, 2082539723); + bool3x2 r2 = bool3x2(false, false, true, true, true, true); + TestUtils.AreEqual(a2 < b2, r2); + + uint3x2 a3 = uint3x2(778986024, 158153146, 336715101, 1839141169, 1706859710, 1928438162); + uint3x2 b3 = uint3x2(1088437561, 1058382082, 207459172, 750531081, 2015788562, 2126542133); + bool3x2 r3 = bool3x2(true, true, false, false, true, true); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void uint3x2_operator_less_wide_scalar() + { + uint3x2 a0 = uint3x2(608447185, 818840405, 869219329, 2080125385, 1214500548, 1361741203); + uint b0 = (1491216667); + bool3x2 r0 = bool3x2(true, true, true, false, true, true); + TestUtils.AreEqual(a0 < b0, r0); + + uint3x2 a1 = uint3x2(1667165786, 840091491, 469591900, 1247103789, 315321650, 930950514); + uint b1 = (1615392341); + bool3x2 r1 = bool3x2(false, true, true, true, true, true); + TestUtils.AreEqual(a1 < b1, r1); + + uint3x2 a2 = uint3x2(1100560246, 908563901, 1127696709, 1286331950, 380753337, 971148054); + uint b2 = (933855388); + bool3x2 r2 = bool3x2(false, true, false, false, true, false); + TestUtils.AreEqual(a2 < b2, r2); + + uint3x2 a3 = uint3x2(1827886929, 1579735991, 689044913, 1960894027, 371987110, 867559111); + uint b3 = (1056649851); + bool3x2 r3 = bool3x2(false, false, true, false, true, true); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void uint3x2_operator_less_scalar_wide() + { + uint a0 = (548436837); + uint3x2 b0 = uint3x2(282703327, 14370648, 1862117300, 1304793311, 826073259, 988910157); + bool3x2 r0 = bool3x2(false, false, true, true, true, true); + TestUtils.AreEqual(a0 < b0, r0); + + uint a1 = (445132446); + uint3x2 b1 = uint3x2(1139670255, 111349251, 1102440676, 112183144, 1594415311, 1890019295); + bool3x2 r1 = bool3x2(true, false, true, false, true, true); + TestUtils.AreEqual(a1 < b1, r1); + + uint a2 = (2098715503); + uint3x2 b2 = uint3x2(608933527, 183989010, 1596056507, 1027318999, 146281093, 358911716); + bool3x2 r2 = bool3x2(false, false, false, false, false, false); + TestUtils.AreEqual(a2 < b2, r2); + + uint a3 = (874278078); + uint3x2 b3 = uint3x2(1106057699, 1256807459, 2111973919, 1736480659, 810406400, 1329939911); + bool3x2 r3 = bool3x2(true, true, true, true, false, true); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void uint3x2_operator_greater_wide_wide() + { + uint3x2 a0 = uint3x2(592884447, 2133928932, 918957182, 1284069471, 194584707, 739120780); + uint3x2 b0 = uint3x2(138737040, 192863971, 1700841444, 1044631301, 1391589821, 730837695); + bool3x2 r0 = bool3x2(true, true, false, true, false, true); + TestUtils.AreEqual(a0 > b0, r0); + + uint3x2 a1 = uint3x2(241654068, 1340158550, 2099542537, 1182623667, 1399607274, 789301637); + uint3x2 b1 = uint3x2(253553987, 2078872742, 910845808, 976047676, 202633078, 1223618940); + bool3x2 r1 = bool3x2(false, false, true, true, true, false); + TestUtils.AreEqual(a1 > b1, r1); + + uint3x2 a2 = uint3x2(180400925, 594688333, 1877031463, 1360073500, 1091782422, 546676424); + uint3x2 b2 = uint3x2(641600530, 1830470354, 1570701388, 1104256103, 1838646932, 740166101); + bool3x2 r2 = bool3x2(false, false, true, true, false, false); + TestUtils.AreEqual(a2 > b2, r2); + + uint3x2 a3 = uint3x2(348221770, 716039145, 458742739, 1365508046, 1523167942, 1574478622); + uint3x2 b3 = uint3x2(1549021845, 1457092873, 1790630950, 907793213, 555122804, 1418910265); + bool3x2 r3 = bool3x2(false, false, false, true, true, true); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void uint3x2_operator_greater_wide_scalar() + { + uint3x2 a0 = uint3x2(1097138316, 211763648, 1883002501, 56406996, 43662641, 1923456111); + uint b0 = (438688675); + bool3x2 r0 = bool3x2(true, false, true, false, false, true); + TestUtils.AreEqual(a0 > b0, r0); + + uint3x2 a1 = uint3x2(1437755186, 2125058448, 304028799, 893125636, 48044515, 711945018); + uint b1 = (1219010035); + bool3x2 r1 = bool3x2(true, true, false, false, false, false); + TestUtils.AreEqual(a1 > b1, r1); + + uint3x2 a2 = uint3x2(1035679270, 572743717, 1016617211, 2063134811, 1577403353, 64009107); + uint b2 = (577943770); + bool3x2 r2 = bool3x2(true, false, true, true, true, false); + TestUtils.AreEqual(a2 > b2, r2); + + uint3x2 a3 = uint3x2(1462961460, 3715845, 689362811, 263973424, 1045140419, 1058332184); + uint b3 = (1143565920); + bool3x2 r3 = bool3x2(true, false, false, false, false, false); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void uint3x2_operator_greater_scalar_wide() + { + uint a0 = (2024896938); + uint3x2 b0 = uint3x2(599356784, 185671342, 1932327391, 2025591013, 1257191721, 1312388500); + bool3x2 r0 = bool3x2(true, true, true, false, true, true); + TestUtils.AreEqual(a0 > b0, r0); + + uint a1 = (1443698859); + uint3x2 b1 = uint3x2(779217735, 691047512, 741776730, 732565983, 668302204, 1556466996); + bool3x2 r1 = bool3x2(true, true, true, true, true, false); + TestUtils.AreEqual(a1 > b1, r1); + + uint a2 = (858599525); + uint3x2 b2 = uint3x2(1896917159, 701542098, 1052151621, 1023307544, 1435392907, 1858177345); + bool3x2 r2 = bool3x2(false, true, false, false, false, false); + TestUtils.AreEqual(a2 > b2, r2); + + uint a3 = (299897686); + uint3x2 b3 = uint3x2(632930355, 1387203601, 483722222, 863042711, 1713088900, 315569296); + bool3x2 r3 = bool3x2(false, false, false, false, false, false); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void uint3x2_operator_less_equal_wide_wide() + { + uint3x2 a0 = uint3x2(1577248162, 2043073061, 1688380407, 176431985, 223299035, 1502802140); + uint3x2 b0 = uint3x2(903445031, 2108974565, 210822256, 1281704747, 453681718, 66138830); + bool3x2 r0 = bool3x2(false, true, false, true, true, false); + TestUtils.AreEqual(a0 <= b0, r0); + + uint3x2 a1 = uint3x2(1691709825, 386789394, 117182003, 1665770435, 1958490731, 420032601); + uint3x2 b1 = uint3x2(1229799377, 1620922595, 1715833766, 1366430432, 13102000, 46919981); + bool3x2 r1 = bool3x2(false, true, true, false, false, false); + TestUtils.AreEqual(a1 <= b1, r1); + + uint3x2 a2 = uint3x2(1251092689, 2011681765, 749743684, 183784440, 1150674774, 1633828822); + uint3x2 b2 = uint3x2(486470891, 1709514236, 2145785285, 854254454, 1273278658, 810263315); + bool3x2 r2 = bool3x2(false, false, true, true, true, false); + TestUtils.AreEqual(a2 <= b2, r2); + + uint3x2 a3 = uint3x2(1719442172, 336047314, 743733218, 1393995865, 1854442658, 1498138884); + uint3x2 b3 = uint3x2(1862773824, 201799013, 974166844, 1320622967, 2058099616, 522102017); + bool3x2 r3 = bool3x2(true, false, true, false, true, false); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void uint3x2_operator_less_equal_wide_scalar() + { + uint3x2 a0 = uint3x2(1722165358, 1219858357, 860410743, 411099660, 348104022, 1963256951); + uint b0 = (1688048545); + bool3x2 r0 = bool3x2(false, true, true, true, true, false); + TestUtils.AreEqual(a0 <= b0, r0); + + uint3x2 a1 = uint3x2(212084836, 1459242706, 1745758438, 532949158, 262559763, 690091301); + uint b1 = (58924407); + bool3x2 r1 = bool3x2(false, false, false, false, false, false); + TestUtils.AreEqual(a1 <= b1, r1); + + uint3x2 a2 = uint3x2(1806172431, 1857173043, 1617221948, 2017733017, 804204255, 981729559); + uint b2 = (2091514001); + bool3x2 r2 = bool3x2(true, true, true, true, true, true); + TestUtils.AreEqual(a2 <= b2, r2); + + uint3x2 a3 = uint3x2(2032949254, 2079225209, 26179915, 238796519, 1917813750, 1258115260); + uint b3 = (910922522); + bool3x2 r3 = bool3x2(false, false, true, true, false, false); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void uint3x2_operator_less_equal_scalar_wide() + { + uint a0 = (1777585); + uint3x2 b0 = uint3x2(1181030049, 1787703989, 1729760948, 1816537388, 1359786460, 874999193); + bool3x2 r0 = bool3x2(true, true, true, true, true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + uint a1 = (1678863148); + uint3x2 b1 = uint3x2(1711365839, 762067160, 11953554, 1131583906, 1175393186, 1293698493); + bool3x2 r1 = bool3x2(true, false, false, false, false, false); + TestUtils.AreEqual(a1 <= b1, r1); + + uint a2 = (48893340); + uint3x2 b2 = uint3x2(66196247, 1958607116, 1576473309, 861890786, 478252419, 957887737); + bool3x2 r2 = bool3x2(true, true, true, true, true, true); + TestUtils.AreEqual(a2 <= b2, r2); + + uint a3 = (117849810); + uint3x2 b3 = uint3x2(1348693584, 105489302, 259034238, 530713566, 601413850, 830430286); + bool3x2 r3 = bool3x2(true, false, true, true, true, true); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void uint3x2_operator_greater_equal_wide_wide() + { + uint3x2 a0 = uint3x2(263000030, 744235661, 1893760267, 237248, 1062370984, 1676977687); + uint3x2 b0 = uint3x2(1395535146, 1178373944, 1237373760, 1364855321, 600811864, 362060472); + bool3x2 r0 = bool3x2(false, false, true, false, true, true); + TestUtils.AreEqual(a0 >= b0, r0); + + uint3x2 a1 = uint3x2(816766880, 1089431546, 1394493730, 1176473380, 1193988637, 1703862455); + uint3x2 b1 = uint3x2(290870624, 1839067862, 396958580, 1336888643, 1019684398, 1697684196); + bool3x2 r1 = bool3x2(true, false, true, false, true, true); + TestUtils.AreEqual(a1 >= b1, r1); + + uint3x2 a2 = uint3x2(1806186947, 1253571980, 589397635, 1951842887, 798931197, 808426484); + uint3x2 b2 = uint3x2(1227300220, 2044269675, 1898323839, 874509380, 1873505472, 1268843918); + bool3x2 r2 = bool3x2(true, false, false, true, false, false); + TestUtils.AreEqual(a2 >= b2, r2); + + uint3x2 a3 = uint3x2(744869638, 1959531616, 207430702, 1533946595, 1148381840, 2011549474); + uint3x2 b3 = uint3x2(1606949562, 1263896445, 1805518202, 1412091359, 1240330374, 1955056253); + bool3x2 r3 = bool3x2(false, true, false, true, false, true); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void uint3x2_operator_greater_equal_wide_scalar() + { + uint3x2 a0 = uint3x2(2112791350, 1043657935, 101764761, 1529909067, 556026890, 281734132); + uint b0 = (1470533736); + bool3x2 r0 = bool3x2(true, false, false, true, false, false); + TestUtils.AreEqual(a0 >= b0, r0); + + uint3x2 a1 = uint3x2(1186600258, 609211196, 1604309397, 829548642, 244604867, 1419295004); + uint b1 = (815093894); + bool3x2 r1 = bool3x2(true, false, true, true, false, true); + TestUtils.AreEqual(a1 >= b1, r1); + + uint3x2 a2 = uint3x2(471843809, 1460027917, 1646290021, 196833647, 1596738181, 1905036391); + uint b2 = (1819986195); + bool3x2 r2 = bool3x2(false, false, false, false, false, true); + TestUtils.AreEqual(a2 >= b2, r2); + + uint3x2 a3 = uint3x2(1771391775, 370941146, 440219668, 1607345862, 1449142607, 1223010129); + uint b3 = (1584946560); + bool3x2 r3 = bool3x2(true, false, false, true, false, false); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void uint3x2_operator_greater_equal_scalar_wide() + { + uint a0 = (1525542481); + uint3x2 b0 = uint3x2(1503244746, 861711266, 817773856, 925984572, 571221723, 683686810); + bool3x2 r0 = bool3x2(true, true, true, true, true, true); + TestUtils.AreEqual(a0 >= b0, r0); + + uint a1 = (118252990); + uint3x2 b1 = uint3x2(1653952090, 1240253990, 1947039008, 1869136019, 152012637, 1214546726); + bool3x2 r1 = bool3x2(false, false, false, false, false, false); + TestUtils.AreEqual(a1 >= b1, r1); + + uint a2 = (917376832); + uint3x2 b2 = uint3x2(303549425, 2111728811, 945321577, 173706579, 625318949, 519443238); + bool3x2 r2 = bool3x2(true, false, false, true, true, true); + TestUtils.AreEqual(a2 >= b2, r2); + + uint a3 = (1583588379); + uint3x2 b3 = uint3x2(1026799433, 1713083717, 394922760, 1216218189, 1336522452, 233894308); + bool3x2 r3 = bool3x2(true, false, true, true, true, true); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void uint3x2_operator_add_wide_wide() + { + uint3x2 a0 = uint3x2(2049228671, 1658660009, 491719392, 937013355, 81108663, 1063894558); + uint3x2 b0 = uint3x2(2088751567, 645762023, 306868786, 4360271, 506047997, 2094559874); + uint3x2 r0 = uint3x2(4137980238, 2304422032, 798588178, 941373626, 587156660, 3158454432); + TestUtils.AreEqual(a0 + b0, r0); + + uint3x2 a1 = uint3x2(86954702, 843159721, 698977704, 192867135, 1683407172, 137301303); + uint3x2 b1 = uint3x2(1634712736, 1601474440, 1586485231, 908746788, 1812370320, 1247342357); + uint3x2 r1 = uint3x2(1721667438, 2444634161, 2285462935, 1101613923, 3495777492, 1384643660); + TestUtils.AreEqual(a1 + b1, r1); + + uint3x2 a2 = uint3x2(2103582820, 526139155, 447937230, 2127411006, 1670579390, 1914969141); + uint3x2 b2 = uint3x2(2043773873, 223363428, 175115707, 985928617, 507662836, 1231457019); + uint3x2 r2 = uint3x2(4147356693, 749502583, 623052937, 3113339623, 2178242226, 3146426160); + TestUtils.AreEqual(a2 + b2, r2); + + uint3x2 a3 = uint3x2(997691756, 857841794, 2129024875, 267535529, 978891383, 657092366); + uint3x2 b3 = uint3x2(776127866, 607782424, 1160366210, 1384832242, 702057048, 703554905); + uint3x2 r3 = uint3x2(1773819622, 1465624218, 3289391085, 1652367771, 1680948431, 1360647271); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void uint3x2_operator_add_wide_scalar() + { + uint3x2 a0 = uint3x2(2038218457, 134923711, 875689667, 1338884463, 997710928, 340490871); + uint b0 = (2124409227); + uint3x2 r0 = uint3x2(4162627684, 2259332938, 3000098894, 3463293690, 3122120155, 2464900098); + TestUtils.AreEqual(a0 + b0, r0); + + uint3x2 a1 = uint3x2(1067888129, 2003021861, 1635971971, 1160398286, 85446202, 1068152966); + uint b1 = (70433301); + uint3x2 r1 = uint3x2(1138321430, 2073455162, 1706405272, 1230831587, 155879503, 1138586267); + TestUtils.AreEqual(a1 + b1, r1); + + uint3x2 a2 = uint3x2(1239387100, 1727477485, 1095438654, 756559204, 1818718931, 658923552); + uint b2 = (1497676888); + uint3x2 r2 = uint3x2(2737063988, 3225154373, 2593115542, 2254236092, 3316395819, 2156600440); + TestUtils.AreEqual(a2 + b2, r2); + + uint3x2 a3 = uint3x2(1610518921, 692843300, 1068593469, 1704776233, 577782260, 736972565); + uint b3 = (1585755398); + uint3x2 r3 = uint3x2(3196274319, 2278598698, 2654348867, 3290531631, 2163537658, 2322727963); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void uint3x2_operator_add_scalar_wide() + { + uint a0 = (391092078); + uint3x2 b0 = uint3x2(519908870, 851424292, 328314822, 135622204, 740923360, 655394201); + uint3x2 r0 = uint3x2(911000948, 1242516370, 719406900, 526714282, 1132015438, 1046486279); + TestUtils.AreEqual(a0 + b0, r0); + + uint a1 = (1451896269); + uint3x2 b1 = uint3x2(1781697072, 996031825, 1557774949, 779774940, 1111541302, 783046445); + uint3x2 r1 = uint3x2(3233593341, 2447928094, 3009671218, 2231671209, 2563437571, 2234942714); + TestUtils.AreEqual(a1 + b1, r1); + + uint a2 = (1130163944); + uint3x2 b2 = uint3x2(288279584, 1397683861, 1636583489, 673263339, 1469300874, 14855965); + uint3x2 r2 = uint3x2(1418443528, 2527847805, 2766747433, 1803427283, 2599464818, 1145019909); + TestUtils.AreEqual(a2 + b2, r2); + + uint a3 = (1116636999); + uint3x2 b3 = uint3x2(1488863300, 1600990886, 190651301, 1307459768, 920085839, 2082229835); + uint3x2 r3 = uint3x2(2605500299, 2717627885, 1307288300, 2424096767, 2036722838, 3198866834); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void uint3x2_operator_sub_wide_wide() + { + uint3x2 a0 = uint3x2(1353441118, 797269833, 659988112, 56022121, 365847472, 2062899435); + uint3x2 b0 = uint3x2(1332656812, 1827794007, 972557431, 2078233689, 1508184327, 1372307701); + uint3x2 r0 = uint3x2(20784306, 3264443122, 3982397977, 2272755728, 3152630441, 690591734); + TestUtils.AreEqual(a0 - b0, r0); + + uint3x2 a1 = uint3x2(1380988474, 799885138, 1306058185, 579775276, 1239163824, 344591081); + uint3x2 b1 = uint3x2(810327977, 936799885, 71562303, 1418723328, 1971342989, 1226053395); + uint3x2 r1 = uint3x2(570660497, 4158052549, 1234495882, 3456019244, 3562788131, 3413504982); + TestUtils.AreEqual(a1 - b1, r1); + + uint3x2 a2 = uint3x2(86359575, 1049709943, 721529513, 1767221271, 7652784, 545192611); + uint3x2 b2 = uint3x2(136565478, 1979903295, 600719425, 837912956, 632054793, 711091688); + uint3x2 r2 = uint3x2(4244761393, 3364773944, 120810088, 929308315, 3670565287, 4129068219); + TestUtils.AreEqual(a2 - b2, r2); + + uint3x2 a3 = uint3x2(176298787, 1477774126, 1426963688, 2032787858, 2059525977, 445200454); + uint3x2 b3 = uint3x2(904695656, 1640069560, 750244414, 1385118097, 1102391291, 1221949855); + uint3x2 r3 = uint3x2(3566570427, 4132671862, 676719274, 647669761, 957134686, 3518217895); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void uint3x2_operator_sub_wide_scalar() + { + uint3x2 a0 = uint3x2(1176369558, 1934521195, 309452150, 1417634074, 108910717, 1306356714); + uint b0 = (462232403); + uint3x2 r0 = uint3x2(714137155, 1472288792, 4142187043, 955401671, 3941645610, 844124311); + TestUtils.AreEqual(a0 - b0, r0); + + uint3x2 a1 = uint3x2(1502312334, 281174200, 87530840, 1913724431, 2041593336, 557239990); + uint b1 = (1451794815); + uint3x2 r1 = uint3x2(50517519, 3124346681, 2930703321, 461929616, 589798521, 3400412471); + TestUtils.AreEqual(a1 - b1, r1); + + uint3x2 a2 = uint3x2(1119051448, 819090189, 816382635, 815920639, 1829033117, 1792801932); + uint b2 = (1590376732); + uint3x2 r2 = uint3x2(3823642012, 3523680753, 3520973199, 3520511203, 238656385, 202425200); + TestUtils.AreEqual(a2 - b2, r2); + + uint3x2 a3 = uint3x2(1113440549, 1277257189, 2092779398, 642236742, 1605250794, 819644478); + uint b3 = (1418937976); + uint3x2 r3 = uint3x2(3989469869, 4153286509, 673841422, 3518266062, 186312818, 3695673798); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void uint3x2_operator_sub_scalar_wide() + { + uint a0 = (1691534405); + uint3x2 b0 = uint3x2(2022393810, 1612688515, 496689713, 887037586, 2097630964, 374934538); + uint3x2 r0 = uint3x2(3964107891, 78845890, 1194844692, 804496819, 3888870737, 1316599867); + TestUtils.AreEqual(a0 - b0, r0); + + uint a1 = (939035482); + uint3x2 b1 = uint3x2(935242277, 1789300421, 264712893, 1231856067, 1818112748, 1428436109); + uint3x2 r1 = uint3x2(3793205, 3444702357, 674322589, 4002146711, 3415890030, 3805566669); + TestUtils.AreEqual(a1 - b1, r1); + + uint a2 = (1258745460); + uint3x2 b2 = uint3x2(1077380396, 1330722719, 518111829, 967128529, 344666254, 1082267918); + uint3x2 r2 = uint3x2(181365064, 4222990037, 740633631, 291616931, 914079206, 176477542); + TestUtils.AreEqual(a2 - b2, r2); + + uint a3 = (907866696); + uint3x2 b3 = uint3x2(1816885123, 460340568, 962154498, 557113461, 1701216709, 1980098777); + uint3x2 r3 = uint3x2(3385948869, 447526128, 4240679494, 350753235, 3501617283, 3222735215); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void uint3x2_operator_mul_wide_wide() + { + uint3x2 a0 = uint3x2(245827027, 208934650, 1019478917, 568231809, 877289039, 1585782440); + uint3x2 b0 = uint3x2(759663997, 350129201, 477450108, 1635735015, 388710278, 757722665); + uint3x2 r0 = uint3x2(3662155527, 1402281434, 332447596, 2361989735, 2624048730, 1455036648); + TestUtils.AreEqual(a0 * b0, r0); + + uint3x2 a1 = uint3x2(2111178729, 1186019069, 571481445, 1570087048, 629447153, 619383734); + uint3x2 b1 = uint3x2(1509388321, 1841703980, 1826369331, 1524322467, 1605207974, 428419155); + uint3x2 r1 = uint3x2(2128344329, 3700879228, 2640799263, 2093463192, 3087460678, 3161406466); + TestUtils.AreEqual(a1 * b1, r1); + + uint3x2 a2 = uint3x2(2055121568, 700402816, 263414349, 187830569, 2048056680, 546694675); + uint3x2 b2 = uint3x2(1460605791, 1968043860, 771161742, 2037340417, 322304267, 651448359); + uint3x2 r2 = uint3x2(990589280, 3356793344, 2953243830, 1156600361, 649177976, 678952165); + TestUtils.AreEqual(a2 * b2, r2); + + uint3x2 a3 = uint3x2(853585367, 933370718, 990212476, 1915885905, 1984212358, 368146234); + uint3x2 b3 = uint3x2(1608326767, 1427155898, 1092185338, 665119139, 223634707, 694718952); + uint3x2 r3 = uint3x2(1063621177, 2683284556, 2152538904, 3721713555, 2642853618, 1626072720); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void uint3x2_operator_mul_wide_scalar() + { + uint3x2 a0 = uint3x2(1762033447, 465343930, 1570757881, 1326409563, 1824319147, 1356578909); + uint b0 = (1476837906); + uint3x2 r0 = uint3x2(2981789374, 1326807828, 2156411778, 4018813542, 4229418502, 2976383114); + TestUtils.AreEqual(a0 * b0, r0); + + uint3x2 a1 = uint3x2(72749215, 975743632, 573770299, 1958912969, 971327747, 1818877398); + uint b1 = (154616909); + uint3x2 r1 = uint3x2(1400257491, 7966032, 499040191, 322676597, 469811687, 3921580382); + TestUtils.AreEqual(a1 * b1, r1); + + uint3x2 a2 = uint3x2(1324050764, 1279757657, 391009467, 1186856590, 890343818, 800117742); + uint b2 = (660611671); + uint3x2 r2 = uint3x2(645718228, 4252425023, 2516558221, 1570790978, 4161587686, 1820172770); + TestUtils.AreEqual(a2 * b2, r2); + + uint3x2 a3 = uint3x2(606927173, 1688964615, 1439447294, 387721300, 1192501703, 1613845584); + uint b3 = (1338014500); + uint3x2 r3 = uint3x2(4040635572, 1134384636, 1352273336, 4065724368, 1766808828, 645024576); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void uint3x2_operator_mul_scalar_wide() + { + uint a0 = (99541948); + uint3x2 b0 = uint3x2(1764461774, 657072478, 1459784358, 1610646683, 1632058826, 868441654); + uint3x2 r0 = uint3x2(3344568648, 4192918280, 1260585960, 1158730452, 4293361240, 3828814248); + TestUtils.AreEqual(a0 * b0, r0); + + uint a1 = (1408757883); + uint3x2 b1 = uint3x2(335917146, 2105124483, 1178393968, 1963904348, 1409533767, 243286231); + uint3x2 r1 = uint3x2(1223039806, 1995624689, 3320276176, 375843636, 858017565, 2027534157); + TestUtils.AreEqual(a1 * b1, r1); + + uint a2 = (1336308795); + uint3x2 b2 = uint3x2(517963367, 1733623488, 459880225, 994616533, 1420531535, 1821413700); + uint3x2 r2 = uint3x2(580046269, 3297097280, 3969951899, 831291671, 3260394293, 3040627372); + TestUtils.AreEqual(a2 * b2, r2); + + uint a3 = (677771573); + uint3x2 b3 = uint3x2(2132626845, 1158827713, 640102997, 944551639, 1323243330, 1186460236); + uint3x2 r3 = uint3x2(4169123457, 1435043573, 698030233, 9173379, 3470328490, 113055164); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void uint3x2_operator_div_wide_wide() + { + uint3x2 a0 = uint3x2(1590198532, 507812502, 126627032, 1058247011, 427387861, 290676154); + uint3x2 b0 = uint3x2(1434703236, 911965201, 390415521, 128746927, 525835375, 816946613); + uint3x2 r0 = uint3x2(1, 0, 0, 8, 0, 0); + TestUtils.AreEqual(a0 / b0, r0); + + uint3x2 a1 = uint3x2(1829594484, 1127868739, 499016351, 1341209632, 134906097, 785470242); + uint3x2 b1 = uint3x2(878264647, 146789678, 2089524057, 254213018, 1916850021, 1737806518); + uint3x2 r1 = uint3x2(2, 7, 0, 5, 0, 0); + TestUtils.AreEqual(a1 / b1, r1); + + uint3x2 a2 = uint3x2(788249865, 1099825433, 1552968283, 1822367139, 1021812060, 1937073018); + uint3x2 b2 = uint3x2(1906634983, 437754923, 825037958, 902508708, 896853614, 49452028); + uint3x2 r2 = uint3x2(0, 2, 1, 2, 1, 39); + TestUtils.AreEqual(a2 / b2, r2); + + uint3x2 a3 = uint3x2(645757349, 1097576782, 1246027674, 1152153253, 1900577195, 172149343); + uint3x2 b3 = uint3x2(1921327824, 787000669, 1032149621, 858558868, 1422112429, 837098844); + uint3x2 r3 = uint3x2(0, 1, 1, 1, 1, 0); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void uint3x2_operator_div_wide_scalar() + { + uint3x2 a0 = uint3x2(560951562, 1218680769, 375341724, 1613542090, 1919409166, 1397425408); + uint b0 = (947861580); + uint3x2 r0 = uint3x2(0, 1, 0, 1, 2, 1); + TestUtils.AreEqual(a0 / b0, r0); + + uint3x2 a1 = uint3x2(1349573078, 341995568, 495895326, 1515313790, 1676971657, 2131487088); + uint b1 = (524526253); + uint3x2 r1 = uint3x2(2, 0, 0, 2, 3, 4); + TestUtils.AreEqual(a1 / b1, r1); + + uint3x2 a2 = uint3x2(2105094094, 542666029, 1646044372, 1447236569, 107215658, 19616726); + uint b2 = (1017891310); + uint3x2 r2 = uint3x2(2, 0, 1, 1, 0, 0); + TestUtils.AreEqual(a2 / b2, r2); + + uint3x2 a3 = uint3x2(896899915, 1249475421, 1486968988, 1738891885, 1919705924, 1244966864); + uint b3 = (707389627); + uint3x2 r3 = uint3x2(1, 1, 2, 2, 2, 1); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void uint3x2_operator_div_scalar_wide() + { + uint a0 = (1161272038); + uint3x2 b0 = uint3x2(187325733, 1594107378, 2016183849, 1589343709, 388768753, 1417077283); + uint3x2 r0 = uint3x2(6, 0, 0, 0, 2, 0); + TestUtils.AreEqual(a0 / b0, r0); + + uint a1 = (1773486938); + uint3x2 b1 = uint3x2(1154044032, 81831373, 1476877645, 653688843, 45756703, 631027637); + uint3x2 r1 = uint3x2(1, 21, 1, 2, 38, 2); + TestUtils.AreEqual(a1 / b1, r1); + + uint a2 = (396671391); + uint3x2 b2 = uint3x2(784365696, 1250594097, 1818363859, 1653451772, 270557729, 48974453); + uint3x2 r2 = uint3x2(0, 0, 0, 0, 1, 8); + TestUtils.AreEqual(a2 / b2, r2); + + uint a3 = (1796936382); + uint3x2 b3 = uint3x2(1427856423, 981056957, 1955700573, 705450043, 1054404890, 351914083); + uint3x2 r3 = uint3x2(1, 1, 0, 2, 1, 5); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void uint3x2_operator_mod_wide_wide() + { + uint3x2 a0 = uint3x2(146150818, 1846543305, 1071447756, 308965362, 659881575, 1002365460); + uint3x2 b0 = uint3x2(983050390, 771341152, 942375212, 367361754, 749500619, 750718852); + uint3x2 r0 = uint3x2(146150818, 303861001, 129072544, 308965362, 659881575, 251646608); + TestUtils.AreEqual(a0 % b0, r0); + + uint3x2 a1 = uint3x2(861198439, 1510617532, 778525078, 1458458044, 101987897, 1249565173); + uint3x2 b1 = uint3x2(2095151755, 88438806, 769227442, 647214624, 1026513788, 1544950956); + uint3x2 r1 = uint3x2(861198439, 7157830, 9297636, 164028796, 101987897, 1249565173); + TestUtils.AreEqual(a1 % b1, r1); + + uint3x2 a2 = uint3x2(938026607, 1692541775, 1518877124, 1806965510, 1325139851, 994457255); + uint3x2 b2 = uint3x2(160166322, 1099108075, 1158422232, 1798905209, 164686701, 327889784); + uint3x2 r2 = uint3x2(137194997, 593433700, 360454892, 8060301, 7646243, 10787903); + TestUtils.AreEqual(a2 % b2, r2); + + uint3x2 a3 = uint3x2(1372400564, 1770508529, 100255877, 452674793, 1545968777, 629019189); + uint3x2 b3 = uint3x2(1082162785, 1213537518, 608481038, 329133821, 1824387961, 1223426748); + uint3x2 r3 = uint3x2(290237779, 556971011, 100255877, 123540972, 1545968777, 629019189); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void uint3x2_operator_mod_wide_scalar() + { + uint3x2 a0 = uint3x2(164800505, 1062177828, 1898749675, 1701653318, 820393245, 19002208); + uint b0 = (883951171); + uint3x2 r0 = uint3x2(164800505, 178226657, 130847333, 817702147, 820393245, 19002208); + TestUtils.AreEqual(a0 % b0, r0); + + uint3x2 a1 = uint3x2(128329633, 896587769, 405208598, 1982762194, 959236935, 712321026); + uint b1 = (1464010899); + uint3x2 r1 = uint3x2(128329633, 896587769, 405208598, 518751295, 959236935, 712321026); + TestUtils.AreEqual(a1 % b1, r1); + + uint3x2 a2 = uint3x2(172564850, 1085897743, 1607489717, 165478511, 647846716, 915707999); + uint b2 = (1540068445); + uint3x2 r2 = uint3x2(172564850, 1085897743, 67421272, 165478511, 647846716, 915707999); + TestUtils.AreEqual(a2 % b2, r2); + + uint3x2 a3 = uint3x2(1602830401, 1084934806, 488509689, 2087820912, 377501313, 1778384846); + uint b3 = (928191283); + uint3x2 r3 = uint3x2(674639118, 156743523, 488509689, 231438346, 377501313, 850193563); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void uint3x2_operator_mod_scalar_wide() + { + uint a0 = (242383789); + uint3x2 b0 = uint3x2(740000543, 1556450291, 1104736385, 437976569, 1911837205, 1507212038); + uint3x2 r0 = uint3x2(242383789, 242383789, 242383789, 242383789, 242383789, 242383789); + TestUtils.AreEqual(a0 % b0, r0); + + uint a1 = (1906405167); + uint3x2 b1 = uint3x2(247693265, 293460573, 1495295166, 873323603, 530681233, 1298102643); + uint3x2 r1 = uint3x2(172552312, 145641729, 411110001, 159757961, 314361468, 608302524); + TestUtils.AreEqual(a1 % b1, r1); + + uint a2 = (2057984657); + uint3x2 b2 = uint3x2(1000742091, 1461372131, 1859742342, 797184687, 821888842, 1083192997); + uint3x2 r2 = uint3x2(56500475, 596612526, 198242315, 463615283, 414206973, 974791660); + TestUtils.AreEqual(a2 % b2, r2); + + uint a3 = (840114986); + uint3x2 b3 = uint3x2(1894865954, 615159964, 1485575122, 2028738, 2122220318, 164578061); + uint3x2 r3 = uint3x2(840114986, 224955022, 840114986, 217454, 840114986, 17224681); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void uint3x2_operator_plus() + { + uint3x2 a0 = uint3x2(1643476803, 907898539, 379615839, 1140483021, 1735287433, 1743199272); + uint3x2 r0 = uint3x2(1643476803, 907898539, 379615839, 1140483021, 1735287433, 1743199272); + TestUtils.AreEqual(+a0, r0); + + uint3x2 a1 = uint3x2(1472881565, 401565897, 1287765427, 849339193, 174532915, 1864850812); + uint3x2 r1 = uint3x2(1472881565, 401565897, 1287765427, 849339193, 174532915, 1864850812); + TestUtils.AreEqual(+a1, r1); + + uint3x2 a2 = uint3x2(1566098441, 1615499926, 2049663954, 1723005749, 409076474, 591286416); + uint3x2 r2 = uint3x2(1566098441, 1615499926, 2049663954, 1723005749, 409076474, 591286416); + TestUtils.AreEqual(+a2, r2); + + uint3x2 a3 = uint3x2(1706631096, 1808261782, 1201290141, 82958939, 308695413, 1575280693); + uint3x2 r3 = uint3x2(1706631096, 1808261782, 1201290141, 82958939, 308695413, 1575280693); + TestUtils.AreEqual(+a3, r3); + } + + [TestCompiler] + public static void uint3x2_operator_neg() + { + uint3x2 a0 = uint3x2(1955022112, 662160019, 370300775, 2141283773, 1004505619, 28153593); + uint3x2 r0 = uint3x2(2339945184, 3632807277, 3924666521, 2153683523, 3290461677, 4266813703); + TestUtils.AreEqual(-a0, r0); + + uint3x2 a1 = uint3x2(33894270, 1115028238, 1636274969, 694995093, 1542206286, 213087293); + uint3x2 r1 = uint3x2(4261073026, 3179939058, 2658692327, 3599972203, 2752761010, 4081880003); + TestUtils.AreEqual(-a1, r1); + + uint3x2 a2 = uint3x2(243937487, 841085242, 574159094, 1687250035, 2057919693, 1175014732); + uint3x2 r2 = uint3x2(4051029809, 3453882054, 3720808202, 2607717261, 2237047603, 3119952564); + TestUtils.AreEqual(-a2, r2); + + uint3x2 a3 = uint3x2(1259809073, 1190569920, 2047955772, 2120729864, 1440774928, 1485596454); + uint3x2 r3 = uint3x2(3035158223, 3104397376, 2247011524, 2174237432, 2854192368, 2809370842); + TestUtils.AreEqual(-a3, r3); + } + + [TestCompiler] + public static void uint3x2_operator_prefix_inc() + { + uint3x2 a0 = uint3x2(864455342, 2035793213, 1275443862, 971919915, 411610189, 446210725); + uint3x2 r0 = uint3x2(864455343, 2035793214, 1275443863, 971919916, 411610190, 446210726); + TestUtils.AreEqual(++a0, r0); + + uint3x2 a1 = uint3x2(395072276, 913293639, 432884105, 1208161871, 1385544935, 1835605516); + uint3x2 r1 = uint3x2(395072277, 913293640, 432884106, 1208161872, 1385544936, 1835605517); + TestUtils.AreEqual(++a1, r1); + + uint3x2 a2 = uint3x2(831396561, 696475402, 1786514683, 993189311, 752093909, 1622410417); + uint3x2 r2 = uint3x2(831396562, 696475403, 1786514684, 993189312, 752093910, 1622410418); + TestUtils.AreEqual(++a2, r2); + + uint3x2 a3 = uint3x2(1398865015, 1705625817, 609525897, 172599489, 504806865, 519296647); + uint3x2 r3 = uint3x2(1398865016, 1705625818, 609525898, 172599490, 504806866, 519296648); + TestUtils.AreEqual(++a3, r3); + } + + [TestCompiler] + public static void uint3x2_operator_postfix_inc() + { + uint3x2 a0 = uint3x2(1751003569, 2063707595, 1500486291, 969189211, 1007848192, 2028651936); + uint3x2 r0 = uint3x2(1751003569, 2063707595, 1500486291, 969189211, 1007848192, 2028651936); + TestUtils.AreEqual(a0++, r0); + + uint3x2 a1 = uint3x2(1643023524, 1396179607, 708474528, 177416855, 1524860667, 1408994706); + uint3x2 r1 = uint3x2(1643023524, 1396179607, 708474528, 177416855, 1524860667, 1408994706); + TestUtils.AreEqual(a1++, r1); + + uint3x2 a2 = uint3x2(375284401, 1676086778, 717006530, 506142468, 732199129, 2026873940); + uint3x2 r2 = uint3x2(375284401, 1676086778, 717006530, 506142468, 732199129, 2026873940); + TestUtils.AreEqual(a2++, r2); + + uint3x2 a3 = uint3x2(130175844, 420613464, 1219979307, 586574160, 357567451, 1468020171); + uint3x2 r3 = uint3x2(130175844, 420613464, 1219979307, 586574160, 357567451, 1468020171); + TestUtils.AreEqual(a3++, r3); + } + + [TestCompiler] + public static void uint3x2_operator_prefix_dec() + { + uint3x2 a0 = uint3x2(200904609, 871077500, 968578728, 638967721, 1995396216, 435367037); + uint3x2 r0 = uint3x2(200904608, 871077499, 968578727, 638967720, 1995396215, 435367036); + TestUtils.AreEqual(--a0, r0); + + uint3x2 a1 = uint3x2(1782514098, 1434377580, 596759698, 1699290403, 1758478358, 1914114460); + uint3x2 r1 = uint3x2(1782514097, 1434377579, 596759697, 1699290402, 1758478357, 1914114459); + TestUtils.AreEqual(--a1, r1); + + uint3x2 a2 = uint3x2(71237375, 1022184392, 1310293956, 356565557, 18299409, 906734601); + uint3x2 r2 = uint3x2(71237374, 1022184391, 1310293955, 356565556, 18299408, 906734600); + TestUtils.AreEqual(--a2, r2); + + uint3x2 a3 = uint3x2(799006218, 1040798388, 1469596990, 1719228297, 220897829, 1454322707); + uint3x2 r3 = uint3x2(799006217, 1040798387, 1469596989, 1719228296, 220897828, 1454322706); + TestUtils.AreEqual(--a3, r3); + } + + [TestCompiler] + public static void uint3x2_operator_postfix_dec() + { + uint3x2 a0 = uint3x2(283970262, 1109329936, 1073216143, 649439137, 1932646215, 1174104498); + uint3x2 r0 = uint3x2(283970262, 1109329936, 1073216143, 649439137, 1932646215, 1174104498); + TestUtils.AreEqual(a0--, r0); + + uint3x2 a1 = uint3x2(484207852, 691209285, 2017728859, 802721301, 377162390, 526366486); + uint3x2 r1 = uint3x2(484207852, 691209285, 2017728859, 802721301, 377162390, 526366486); + TestUtils.AreEqual(a1--, r1); + + uint3x2 a2 = uint3x2(1504625034, 60677868, 1867810045, 2095777993, 670715645, 324944916); + uint3x2 r2 = uint3x2(1504625034, 60677868, 1867810045, 2095777993, 670715645, 324944916); + TestUtils.AreEqual(a2--, r2); + + uint3x2 a3 = uint3x2(242636153, 1316734088, 1030072405, 1751972064, 1868889881, 1726583208); + uint3x2 r3 = uint3x2(242636153, 1316734088, 1030072405, 1751972064, 1868889881, 1726583208); + TestUtils.AreEqual(a3--, r3); + } + + [TestCompiler] + public static void uint3x2_operator_bitwise_and_wide_wide() + { + uint3x2 a0 = uint3x2(779935043, 1097962163, 1939593304, 800599247, 952140918, 782792558); + uint3x2 b0 = uint3x2(307705143, 1710882162, 866836769, 532490608, 679371720, 1794035877); + uint3x2 r0 = uint3x2(39064835, 1097961522, 864731136, 263727168, 675283008, 715673636); + TestUtils.AreEqual(a0 & b0, r0); + + uint3x2 a1 = uint3x2(1608557706, 396446406, 2039894114, 1286974642, 442394124, 1759739564); + uint3x2 b1 = uint3x2(1439832202, 519529812, 23633139, 1209152681, 646737179, 1255867027); + uint3x2 r1 = uint3x2(1438646410, 379666500, 16781410, 1209017504, 34366472, 1220739712); + TestUtils.AreEqual(a1 & b1, r1); + + uint3x2 a2 = uint3x2(233435438, 665207770, 1942050241, 1022352952, 60340400, 329119345); + uint3x2 b2 = uint3x2(1900854122, 413173763, 1409138251, 2087190272, 563439483, 354579077); + uint3x2 r2 = uint3x2(21541162, 10485762, 1405162561, 1013440000, 26222640, 285241857); + TestUtils.AreEqual(a2 & b2, r2); + + uint3x2 a3 = uint3x2(406517382, 1126764634, 343425836, 1957552749, 1624478957, 341972372); + uint3x2 b3 = uint3x2(642224854, 1650432515, 755290290, 902865191, 661389406, 2134212586); + uint3x2 r3 = uint3x2(168582, 1107890178, 67125280, 880844837, 541065292, 337646976); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void uint3x2_operator_bitwise_and_wide_scalar() + { + uint3x2 a0 = uint3x2(443615469, 490057985, 2042441263, 1524760558, 1405175110, 510212004); + uint b0 = (93423598); + uint3x2 r0 = uint3x2(1114348, 85033216, 26281518, 8488942, 25232710, 67176356); + TestUtils.AreEqual(a0 & b0, r0); + + uint3x2 a1 = uint3x2(1941875181, 1365509729, 428270198, 607982857, 650270920, 1249238550); + uint b1 = (1236735839); + uint3x2 r1 = uint3x2(1102446925, 1092879937, 159777366, 3478793, 8523848, 1211438614); + TestUtils.AreEqual(a1 & b1, r1); + + uint3x2 a2 = uint3x2(814629680, 143502472, 861733033, 1408932942, 957693145, 1567715668); + uint b2 = (1862276471); + uint3x2 r2 = uint3x2(536871216, 134218752, 587202593, 1124078662, 687871057, 1291850068); + TestUtils.AreEqual(a2 & b2, r2); + + uint3x2 a3 = uint3x2(1102952410, 1599352836, 208656708, 1272226025, 462670926, 1817145060); + uint b3 = (322053683); + uint3x2 r3 = uint3x2(19932690, 319823872, 2228224, 51388449, 319947778, 140832); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void uint3x2_operator_bitwise_and_scalar_wide() + { + uint a0 = (1144543590); + uint3x2 b0 = uint3x2(420346723, 562416448, 1393127318, 1560699552, 851218057, 703880958); + uint3x2 r0 = uint3x2(547170, 18752, 1074284806, 1140867104, 3672064, 3168358); + TestUtils.AreEqual(a0 & b0, r0); + + uint a1 = (1159378889); + uint3x2 b1 = uint3x2(2031211279, 1089518981, 270607307, 1349288930, 520199596, 1763483957); + uint3x2 r1 = uint3x2(1091605257, 1074836865, 9161, 1074299840, 83924360, 1092133121); + TestUtils.AreEqual(a1 & b1, r1); + + uint a2 = (1248975349); + uint3x2 b2 = uint3x2(236938635, 185023291, 1085233038, 1845693112, 946052961, 1436238522); + uint3x2 r2 = uint3x2(168903041, 167844145, 1075925380, 1241581744, 140613985, 1074872496); + TestUtils.AreEqual(a2 & b2, r2); + + uint a3 = (2042776519); + uint3x2 b3 = uint3x2(56356886, 1770159840, 1872339579, 1439201366, 1233066417, 1214109404); + uint3x2 r3 = uint3x2(21118982, 1770146496, 1769996867, 1371555910, 1229064577, 1212170948); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void uint3x2_operator_bitwise_or_wide_wide() + { + uint3x2 a0 = uint3x2(1731159103, 659068416, 382702471, 1821032196, 1565773438, 1004000514); + uint3x2 b0 = uint3x2(1583847161, 692672727, 1161585489, 1756207130, 1321374429, 1287357212); + uint3x2 r0 = uint3x2(2138044159, 793370327, 1476391895, 1823457054, 1607720703, 2147473182); + TestUtils.AreEqual(a0 | b0, r0); + + uint3x2 a1 = uint3x2(948501377, 600951835, 669346222, 396691477, 2108560248, 2117522137); + uint3x2 b1 = uint3x2(2075767170, 1273513430, 1610830169, 1316929125, 511625048, 573925879); + uint3x2 r1 = uint3x2(2075786115, 1811533279, 1743223295, 1610595957, 2147407736, 2117598207); + TestUtils.AreEqual(a1 | b1, r1); + + uint3x2 a2 = uint3x2(330307355, 818676817, 1774459567, 1117506257, 1254511182, 1017865993); + uint3x2 b2 = uint3x2(1502255628, 1841676448, 1682928938, 1115131952, 1541423910, 1416096228); + uint3x2 r2 = uint3x2(1538957087, 2110637297, 1842315183, 1124063985, 1541821294, 2096099309); + TestUtils.AreEqual(a2 | b2, r2); + + uint3x2 a3 = uint3x2(1883021644, 1140203470, 759288967, 2122744307, 335621148, 715028074); + uint3x2 b3 = uint3x2(188606371, 1041599540, 219545389, 560097663, 1087543661, 936383841); + uint3x2 r3 = uint3x2(2067654639, 2146934782, 760610735, 2145839615, 1423162749, 1071544171); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void uint3x2_operator_bitwise_or_wide_scalar() + { + uint3x2 a0 = uint3x2(961259683, 471103264, 1733389229, 1591585258, 386953869, 1148351449); + uint b0 = (1666102508); + uint3x2 r0 = uint3x2(2068823279, 2136930284, 1734344685, 2145369582, 2002712301, 1736374269); + TestUtils.AreEqual(a0 | b0, r0); + + uint3x2 a1 = uint3x2(1048929715, 860336789, 1637162093, 1227888278, 774029856, 879300408); + uint b1 = (1814263250); + uint3x2 r1 = uint3x2(2124903923, 2137520087, 1840741887, 1832089558, 1847850994, 2087419898); + TestUtils.AreEqual(a1 | b1, r1); + + uint3x2 a2 = uint3x2(1179087439, 1977614655, 46921989, 1980838747, 284225881, 64304104); + uint b2 = (797240690); + uint3x2 r2 = uint3x2(1875378047, 2145709439, 802159991, 2140536699, 1073020283, 802553850); + TestUtils.AreEqual(a2 | b2, r2); + + uint3x2 a3 = uint3x2(313591807, 1890090886, 521303722, 2021379070, 2055963359, 1511253082); + uint b3 = (1393862490); + uint3x2 r3 = uint3x2(1404413951, 1941766110, 1595340794, 2071982078, 2074060767, 1528293210); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void uint3x2_operator_bitwise_or_scalar_wide() + { + uint a0 = (1213433101); + uint3x2 b0 = uint3x2(1212928242, 1614462616, 936937728, 764766995, 306352095, 574719481); + uint3x2 r0 = uint3x2(1213978111, 1752940445, 2145094925, 1842867999, 1515425759, 1783858685); + TestUtils.AreEqual(a0 | b0, r0); + + uint a1 = (1283571271); + uint3x2 b1 = uint3x2(2109131012, 979469710, 1348323481, 1407542578, 697517649, 1059093741); + uint3x2 r1 = uint3x2(2109210439, 2128723919, 1558052575, 1608908663, 1838415447, 2141322991); + TestUtils.AreEqual(a1 | b1, r1); + + uint a2 = (627815046); + uint3x2 b2 = uint3x2(418822515, 83214352, 424663473, 447949225, 527022375, 1947148461); + uint3x2 r2 = uint3x2(1040169975, 637530774, 1030749111, 1073462191, 1064024999, 1970254511); + TestUtils.AreEqual(a2 | b2, r2); + + uint a3 = (305251437); + uint3x2 b3 = uint3x2(1254601325, 1752329425, 1592402684, 1587055329, 1088734150, 298563808); + uint3x2 r3 = uint3x2(1526199917, 2054417661, 1593566973, 1589235437, 1391839215, 335281389); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void uint3x2_operator_bitwise_xor_wide_wide() + { + uint3x2 a0 = uint3x2(1556324760, 207002929, 1843444873, 1632079131, 1460334334, 1607815585); + uint3x2 b0 = uint3x2(1054997548, 1523759632, 251164872, 110472397, 384031112, 1109163205); + uint3x2 r0 = uint3x2(1646419380, 1451501345, 1662567489, 1741824470, 1105803126, 499723620); + TestUtils.AreEqual(a0 ^ b0, r0); + + uint3x2 a1 = uint3x2(220623650, 38668553, 47193340, 643663548, 1371932564, 94957188); + uint3x2 b1 = uint3x2(535118981, 179106262, 1523031711, 1713313372, 1294118730, 520360641); + uint3x2 r1 = uint3x2(314783655, 149092575, 1477935715, 1078104288, 484747486, 447544389); + TestUtils.AreEqual(a1 ^ b1, r1); + + uint3x2 a2 = uint3x2(700973621, 370621508, 2087573076, 351476570, 1340815927, 681577472); + uint3x2 b2 = uint3x2(1040688781, 1020757245, 1143954843, 1281933464, 175288469, 326874157); + uint3x2 r2 = uint3x2(399484088, 717273273, 943885263, 1486609346, 1167690402, 1004255277); + TestUtils.AreEqual(a2 ^ b2, r2); + + uint3x2 a3 = uint3x2(314138777, 446857644, 1368661599, 1672499683, 1259759761, 2049102405); + uint3x2 b3 = uint3x2(1192052687, 1087083643, 1900865484, 1521193463, 569695524, 1622101483); + uint3x2 r3 = uint3x2(1437869910, 1516836311, 551090579, 958119956, 1793242549, 445489070); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void uint3x2_operator_bitwise_xor_wide_scalar() + { + uint3x2 a0 = uint3x2(2124666952, 177397845, 574879617, 1937385541, 1136545648, 213863690); + uint b0 = (493665894); + uint3x2 r0 = uint3x2(1674536494, 402546227, 1060063719, 1846973987, 1590882582, 299103084); + TestUtils.AreEqual(a0 ^ b0, r0); + + uint3x2 a1 = uint3x2(535061373, 1305234431, 353786540, 1308626970, 1267729267, 125659640); + uint b1 = (289301586); + uint3x2 r1 = uint3x2(249169711, 1559375789, 69746430, 1597928520, 1521379105, 373493162); + TestUtils.AreEqual(a1 ^ b1, r1); + + uint3x2 a2 = uint3x2(1315625690, 116862046, 375757978, 491079274, 191750702, 187129429); + uint b2 = (1730088797); + uint3x2 r2 = uint3x2(695588231, 1642603267, 1903858631, 2052737335, 1819471219, 1815630088); + TestUtils.AreEqual(a2 ^ b2, r2); + + uint3x2 a3 = uint3x2(967051293, 653124416, 788984, 1479174924, 1680011736, 447453839); + uint b3 = (549951551); + uint3x2 r3 = uint3x2(425955362, 103447423, 550212039, 2028860211, 1155885543, 980157104); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void uint3x2_operator_bitwise_xor_scalar_wide() + { + uint a0 = (1288453276); + uint3x2 b0 = uint3x2(1077599928, 884741329, 212164516, 1585020328, 152985454, 1775851275); + uint3x2 r0 = uint3x2(217506340, 2020616269, 1080648504, 313868596, 1171416050, 622160791); + TestUtils.AreEqual(a0 ^ b0, r0); + + uint a1 = (1416249064); + uint3x2 b1 = uint3x2(1309317737, 1773918217, 1509843030, 1206045972, 1154916424, 1947871003); + uint3x2 r1 = uint3x2(442541185, 1037166305, 227827390, 327742460, 280796832, 544217587); + TestUtils.AreEqual(a1 ^ b1, r1); + + uint a2 = (1774252400); + uint3x2 b2 = uint3x2(1946113778, 1079717492, 290620937, 1382343363, 939045099, 1309568053); + uint3x2 r2 = uint3x2(440379266, 698081028, 2022864761, 1000608691, 1580745115, 667852101); + TestUtils.AreEqual(a2 ^ b2, r2); + + uint a3 = (221134131); + uint3x2 b3 = uint3x2(885841718, 612068188, 194068085, 1396957881, 573581481, 1813817520); + uint3x2 r3 = uint3x2(971170309, 693458543, 113181510, 1584258954, 790500762, 1630705027); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void uint3x2_operator_left_shift() + { + uint3x2 a0 = uint3x2(197771193, 622182602, 1283988958, 1327917304, 473415985, 432425717); + int b0 = (1321149625); + uint3x2 r0 = uint3x2(1912602624, 2483027968, 3154116608, 4026531840, 1644167168, 3925868544); + TestUtils.AreEqual(a0 << b0, r0); + + uint3x2 a1 = uint3x2(870301196, 1200694230, 1531607705, 1360008038, 1008296534, 1447702302); + int b1 = (2058433484); + uint3x2 r1 = uint3x2(4225810432, 306012160, 2812907520, 20340736, 2519031808, 2733760512); + TestUtils.AreEqual(a1 << b1, r1); + + uint3x2 a2 = uint3x2(1079614371, 1664454606, 2045594989, 2077023268, 592678686, 297755411); + int b2 = (35667343); + uint3x2 r2 = uint3x2(3453059072, 3353804800, 2796978176, 1846673408, 3348037632, 2978578432); + TestUtils.AreEqual(a2 << b2, r2); + + uint3x2 a3 = uint3x2(1722762487, 37265945, 997793693, 1521705181, 263886278, 221147365); + int b3 = (1161625759); + uint3x2 r3 = uint3x2(2147483648, 2147483648, 2147483648, 2147483648, 0, 2147483648); + TestUtils.AreEqual(a3 << b3, r3); + } + + [TestCompiler] + public static void uint3x2_operator_right_shift() + { + uint3x2 a0 = uint3x2(548167301, 1161338299, 1617625829, 1860731847, 713958715, 196552656); + int b0 = (1266801540); + uint3x2 r0 = uint3x2(34260456, 72583643, 101101614, 116295740, 44622419, 12284541); + TestUtils.AreEqual(a0 >> b0, r0); + + uint3x2 a1 = uint3x2(770466193, 572763124, 506619530, 426807581, 2031319045, 701927980); + int b1 = (1265099998); + uint3x2 r1 = uint3x2(0, 0, 0, 0, 1, 0); + TestUtils.AreEqual(a1 >> b1, r1); + + uint3x2 a2 = uint3x2(917785020, 185593382, 1102123711, 334005460, 1624751550, 280138733); + int b2 = (569504877); + uint3x2 r2 = uint3x2(112034, 22655, 134536, 40772, 198333, 34196); + TestUtils.AreEqual(a2 >> b2, r2); + + uint3x2 a3 = uint3x2(1598620011, 736389149, 1279158873, 408822762, 763607760, 348013684); + int b3 = (1840564178); + uint3x2 r3 = uint3x2(6098, 2809, 4879, 1559, 2912, 1327); + TestUtils.AreEqual(a3 >> b3, r3); + } + + [TestCompiler] + public static void uint3x2_operator_bitwise_not() + { + uint3x2 a0 = uint3x2(1403358969, 831360921, 2088190243, 976721016, 878283189, 308994339); + uint3x2 r0 = uint3x2(2891608326, 3463606374, 2206777052, 3318246279, 3416684106, 3985972956); + TestUtils.AreEqual(~a0, r0); + + uint3x2 a1 = uint3x2(1935567517, 472965491, 771711426, 627580960, 2061524024, 753208488); + uint3x2 r1 = uint3x2(2359399778, 3822001804, 3523255869, 3667386335, 2233443271, 3541758807); + TestUtils.AreEqual(~a1, r1); + + uint3x2 a2 = uint3x2(2097179283, 664744603, 1289372466, 1635981125, 1951018596, 1545651937); + uint3x2 r2 = uint3x2(2197788012, 3630222692, 3005594829, 2658986170, 2343948699, 2749315358); + TestUtils.AreEqual(~a2, r2); + + uint3x2 a3 = uint3x2(717936457, 1342785385, 869629475, 2045854321, 1282546942, 1562433528); + uint3x2 r3 = uint3x2(3577030838, 2952181910, 3425337820, 2249112974, 3012420353, 2732533767); + TestUtils.AreEqual(~a3, r3); + } + + + } +} diff --git a/package/Tests/Tests/Shared/TestUint3x2.gen.cs.meta b/package/Tests/Tests/Shared/TestUint3x2.gen.cs.meta new file mode 100755 index 000000000..43cda1bda --- /dev/null +++ b/package/Tests/Tests/Shared/TestUint3x2.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: bede9ed05d973fa43bff7c97121eab82 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/package/Tests/Tests/Shared/TestUint3x3.gen.cs b/package/Tests/Tests/Shared/TestUint3x3.gen.cs new file mode 100755 index 000000000..86e0bb6df --- /dev/null +++ b/package/Tests/Tests/Shared/TestUint3x3.gen.cs @@ -0,0 +1,1244 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using NUnit.Framework; +using static Unity.Mathematics.math; +using Burst.Compiler.IL.Tests; + +namespace Unity.Mathematics.Tests +{ + [TestFixture] + public class TestUint3x3 + { + [TestCompiler] + public static void uint3x3_zero() + { + TestUtils.AreEqual(uint3x3.zero.c0.x, 0u); + TestUtils.AreEqual(uint3x3.zero.c0.y, 0u); + TestUtils.AreEqual(uint3x3.zero.c0.z, 0u); + TestUtils.AreEqual(uint3x3.zero.c1.x, 0u); + TestUtils.AreEqual(uint3x3.zero.c1.y, 0u); + TestUtils.AreEqual(uint3x3.zero.c1.z, 0u); + TestUtils.AreEqual(uint3x3.zero.c2.x, 0u); + TestUtils.AreEqual(uint3x3.zero.c2.y, 0u); + TestUtils.AreEqual(uint3x3.zero.c2.z, 0u); + } + + [TestCompiler] + public static void uint3x3_identity() + { + TestUtils.AreEqual(uint3x3.identity.c0.x, 1u); + TestUtils.AreEqual(uint3x3.identity.c0.y, 0u); + TestUtils.AreEqual(uint3x3.identity.c0.z, 0u); + TestUtils.AreEqual(uint3x3.identity.c1.x, 0u); + TestUtils.AreEqual(uint3x3.identity.c1.y, 1u); + TestUtils.AreEqual(uint3x3.identity.c1.z, 0u); + TestUtils.AreEqual(uint3x3.identity.c2.x, 0u); + TestUtils.AreEqual(uint3x3.identity.c2.y, 0u); + TestUtils.AreEqual(uint3x3.identity.c2.z, 1u); + } + + [TestCompiler] + public static void uint3x3_operator_equal_wide_wide() + { + uint3x3 a0 = uint3x3(790229414, 970783976, 1428432738, 1578747135, 1733797753, 2001507228, 1446876437, 1777406370, 1426387268); + uint3x3 b0 = uint3x3(612337669, 1214209108, 2120643427, 295461214, 1510890331, 1893316566, 921816149, 1834958575, 1482011863); + bool3x3 r0 = bool3x3(false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + uint3x3 a1 = uint3x3(1809275021, 1843770816, 1172185222, 1469608940, 869874758, 458603090, 581282460, 1948324909, 1129078206); + uint3x3 b1 = uint3x3(2062852792, 226398742, 770290735, 36812057, 543224481, 1565350150, 1909926604, 1619900436, 1849990483); + bool3x3 r1 = bool3x3(false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + uint3x3 a2 = uint3x3(1638391029, 1135553683, 2079295200, 576232476, 608208235, 11172509, 1025529486, 2095601864, 193500113); + uint3x3 b2 = uint3x3(1261604411, 161864811, 843379453, 1780425458, 215681636, 2123130580, 708665810, 1902328998, 1808456602); + bool3x3 r2 = bool3x3(false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + uint3x3 a3 = uint3x3(1780908384, 1587636094, 1892083815, 1250768669, 1984341771, 929607871, 2092475304, 1940221590, 196567546); + uint3x3 b3 = uint3x3(563830672, 200493241, 1391620681, 1035522654, 168447603, 91580624, 1974459648, 2074899534, 164782857); + bool3x3 r3 = bool3x3(false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void uint3x3_operator_equal_wide_scalar() + { + uint3x3 a0 = uint3x3(1211464300, 1921862607, 508076684, 1249127920, 1394594555, 746862310, 1733655277, 1884008277, 1682018538); + uint b0 = (746972502); + bool3x3 r0 = bool3x3(false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + uint3x3 a1 = uint3x3(795585660, 927605411, 672785749, 1465584610, 585324157, 404448210, 969511077, 442746747, 1772925698); + uint b1 = (936027116); + bool3x3 r1 = bool3x3(false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + uint3x3 a2 = uint3x3(1884034177, 425476075, 1370577708, 597010220, 1249636005, 211986678, 1305479811, 255635293, 1150443719); + uint b2 = (451512860); + bool3x3 r2 = bool3x3(false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + uint3x3 a3 = uint3x3(177122433, 1442445694, 667984966, 1684122010, 1962874832, 172230876, 496695881, 955604291, 872759249); + uint b3 = (511346787); + bool3x3 r3 = bool3x3(false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void uint3x3_operator_equal_scalar_wide() + { + uint a0 = (1150044438); + uint3x3 b0 = uint3x3(233855098, 924242519, 1402948791, 601381975, 2120518068, 629187703, 1971977031, 47183124, 1061805787); + bool3x3 r0 = bool3x3(false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + uint a1 = (1009011238); + uint3x3 b1 = uint3x3(312511148, 1460673064, 737210539, 1737844479, 1892405453, 2133024000, 455818693, 2003197687, 1276241219); + bool3x3 r1 = bool3x3(false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + uint a2 = (534746610); + uint3x3 b2 = uint3x3(559824292, 1758388240, 1023494292, 719963017, 1883763832, 597498209, 367814403, 1839429063, 223575614); + bool3x3 r2 = bool3x3(false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + uint a3 = (79701214); + uint3x3 b3 = uint3x3(1699606118, 759455864, 2017599457, 1395605233, 1191785903, 1156248212, 338891967, 61410415, 1576985758); + bool3x3 r3 = bool3x3(false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void uint3x3_operator_not_equal_wide_wide() + { + uint3x3 a0 = uint3x3(1660932106, 982847023, 97046264, 1739517447, 1253499180, 1830584069, 1841470429, 1397841646, 1770890135); + uint3x3 b0 = uint3x3(107139049, 75478496, 2055495054, 358586687, 942338347, 111564990, 113811950, 948912488, 1080084121); + bool3x3 r0 = bool3x3(true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + uint3x3 a1 = uint3x3(1906548631, 169082967, 2099271786, 1909317609, 46519139, 1433204003, 931492669, 670504132, 1551558665); + uint3x3 b1 = uint3x3(1400504872, 1032134499, 1061123400, 221862069, 858950046, 989094643, 2023070999, 1269317127, 531883744); + bool3x3 r1 = bool3x3(true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + uint3x3 a2 = uint3x3(1204055048, 1623586740, 226381077, 1145987803, 644253929, 475189890, 922313145, 2006448607, 1574579050); + uint3x3 b2 = uint3x3(687761409, 278427731, 296354221, 536981557, 1134676193, 1749879634, 1944210269, 92849031, 164029425); + bool3x3 r2 = bool3x3(true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + uint3x3 a3 = uint3x3(1839580033, 155350910, 313644534, 2008975915, 1072866331, 10845678, 1588544505, 709736932, 1892341087); + uint3x3 b3 = uint3x3(628797607, 2069207270, 2022667842, 880567401, 264404537, 1954996717, 572153302, 865957902, 1083128726); + bool3x3 r3 = bool3x3(true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void uint3x3_operator_not_equal_wide_scalar() + { + uint3x3 a0 = uint3x3(747758183, 1033001286, 1439973882, 2138928797, 1197845089, 1432672459, 950170763, 238704450, 2105962247); + uint b0 = (248693828); + bool3x3 r0 = bool3x3(true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + uint3x3 a1 = uint3x3(727205263, 276313906, 2126300423, 791998981, 2035077187, 1171827730, 1412347883, 1622176923, 768370497); + uint b1 = (1640688041); + bool3x3 r1 = bool3x3(true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + uint3x3 a2 = uint3x3(1072798259, 1497830076, 1582645163, 1876273820, 90244766, 30493685, 904014575, 384643370, 11554610); + uint b2 = (1808712713); + bool3x3 r2 = bool3x3(true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + uint3x3 a3 = uint3x3(2016093187, 1596313927, 363921847, 1555396158, 913218907, 1739138988, 1916670251, 1516209113, 765258490); + uint b3 = (1515760622); + bool3x3 r3 = bool3x3(true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void uint3x3_operator_not_equal_scalar_wide() + { + uint a0 = (2076921066); + uint3x3 b0 = uint3x3(2037494727, 1989050616, 48833929, 1897435904, 514354517, 1783749164, 364694471, 754315072, 124108032); + bool3x3 r0 = bool3x3(true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + uint a1 = (1512967900); + uint3x3 b1 = uint3x3(1178825850, 1854793298, 50286949, 2100802631, 1640811853, 82110247, 472172806, 266984506, 2003668365); + bool3x3 r1 = bool3x3(true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + uint a2 = (1826089250); + uint3x3 b2 = uint3x3(1041416160, 356140110, 2057237962, 799920703, 1916347720, 510966350, 572038024, 1936481966, 1366859342); + bool3x3 r2 = bool3x3(true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + uint a3 = (1775285431); + uint3x3 b3 = uint3x3(604757336, 1047551607, 1311703338, 676012224, 627370253, 1715733805, 699755913, 1875151666, 358894860); + bool3x3 r3 = bool3x3(true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void uint3x3_operator_less_wide_wide() + { + uint3x3 a0 = uint3x3(1182186063, 415538999, 1667335818, 1566618442, 1166180837, 639095188, 1080836365, 771119973, 928263233); + uint3x3 b0 = uint3x3(524633529, 1032195686, 760723389, 1505751409, 431962172, 1287906509, 1560084663, 1450178202, 2066166337); + bool3x3 r0 = bool3x3(false, true, false, false, false, true, true, true, true); + TestUtils.AreEqual(a0 < b0, r0); + + uint3x3 a1 = uint3x3(789225474, 665243110, 1003542034, 1032480172, 1961336172, 923379558, 21210619, 1089772116, 1707633052); + uint3x3 b1 = uint3x3(1107069023, 1640077524, 2103263105, 684229139, 1234033624, 1278743281, 1953079347, 1228832942, 2082539723); + bool3x3 r1 = bool3x3(true, true, true, false, false, true, true, true, true); + TestUtils.AreEqual(a1 < b1, r1); + + uint3x3 a2 = uint3x3(778986024, 158153146, 336715101, 1839141169, 1706859710, 1928438162, 1638101724, 2044698552, 1543260981); + uint3x3 b2 = uint3x3(1088437561, 1058382082, 207459172, 750531081, 2015788562, 2126542133, 271967348, 1601249324, 1373999400); + bool3x3 r2 = bool3x3(true, true, false, false, true, true, false, false, false); + TestUtils.AreEqual(a2 < b2, r2); + + uint3x3 a3 = uint3x3(471462349, 1668575142, 2147199161, 946870864, 582371851, 410751553, 198134393, 1999935258, 671192178); + uint3x3 b3 = uint3x3(1689592186, 459759541, 983106679, 332584818, 2034921203, 833499488, 1999487070, 836063897, 1987309319); + bool3x3 r3 = bool3x3(true, false, false, false, true, true, true, false, true); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void uint3x3_operator_less_wide_scalar() + { + uint3x3 a0 = uint3x3(608447185, 818840405, 869219329, 2080125385, 1214500548, 1361741203, 1667165786, 1615392341, 840091491); + uint b0 = (1491216667); + bool3x3 r0 = bool3x3(true, true, true, false, true, true, false, false, true); + TestUtils.AreEqual(a0 < b0, r0); + + uint3x3 a1 = uint3x3(469591900, 315321650, 930950514, 1100560246, 933855388, 908563901, 1127696709, 1286331950, 380753337); + uint b1 = (1247103789); + bool3x3 r1 = bool3x3(true, true, true, true, true, true, true, false, true); + TestUtils.AreEqual(a1 < b1, r1); + + uint3x3 a2 = uint3x3(971148054, 1056649851, 1579735991, 689044913, 1960894027, 371987110, 867559111, 1703747625, 1698536333); + uint b2 = (1827886929); + bool3x3 r2 = bool3x3(true, true, true, true, false, true, true, true, true); + TestUtils.AreEqual(a2 < b2, r2); + + uint3x3 a3 = uint3x3(41716206, 1274625476, 611065092, 118750042, 1829327996, 452204442, 1645191336, 1829152606, 1891059504); + uint b3 = (243673862); + bool3x3 r3 = bool3x3(true, false, false, true, false, false, false, false, false); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void uint3x3_operator_less_scalar_wide() + { + uint a0 = (548436837); + uint3x3 b0 = uint3x3(282703327, 14370648, 1862117300, 1304793311, 826073259, 988910157, 445132446, 1139670255, 111349251); + bool3x3 r0 = bool3x3(false, false, true, true, true, true, false, true, false); + TestUtils.AreEqual(a0 < b0, r0); + + uint a1 = (1102440676); + uint3x3 b1 = uint3x3(112183144, 1594415311, 1890019295, 2098715503, 608933527, 183989010, 1596056507, 1027318999, 146281093); + bool3x3 r1 = bool3x3(false, true, true, true, false, false, true, false, false); + TestUtils.AreEqual(a1 < b1, r1); + + uint a2 = (358911716); + uint3x3 b2 = uint3x3(874278078, 1106057699, 1256807459, 2111973919, 1736480659, 810406400, 1329939911, 1276652605, 593690439); + bool3x3 r2 = bool3x3(true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 < b2, r2); + + uint a3 = (771851138); + uint3x3 b3 = uint3x3(590897155, 386688344, 1290583204, 1984930954, 743544838, 1473400608, 1300775973, 1351720916, 168788814); + bool3x3 r3 = bool3x3(false, false, true, true, false, true, true, true, false); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void uint3x3_operator_greater_wide_wide() + { + uint3x3 a0 = uint3x3(592884447, 2133928932, 918957182, 1284069471, 194584707, 739120780, 241654068, 1340158550, 2099542537); + uint3x3 b0 = uint3x3(138737040, 192863971, 1700841444, 1044631301, 1391589821, 730837695, 253553987, 2078872742, 910845808); + bool3x3 r0 = bool3x3(true, true, false, true, false, true, false, false, true); + TestUtils.AreEqual(a0 > b0, r0); + + uint3x3 a1 = uint3x3(1182623667, 1399607274, 789301637, 180400925, 594688333, 1877031463, 1360073500, 1091782422, 546676424); + uint3x3 b1 = uint3x3(976047676, 202633078, 1223618940, 641600530, 1830470354, 1570701388, 1104256103, 1838646932, 740166101); + bool3x3 r1 = bool3x3(true, true, false, false, false, true, true, false, false); + TestUtils.AreEqual(a1 > b1, r1); + + uint3x3 a2 = uint3x3(348221770, 716039145, 458742739, 1365508046, 1523167942, 1574478622, 1295065160, 715285504, 1130323487); + uint3x3 b2 = uint3x3(1549021845, 1457092873, 1790630950, 907793213, 555122804, 1418910265, 335209251, 1094341422, 1465325455); + bool3x3 r2 = bool3x3(false, false, false, true, true, true, true, false, false); + TestUtils.AreEqual(a2 > b2, r2); + + uint3x3 a3 = uint3x3(677530432, 1496919050, 12463046, 1106153111, 1315083485, 31516321, 1786538920, 1854361210, 1730650972); + uint3x3 b3 = uint3x3(390251369, 910309992, 277356652, 1601082764, 771366966, 1782348324, 550490783, 599992449, 550520692); + bool3x3 r3 = bool3x3(true, true, false, false, true, false, true, true, true); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void uint3x3_operator_greater_wide_scalar() + { + uint3x3 a0 = uint3x3(1097138316, 211763648, 1883002501, 56406996, 43662641, 1923456111, 1437755186, 1219010035, 2125058448); + uint b0 = (438688675); + bool3x3 r0 = bool3x3(true, false, true, false, false, true, true, true, true); + TestUtils.AreEqual(a0 > b0, r0); + + uint3x3 a1 = uint3x3(304028799, 48044515, 711945018, 1035679270, 577943770, 572743717, 1016617211, 2063134811, 1577403353); + uint b1 = (893125636); + bool3x3 r1 = bool3x3(false, false, false, true, false, false, true, true, true); + TestUtils.AreEqual(a1 > b1, r1); + + uint3x3 a2 = uint3x3(64009107, 1143565920, 3715845, 689362811, 263973424, 1045140419, 1058332184, 524569092, 1183316983); + uint b2 = (1462961460); + bool3x3 r2 = bool3x3(false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 > b2, r2); + + uint3x3 a3 = uint3x3(1107974092, 523727054, 112709358, 614746280, 1000986708, 1683117650, 1451781409, 61102732, 1284938191); + uint b3 = (212839726); + bool3x3 r3 = bool3x3(true, true, false, true, true, true, true, false, true); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void uint3x3_operator_greater_scalar_wide() + { + uint a0 = (2024896938); + uint3x3 b0 = uint3x3(599356784, 185671342, 1932327391, 2025591013, 1257191721, 1312388500, 1443698859, 779217735, 691047512); + bool3x3 r0 = bool3x3(true, true, true, false, true, true, true, true, true); + TestUtils.AreEqual(a0 > b0, r0); + + uint a1 = (741776730); + uint3x3 b1 = uint3x3(732565983, 668302204, 1556466996, 858599525, 1896917159, 701542098, 1052151621, 1023307544, 1435392907); + bool3x3 r1 = bool3x3(true, true, false, false, false, true, false, false, false); + TestUtils.AreEqual(a1 > b1, r1); + + uint a2 = (1858177345); + uint3x3 b2 = uint3x3(299897686, 632930355, 1387203601, 483722222, 863042711, 1713088900, 315569296, 292652611, 1002628348); + bool3x3 r2 = bool3x3(true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 > b2, r2); + + uint a3 = (927789921); + uint3x3 b3 = uint3x3(108145064, 425005337, 2093233588, 2063431853, 2079035844, 849337819, 1769234051, 358948261, 267985383); + bool3x3 r3 = bool3x3(true, true, false, false, false, true, false, true, true); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void uint3x3_operator_less_equal_wide_wide() + { + uint3x3 a0 = uint3x3(1577248162, 2043073061, 1688380407, 176431985, 223299035, 1502802140, 1691709825, 386789394, 117182003); + uint3x3 b0 = uint3x3(903445031, 2108974565, 210822256, 1281704747, 453681718, 66138830, 1229799377, 1620922595, 1715833766); + bool3x3 r0 = bool3x3(false, true, false, true, true, false, false, true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + uint3x3 a1 = uint3x3(1665770435, 1958490731, 420032601, 1251092689, 2011681765, 749743684, 183784440, 1150674774, 1633828822); + uint3x3 b1 = uint3x3(1366430432, 13102000, 46919981, 486470891, 1709514236, 2145785285, 854254454, 1273278658, 810263315); + bool3x3 r1 = bool3x3(false, false, false, false, false, true, true, true, false); + TestUtils.AreEqual(a1 <= b1, r1); + + uint3x3 a2 = uint3x3(1719442172, 336047314, 743733218, 1393995865, 1854442658, 1498138884, 912169992, 1992682021, 1619593455); + uint3x3 b2 = uint3x3(1862773824, 201799013, 974166844, 1320622967, 2058099616, 522102017, 620752145, 1213693681, 1281818305); + bool3x3 r2 = bool3x3(true, false, true, false, true, false, false, false, false); + TestUtils.AreEqual(a2 <= b2, r2); + + uint3x3 a3 = uint3x3(1883313982, 483412430, 857881876, 346624138, 531961063, 269897278, 1062947703, 1743454202, 2048964070); + uint3x3 b3 = uint3x3(1564146162, 1996153080, 1201909516, 614401396, 224997397, 648547686, 418431167, 1724009726, 401891826); + bool3x3 r3 = bool3x3(false, true, true, true, false, true, false, false, false); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void uint3x3_operator_less_equal_wide_scalar() + { + uint3x3 a0 = uint3x3(1722165358, 1219858357, 860410743, 411099660, 348104022, 1963256951, 212084836, 58924407, 1459242706); + uint b0 = (1688048545); + bool3x3 r0 = bool3x3(false, true, true, true, true, false, true, true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + uint3x3 a1 = uint3x3(1745758438, 262559763, 690091301, 1806172431, 2091514001, 1857173043, 1617221948, 2017733017, 804204255); + uint b1 = (532949158); + bool3x3 r1 = bool3x3(false, true, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 <= b1, r1); + + uint3x3 a2 = uint3x3(981729559, 910922522, 2079225209, 26179915, 238796519, 1917813750, 1258115260, 20607406, 1337879822); + uint b2 = (2032949254); + bool3x3 r2 = bool3x3(true, true, false, true, true, true, true, true, true); + TestUtils.AreEqual(a2 <= b2, r2); + + uint3x3 a3 = uint3x3(959460446, 1279143037, 1551937606, 626254356, 1162369122, 1021674613, 127839058, 1974631244, 426908235); + uint b3 = (1599429457); + bool3x3 r3 = bool3x3(true, true, true, true, true, true, true, false, true); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void uint3x3_operator_less_equal_scalar_wide() + { + uint a0 = (1777585); + uint3x3 b0 = uint3x3(1181030049, 1787703989, 1729760948, 1816537388, 1359786460, 874999193, 1678863148, 1711365839, 762067160); + bool3x3 r0 = bool3x3(true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + uint a1 = (11953554); + uint3x3 b1 = uint3x3(1131583906, 1175393186, 1293698493, 48893340, 66196247, 1958607116, 1576473309, 861890786, 478252419); + bool3x3 r1 = bool3x3(true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 <= b1, r1); + + uint a2 = (957887737); + uint3x3 b2 = uint3x3(117849810, 1348693584, 105489302, 259034238, 530713566, 601413850, 830430286, 145552297, 1697295044); + bool3x3 r2 = bool3x3(false, true, false, false, false, false, false, false, true); + TestUtils.AreEqual(a2 <= b2, r2); + + uint a3 = (1150680564); + uint3x3 b3 = uint3x3(2091065664, 1796096704, 1572008712, 1556906486, 205552788, 620963188, 1156705971, 1121867260, 733876180); + bool3x3 r3 = bool3x3(true, true, true, true, false, false, true, false, false); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void uint3x3_operator_greater_equal_wide_wide() + { + uint3x3 a0 = uint3x3(263000030, 744235661, 1893760267, 237248, 1062370984, 1676977687, 816766880, 1089431546, 1394493730); + uint3x3 b0 = uint3x3(1395535146, 1178373944, 1237373760, 1364855321, 600811864, 362060472, 290870624, 1839067862, 396958580); + bool3x3 r0 = bool3x3(false, false, true, false, true, true, true, false, true); + TestUtils.AreEqual(a0 >= b0, r0); + + uint3x3 a1 = uint3x3(1176473380, 1193988637, 1703862455, 1806186947, 1253571980, 589397635, 1951842887, 798931197, 808426484); + uint3x3 b1 = uint3x3(1336888643, 1019684398, 1697684196, 1227300220, 2044269675, 1898323839, 874509380, 1873505472, 1268843918); + bool3x3 r1 = bool3x3(false, true, true, true, false, false, true, false, false); + TestUtils.AreEqual(a1 >= b1, r1); + + uint3x3 a2 = uint3x3(744869638, 1959531616, 207430702, 1533946595, 1148381840, 2011549474, 605043041, 1707339660, 2038122892); + uint3x3 b2 = uint3x3(1606949562, 1263896445, 1805518202, 1412091359, 1240330374, 1955056253, 2025187918, 750755999, 869709740); + bool3x3 r2 = bool3x3(false, true, false, true, false, true, false, true, true); + TestUtils.AreEqual(a2 >= b2, r2); + + uint3x3 a3 = uint3x3(345761584, 1839156338, 1519670644, 2131285427, 775457686, 796452624, 1710612922, 1629927787, 1094198224); + uint3x3 b3 = uint3x3(1390799279, 1194035112, 666460047, 103451220, 1311530792, 802468307, 1090745055, 1968071275, 1935027815); + bool3x3 r3 = bool3x3(false, true, true, true, false, false, true, false, false); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void uint3x3_operator_greater_equal_wide_scalar() + { + uint3x3 a0 = uint3x3(2112791350, 1043657935, 101764761, 1529909067, 556026890, 281734132, 1186600258, 815093894, 609211196); + uint b0 = (1470533736); + bool3x3 r0 = bool3x3(true, false, false, true, false, false, false, false, false); + TestUtils.AreEqual(a0 >= b0, r0); + + uint3x3 a1 = uint3x3(1604309397, 244604867, 1419295004, 471843809, 1819986195, 1460027917, 1646290021, 196833647, 1596738181); + uint b1 = (829548642); + bool3x3 r1 = bool3x3(true, false, true, false, true, true, true, false, true); + TestUtils.AreEqual(a1 >= b1, r1); + + uint3x3 a2 = uint3x3(1905036391, 1584946560, 370941146, 440219668, 1607345862, 1449142607, 1223010129, 379014762, 1719435169); + uint b2 = (1771391775); + bool3x3 r2 = bool3x3(true, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 >= b2, r2); + + uint3x3 a3 = uint3x3(258833609, 612593660, 42612027, 1138747386, 1491562090, 917503963, 353608194, 1526792895, 192092521); + uint b3 = (1389585003); + bool3x3 r3 = bool3x3(false, false, false, false, true, false, false, true, false); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void uint3x3_operator_greater_equal_scalar_wide() + { + uint a0 = (1525542481); + uint3x3 b0 = uint3x3(1503244746, 861711266, 817773856, 925984572, 571221723, 683686810, 118252990, 1653952090, 1240253990); + bool3x3 r0 = bool3x3(true, true, true, true, true, true, true, false, true); + TestUtils.AreEqual(a0 >= b0, r0); + + uint a1 = (1947039008); + uint3x3 b1 = uint3x3(1869136019, 152012637, 1214546726, 917376832, 303549425, 2111728811, 945321577, 173706579, 625318949); + bool3x3 r1 = bool3x3(true, true, true, true, true, false, true, true, true); + TestUtils.AreEqual(a1 >= b1, r1); + + uint a2 = (519443238); + uint3x3 b2 = uint3x3(1583588379, 1026799433, 1713083717, 394922760, 1216218189, 1336522452, 233894308, 479913036, 984991199); + bool3x3 r2 = bool3x3(false, false, false, true, false, false, true, true, false); + TestUtils.AreEqual(a2 >= b2, r2); + + uint a3 = (172993285); + uint3x3 b3 = uint3x3(2121050903, 465645173, 788510727, 337378780, 273010835, 1898553615, 1111540136, 717385513, 474197678); + bool3x3 r3 = bool3x3(false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void uint3x3_operator_add_wide_wide() + { + uint3x3 a0 = uint3x3(2049228671, 1658660009, 491719392, 937013355, 81108663, 1063894558, 86954702, 843159721, 698977704); + uint3x3 b0 = uint3x3(2088751567, 645762023, 306868786, 4360271, 506047997, 2094559874, 1634712736, 1601474440, 1586485231); + uint3x3 r0 = uint3x3(4137980238, 2304422032, 798588178, 941373626, 587156660, 3158454432, 1721667438, 2444634161, 2285462935); + TestUtils.AreEqual(a0 + b0, r0); + + uint3x3 a1 = uint3x3(192867135, 1683407172, 137301303, 2103582820, 526139155, 447937230, 2127411006, 1670579390, 1914969141); + uint3x3 b1 = uint3x3(908746788, 1812370320, 1247342357, 2043773873, 223363428, 175115707, 985928617, 507662836, 1231457019); + uint3x3 r1 = uint3x3(1101613923, 3495777492, 1384643660, 4147356693, 749502583, 623052937, 3113339623, 2178242226, 3146426160); + TestUtils.AreEqual(a1 + b1, r1); + + uint3x3 a2 = uint3x3(997691756, 857841794, 2129024875, 267535529, 978891383, 657092366, 941872903, 906908654, 1940071697); + uint3x3 b2 = uint3x3(776127866, 607782424, 1160366210, 1384832242, 702057048, 703554905, 2106992817, 1994483489, 539473); + uint3x3 r2 = uint3x3(1773819622, 1465624218, 3289391085, 1652367771, 1680948431, 1360647271, 3048865720, 2901392143, 1940611170); + TestUtils.AreEqual(a2 + b2, r2); + + uint3x3 a3 = uint3x3(862186205, 1951450264, 689662850, 1928213278, 1703906688, 526120638, 423980484, 1867227242, 603782684); + uint3x3 b3 = uint3x3(236858351, 411317652, 595429166, 713649927, 2053476603, 77965941, 1726775513, 1759186349, 2070333485); + uint3x3 r3 = uint3x3(1099044556, 2362767916, 1285092016, 2641863205, 3757383291, 604086579, 2150755997, 3626413591, 2674116169); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void uint3x3_operator_add_wide_scalar() + { + uint3x3 a0 = uint3x3(2038218457, 134923711, 875689667, 1338884463, 997710928, 340490871, 1067888129, 70433301, 2003021861); + uint b0 = (2124409227); + uint3x3 r0 = uint3x3(4162627684, 2259332938, 3000098894, 3463293690, 3122120155, 2464900098, 3192297356, 2194842528, 4127431088); + TestUtils.AreEqual(a0 + b0, r0); + + uint3x3 a1 = uint3x3(1635971971, 85446202, 1068152966, 1239387100, 1497676888, 1727477485, 1095438654, 756559204, 1818718931); + uint b1 = (1160398286); + uint3x3 r1 = uint3x3(2796370257, 1245844488, 2228551252, 2399785386, 2658075174, 2887875771, 2255836940, 1916957490, 2979117217); + TestUtils.AreEqual(a1 + b1, r1); + + uint3x3 a2 = uint3x3(658923552, 1585755398, 692843300, 1068593469, 1704776233, 577782260, 736972565, 711894571, 564257439); + uint b2 = (1610518921); + uint3x3 r2 = uint3x3(2269442473, 3196274319, 2303362221, 2679112390, 3315295154, 2188301181, 2347491486, 2322413492, 2174776360); + TestUtils.AreEqual(a2 + b2, r2); + + uint3x3 a3 = uint3x3(2051736283, 1628006545, 1855700263, 656748782, 272774516, 1917133199, 828322973, 2116810190, 2092767444); + uint b3 = (1572837697); + uint3x3 r3 = uint3x3(3624573980, 3200844242, 3428537960, 2229586479, 1845612213, 3489970896, 2401160670, 3689647887, 3665605141); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void uint3x3_operator_add_scalar_wide() + { + uint a0 = (391092078); + uint3x3 b0 = uint3x3(519908870, 851424292, 328314822, 135622204, 740923360, 655394201, 1451896269, 1781697072, 996031825); + uint3x3 r0 = uint3x3(911000948, 1242516370, 719406900, 526714282, 1132015438, 1046486279, 1842988347, 2172789150, 1387123903); + TestUtils.AreEqual(a0 + b0, r0); + + uint a1 = (1557774949); + uint3x3 b1 = uint3x3(779774940, 1111541302, 783046445, 1130163944, 288279584, 1397683861, 1636583489, 673263339, 1469300874); + uint3x3 r1 = uint3x3(2337549889, 2669316251, 2340821394, 2687938893, 1846054533, 2955458810, 3194358438, 2231038288, 3027075823); + TestUtils.AreEqual(a1 + b1, r1); + + uint a2 = (14855965); + uint3x3 b2 = uint3x3(1116636999, 1488863300, 1600990886, 190651301, 1307459768, 920085839, 2082229835, 1992405574, 1213924458); + uint3x3 r2 = uint3x3(1131492964, 1503719265, 1615846851, 205507266, 1322315733, 934941804, 2097085800, 2007261539, 1228780423); + TestUtils.AreEqual(a2 + b2, r2); + + uint a3 = (505841452); + uint3x3 b3 = uint3x3(981421162, 1488337699, 1113826640, 1806146508, 1841791222, 206610851, 526971953, 1236359886, 1459523189); + uint3x3 r3 = uint3x3(1487262614, 1994179151, 1619668092, 2311987960, 2347632674, 712452303, 1032813405, 1742201338, 1965364641); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void uint3x3_operator_sub_wide_wide() + { + uint3x3 a0 = uint3x3(1353441118, 797269833, 659988112, 56022121, 365847472, 2062899435, 1380988474, 799885138, 1306058185); + uint3x3 b0 = uint3x3(1332656812, 1827794007, 972557431, 2078233689, 1508184327, 1372307701, 810327977, 936799885, 71562303); + uint3x3 r0 = uint3x3(20784306, 3264443122, 3982397977, 2272755728, 3152630441, 690591734, 570660497, 4158052549, 1234495882); + TestUtils.AreEqual(a0 - b0, r0); + + uint3x3 a1 = uint3x3(579775276, 1239163824, 344591081, 86359575, 1049709943, 721529513, 1767221271, 7652784, 545192611); + uint3x3 b1 = uint3x3(1418723328, 1971342989, 1226053395, 136565478, 1979903295, 600719425, 837912956, 632054793, 711091688); + uint3x3 r1 = uint3x3(3456019244, 3562788131, 3413504982, 4244761393, 3364773944, 120810088, 929308315, 3670565287, 4129068219); + TestUtils.AreEqual(a1 - b1, r1); + + uint3x3 a2 = uint3x3(176298787, 1477774126, 1426963688, 2032787858, 2059525977, 445200454, 425848588, 2026967474, 1128492011); + uint3x3 b2 = uint3x3(904695656, 1640069560, 750244414, 1385118097, 1102391291, 1221949855, 609588723, 1054324682, 1678086165); + uint3x3 r2 = uint3x3(3566570427, 4132671862, 676719274, 647669761, 957134686, 3518217895, 4111227161, 972642792, 3745373142); + TestUtils.AreEqual(a2 - b2, r2); + + uint3x3 a3 = uint3x3(61421784, 988065731, 1741434432, 2070331135, 1356704176, 1888446703, 1364654917, 265135366, 760501098); + uint3x3 b3 = uint3x3(1529581776, 1718700085, 523422634, 223602473, 1912611694, 1224986479, 748933681, 88793450, 401362529); + uint3x3 r3 = uint3x3(2826807304, 3564332942, 1218011798, 1846728662, 3739059778, 663460224, 615721236, 176341916, 359138569); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void uint3x3_operator_sub_wide_scalar() + { + uint3x3 a0 = uint3x3(1176369558, 1934521195, 309452150, 1417634074, 108910717, 1306356714, 1502312334, 1451794815, 281174200); + uint b0 = (462232403); + uint3x3 r0 = uint3x3(714137155, 1472288792, 4142187043, 955401671, 3941645610, 844124311, 1040079931, 989562412, 4113909093); + TestUtils.AreEqual(a0 - b0, r0); + + uint3x3 a1 = uint3x3(87530840, 2041593336, 557239990, 1119051448, 1590376732, 819090189, 816382635, 815920639, 1829033117); + uint b1 = (1913724431); + uint3x3 r1 = uint3x3(2468773705, 127868905, 2938482855, 3500294313, 3971619597, 3200333054, 3197625500, 3197163504, 4210275982); + TestUtils.AreEqual(a1 - b1, r1); + + uint3x3 a2 = uint3x3(1792801932, 1418937976, 1277257189, 2092779398, 642236742, 1605250794, 819644478, 1468003019, 128303186); + uint b2 = (1113440549); + uint3x3 r2 = uint3x3(679361383, 305497427, 163816640, 979338849, 3823763489, 491810245, 4001171225, 354562470, 3309829933); + TestUtils.AreEqual(a2 - b2, r2); + + uint3x3 a3 = uint3x3(553494257, 1999744782, 2017272758, 1817991764, 1280985500, 676974855, 1638032613, 949761204, 1835969317); + uint b3 = (1017126971); + uint3x3 r3 = uint3x3(3831334582, 982617811, 1000145787, 800864793, 263858529, 3954815180, 620905642, 4227601529, 818842346); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void uint3x3_operator_sub_scalar_wide() + { + uint a0 = (1691534405); + uint3x3 b0 = uint3x3(2022393810, 1612688515, 496689713, 887037586, 2097630964, 374934538, 939035482, 935242277, 1789300421); + uint3x3 r0 = uint3x3(3964107891, 78845890, 1194844692, 804496819, 3888870737, 1316599867, 752498923, 756292128, 4197201280); + TestUtils.AreEqual(a0 - b0, r0); + + uint a1 = (264712893); + uint3x3 b1 = uint3x3(1231856067, 1818112748, 1428436109, 1258745460, 1077380396, 1330722719, 518111829, 967128529, 344666254); + uint3x3 r1 = uint3x3(3327824122, 2741567441, 3131244080, 3300934729, 3482299793, 3228957470, 4041568360, 3592551660, 4215013935); + TestUtils.AreEqual(a1 - b1, r1); + + uint a2 = (1082267918); + uint3x3 b2 = uint3x3(907866696, 1816885123, 460340568, 962154498, 557113461, 1701216709, 1980098777, 730060552, 1444397827); + uint3x3 r2 = uint3x3(174401222, 3560350091, 621927350, 120113420, 525154457, 3676018505, 3397136437, 352207366, 3932837387); + TestUtils.AreEqual(a2 - b2, r2); + + uint a3 = (853570556); + uint3x3 b3 = uint3x3(138836432, 1013190428, 718089530, 506757390, 1216448041, 936312747, 1997286455, 1969982026, 902880656); + uint3x3 r3 = uint3x3(714734124, 4135347424, 135481026, 346813166, 3932089811, 4212225105, 3151251397, 3178555826, 4245657196); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void uint3x3_operator_mul_wide_wide() + { + uint3x3 a0 = uint3x3(245827027, 208934650, 1019478917, 568231809, 877289039, 1585782440, 2111178729, 1186019069, 571481445); + uint3x3 b0 = uint3x3(759663997, 350129201, 477450108, 1635735015, 388710278, 757722665, 1509388321, 1841703980, 1826369331); + uint3x3 r0 = uint3x3(3662155527, 1402281434, 332447596, 2361989735, 2624048730, 1455036648, 2128344329, 3700879228, 2640799263); + TestUtils.AreEqual(a0 * b0, r0); + + uint3x3 a1 = uint3x3(1570087048, 629447153, 619383734, 2055121568, 700402816, 263414349, 187830569, 2048056680, 546694675); + uint3x3 b1 = uint3x3(1524322467, 1605207974, 428419155, 1460605791, 1968043860, 771161742, 2037340417, 322304267, 651448359); + uint3x3 r1 = uint3x3(2093463192, 3087460678, 3161406466, 990589280, 3356793344, 2953243830, 1156600361, 649177976, 678952165); + TestUtils.AreEqual(a1 * b1, r1); + + uint3x3 a2 = uint3x3(853585367, 933370718, 990212476, 1915885905, 1984212358, 368146234, 899438811, 1765718681, 409003054); + uint3x3 b2 = uint3x3(1608326767, 1427155898, 1092185338, 665119139, 223634707, 694718952, 675813713, 999254223, 1326064110); + uint3x3 r2 = uint3x3(1063621177, 2683284556, 2152538904, 3721713555, 2642853618, 1626072720, 1891467339, 335415735, 1128927428); + TestUtils.AreEqual(a2 * b2, r2); + + uint3x3 a3 = uint3x3(2069758852, 140280263, 442491280, 1924530939, 1372320666, 200879709, 857149632, 962693646, 988118613); + uint3x3 b3 = uint3x3(788102700, 1927999142, 1706356773, 747671596, 106127297, 1695925670, 1788874462, 534570710, 1110638325); + uint3x3 r3 = uint3x3(2638713520, 2861115658, 479369680, 3928339236, 4044803354, 48406862, 2297104000, 4019846068, 2811510105); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void uint3x3_operator_mul_wide_scalar() + { + uint3x3 a0 = uint3x3(1762033447, 465343930, 1570757881, 1326409563, 1824319147, 1356578909, 72749215, 154616909, 975743632); + uint b0 = (1476837906); + uint3x3 r0 = uint3x3(2981789374, 1326807828, 2156411778, 4018813542, 4229418502, 2976383114, 2455742766, 2574460778, 1736252960); + TestUtils.AreEqual(a0 * b0, r0); + + uint3x3 a1 = uint3x3(573770299, 971327747, 1818877398, 1324050764, 660611671, 1279757657, 391009467, 1186856590, 890343818); + uint b1 = (1958912969); + uint3x3 r1 = uint3x3(3595344211, 583613531, 2609540870, 377032876, 2454084431, 3835667937, 506042323, 3286058878, 2903122778); + TestUtils.AreEqual(a1 * b1, r1); + + uint3x3 a2 = uint3x3(800117742, 1338014500, 1688964615, 1439447294, 387721300, 1192501703, 1613845584, 76318055, 124378112); + uint b2 = (606927173); + uint3x3 r2 = uint3x3(3182664998, 4040635572, 1687557859, 1193437814, 1547735716, 2273028515, 2785905040, 1364534211, 3330558976); + TestUtils.AreEqual(a2 * b2, r2); + + uint3x3 a3 = uint3x3(970518733, 1978842602, 1451974062, 987919119, 1659987051, 1325430351, 948943118, 1743760648, 227492421); + uint b3 = (1370700538); + uint3x3 r3 = uint3x3(3770718770, 45251204, 2784815084, 28492454, 1649233534, 4185812774, 2668749740, 1373293008, 3727251810); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void uint3x3_operator_mul_scalar_wide() + { + uint a0 = (99541948); + uint3x3 b0 = uint3x3(1764461774, 657072478, 1459784358, 1610646683, 1632058826, 868441654, 1408757883, 335917146, 2105124483); + uint3x3 r0 = uint3x3(3344568648, 4192918280, 1260585960, 1158730452, 4293361240, 3828814248, 2108402516, 1966690328, 1623617844); + TestUtils.AreEqual(a0 * b0, r0); + + uint a1 = (1178393968); + uint3x3 b1 = uint3x3(1963904348, 1409533767, 243286231, 1336308795, 517963367, 1733623488, 459880225, 994616533, 1420531535); + uint3x3 r1 = uint3x3(1196573760, 592673296, 209320208, 3942500560, 1007302672, 3390780416, 3294337904, 2248146480, 1026909584); + TestUtils.AreEqual(a1 * b1, r1); + + uint a2 = (1821413700); + uint3x3 b2 = uint3x3(677771573, 2132626845, 1158827713, 640102997, 944551639, 1323243330, 1186460236, 657101857, 1275563580); + uint3x3 r2 = uint3x3(118306580, 1091472052, 1879587908, 2176549780, 4108343324, 1015975816, 1406756912, 3284535748, 3411133424); + TestUtils.AreEqual(a2 * b2, r2); + + uint a3 = (1031291523); + uint3x3 b3 = uint3x3(1008470115, 1155301041, 1046199281, 2138825098, 1273008873, 1788343477, 1994364082, 597340263, 2022856151); + uint3x3 r3 = uint3x3(2179584169, 2776004243, 358436435, 3342466462, 469974843, 2393957023, 2519661334, 1424675509, 3838532357); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void uint3x3_operator_div_wide_wide() + { + uint3x3 a0 = uint3x3(1590198532, 507812502, 126627032, 1058247011, 427387861, 290676154, 1829594484, 1127868739, 499016351); + uint3x3 b0 = uint3x3(1434703236, 911965201, 390415521, 128746927, 525835375, 816946613, 878264647, 146789678, 2089524057); + uint3x3 r0 = uint3x3(1, 0, 0, 8, 0, 0, 2, 7, 0); + TestUtils.AreEqual(a0 / b0, r0); + + uint3x3 a1 = uint3x3(1341209632, 134906097, 785470242, 788249865, 1099825433, 1552968283, 1822367139, 1021812060, 1937073018); + uint3x3 b1 = uint3x3(254213018, 1916850021, 1737806518, 1906634983, 437754923, 825037958, 902508708, 896853614, 49452028); + uint3x3 r1 = uint3x3(5, 0, 0, 0, 2, 1, 2, 1, 39); + TestUtils.AreEqual(a1 / b1, r1); + + uint3x3 a2 = uint3x3(645757349, 1097576782, 1246027674, 1152153253, 1900577195, 172149343, 1735128704, 816492592, 2012272185); + uint3x3 b2 = uint3x3(1921327824, 787000669, 1032149621, 858558868, 1422112429, 837098844, 616122946, 2035322800, 1324534444); + uint3x3 r2 = uint3x3(0, 1, 1, 1, 1, 0, 2, 0, 1); + TestUtils.AreEqual(a2 / b2, r2); + + uint3x3 a3 = uint3x3(632330092, 649232994, 123715336, 1438073735, 723262291, 850951883, 1942618200, 1088675276, 1648515976); + uint3x3 b3 = uint3x3(1820832158, 917489631, 367475696, 620492088, 1749833550, 1535651093, 932740870, 1078416711, 725172174); + uint3x3 r3 = uint3x3(0, 0, 0, 2, 0, 0, 2, 1, 2); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void uint3x3_operator_div_wide_scalar() + { + uint3x3 a0 = uint3x3(560951562, 1218680769, 375341724, 1613542090, 1919409166, 1397425408, 1349573078, 524526253, 341995568); + uint b0 = (947861580); + uint3x3 r0 = uint3x3(0, 1, 0, 1, 2, 1, 1, 0, 0); + TestUtils.AreEqual(a0 / b0, r0); + + uint3x3 a1 = uint3x3(495895326, 1676971657, 2131487088, 2105094094, 1017891310, 542666029, 1646044372, 1447236569, 107215658); + uint b1 = (1515313790); + uint3x3 r1 = uint3x3(0, 1, 1, 1, 0, 0, 1, 0, 0); + TestUtils.AreEqual(a1 / b1, r1); + + uint3x3 a2 = uint3x3(19616726, 707389627, 1249475421, 1486968988, 1738891885, 1919705924, 1244966864, 1200843642, 206442634); + uint b2 = (896899915); + uint3x3 r2 = uint3x3(0, 0, 1, 1, 1, 2, 1, 1, 0); + TestUtils.AreEqual(a2 / b2, r2); + + uint3x3 a3 = uint3x3(1508567412, 1117255783, 929925156, 1725332114, 1949103348, 1383839785, 2136282541, 159847918, 1515555001); + uint b3 = (1825701056); + uint3x3 r3 = uint3x3(0, 0, 0, 0, 1, 0, 1, 0, 0); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void uint3x3_operator_div_scalar_wide() + { + uint a0 = (1161272038); + uint3x3 b0 = uint3x3(187325733, 1594107378, 2016183849, 1589343709, 388768753, 1417077283, 1773486938, 1154044032, 81831373); + uint3x3 r0 = uint3x3(6, 0, 0, 0, 2, 0, 0, 1, 14); + TestUtils.AreEqual(a0 / b0, r0); + + uint a1 = (1476877645); + uint3x3 b1 = uint3x3(653688843, 45756703, 631027637, 396671391, 784365696, 1250594097, 1818363859, 1653451772, 270557729); + uint3x3 r1 = uint3x3(2, 32, 2, 3, 1, 1, 0, 0, 5); + TestUtils.AreEqual(a1 / b1, r1); + + uint a2 = (48974453); + uint3x3 b2 = uint3x3(1796936382, 1427856423, 981056957, 1955700573, 705450043, 1054404890, 351914083, 131970646, 1320586926); + uint3x3 r2 = uint3x3(0, 0, 0, 0, 0, 0, 0, 0, 0); + TestUtils.AreEqual(a2 / b2, r2); + + uint a3 = (366944102); + uint3x3 b3 = uint3x3(1575786200, 257204865, 1582754309, 2114509003, 1266146708, 45105265, 2092444751, 407744534, 126616016); + uint3x3 r3 = uint3x3(0, 1, 0, 0, 0, 8, 0, 0, 2); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void uint3x3_operator_mod_wide_wide() + { + uint3x3 a0 = uint3x3(146150818, 1846543305, 1071447756, 308965362, 659881575, 1002365460, 861198439, 1510617532, 778525078); + uint3x3 b0 = uint3x3(983050390, 771341152, 942375212, 367361754, 749500619, 750718852, 2095151755, 88438806, 769227442); + uint3x3 r0 = uint3x3(146150818, 303861001, 129072544, 308965362, 659881575, 251646608, 861198439, 7157830, 9297636); + TestUtils.AreEqual(a0 % b0, r0); + + uint3x3 a1 = uint3x3(1458458044, 101987897, 1249565173, 938026607, 1692541775, 1518877124, 1806965510, 1325139851, 994457255); + uint3x3 b1 = uint3x3(647214624, 1026513788, 1544950956, 160166322, 1099108075, 1158422232, 1798905209, 164686701, 327889784); + uint3x3 r1 = uint3x3(164028796, 101987897, 1249565173, 137194997, 593433700, 360454892, 8060301, 7646243, 10787903); + TestUtils.AreEqual(a1 % b1, r1); + + uint3x3 a2 = uint3x3(1372400564, 1770508529, 100255877, 452674793, 1545968777, 629019189, 1402964707, 2138294579, 1641714420); + uint3x3 b2 = uint3x3(1082162785, 1213537518, 608481038, 329133821, 1824387961, 1223426748, 798137669, 79717779, 1233582258); + uint3x3 r2 = uint3x3(290237779, 556971011, 100255877, 123540972, 1545968777, 629019189, 604827038, 65632325, 408132162); + TestUtils.AreEqual(a2 % b2, r2); + + uint3x3 a3 = uint3x3(1782022072, 1880968864, 1980798192, 1397317084, 995968277, 1090018756, 1573062648, 1100694500, 863521889); + uint3x3 b3 = uint3x3(1267120677, 301592349, 911281434, 1357340934, 1648942990, 1350943898, 696511738, 1182727748, 1843845940); + uint3x3 r3 = uint3x3(514901395, 71414770, 158235324, 39976150, 995968277, 1090018756, 180039172, 1100694500, 863521889); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void uint3x3_operator_mod_wide_scalar() + { + uint3x3 a0 = uint3x3(164800505, 1062177828, 1898749675, 1701653318, 820393245, 19002208, 128329633, 1464010899, 896587769); + uint b0 = (883951171); + uint3x3 r0 = uint3x3(164800505, 178226657, 130847333, 817702147, 820393245, 19002208, 128329633, 580059728, 12636598); + TestUtils.AreEqual(a0 % b0, r0); + + uint3x3 a1 = uint3x3(405208598, 959236935, 712321026, 172564850, 1540068445, 1085897743, 1607489717, 165478511, 647846716); + uint b1 = (1982762194); + uint3x3 r1 = uint3x3(405208598, 959236935, 712321026, 172564850, 1540068445, 1085897743, 1607489717, 165478511, 647846716); + TestUtils.AreEqual(a1 % b1, r1); + + uint3x3 a2 = uint3x3(915707999, 928191283, 1084934806, 488509689, 2087820912, 377501313, 1778384846, 1216011754, 812183417); + uint b2 = (1602830401); + uint3x3 r2 = uint3x3(915707999, 928191283, 1084934806, 488509689, 484990511, 377501313, 175554445, 1216011754, 812183417); + TestUtils.AreEqual(a2 % b2, r2); + + uint3x3 a3 = uint3x3(1153802502, 1924710742, 665297470, 1568090825, 2050982942, 435886407, 453990946, 1731665372, 586777590); + uint b3 = (1642671870); + uint3x3 r3 = uint3x3(1153802502, 282038872, 665297470, 1568090825, 408311072, 435886407, 453990946, 88993502, 586777590); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void uint3x3_operator_mod_scalar_wide() + { + uint a0 = (242383789); + uint3x3 b0 = uint3x3(740000543, 1556450291, 1104736385, 437976569, 1911837205, 1507212038, 1906405167, 247693265, 293460573); + uint3x3 r0 = uint3x3(242383789, 242383789, 242383789, 242383789, 242383789, 242383789, 242383789, 242383789, 242383789); + TestUtils.AreEqual(a0 % b0, r0); + + uint a1 = (1495295166); + uint3x3 b1 = uint3x3(873323603, 530681233, 1298102643, 2057984657, 1000742091, 1461372131, 1859742342, 797184687, 821888842); + uint3x3 r1 = uint3x3(621971563, 433932700, 197192523, 1495295166, 494553075, 33923035, 1495295166, 698110479, 673406324); + TestUtils.AreEqual(a1 % b1, r1); + + uint a2 = (1083192997); + uint3x3 b2 = uint3x3(840114986, 1894865954, 615159964, 1485575122, 2028738, 2122220318, 164578061, 730088119, 1444946139); + uint3x3 r2 = uint3x3(243078011, 1083192997, 468033033, 1083192997, 1875643, 1083192997, 95724631, 353104878, 1083192997); + TestUtils.AreEqual(a2 % b2, r2); + + uint a3 = (1305792037); + uint3x3 b3 = uint3x3(1110829011, 872723581, 166847388, 1477846418, 511428733, 1642227542, 1962310765, 207128894, 1342085447); + uint3x3 r3 = uint3x3(194963026, 433068456, 137860321, 1305792037, 282934571, 1305792037, 1305792037, 63018673, 1305792037); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void uint3x3_operator_plus() + { + uint3x3 a0 = uint3x3(1643476803, 907898539, 379615839, 1140483021, 1735287433, 1743199272, 1472881565, 339091479, 401565897); + uint3x3 r0 = uint3x3(1643476803, 907898539, 379615839, 1140483021, 1735287433, 1743199272, 1472881565, 339091479, 401565897); + TestUtils.AreEqual(+a0, r0); + + uint3x3 a1 = uint3x3(1287765427, 174532915, 1864850812, 1566098441, 1145639744, 1615499926, 2049663954, 1723005749, 409076474); + uint3x3 r1 = uint3x3(1287765427, 174532915, 1864850812, 1566098441, 1145639744, 1615499926, 2049663954, 1723005749, 409076474); + TestUtils.AreEqual(+a1, r1); + + uint3x3 a2 = uint3x3(591286416, 1079164488, 1808261782, 1201290141, 82958939, 308695413, 1575280693, 2067379018, 1673126612); + uint3x3 r2 = uint3x3(591286416, 1079164488, 1808261782, 1201290141, 82958939, 308695413, 1575280693, 2067379018, 1673126612); + TestUtils.AreEqual(+a2, r2); + + uint3x3 a3 = uint3x3(500666137, 836003812, 336058393, 829347661, 33442669, 381670450, 277507230, 361395485, 1012749225); + uint3x3 r3 = uint3x3(500666137, 836003812, 336058393, 829347661, 33442669, 381670450, 277507230, 361395485, 1012749225); + TestUtils.AreEqual(+a3, r3); + } + + [TestCompiler] + public static void uint3x3_operator_neg() + { + uint3x3 a0 = uint3x3(1955022112, 662160019, 370300775, 2141283773, 1004505619, 28153593, 33894270, 505708349, 1115028238); + uint3x3 r0 = uint3x3(2339945184, 3632807277, 3924666521, 2153683523, 3290461677, 4266813703, 4261073026, 3789258947, 3179939058); + TestUtils.AreEqual(-a0, r0); + + uint3x3 a1 = uint3x3(1636274969, 1542206286, 213087293, 243937487, 341522275, 841085242, 574159094, 1687250035, 2057919693); + uint3x3 r1 = uint3x3(2658692327, 2752761010, 4081880003, 4051029809, 3953445021, 3453882054, 3720808202, 2607717261, 2237047603); + TestUtils.AreEqual(-a1, r1); + + uint3x3 a2 = uint3x3(1175014732, 1212465326, 1190569920, 2047955772, 2120729864, 1440774928, 1485596454, 431666091, 1387601718); + uint3x3 r2 = uint3x3(3119952564, 3082501970, 3104397376, 2247011524, 2174237432, 2854192368, 2809370842, 3863301205, 2907365578); + TestUtils.AreEqual(-a2, r2); + + uint3x3 a3 = uint3x3(1745651998, 1119959806, 739132284, 1954173314, 1709857098, 1836511050, 1662806453, 506144868, 650922971); + uint3x3 r3 = uint3x3(2549315298, 3175007490, 3555835012, 2340793982, 2585110198, 2458456246, 2632160843, 3788822428, 3644044325); + TestUtils.AreEqual(-a3, r3); + } + + [TestCompiler] + public static void uint3x3_operator_prefix_inc() + { + uint3x3 a0 = uint3x3(864455342, 2035793213, 1275443862, 971919915, 411610189, 446210725, 395072276, 115573442, 913293639); + uint3x3 r0 = uint3x3(864455343, 2035793214, 1275443863, 971919916, 411610190, 446210726, 395072277, 115573443, 913293640); + TestUtils.AreEqual(++a0, r0); + + uint3x3 a1 = uint3x3(432884105, 1385544935, 1835605516, 831396561, 388229350, 696475402, 1786514683, 993189311, 752093909); + uint3x3 r1 = uint3x3(432884106, 1385544936, 1835605517, 831396562, 388229351, 696475403, 1786514684, 993189312, 752093910); + TestUtils.AreEqual(++a1, r1); + + uint3x3 a2 = uint3x3(1622410417, 241906003, 1705625817, 609525897, 172599489, 504806865, 519296647, 281942776, 1541894135); + uint3x3 r2 = uint3x3(1622410418, 241906004, 1705625818, 609525898, 172599490, 504806866, 519296648, 281942777, 1541894136); + TestUtils.AreEqual(++a2, r2); + + uint3x3 a3 = uint3x3(924683935, 1349062584, 1120518661, 65514038, 1495168208, 1321109497, 1366348660, 1777734111, 1414867743); + uint3x3 r3 = uint3x3(924683936, 1349062585, 1120518662, 65514039, 1495168209, 1321109498, 1366348661, 1777734112, 1414867744); + TestUtils.AreEqual(++a3, r3); + } + + [TestCompiler] + public static void uint3x3_operator_postfix_inc() + { + uint3x3 a0 = uint3x3(1751003569, 2063707595, 1500486291, 969189211, 1007848192, 2028651936, 1643023524, 1190630527, 1396179607); + uint3x3 r0 = uint3x3(1751003569, 2063707595, 1500486291, 969189211, 1007848192, 2028651936, 1643023524, 1190630527, 1396179607); + TestUtils.AreEqual(a0++, r0); + + uint3x3 a1 = uint3x3(708474528, 1524860667, 1408994706, 375284401, 1580130369, 1676086778, 717006530, 506142468, 732199129); + uint3x3 r1 = uint3x3(708474528, 1524860667, 1408994706, 375284401, 1580130369, 1676086778, 717006530, 506142468, 732199129); + TestUtils.AreEqual(a1++, r1); + + uint3x3 a2 = uint3x3(2026873940, 1513142653, 420613464, 1219979307, 586574160, 357567451, 1468020171, 1949784665, 1127356901); + uint3x3 r2 = uint3x3(2026873940, 1513142653, 420613464, 1219979307, 586574160, 357567451, 1468020171, 1949784665, 1127356901); + TestUtils.AreEqual(a2++, r2); + + uint3x3 a3 = uint3x3(101238629, 423320704, 827539403, 1919960927, 840371710, 2010345998, 1047836590, 586887730, 1209169651); + uint3x3 r3 = uint3x3(101238629, 423320704, 827539403, 1919960927, 840371710, 2010345998, 1047836590, 586887730, 1209169651); + TestUtils.AreEqual(a3++, r3); + } + + [TestCompiler] + public static void uint3x3_operator_prefix_dec() + { + uint3x3 a0 = uint3x3(200904609, 871077500, 968578728, 638967721, 1995396216, 435367037, 1782514098, 1589827826, 1434377580); + uint3x3 r0 = uint3x3(200904608, 871077499, 968578727, 638967720, 1995396215, 435367036, 1782514097, 1589827825, 1434377579); + TestUtils.AreEqual(--a0, r0); + + uint3x3 a1 = uint3x3(596759698, 1758478358, 1914114460, 71237375, 389120307, 1022184392, 1310293956, 356565557, 18299409); + uint3x3 r1 = uint3x3(596759697, 1758478357, 1914114459, 71237374, 389120306, 1022184391, 1310293955, 356565556, 18299408); + TestUtils.AreEqual(--a1, r1); + + uint3x3 a2 = uint3x3(906734601, 1383897383, 1040798388, 1469596990, 1719228297, 220897829, 1454322707, 678025545, 14227726); + uint3x3 r2 = uint3x3(906734600, 1383897382, 1040798387, 1469596989, 1719228296, 220897828, 1454322706, 678025544, 14227725); + TestUtils.AreEqual(--a2, r2); + + uint3x3 a3 = uint3x3(293093918, 1249415499, 1009503100, 157482354, 965385343, 1797304434, 1083672612, 929765380, 2083512379); + uint3x3 r3 = uint3x3(293093917, 1249415498, 1009503099, 157482353, 965385342, 1797304433, 1083672611, 929765379, 2083512378); + TestUtils.AreEqual(--a3, r3); + } + + [TestCompiler] + public static void uint3x3_operator_postfix_dec() + { + uint3x3 a0 = uint3x3(283970262, 1109329936, 1073216143, 649439137, 1932646215, 1174104498, 484207852, 524156737, 691209285); + uint3x3 r0 = uint3x3(283970262, 1109329936, 1073216143, 649439137, 1932646215, 1174104498, 484207852, 524156737, 691209285); + TestUtils.AreEqual(a0--, r0); + + uint3x3 a1 = uint3x3(2017728859, 377162390, 526366486, 1504625034, 590919177, 60677868, 1867810045, 2095777993, 670715645); + uint3x3 r1 = uint3x3(2017728859, 377162390, 526366486, 1504625034, 590919177, 60677868, 1867810045, 2095777993, 670715645); + TestUtils.AreEqual(a1--, r1); + + uint3x3 a2 = uint3x3(324944916, 1659736954, 1316734088, 1030072405, 1751972064, 1868889881, 1726583208, 1931943579, 175622377); + uint3x3 r2 = uint3x3(324944916, 1659736954, 1316734088, 1030072405, 1751972064, 1868889881, 1726583208, 1931943579, 175622377); + TestUtils.AreEqual(a2--, r2); + + uint3x3 a3 = uint3x3(181847458, 530897466, 635466911, 416440036, 1447690298, 1444496274, 296146626, 1209855130, 2016700604); + uint3x3 r3 = uint3x3(181847458, 530897466, 635466911, 416440036, 1447690298, 1444496274, 296146626, 1209855130, 2016700604); + TestUtils.AreEqual(a3--, r3); + } + + [TestCompiler] + public static void uint3x3_operator_bitwise_and_wide_wide() + { + uint3x3 a0 = uint3x3(779935043, 1097962163, 1939593304, 800599247, 952140918, 782792558, 1608557706, 396446406, 2039894114); + uint3x3 b0 = uint3x3(307705143, 1710882162, 866836769, 532490608, 679371720, 1794035877, 1439832202, 519529812, 23633139); + uint3x3 r0 = uint3x3(39064835, 1097961522, 864731136, 263727168, 675283008, 715673636, 1438646410, 379666500, 16781410); + TestUtils.AreEqual(a0 & b0, r0); + + uint3x3 a1 = uint3x3(1286974642, 442394124, 1759739564, 233435438, 665207770, 1942050241, 1022352952, 60340400, 329119345); + uint3x3 b1 = uint3x3(1209152681, 646737179, 1255867027, 1900854122, 413173763, 1409138251, 2087190272, 563439483, 354579077); + uint3x3 r1 = uint3x3(1209017504, 34366472, 1220739712, 21541162, 10485762, 1405162561, 1013440000, 26222640, 285241857); + TestUtils.AreEqual(a1 & b1, r1); + + uint3x3 a2 = uint3x3(406517382, 1126764634, 343425836, 1957552749, 1624478957, 341972372, 181537307, 130347414, 1240828622); + uint3x3 b2 = uint3x3(642224854, 1650432515, 755290290, 902865191, 661389406, 2134212586, 1855189321, 185194029, 810374380); + uint3x3 r2 = uint3x3(168582, 1107890178, 67125280, 880844837, 541065292, 337646976, 177340425, 50384900, 4522188); + TestUtils.AreEqual(a2 & b2, r2); + + uint3x3 a3 = uint3x3(526120460, 695449226, 1477446724, 201628999, 737924014, 1804502415, 1733695477, 1110712857, 113012430); + uint3x3 b3 = uint3x3(133197864, 1989578783, 38739182, 387425484, 1690486314, 843085933, 1045118223, 41867329, 1397669260); + uint3x3 r3 = uint3x3(122712072, 538087434, 3140, 67404868, 549634602, 570425357, 641864965, 36962305, 34352268); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void uint3x3_operator_bitwise_and_wide_scalar() + { + uint3x3 a0 = uint3x3(443615469, 490057985, 2042441263, 1524760558, 1405175110, 510212004, 1941875181, 1236735839, 1365509729); + uint b0 = (93423598); + uint3x3 r0 = uint3x3(1114348, 85033216, 26281518, 8488942, 25232710, 67176356, 26247660, 26281806, 16778848); + TestUtils.AreEqual(a0 & b0, r0); + + uint3x3 a1 = uint3x3(428270198, 650270920, 1249238550, 814629680, 1862276471, 143502472, 861733033, 1408932942, 957693145); + uint b1 = (607982857); + uint3x3 r1 = uint3x3(262144, 603983880, 3478528, 537657600, 603985153, 853000, 538771465, 3675144, 538252297); + TestUtils.AreEqual(a1 & b1, r1); + + uint3x3 a2 = uint3x3(1567715668, 322053683, 1599352836, 208656708, 1272226025, 462670926, 1817145060, 1466722981, 1817277774); + uint b2 = (1102952410); + uint3x3 r2 = uint3x3(1093742928, 19932690, 1091842048, 2986304, 1100259528, 26313802, 1074603712, 1093411456, 1074869578); + TestUtils.AreEqual(a2 & b2, r2); + + uint3x3 a3 = uint3x3(818900583, 1630437952, 546018772, 872875431, 1143080525, 708719245, 1764446048, 1527981061, 398141788); + uint b3 = (772681077); + uint3x3 r3 = uint3x3(537799781, 537788480, 537527636, 604374309, 67241029, 705568773, 671747424, 167912453, 101329236); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void uint3x3_operator_bitwise_and_scalar_wide() + { + uint a0 = (1144543590); + uint3x3 b0 = uint3x3(420346723, 562416448, 1393127318, 1560699552, 851218057, 703880958, 1159378889, 2031211279, 1089518981); + uint3x3 r0 = uint3x3(547170, 18752, 1074284806, 1140867104, 3672064, 3168358, 1142427968, 1074811142, 1076893956); + TestUtils.AreEqual(a0 & b0, r0); + + uint a1 = (270607307); + uint3x3 b1 = uint3x3(1349288930, 520199596, 1763483957, 1248975349, 236938635, 185023291, 1085233038, 1845693112, 946052961); + uint3x3 r1 = uint3x3(270533570, 268501384, 8449, 2163137, 74123, 74507, 2163594, 66184, 270598977); + TestUtils.AreEqual(a1 & b1, r1); + + uint a2 = (1436238522); + uint3x3 b2 = uint3x3(2042776519, 56356886, 1770159840, 1872339579, 1439201366, 1233066417, 1214109404, 2255485, 1814885263); + uint3x3 r2 = uint3x3(1367491202, 18563090, 1099055776, 1167655482, 1434992658, 1092288688, 1075397272, 148024, 1141392010); + TestUtils.AreEqual(a2 & b2, r2); + + uint a3 = (1711986588); + uint3x3 b3 = uint3x3(1286898282, 915476451, 1870138851, 372814411, 1623486506, 211665304, 1668985777, 348112007, 1808619374); + uint3x3 r3 = uint3x3(1140883976, 637536128, 1711801728, 101224968, 1610633224, 67682712, 1644860304, 67814532, 1644713740); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void uint3x3_operator_bitwise_or_wide_wide() + { + uint3x3 a0 = uint3x3(1731159103, 659068416, 382702471, 1821032196, 1565773438, 1004000514, 948501377, 600951835, 669346222); + uint3x3 b0 = uint3x3(1583847161, 692672727, 1161585489, 1756207130, 1321374429, 1287357212, 2075767170, 1273513430, 1610830169); + uint3x3 r0 = uint3x3(2138044159, 793370327, 1476391895, 1823457054, 1607720703, 2147473182, 2075786115, 1811533279, 1743223295); + TestUtils.AreEqual(a0 | b0, r0); + + uint3x3 a1 = uint3x3(396691477, 2108560248, 2117522137, 330307355, 818676817, 1774459567, 1117506257, 1254511182, 1017865993); + uint3x3 b1 = uint3x3(1316929125, 511625048, 573925879, 1502255628, 1841676448, 1682928938, 1115131952, 1541423910, 1416096228); + uint3x3 r1 = uint3x3(1610595957, 2147407736, 2117598207, 1538957087, 2110637297, 1842315183, 1124063985, 1541821294, 2096099309); + TestUtils.AreEqual(a1 | b1, r1); + + uint3x3 a2 = uint3x3(1883021644, 1140203470, 759288967, 2122744307, 335621148, 715028074, 543305337, 662107399, 1934997335); + uint3x3 b2 = uint3x3(188606371, 1041599540, 219545389, 560097663, 1087543661, 936383841, 108816721, 1694053551, 452638547); + uint3x3 r2 = uint3x3(2067654639, 2146934782, 760610735, 2145839615, 1423162749, 1071544171, 645820281, 1744827823, 2080356183); + TestUtils.AreEqual(a2 | b2, r2); + + uint3x3 a3 = uint3x3(436754869, 1613808671, 362365372, 342908672, 2129231210, 203868172, 32846030, 1057901177, 1537975433); + uint3x3 b3 = uint3x3(1219534055, 85142537, 1027930490, 2126839395, 2030328147, 2036352209, 1554561114, 1332339254, 480739851); + uint3x3 r3 = uint3x3(1522064887, 1697901599, 1037957630, 2129985379, 2146270587, 2103889117, 1576909022, 2138040959, 1605346955); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void uint3x3_operator_bitwise_or_wide_scalar() + { + uint3x3 a0 = uint3x3(961259683, 471103264, 1733389229, 1591585258, 386953869, 1148351449, 1048929715, 1814263250, 860336789); + uint b0 = (1666102508); + uint3x3 r0 = uint3x3(2068823279, 2136930284, 1734344685, 2145369582, 2002712301, 1736374269, 2144335359, 1869608446, 1934604029); + TestUtils.AreEqual(a0 | b0, r0); + + uint3x3 a1 = uint3x3(1637162093, 774029856, 879300408, 1179087439, 797240690, 1977614655, 46921989, 1980838747, 284225881); + uint b1 = (1227888278); + uint3x3 r1 = uint3x3(1773477631, 1865602742, 2105089982, 1333229279, 1874132982, 2112886719, 1274806167, 2133931999, 1508964319); + TestUtils.AreEqual(a1 | b1, r1); + + uint3x3 a2 = uint3x3(64304104, 1393862490, 1890090886, 521303722, 2021379070, 2055963359, 1511253082, 1775629833, 1142751163); + uint b2 = (313591807); + uint3x3 r2 = uint3x3(334837759, 1404413951, 1924759551, 531855359, 2063323135, 2059110399, 1521739775, 2079717375, 1455292415); + TestUtils.AreEqual(a2 | b2, r2); + + uint3x3 a3 = uint3x3(1767274359, 1501294791, 485944015, 539526284, 310877895, 1815369493, 529427586, 358352200, 1353013374); + uint b3 = (1421981808); + uint3x3 r3 = uint3x3(2111307639, 1576794359, 1559755519, 1961475324, 1455931127, 2096496501, 1607466226, 1440595320, 1424357502); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void uint3x3_operator_bitwise_or_scalar_wide() + { + uint a0 = (1213433101); + uint3x3 b0 = uint3x3(1212928242, 1614462616, 936937728, 764766995, 306352095, 574719481, 1283571271, 2109131012, 979469710); + uint3x3 r0 = uint3x3(1213978111, 1752940445, 2145094925, 1842867999, 1515425759, 1783858685, 1288945487, 2113391885, 2054391183); + TestUtils.AreEqual(a0 | b0, r0); + + uint a1 = (1348323481); + uint3x3 b1 = uint3x3(1407542578, 697517649, 1059093741, 627815046, 418822515, 83214352, 424663473, 447949225, 527022375); + uint3x3 r1 = uint3x3(1409150395, 2044710617, 2138963197, 1971321503, 1493170683, 1425918105, 1499453881, 1526720953, 1602091455); + TestUtils.AreEqual(a1 | b1, r1); + + uint a2 = (1947148461); + uint3x3 b2 = uint3x3(305251437, 1254601325, 1752329425, 1592402684, 1587055329, 1088734150, 298563808, 2052547661, 582843231); + uint3x3 r2 = uint3x3(1983898861, 2127540973, 2088725757, 2129601277, 2124393197, 1961878511, 1976547565, 2120180973, 1992260607); + TestUtils.AreEqual(a2 | b2, r2); + + uint a3 = (656983670); + uint3x3 b3 = uint3x3(1944993640, 1081208038, 829763560, 990961386, 547309556, 1307122961, 263229121, 1518227598, 1098359242); + uint3x3 r3 = uint3x3(2012151678, 1736044278, 931000318, 1060691710, 666879990, 1877598071, 800640759, 2139019006, 1736435710); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void uint3x3_operator_bitwise_xor_wide_wide() + { + uint3x3 a0 = uint3x3(1556324760, 207002929, 1843444873, 1632079131, 1460334334, 1607815585, 220623650, 38668553, 47193340); + uint3x3 b0 = uint3x3(1054997548, 1523759632, 251164872, 110472397, 384031112, 1109163205, 535118981, 179106262, 1523031711); + uint3x3 r0 = uint3x3(1646419380, 1451501345, 1662567489, 1741824470, 1105803126, 499723620, 314783655, 149092575, 1477935715); + TestUtils.AreEqual(a0 ^ b0, r0); + + uint3x3 a1 = uint3x3(643663548, 1371932564, 94957188, 700973621, 370621508, 2087573076, 351476570, 1340815927, 681577472); + uint3x3 b1 = uint3x3(1713313372, 1294118730, 520360641, 1040688781, 1020757245, 1143954843, 1281933464, 175288469, 326874157); + uint3x3 r1 = uint3x3(1078104288, 484747486, 447544389, 399484088, 717273273, 943885263, 1486609346, 1167690402, 1004255277); + TestUtils.AreEqual(a1 ^ b1, r1); + + uint3x3 a2 = uint3x3(314138777, 446857644, 1368661599, 1672499683, 1259759761, 2049102405, 1972524935, 91962333, 1960780785); + uint3x3 b2 = uint3x3(1192052687, 1087083643, 1900865484, 1521193463, 569695524, 1622101483, 1340735463, 546583617, 1034420616); + uint3x3 r2 = uint3x3(1437869910, 1516836311, 551090579, 958119956, 1793242549, 445489070, 981182560, 636424092, 1232544377); + TestUtils.AreEqual(a2 ^ b2, r2); + + uint3x3 a3 = uint3x3(1303778459, 960040360, 822786011, 2028027011, 170382968, 32554542, 1915830925, 2001025156, 2012451132); + uint3x3 b3 = uint3x3(262206030, 1834125935, 802756092, 611321886, 316379491, 325882121, 45335181, 1859278043, 1002624300); + uint3x3 r3 = uint3x3(1108797141, 1416333255, 517186087, 1553020061, 419186459, 312225575, 1887600640, 429354079, 1278297104); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void uint3x3_operator_bitwise_xor_wide_scalar() + { + uint3x3 a0 = uint3x3(2124666952, 177397845, 574879617, 1937385541, 1136545648, 213863690, 535061373, 289301586, 1305234431); + uint b0 = (493665894); + uint3x3 r0 = uint3x3(1674536494, 402546227, 1060063719, 1846973987, 1590882582, 299103084, 42523931, 206756404, 1352725913); + TestUtils.AreEqual(a0 ^ b0, r0); + + uint3x3 a1 = uint3x3(353786540, 1267729267, 125659640, 1315625690, 1730088797, 116862046, 375757978, 491079274, 191750702); + uint b1 = (1308626970); + uint3x3 r1 = uint3x3(1528187574, 93328233, 1232959970, 6998720, 689905479, 1224162372, 1483050112, 1397053040, 1164833332); + TestUtils.AreEqual(a1 ^ b1, r1); + + uint3x3 a2 = uint3x3(187129429, 549951551, 653124416, 788984, 1479174924, 1680011736, 447453839, 890841598, 293394300); + uint b2 = (967051293); + uint3x3 r2 = uint3x3(847468104, 425955362, 524938077, 967311845, 1636721425, 1569126853, 588223122, 213721571, 685301601); + TestUtils.AreEqual(a2 ^ b2, r2); + + uint3x3 a3 = uint3x3(527727631, 1382138962, 1206186973, 1059509471, 744733291, 64097148, 1814786305, 716239, 476052372); + uint b3 = (529042816); + uint3x3 r3 = uint3x3(16576911, 1307134418, 1483505245, 548297055, 871053291, 475694844, 1940126849, 528638031, 64452116); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void uint3x3_operator_bitwise_xor_scalar_wide() + { + uint a0 = (1288453276); + uint3x3 b0 = uint3x3(1077599928, 884741329, 212164516, 1585020328, 152985454, 1775851275, 1416249064, 1309317737, 1773918217); + uint3x3 r0 = uint3x3(217506340, 2020616269, 1080648504, 313868596, 1171416050, 622160791, 413532788, 46573301, 628614293); + TestUtils.AreEqual(a0 ^ b0, r0); + + uint a1 = (1509843030); + uint3x3 b1 = uint3x3(1206045972, 1154916424, 1947871003, 1774252400, 1946113778, 1079717492, 290620937, 1382343363, 939045099); + uint3x3 r1 = uint3x3(505195842, 489209886, 769935181, 809406758, 704722596, 430263842, 1219290719, 194675349, 1845940413); + TestUtils.AreEqual(a1 ^ b1, r1); + + uint a2 = (1309568053); + uint3x3 b2 = uint3x3(221134131, 885841718, 612068188, 194068085, 1396957881, 573581481, 1813817520, 86594349, 2006985393); + uint3x3 r2 = uint3x3(1126191366, 2059580163, 1786054505, 1168069184, 491622028, 1816020124, 571655301, 1260863256, 967722628); + TestUtils.AreEqual(a2 ^ b2, r2); + + uint a3 = (1431761813); + uint3x3 b3 = uint3x3(905646837, 1522414781, 192882943, 714832744, 374210759, 215701593, 1573378082, 779254615, 711527976); + uint3x3 r3 = uint3x3(1622008160, 266913576, 1579801450, 2144176381, 1125708626, 1502456780, 143731639, 2065991874, 2134900157); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void uint3x3_operator_left_shift() + { + uint3x3 a0 = uint3x3(197771193, 622182602, 1283988958, 1327917304, 473415985, 432425717, 870301196, 2058433484, 1200694230); + int b0 = (1321149625); + uint3x3 r0 = uint3x3(1912602624, 2483027968, 3154116608, 4026531840, 1644167168, 3925868544, 402653184, 2550136832, 2885681152); + TestUtils.AreEqual(a0 << b0, r0); + + uint3x3 a1 = uint3x3(1531607705, 1008296534, 1447702302, 1079614371, 35667343, 1664454606, 2045594989, 2077023268, 592678686); + int b1 = (1360008038); + uint3x3 r1 = uint3x3(3533612608, 106468736, 2458634112, 375843008, 2282709952, 3445879680, 2069060416, 4080470272, 3571697536); + TestUtils.AreEqual(a1 << b1, r1); + + uint3x3 a2 = uint3x3(297755411, 1161625759, 37265945, 997793693, 1521705181, 263886278, 221147365, 2084190583, 230910816); + int b2 = (1722762487); + uint3x3 r2 = uint3x3(2306867200, 1333788672, 209715200, 3464495104, 1853882368, 3808428032, 1920991232, 3145728000, 2952790016); + TestUtils.AreEqual(a2 << b2, r2); + + uint3x3 a3 = uint3x3(71403448, 1176038816, 1382694875, 1824729613, 1535276688, 1581610518, 407677878, 1208958192, 740058147); + int b3 = (481375728); + uint3x3 r3 = uint3x3(2276982784, 3986685952, 1071316992, 705495040, 1989148672, 1981153280, 2880831488, 1022361600, 1680015360); + TestUtils.AreEqual(a3 << b3, r3); + } + + [TestCompiler] + public static void uint3x3_operator_right_shift() + { + uint3x3 a0 = uint3x3(548167301, 1161338299, 1617625829, 1860731847, 713958715, 196552656, 770466193, 1265099998, 572763124); + int b0 = (1266801540); + uint3x3 r0 = uint3x3(34260456, 72583643, 101101614, 116295740, 44622419, 12284541, 48154137, 79068749, 35797695); + TestUtils.AreEqual(a0 >> b0, r0); + + uint3x3 a1 = uint3x3(506619530, 2031319045, 701927980, 917785020, 569504877, 185593382, 1102123711, 334005460, 1624751550); + int b1 = (426807581); + uint3x3 r1 = uint3x3(0, 3, 1, 1, 1, 0, 2, 0, 3); + TestUtils.AreEqual(a1 >> b1, r1); + + uint3x3 a2 = uint3x3(280138733, 1840564178, 736389149, 1279158873, 408822762, 763607760, 348013684, 1568185874, 774126687); + int b2 = (1598620011); + uint3x3 r2 = uint3x3(136786, 898712, 359565, 624589, 199620, 372855, 169928, 765715, 377991); + TestUtils.AreEqual(a2 >> b2, r2); + + uint3x3 a3 = uint3x3(1587054000, 29576474, 1880981389, 352174824, 1164508476, 425441430, 186542511, 1099859381, 1234295294); + int b3 = (600069797); + uint3x3 r3 = uint3x3(49595437, 924264, 58780668, 11005463, 36390889, 13295044, 5829453, 34370605, 38571727); + TestUtils.AreEqual(a3 >> b3, r3); + } + + [TestCompiler] + public static void uint3x3_operator_bitwise_not() + { + uint3x3 a0 = uint3x3(1403358969, 831360921, 2088190243, 976721016, 878283189, 308994339, 1935567517, 1420884856, 472965491); + uint3x3 r0 = uint3x3(2891608326, 3463606374, 2206777052, 3318246279, 3416684106, 3985972956, 2359399778, 2874082439, 3822001804); + TestUtils.AreEqual(~a0, r0); + + uint3x3 a1 = uint3x3(771711426, 2061524024, 753208488, 2097179283, 1303022493, 664744603, 1289372466, 1635981125, 1951018596); + uint3x3 r1 = uint3x3(3523255869, 2233443271, 3541758807, 2197788012, 2991944802, 3630222692, 3005594829, 2658986170, 2343948699); + TestUtils.AreEqual(~a1, r1); + + uint3x3 a2 = uint3x3(1545651937, 1284504687, 1342785385, 869629475, 2045854321, 1282546942, 1562433528, 1824824810, 1736570715); + uint3x3 r2 = uint3x3(2749315358, 3010462608, 2952181910, 3425337820, 2249112974, 3012420353, 2732533767, 2470142485, 2558396580); + TestUtils.AreEqual(~a2, r2); + + uint3x3 a3 = uint3x3(508906058, 1867418756, 388530274, 695179852, 1766938039, 897923626, 1816190464, 1362906829, 1227946838); + uint3x3 r3 = uint3x3(3786061237, 2427548539, 3906437021, 3599787443, 2528029256, 3397043669, 2478776831, 2932060466, 3067020457); + TestUtils.AreEqual(~a3, r3); + } + + + } +} diff --git a/package/Tests/Tests/Shared/TestUint3x3.gen.cs.meta b/package/Tests/Tests/Shared/TestUint3x3.gen.cs.meta new file mode 100755 index 000000000..2d909545c --- /dev/null +++ b/package/Tests/Tests/Shared/TestUint3x3.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f3db3407f5e21b84d8c21645d5517e9b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/package/Tests/Tests/Shared/TestUint3x4.gen.cs b/package/Tests/Tests/Shared/TestUint3x4.gen.cs new file mode 100755 index 000000000..bb13e12b6 --- /dev/null +++ b/package/Tests/Tests/Shared/TestUint3x4.gen.cs @@ -0,0 +1,1233 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using NUnit.Framework; +using static Unity.Mathematics.math; +using Burst.Compiler.IL.Tests; + +namespace Unity.Mathematics.Tests +{ + [TestFixture] + public class TestUint3x4 + { + [TestCompiler] + public static void uint3x4_zero() + { + TestUtils.AreEqual(uint3x4.zero.c0.x, 0u); + TestUtils.AreEqual(uint3x4.zero.c0.y, 0u); + TestUtils.AreEqual(uint3x4.zero.c0.z, 0u); + TestUtils.AreEqual(uint3x4.zero.c1.x, 0u); + TestUtils.AreEqual(uint3x4.zero.c1.y, 0u); + TestUtils.AreEqual(uint3x4.zero.c1.z, 0u); + TestUtils.AreEqual(uint3x4.zero.c2.x, 0u); + TestUtils.AreEqual(uint3x4.zero.c2.y, 0u); + TestUtils.AreEqual(uint3x4.zero.c2.z, 0u); + TestUtils.AreEqual(uint3x4.zero.c3.x, 0u); + TestUtils.AreEqual(uint3x4.zero.c3.y, 0u); + TestUtils.AreEqual(uint3x4.zero.c3.z, 0u); + } + + [TestCompiler] + public static void uint3x4_operator_equal_wide_wide() + { + uint3x4 a0 = uint3x4(790229414, 970783976, 1428432738, 1578747135, 1733797753, 2001507228, 1446876437, 1777406370, 1426387268, 1809275021, 1843770816, 1172185222); + uint3x4 b0 = uint3x4(612337669, 1214209108, 2120643427, 295461214, 1510890331, 1893316566, 921816149, 1834958575, 1482011863, 2062852792, 226398742, 770290735); + bool3x4 r0 = bool3x4(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + uint3x4 a1 = uint3x4(1469608940, 869874758, 458603090, 581282460, 1948324909, 1129078206, 1638391029, 1135553683, 2079295200, 576232476, 608208235, 11172509); + uint3x4 b1 = uint3x4(36812057, 543224481, 1565350150, 1909926604, 1619900436, 1849990483, 1261604411, 161864811, 843379453, 1780425458, 215681636, 2123130580); + bool3x4 r1 = bool3x4(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + uint3x4 a2 = uint3x4(1025529486, 2095601864, 193500113, 1780908384, 1587636094, 1892083815, 1250768669, 1984341771, 929607871, 2092475304, 1940221590, 196567546); + uint3x4 b2 = uint3x4(708665810, 1902328998, 1808456602, 563830672, 200493241, 1391620681, 1035522654, 168447603, 91580624, 1974459648, 2074899534, 164782857); + bool3x4 r2 = bool3x4(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + uint3x4 a3 = uint3x4(346458180, 2131041239, 1797649913, 162082500, 25639548, 1665178642, 1617231933, 1716426491, 1986475699, 262354389, 1517004243, 1058579789); + uint3x4 b3 = uint3x4(1647410210, 1000391363, 1539243411, 1253927304, 894227825, 1897420927, 826437109, 139868307, 565247534, 1437897788, 1891416649, 1043772546); + bool3x4 r3 = bool3x4(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void uint3x4_operator_equal_wide_scalar() + { + uint3x4 a0 = uint3x4(1211464300, 1921862607, 508076684, 1249127920, 1394594555, 746862310, 1733655277, 1884008277, 1682018538, 795585660, 936027116, 927605411); + uint b0 = (746972502); + bool3x4 r0 = bool3x4(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + uint3x4 a1 = uint3x4(672785749, 585324157, 404448210, 969511077, 442746747, 1772925698, 1884034177, 451512860, 425476075, 1370577708, 597010220, 1249636005); + uint b1 = (1465584610); + bool3x4 r1 = bool3x4(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + uint3x4 a2 = uint3x4(211986678, 255635293, 1150443719, 177122433, 511346787, 1442445694, 667984966, 1684122010, 1962874832, 172230876, 496695881, 955604291); + uint b2 = (1305479811); + bool3x4 r2 = bool3x4(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + uint3x4 a3 = uint3x4(872759249, 1604334190, 443527663, 1734064824, 1483978726, 1018945528, 476526026, 564821616, 1368099334, 2134154866, 2136028886, 20195989); + uint b3 = (811880239); + bool3x4 r3 = bool3x4(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void uint3x4_operator_equal_scalar_wide() + { + uint a0 = (1150044438); + uint3x4 b0 = uint3x4(233855098, 924242519, 1402948791, 601381975, 2120518068, 629187703, 1971977031, 47183124, 1061805787, 1009011238, 312511148, 1460673064); + bool3x4 r0 = bool3x4(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + uint a1 = (737210539); + uint3x4 b1 = uint3x4(1737844479, 1892405453, 2133024000, 455818693, 2003197687, 1276241219, 534746610, 559824292, 1758388240, 1023494292, 719963017, 1883763832); + bool3x4 r1 = bool3x4(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + uint a2 = (597498209); + uint3x4 b2 = uint3x4(367814403, 1839429063, 223575614, 79701214, 1699606118, 759455864, 2017599457, 1395605233, 1191785903, 1156248212, 338891967, 61410415); + bool3x4 r2 = bool3x4(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + uint a3 = (1576985758); + uint3x4 b3 = uint3x4(1066598856, 1070606918, 1295956934, 1391539053, 1206456305, 466211205, 1362213007, 554347592, 361925309, 1122476040, 1118155036, 2074160001); + bool3x4 r3 = bool3x4(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void uint3x4_operator_not_equal_wide_wide() + { + uint3x4 a0 = uint3x4(1660932106, 982847023, 97046264, 1739517447, 1253499180, 1830584069, 1841470429, 1397841646, 1770890135, 1906548631, 169082967, 2099271786); + uint3x4 b0 = uint3x4(107139049, 75478496, 2055495054, 358586687, 942338347, 111564990, 113811950, 948912488, 1080084121, 1400504872, 1032134499, 1061123400); + bool3x4 r0 = bool3x4(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + uint3x4 a1 = uint3x4(1909317609, 46519139, 1433204003, 931492669, 670504132, 1551558665, 1204055048, 1623586740, 226381077, 1145987803, 644253929, 475189890); + uint3x4 b1 = uint3x4(221862069, 858950046, 989094643, 2023070999, 1269317127, 531883744, 687761409, 278427731, 296354221, 536981557, 1134676193, 1749879634); + bool3x4 r1 = bool3x4(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + uint3x4 a2 = uint3x4(922313145, 2006448607, 1574579050, 1839580033, 155350910, 313644534, 2008975915, 1072866331, 10845678, 1588544505, 709736932, 1892341087); + uint3x4 b2 = uint3x4(1944210269, 92849031, 164029425, 628797607, 2069207270, 2022667842, 880567401, 264404537, 1954996717, 572153302, 865957902, 1083128726); + bool3x4 r2 = bool3x4(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + uint3x4 a3 = uint3x4(1603981028, 1174123795, 2033630343, 416869471, 1894155826, 2084120548, 1130129683, 448491949, 1577220741, 376532834, 374116875, 416935463); + uint3x4 b3 = uint3x4(1628120900, 2020212393, 1562290229, 774641416, 444123152, 1636477381, 838643638, 506474707, 922761058, 1282331425, 1748402545, 1493297323); + bool3x4 r3 = bool3x4(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void uint3x4_operator_not_equal_wide_scalar() + { + uint3x4 a0 = uint3x4(747758183, 1033001286, 1439973882, 2138928797, 1197845089, 1432672459, 950170763, 238704450, 2105962247, 727205263, 1640688041, 276313906); + uint b0 = (248693828); + bool3x4 r0 = bool3x4(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + uint3x4 a1 = uint3x4(2126300423, 2035077187, 1171827730, 1412347883, 1622176923, 768370497, 1072798259, 1808712713, 1497830076, 1582645163, 1876273820, 90244766); + uint b1 = (791998981); + bool3x4 r1 = bool3x4(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + uint3x4 a2 = uint3x4(30493685, 384643370, 11554610, 2016093187, 1515760622, 1596313927, 363921847, 1555396158, 913218907, 1739138988, 1916670251, 1516209113); + uint b2 = (904014575); + bool3x4 r2 = bool3x4(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + uint3x4 a3 = uint3x4(765258490, 1509386069, 1670155205, 6112585, 1942607934, 964072392, 779222124, 409389668, 321500037, 1728722181, 1641292942, 780105497); + uint b3 = (668154629); + bool3x4 r3 = bool3x4(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void uint3x4_operator_not_equal_scalar_wide() + { + uint a0 = (2076921066); + uint3x4 b0 = uint3x4(2037494727, 1989050616, 48833929, 1897435904, 514354517, 1783749164, 364694471, 754315072, 124108032, 1512967900, 1178825850, 1854793298); + bool3x4 r0 = bool3x4(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + uint a1 = (50286949); + uint3x4 b1 = uint3x4(2100802631, 1640811853, 82110247, 472172806, 266984506, 2003668365, 1826089250, 1041416160, 356140110, 2057237962, 799920703, 1916347720); + bool3x4 r1 = bool3x4(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + uint a2 = (510966350); + uint3x4 b2 = uint3x4(572038024, 1936481966, 1366859342, 1775285431, 604757336, 1047551607, 1311703338, 676012224, 627370253, 1715733805, 699755913, 1875151666); + bool3x4 r2 = bool3x4(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + uint a3 = (358894860); + uint3x4 b3 = uint3x4(1036873378, 214171973, 340364269, 1652250278, 592713982, 806342921, 1264065574, 188560943, 1068608955, 485382245, 57935167, 1002934795); + bool3x4 r3 = bool3x4(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void uint3x4_operator_less_wide_wide() + { + uint3x4 a0 = uint3x4(1182186063, 415538999, 1667335818, 1566618442, 1166180837, 639095188, 1080836365, 771119973, 928263233, 789225474, 665243110, 1003542034); + uint3x4 b0 = uint3x4(524633529, 1032195686, 760723389, 1505751409, 431962172, 1287906509, 1560084663, 1450178202, 2066166337, 1107069023, 1640077524, 2103263105); + bool3x4 r0 = bool3x4(false, true, false, false, false, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 < b0, r0); + + uint3x4 a1 = uint3x4(1032480172, 1961336172, 923379558, 21210619, 1089772116, 1707633052, 778986024, 158153146, 336715101, 1839141169, 1706859710, 1928438162); + uint3x4 b1 = uint3x4(684229139, 1234033624, 1278743281, 1953079347, 1228832942, 2082539723, 1088437561, 1058382082, 207459172, 750531081, 2015788562, 2126542133); + bool3x4 r1 = bool3x4(false, false, true, true, true, true, true, true, false, false, true, true); + TestUtils.AreEqual(a1 < b1, r1); + + uint3x4 a2 = uint3x4(1638101724, 2044698552, 1543260981, 471462349, 1668575142, 2147199161, 946870864, 582371851, 410751553, 198134393, 1999935258, 671192178); + uint3x4 b2 = uint3x4(271967348, 1601249324, 1373999400, 1689592186, 459759541, 983106679, 332584818, 2034921203, 833499488, 1999487070, 836063897, 1987309319); + bool3x4 r2 = bool3x4(false, false, false, true, false, false, false, true, true, true, false, true); + TestUtils.AreEqual(a2 < b2, r2); + + uint3x4 a3 = uint3x4(1908013191, 770353922, 1948420002, 396403395, 903274624, 1743415547, 1381528376, 409818366, 757370593, 413964581, 1088722047, 111511218); + uint3x4 b3 = uint3x4(1878327039, 457783938, 253010953, 1164175257, 1982277686, 651412210, 567444942, 1863256363, 18040866, 319226483, 1322530114, 4130283); + bool3x4 r3 = bool3x4(false, false, false, true, true, false, false, true, false, false, true, false); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void uint3x4_operator_less_wide_scalar() + { + uint3x4 a0 = uint3x4(608447185, 818840405, 869219329, 2080125385, 1214500548, 1361741203, 1667165786, 1615392341, 840091491, 469591900, 1247103789, 315321650); + uint b0 = (1491216667); + bool3x4 r0 = bool3x4(true, true, true, false, true, true, false, false, true, true, true, true); + TestUtils.AreEqual(a0 < b0, r0); + + uint3x4 a1 = uint3x4(930950514, 933855388, 908563901, 1127696709, 1286331950, 380753337, 971148054, 1827886929, 1056649851, 1579735991, 689044913, 1960894027); + uint b1 = (1100560246); + bool3x4 r1 = bool3x4(true, true, true, false, false, true, true, false, true, false, true, false); + TestUtils.AreEqual(a1 < b1, r1); + + uint3x4 a2 = uint3x4(371987110, 1703747625, 1698536333, 41716206, 243673862, 1274625476, 611065092, 118750042, 1829327996, 452204442, 1645191336, 1829152606); + uint b2 = (867559111); + bool3x4 r2 = bool3x4(true, false, false, true, true, false, true, true, false, true, false, false); + TestUtils.AreEqual(a2 < b2, r2); + + uint3x4 a3 = uint3x4(1891059504, 233590785, 894500093, 92899312, 965973603, 1496873003, 973411415, 694702440, 215973795, 1555455579, 1443255493, 212954934); + uint b3 = (1217893177); + bool3x4 r3 = bool3x4(false, true, true, true, true, false, true, true, true, false, false, true); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void uint3x4_operator_less_scalar_wide() + { + uint a0 = (548436837); + uint3x4 b0 = uint3x4(282703327, 14370648, 1862117300, 1304793311, 826073259, 988910157, 445132446, 1139670255, 111349251, 1102440676, 112183144, 1594415311); + bool3x4 r0 = bool3x4(false, false, true, true, true, true, false, true, false, true, false, true); + TestUtils.AreEqual(a0 < b0, r0); + + uint a1 = (1890019295); + uint3x4 b1 = uint3x4(2098715503, 608933527, 183989010, 1596056507, 1027318999, 146281093, 358911716, 874278078, 1106057699, 1256807459, 2111973919, 1736480659); + bool3x4 r1 = bool3x4(true, false, false, false, false, false, false, false, false, false, true, false); + TestUtils.AreEqual(a1 < b1, r1); + + uint a2 = (810406400); + uint3x4 b2 = uint3x4(1329939911, 1276652605, 593690439, 771851138, 590897155, 386688344, 1290583204, 1984930954, 743544838, 1473400608, 1300775973, 1351720916); + bool3x4 r2 = bool3x4(true, true, false, false, false, false, true, true, false, true, true, true); + TestUtils.AreEqual(a2 < b2, r2); + + uint a3 = (168788814); + uint3x4 b3 = uint3x4(670661854, 168118205, 894264935, 1763013903, 1647476162, 699045651, 1813273687, 900504872, 1574770031, 1684716245, 1458270033, 685700324); + bool3x4 r3 = bool3x4(true, false, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void uint3x4_operator_greater_wide_wide() + { + uint3x4 a0 = uint3x4(592884447, 2133928932, 918957182, 1284069471, 194584707, 739120780, 241654068, 1340158550, 2099542537, 1182623667, 1399607274, 789301637); + uint3x4 b0 = uint3x4(138737040, 192863971, 1700841444, 1044631301, 1391589821, 730837695, 253553987, 2078872742, 910845808, 976047676, 202633078, 1223618940); + bool3x4 r0 = bool3x4(true, true, false, true, false, true, false, false, true, true, true, false); + TestUtils.AreEqual(a0 > b0, r0); + + uint3x4 a1 = uint3x4(180400925, 594688333, 1877031463, 1360073500, 1091782422, 546676424, 348221770, 716039145, 458742739, 1365508046, 1523167942, 1574478622); + uint3x4 b1 = uint3x4(641600530, 1830470354, 1570701388, 1104256103, 1838646932, 740166101, 1549021845, 1457092873, 1790630950, 907793213, 555122804, 1418910265); + bool3x4 r1 = bool3x4(false, false, true, true, false, false, false, false, false, true, true, true); + TestUtils.AreEqual(a1 > b1, r1); + + uint3x4 a2 = uint3x4(1295065160, 715285504, 1130323487, 677530432, 1496919050, 12463046, 1106153111, 1315083485, 31516321, 1786538920, 1854361210, 1730650972); + uint3x4 b2 = uint3x4(335209251, 1094341422, 1465325455, 390251369, 910309992, 277356652, 1601082764, 771366966, 1782348324, 550490783, 599992449, 550520692); + bool3x4 r2 = bool3x4(true, false, false, true, true, false, false, true, false, true, true, true); + TestUtils.AreEqual(a2 > b2, r2); + + uint3x4 a3 = uint3x4(194806663, 517304937, 984608679, 1847934645, 1214605555, 535405194, 855415884, 2121416263, 1161116500, 1390730698, 1536558799, 350939762); + uint3x4 b3 = uint3x4(1873014441, 1756459971, 2028992071, 1772761768, 1323261715, 1541822212, 265732078, 1773940614, 156425055, 1585395425, 438682493, 1005143622); + bool3x4 r3 = bool3x4(false, false, false, true, false, false, true, true, true, false, true, false); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void uint3x4_operator_greater_wide_scalar() + { + uint3x4 a0 = uint3x4(1097138316, 211763648, 1883002501, 56406996, 43662641, 1923456111, 1437755186, 1219010035, 2125058448, 304028799, 893125636, 48044515); + uint b0 = (438688675); + bool3x4 r0 = bool3x4(true, false, true, false, false, true, true, true, true, false, true, false); + TestUtils.AreEqual(a0 > b0, r0); + + uint3x4 a1 = uint3x4(711945018, 577943770, 572743717, 1016617211, 2063134811, 1577403353, 64009107, 1462961460, 1143565920, 3715845, 689362811, 263973424); + uint b1 = (1035679270); + bool3x4 r1 = bool3x4(false, false, false, false, true, true, false, true, true, false, false, false); + TestUtils.AreEqual(a1 > b1, r1); + + uint3x4 a2 = uint3x4(1045140419, 524569092, 1183316983, 1107974092, 212839726, 523727054, 112709358, 614746280, 1000986708, 1683117650, 1451781409, 61102732); + uint b2 = (1058332184); + bool3x4 r2 = bool3x4(false, false, true, true, false, false, false, false, false, true, true, false); + TestUtils.AreEqual(a2 > b2, r2); + + uint3x4 a3 = uint3x4(1284938191, 2125085618, 467075658, 1019531089, 2028286621, 940955706, 1037153304, 1184928188, 1260010015, 1456174269, 174216269, 1930086291); + uint b3 = (1452639553); + bool3x4 r3 = bool3x4(false, true, false, false, true, false, false, false, false, true, false, true); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void uint3x4_operator_greater_scalar_wide() + { + uint a0 = (2024896938); + uint3x4 b0 = uint3x4(599356784, 185671342, 1932327391, 2025591013, 1257191721, 1312388500, 1443698859, 779217735, 691047512, 741776730, 732565983, 668302204); + bool3x4 r0 = bool3x4(true, true, true, false, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 > b0, r0); + + uint a1 = (1556466996); + uint3x4 b1 = uint3x4(858599525, 1896917159, 701542098, 1052151621, 1023307544, 1435392907, 1858177345, 299897686, 632930355, 1387203601, 483722222, 863042711); + bool3x4 r1 = bool3x4(true, false, true, true, true, true, false, true, true, true, true, true); + TestUtils.AreEqual(a1 > b1, r1); + + uint a2 = (1713088900); + uint3x4 b2 = uint3x4(315569296, 292652611, 1002628348, 927789921, 108145064, 425005337, 2093233588, 2063431853, 2079035844, 849337819, 1769234051, 358948261); + bool3x4 r2 = bool3x4(true, true, true, true, true, true, false, false, false, true, false, true); + TestUtils.AreEqual(a2 > b2, r2); + + uint a3 = (267985383); + uint3x4 b3 = uint3x4(126402553, 2055164423, 577620406, 1167389614, 474380256, 1163355187, 1782967398, 1648397169, 845981950, 630459977, 1033887217, 1480829811); + bool3x4 r3 = bool3x4(true, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void uint3x4_operator_less_equal_wide_wide() + { + uint3x4 a0 = uint3x4(1577248162, 2043073061, 1688380407, 176431985, 223299035, 1502802140, 1691709825, 386789394, 117182003, 1665770435, 1958490731, 420032601); + uint3x4 b0 = uint3x4(903445031, 2108974565, 210822256, 1281704747, 453681718, 66138830, 1229799377, 1620922595, 1715833766, 1366430432, 13102000, 46919981); + bool3x4 r0 = bool3x4(false, true, false, true, true, false, false, true, true, false, false, false); + TestUtils.AreEqual(a0 <= b0, r0); + + uint3x4 a1 = uint3x4(1251092689, 2011681765, 749743684, 183784440, 1150674774, 1633828822, 1719442172, 336047314, 743733218, 1393995865, 1854442658, 1498138884); + uint3x4 b1 = uint3x4(486470891, 1709514236, 2145785285, 854254454, 1273278658, 810263315, 1862773824, 201799013, 974166844, 1320622967, 2058099616, 522102017); + bool3x4 r1 = bool3x4(false, false, true, true, true, false, true, false, true, false, true, false); + TestUtils.AreEqual(a1 <= b1, r1); + + uint3x4 a2 = uint3x4(912169992, 1992682021, 1619593455, 1883313982, 483412430, 857881876, 346624138, 531961063, 269897278, 1062947703, 1743454202, 2048964070); + uint3x4 b2 = uint3x4(620752145, 1213693681, 1281818305, 1564146162, 1996153080, 1201909516, 614401396, 224997397, 648547686, 418431167, 1724009726, 401891826); + bool3x4 r2 = bool3x4(false, false, false, false, true, true, true, false, true, false, false, false); + TestUtils.AreEqual(a2 <= b2, r2); + + uint3x4 a3 = uint3x4(1379786452, 622697214, 766589782, 339960970, 1135815654, 797344244, 153103264, 1382144646, 1537448323, 326850885, 1004891948, 2002658522); + uint3x4 b3 = uint3x4(1463971422, 984323887, 1246893281, 1340476720, 1489579748, 128991539, 1117574406, 2016340116, 69682660, 1870772739, 1281621445, 129331822); + bool3x4 r3 = bool3x4(true, true, true, true, true, false, true, true, false, true, true, false); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void uint3x4_operator_less_equal_wide_scalar() + { + uint3x4 a0 = uint3x4(1722165358, 1219858357, 860410743, 411099660, 348104022, 1963256951, 212084836, 58924407, 1459242706, 1745758438, 532949158, 262559763); + uint b0 = (1688048545); + bool3x4 r0 = bool3x4(false, true, true, true, true, false, true, true, true, false, true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + uint3x4 a1 = uint3x4(690091301, 2091514001, 1857173043, 1617221948, 2017733017, 804204255, 981729559, 2032949254, 910922522, 2079225209, 26179915, 238796519); + uint b1 = (1806172431); + bool3x4 r1 = bool3x4(true, false, false, true, false, true, true, false, true, false, true, true); + TestUtils.AreEqual(a1 <= b1, r1); + + uint3x4 a2 = uint3x4(1917813750, 20607406, 1337879822, 959460446, 1599429457, 1279143037, 1551937606, 626254356, 1162369122, 1021674613, 127839058, 1974631244); + uint b2 = (1258115260); + bool3x4 r2 = bool3x4(false, true, false, true, false, false, false, true, true, true, true, false); + TestUtils.AreEqual(a2 <= b2, r2); + + uint3x4 a3 = uint3x4(426908235, 487782623, 1454736163, 465255784, 686095683, 2012624010, 1427922646, 1129062501, 1896996725, 1609784025, 1413823266, 1483727269); + uint b3 = (1818566980); + bool3x4 r3 = bool3x4(true, true, true, true, true, false, true, true, false, true, true, true); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void uint3x4_operator_less_equal_scalar_wide() + { + uint a0 = (1777585); + uint3x4 b0 = uint3x4(1181030049, 1787703989, 1729760948, 1816537388, 1359786460, 874999193, 1678863148, 1711365839, 762067160, 11953554, 1131583906, 1175393186); + bool3x4 r0 = bool3x4(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + uint a1 = (1293698493); + uint3x4 b1 = uint3x4(48893340, 66196247, 1958607116, 1576473309, 861890786, 478252419, 957887737, 117849810, 1348693584, 105489302, 259034238, 530713566); + bool3x4 r1 = bool3x4(false, false, true, true, false, false, false, false, true, false, false, false); + TestUtils.AreEqual(a1 <= b1, r1); + + uint a2 = (601413850); + uint3x4 b2 = uint3x4(830430286, 145552297, 1697295044, 1150680564, 2091065664, 1796096704, 1572008712, 1556906486, 205552788, 620963188, 1156705971, 1121867260); + bool3x4 r2 = bool3x4(true, false, true, true, true, true, true, true, false, true, true, true); + TestUtils.AreEqual(a2 <= b2, r2); + + uint a3 = (733876180); + uint3x4 b3 = uint3x4(1570208446, 541165966, 644414754, 734807383, 938714737, 591783460, 56988751, 790541516, 1811299247, 1308256680, 549490410, 1987696011); + bool3x4 r3 = bool3x4(true, false, false, true, true, false, false, true, true, true, false, true); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void uint3x4_operator_greater_equal_wide_wide() + { + uint3x4 a0 = uint3x4(263000030, 744235661, 1893760267, 237248, 1062370984, 1676977687, 816766880, 1089431546, 1394493730, 1176473380, 1193988637, 1703862455); + uint3x4 b0 = uint3x4(1395535146, 1178373944, 1237373760, 1364855321, 600811864, 362060472, 290870624, 1839067862, 396958580, 1336888643, 1019684398, 1697684196); + bool3x4 r0 = bool3x4(false, false, true, false, true, true, true, false, true, false, true, true); + TestUtils.AreEqual(a0 >= b0, r0); + + uint3x4 a1 = uint3x4(1806186947, 1253571980, 589397635, 1951842887, 798931197, 808426484, 744869638, 1959531616, 207430702, 1533946595, 1148381840, 2011549474); + uint3x4 b1 = uint3x4(1227300220, 2044269675, 1898323839, 874509380, 1873505472, 1268843918, 1606949562, 1263896445, 1805518202, 1412091359, 1240330374, 1955056253); + bool3x4 r1 = bool3x4(true, false, false, true, false, false, false, true, false, true, false, true); + TestUtils.AreEqual(a1 >= b1, r1); + + uint3x4 a2 = uint3x4(605043041, 1707339660, 2038122892, 345761584, 1839156338, 1519670644, 2131285427, 775457686, 796452624, 1710612922, 1629927787, 1094198224); + uint3x4 b2 = uint3x4(2025187918, 750755999, 869709740, 1390799279, 1194035112, 666460047, 103451220, 1311530792, 802468307, 1090745055, 1968071275, 1935027815); + bool3x4 r2 = bool3x4(false, true, true, false, true, true, true, false, false, true, false, false); + TestUtils.AreEqual(a2 >= b2, r2); + + uint3x4 a3 = uint3x4(584910611, 1129457941, 1633221450, 549302356, 1363234393, 1439226634, 190984179, 983870135, 1527743888, 1577171227, 87278918, 1280094665); + uint3x4 b3 = uint3x4(2060060582, 1535954082, 291771096, 565856573, 1445999374, 711693364, 1201086888, 2076705104, 1565110852, 1698318173, 1293071569, 103979482); + bool3x4 r3 = bool3x4(false, false, true, false, false, true, false, false, false, false, false, true); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void uint3x4_operator_greater_equal_wide_scalar() + { + uint3x4 a0 = uint3x4(2112791350, 1043657935, 101764761, 1529909067, 556026890, 281734132, 1186600258, 815093894, 609211196, 1604309397, 829548642, 244604867); + uint b0 = (1470533736); + bool3x4 r0 = bool3x4(true, false, false, true, false, false, false, false, false, true, false, false); + TestUtils.AreEqual(a0 >= b0, r0); + + uint3x4 a1 = uint3x4(1419295004, 1819986195, 1460027917, 1646290021, 196833647, 1596738181, 1905036391, 1771391775, 1584946560, 370941146, 440219668, 1607345862); + uint b1 = (471843809); + bool3x4 r1 = bool3x4(true, true, true, true, false, true, true, true, true, false, false, true); + TestUtils.AreEqual(a1 >= b1, r1); + + uint3x4 a2 = uint3x4(1449142607, 379014762, 1719435169, 258833609, 1389585003, 612593660, 42612027, 1138747386, 1491562090, 917503963, 353608194, 1526792895); + uint b2 = (1223010129); + bool3x4 r2 = bool3x4(true, false, true, false, true, false, false, false, true, false, false, true); + TestUtils.AreEqual(a2 >= b2, r2); + + uint3x4 a3 = uint3x4(192092521, 367754234, 1738737389, 523396822, 594728703, 1332667659, 1627604854, 1542713928, 1997611484, 191413337, 1230701700, 702382564); + uint b3 = (909358617); + bool3x4 r3 = bool3x4(false, false, true, false, false, true, true, true, true, false, true, false); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void uint3x4_operator_greater_equal_scalar_wide() + { + uint a0 = (1525542481); + uint3x4 b0 = uint3x4(1503244746, 861711266, 817773856, 925984572, 571221723, 683686810, 118252990, 1653952090, 1240253990, 1947039008, 1869136019, 152012637); + bool3x4 r0 = bool3x4(true, true, true, true, true, true, true, false, true, false, false, true); + TestUtils.AreEqual(a0 >= b0, r0); + + uint a1 = (1214546726); + uint3x4 b1 = uint3x4(917376832, 303549425, 2111728811, 945321577, 173706579, 625318949, 519443238, 1583588379, 1026799433, 1713083717, 394922760, 1216218189); + bool3x4 r1 = bool3x4(true, true, false, true, true, true, true, false, true, false, true, false); + TestUtils.AreEqual(a1 >= b1, r1); + + uint a2 = (1336522452); + uint3x4 b2 = uint3x4(233894308, 479913036, 984991199, 172993285, 2121050903, 465645173, 788510727, 337378780, 273010835, 1898553615, 1111540136, 717385513); + bool3x4 r2 = bool3x4(true, true, true, true, false, true, true, true, true, false, true, true); + TestUtils.AreEqual(a2 >= b2, r2); + + uint a3 = (474197678); + uint3x4 b3 = uint3x4(1417152771, 1476091619, 1312849725, 243299324, 1470872301, 1443256118, 1203165035, 2138148138, 1543595760, 186659728, 807288168, 1274079907); + bool3x4 r3 = bool3x4(false, false, false, true, false, false, false, false, false, true, false, false); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void uint3x4_operator_add_wide_wide() + { + uint3x4 a0 = uint3x4(2049228671, 1658660009, 491719392, 937013355, 81108663, 1063894558, 86954702, 843159721, 698977704, 192867135, 1683407172, 137301303); + uint3x4 b0 = uint3x4(2088751567, 645762023, 306868786, 4360271, 506047997, 2094559874, 1634712736, 1601474440, 1586485231, 908746788, 1812370320, 1247342357); + uint3x4 r0 = uint3x4(4137980238, 2304422032, 798588178, 941373626, 587156660, 3158454432, 1721667438, 2444634161, 2285462935, 1101613923, 3495777492, 1384643660); + TestUtils.AreEqual(a0 + b0, r0); + + uint3x4 a1 = uint3x4(2103582820, 526139155, 447937230, 2127411006, 1670579390, 1914969141, 997691756, 857841794, 2129024875, 267535529, 978891383, 657092366); + uint3x4 b1 = uint3x4(2043773873, 223363428, 175115707, 985928617, 507662836, 1231457019, 776127866, 607782424, 1160366210, 1384832242, 702057048, 703554905); + uint3x4 r1 = uint3x4(4147356693, 749502583, 623052937, 3113339623, 2178242226, 3146426160, 1773819622, 1465624218, 3289391085, 1652367771, 1680948431, 1360647271); + TestUtils.AreEqual(a1 + b1, r1); + + uint3x4 a2 = uint3x4(941872903, 906908654, 1940071697, 862186205, 1951450264, 689662850, 1928213278, 1703906688, 526120638, 423980484, 1867227242, 603782684); + uint3x4 b2 = uint3x4(2106992817, 1994483489, 539473, 236858351, 411317652, 595429166, 713649927, 2053476603, 77965941, 1726775513, 1759186349, 2070333485); + uint3x4 r2 = uint3x4(3048865720, 2901392143, 1940611170, 1099044556, 2362767916, 1285092016, 2641863205, 3757383291, 604086579, 2150755997, 3626413591, 2674116169); + TestUtils.AreEqual(a2 + b2, r2); + + uint3x4 a3 = uint3x4(728643437, 927205560, 1544834791, 268450974, 1386681507, 1428974172, 1415690700, 1193340567, 1792960278, 1427490402, 86465016, 827052793); + uint3x4 b3 = uint3x4(1732568358, 523040962, 899952708, 1401525772, 1970067897, 488428060, 132927517, 1670039917, 1678110790, 586374104, 262412628, 1415374948); + uint3x4 r3 = uint3x4(2461211795, 1450246522, 2444787499, 1669976746, 3356749404, 1917402232, 1548618217, 2863380484, 3471071068, 2013864506, 348877644, 2242427741); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void uint3x4_operator_add_wide_scalar() + { + uint3x4 a0 = uint3x4(2038218457, 134923711, 875689667, 1338884463, 997710928, 340490871, 1067888129, 70433301, 2003021861, 1635971971, 1160398286, 85446202); + uint b0 = (2124409227); + uint3x4 r0 = uint3x4(4162627684, 2259332938, 3000098894, 3463293690, 3122120155, 2464900098, 3192297356, 2194842528, 4127431088, 3760381198, 3284807513, 2209855429); + TestUtils.AreEqual(a0 + b0, r0); + + uint3x4 a1 = uint3x4(1068152966, 1497676888, 1727477485, 1095438654, 756559204, 1818718931, 658923552, 1610518921, 1585755398, 692843300, 1068593469, 1704776233); + uint b1 = (1239387100); + uint3x4 r1 = uint3x4(2307540066, 2737063988, 2966864585, 2334825754, 1995946304, 3058106031, 1898310652, 2849906021, 2825142498, 1932230400, 2307980569, 2944163333); + TestUtils.AreEqual(a1 + b1, r1); + + uint3x4 a2 = uint3x4(577782260, 711894571, 564257439, 2051736283, 1572837697, 1628006545, 1855700263, 656748782, 272774516, 1917133199, 828322973, 2116810190); + uint b2 = (736972565); + uint3x4 r2 = uint3x4(1314754825, 1448867136, 1301230004, 2788708848, 2309810262, 2364979110, 2592672828, 1393721347, 1009747081, 2654105764, 1565295538, 2853782755); + TestUtils.AreEqual(a2 + b2, r2); + + uint3x4 a3 = uint3x4(2092767444, 1236931273, 504264449, 794292574, 1518058681, 1604636324, 354873417, 685247897, 227781140, 321182517, 1210575914, 1340503111); + uint b3 = (973587865); + uint3x4 r3 = uint3x4(3066355309, 2210519138, 1477852314, 1767880439, 2491646546, 2578224189, 1328461282, 1658835762, 1201369005, 1294770382, 2184163779, 2314090976); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void uint3x4_operator_add_scalar_wide() + { + uint a0 = (391092078); + uint3x4 b0 = uint3x4(519908870, 851424292, 328314822, 135622204, 740923360, 655394201, 1451896269, 1781697072, 996031825, 1557774949, 779774940, 1111541302); + uint3x4 r0 = uint3x4(911000948, 1242516370, 719406900, 526714282, 1132015438, 1046486279, 1842988347, 2172789150, 1387123903, 1948867027, 1170867018, 1502633380); + TestUtils.AreEqual(a0 + b0, r0); + + uint a1 = (783046445); + uint3x4 b1 = uint3x4(1130163944, 288279584, 1397683861, 1636583489, 673263339, 1469300874, 14855965, 1116636999, 1488863300, 1600990886, 190651301, 1307459768); + uint3x4 r1 = uint3x4(1913210389, 1071326029, 2180730306, 2419629934, 1456309784, 2252347319, 797902410, 1899683444, 2271909745, 2384037331, 973697746, 2090506213); + TestUtils.AreEqual(a1 + b1, r1); + + uint a2 = (920085839); + uint3x4 b2 = uint3x4(2082229835, 1992405574, 1213924458, 505841452, 981421162, 1488337699, 1113826640, 1806146508, 1841791222, 206610851, 526971953, 1236359886); + uint3x4 r2 = uint3x4(3002315674, 2912491413, 2134010297, 1425927291, 1901507001, 2408423538, 2033912479, 2726232347, 2761877061, 1126696690, 1447057792, 2156445725); + TestUtils.AreEqual(a2 + b2, r2); + + uint a3 = (1459523189); + uint3x4 b3 = uint3x4(965740631, 82842799, 1298403201, 1805809772, 1978864191, 415003386, 1906304148, 722870197, 744248796, 1677223559, 303376031, 1275565021); + uint3x4 r3 = uint3x4(2425263820, 1542365988, 2757926390, 3265332961, 3438387380, 1874526575, 3365827337, 2182393386, 2203771985, 3136746748, 1762899220, 2735088210); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void uint3x4_operator_sub_wide_wide() + { + uint3x4 a0 = uint3x4(1353441118, 797269833, 659988112, 56022121, 365847472, 2062899435, 1380988474, 799885138, 1306058185, 579775276, 1239163824, 344591081); + uint3x4 b0 = uint3x4(1332656812, 1827794007, 972557431, 2078233689, 1508184327, 1372307701, 810327977, 936799885, 71562303, 1418723328, 1971342989, 1226053395); + uint3x4 r0 = uint3x4(20784306, 3264443122, 3982397977, 2272755728, 3152630441, 690591734, 570660497, 4158052549, 1234495882, 3456019244, 3562788131, 3413504982); + TestUtils.AreEqual(a0 - b0, r0); + + uint3x4 a1 = uint3x4(86359575, 1049709943, 721529513, 1767221271, 7652784, 545192611, 176298787, 1477774126, 1426963688, 2032787858, 2059525977, 445200454); + uint3x4 b1 = uint3x4(136565478, 1979903295, 600719425, 837912956, 632054793, 711091688, 904695656, 1640069560, 750244414, 1385118097, 1102391291, 1221949855); + uint3x4 r1 = uint3x4(4244761393, 3364773944, 120810088, 929308315, 3670565287, 4129068219, 3566570427, 4132671862, 676719274, 647669761, 957134686, 3518217895); + TestUtils.AreEqual(a1 - b1, r1); + + uint3x4 a2 = uint3x4(425848588, 2026967474, 1128492011, 61421784, 988065731, 1741434432, 2070331135, 1356704176, 1888446703, 1364654917, 265135366, 760501098); + uint3x4 b2 = uint3x4(609588723, 1054324682, 1678086165, 1529581776, 1718700085, 523422634, 223602473, 1912611694, 1224986479, 748933681, 88793450, 401362529); + uint3x4 r2 = uint3x4(4111227161, 972642792, 3745373142, 2826807304, 3564332942, 1218011798, 1846728662, 3739059778, 663460224, 615721236, 176341916, 359138569); + TestUtils.AreEqual(a2 - b2, r2); + + uint3x4 a3 = uint3x4(741271824, 2139243287, 2086038778, 1314011065, 1838848671, 1554054707, 721235598, 1856904592, 570633009, 1870509604, 1310744871, 1717222072); + uint3x4 b3 = uint3x4(1087189363, 488919410, 1106956631, 1131451931, 1975243735, 111940790, 712896589, 477050266, 1163094482, 605082349, 954351492, 1203361215); + uint3x4 r3 = uint3x4(3949049757, 1650323877, 979082147, 182559134, 4158572232, 1442113917, 8339009, 1379854326, 3702505823, 1265427255, 356393379, 513860857); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void uint3x4_operator_sub_wide_scalar() + { + uint3x4 a0 = uint3x4(1176369558, 1934521195, 309452150, 1417634074, 108910717, 1306356714, 1502312334, 1451794815, 281174200, 87530840, 1913724431, 2041593336); + uint b0 = (462232403); + uint3x4 r0 = uint3x4(714137155, 1472288792, 4142187043, 955401671, 3941645610, 844124311, 1040079931, 989562412, 4113909093, 3920265733, 1451492028, 1579360933); + TestUtils.AreEqual(a0 - b0, r0); + + uint3x4 a1 = uint3x4(557239990, 1590376732, 819090189, 816382635, 815920639, 1829033117, 1792801932, 1113440549, 1418937976, 1277257189, 2092779398, 642236742); + uint b1 = (1119051448); + uint3x4 r1 = uint3x4(3733155838, 471325284, 3995006037, 3992298483, 3991836487, 709981669, 673750484, 4289356397, 299886528, 158205741, 973727950, 3818152590); + TestUtils.AreEqual(a1 - b1, r1); + + uint3x4 a2 = uint3x4(1605250794, 1468003019, 128303186, 553494257, 1017126971, 1999744782, 2017272758, 1817991764, 1280985500, 676974855, 1638032613, 949761204); + uint b2 = (819644478); + uint3x4 r2 = uint3x4(785606316, 648358541, 3603626004, 4028817075, 197482493, 1180100304, 1197628280, 998347286, 461341022, 4152297673, 818388135, 130116726); + TestUtils.AreEqual(a2 - b2, r2); + + uint3x4 a3 = uint3x4(1835969317, 976947310, 1304246606, 1456780208, 1554022712, 769804365, 2057831687, 758136579, 670433255, 603231411, 1673268965, 941598524); + uint b3 = (919015590); + uint3x4 r3 = uint3x4(916953727, 57931720, 385231016, 537764618, 635007122, 4145756071, 1138816097, 4134088285, 4046384961, 3979183117, 754253375, 22582934); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void uint3x4_operator_sub_scalar_wide() + { + uint a0 = (1691534405); + uint3x4 b0 = uint3x4(2022393810, 1612688515, 496689713, 887037586, 2097630964, 374934538, 939035482, 935242277, 1789300421, 264712893, 1231856067, 1818112748); + uint3x4 r0 = uint3x4(3964107891, 78845890, 1194844692, 804496819, 3888870737, 1316599867, 752498923, 756292128, 4197201280, 1426821512, 459678338, 4168388953); + TestUtils.AreEqual(a0 - b0, r0); + + uint a1 = (1428436109); + uint3x4 b1 = uint3x4(1258745460, 1077380396, 1330722719, 518111829, 967128529, 344666254, 1082267918, 907866696, 1816885123, 460340568, 962154498, 557113461); + uint3x4 r1 = uint3x4(169690649, 351055713, 97713390, 910324280, 461307580, 1083769855, 346168191, 520569413, 3906518282, 968095541, 466281611, 871322648); + TestUtils.AreEqual(a1 - b1, r1); + + uint a2 = (1701216709); + uint3x4 b2 = uint3x4(1980098777, 730060552, 1444397827, 853570556, 138836432, 1013190428, 718089530, 506757390, 1216448041, 936312747, 1997286455, 1969982026); + uint3x4 r2 = uint3x4(4016085228, 971156157, 256818882, 847646153, 1562380277, 688026281, 983127179, 1194459319, 484768668, 764903962, 3998897550, 4026201979); + TestUtils.AreEqual(a2 - b2, r2); + + uint a3 = (902880656); + uint3x4 b3 = uint3x4(1161220697, 1442464725, 622960765, 730968909, 614823841, 1889779020, 918322352, 133929920, 213123108, 1835450460, 521068072, 2066839749); + uint3x4 r3 = uint3x4(4036627255, 3755383227, 279919891, 171911747, 288056815, 3308068932, 4279525600, 768950736, 689757548, 3362397492, 381812584, 3131008203); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void uint3x4_operator_mul_wide_wide() + { + uint3x4 a0 = uint3x4(245827027, 208934650, 1019478917, 568231809, 877289039, 1585782440, 2111178729, 1186019069, 571481445, 1570087048, 629447153, 619383734); + uint3x4 b0 = uint3x4(759663997, 350129201, 477450108, 1635735015, 388710278, 757722665, 1509388321, 1841703980, 1826369331, 1524322467, 1605207974, 428419155); + uint3x4 r0 = uint3x4(3662155527, 1402281434, 332447596, 2361989735, 2624048730, 1455036648, 2128344329, 3700879228, 2640799263, 2093463192, 3087460678, 3161406466); + TestUtils.AreEqual(a0 * b0, r0); + + uint3x4 a1 = uint3x4(2055121568, 700402816, 263414349, 187830569, 2048056680, 546694675, 853585367, 933370718, 990212476, 1915885905, 1984212358, 368146234); + uint3x4 b1 = uint3x4(1460605791, 1968043860, 771161742, 2037340417, 322304267, 651448359, 1608326767, 1427155898, 1092185338, 665119139, 223634707, 694718952); + uint3x4 r1 = uint3x4(990589280, 3356793344, 2953243830, 1156600361, 649177976, 678952165, 1063621177, 2683284556, 2152538904, 3721713555, 2642853618, 1626072720); + TestUtils.AreEqual(a1 * b1, r1); + + uint3x4 a2 = uint3x4(899438811, 1765718681, 409003054, 2069758852, 140280263, 442491280, 1924530939, 1372320666, 200879709, 857149632, 962693646, 988118613); + uint3x4 b2 = uint3x4(675813713, 999254223, 1326064110, 788102700, 1927999142, 1706356773, 747671596, 106127297, 1695925670, 1788874462, 534570710, 1110638325); + uint3x4 r2 = uint3x4(1891467339, 335415735, 1128927428, 2638713520, 2861115658, 479369680, 3928339236, 4044803354, 48406862, 2297104000, 4019846068, 2811510105); + TestUtils.AreEqual(a2 * b2, r2); + + uint3x4 a3 = uint3x4(892998613, 534109991, 1836805716, 591690444, 1092459557, 1068605049, 1152926708, 1628337363, 400029062, 511168096, 1165835487, 1650108606); + uint3x4 b3 = uint3x4(142931150, 1684745462, 2101748242, 1831486861, 5683864, 1735084283, 1336059993, 721992570, 1906075622, 1073069872, 1374497592, 242540880); + uint3x4 r3 = uint3x4(293009766, 3677102970, 1179445736, 3813187164, 2708838392, 1397450915, 487571412, 3889286542, 326598756, 995119616, 638698952, 1153153376); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void uint3x4_operator_mul_wide_scalar() + { + uint3x4 a0 = uint3x4(1762033447, 465343930, 1570757881, 1326409563, 1824319147, 1356578909, 72749215, 154616909, 975743632, 573770299, 1958912969, 971327747); + uint b0 = (1476837906); + uint3x4 r0 = uint3x4(2981789374, 1326807828, 2156411778, 4018813542, 4229418502, 2976383114, 2455742766, 2574460778, 1736252960, 2595843622, 2760103458, 2441439286); + TestUtils.AreEqual(a0 * b0, r0); + + uint3x4 a1 = uint3x4(1818877398, 660611671, 1279757657, 391009467, 1186856590, 890343818, 800117742, 606927173, 1338014500, 1688964615, 1439447294, 387721300); + uint b1 = (1324050764); + uint3x4 r1 = uint3x4(1927061896, 645718228, 3706353516, 3450526340, 3727282216, 2610351864, 3202713768, 133057916, 2712818352, 3265005844, 4046133608, 100822256); + TestUtils.AreEqual(a1 * b1, r1); + + uint3x4 a2 = uint3x4(1192501703, 76318055, 124378112, 970518733, 1370700538, 1978842602, 1451974062, 987919119, 1659987051, 1325430351, 948943118, 1743760648); + uint b2 = (1613845584); + uint3x4 r2 = uint3x4(3900103216, 2959506480, 692371456, 973833232, 1630959136, 2616598816, 4103626336, 1516495024, 2027781488, 471196848, 2169531488, 1043640960); + TestUtils.AreEqual(a2 * b2, r2); + + uint3x4 a3 = uint3x4(227492421, 370371313, 309869840, 1389753586, 1895557060, 1449787207, 1817244670, 2117623142, 1951266912, 206918942, 382686790, 396984449); + uint b3 = (217698851); + uint3x4 r3 = uint3x4(269461871, 1120555251, 1293383984, 1838219542, 3023271884, 1677010101, 1900394426, 512258290, 4056397088, 3786096410, 1697920914, 1359963043); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void uint3x4_operator_mul_scalar_wide() + { + uint a0 = (99541948); + uint3x4 b0 = uint3x4(1764461774, 657072478, 1459784358, 1610646683, 1632058826, 868441654, 1408757883, 335917146, 2105124483, 1178393968, 1963904348, 1409533767); + uint3x4 r0 = uint3x4(3344568648, 4192918280, 1260585960, 1158730452, 4293361240, 3828814248, 2108402516, 1966690328, 1623617844, 2603413056, 3464455056, 3011267876); + TestUtils.AreEqual(a0 * b0, r0); + + uint a1 = (243286231); + uint3x4 b1 = uint3x4(1336308795, 517963367, 1733623488, 459880225, 994616533, 1420531535, 1821413700, 677771573, 2132626845, 1158827713, 640102997, 944551639); + uint3x4 r1 = uint3x4(3646578061, 2731337857, 3893490496, 2980416695, 62369507, 4218409817, 2881159196, 3966864259, 2038656731, 2224055319, 2818606435, 2745388689); + TestUtils.AreEqual(a1 * b1, r1); + + uint a2 = (1323243330); + uint3x4 b2 = uint3x4(1186460236, 657101857, 1275563580, 1031291523, 1008470115, 1155301041, 1046199281, 2138825098, 1273008873, 1788343477, 1994364082, 597340263); + uint3x4 r2 = uint3x4(4200942488, 50866050, 1979584376, 2165828294, 2084048518, 3664351394, 1987582754, 2187955092, 3020934930, 1909741994, 2131645412, 527678350); + TestUtils.AreEqual(a2 * b2, r2); + + uint a3 = (2022856151); + uint3x4 b3 = uint3x4(1375763101, 1007501105, 1162446628, 96412054, 1676576573, 1763698296, 729299033, 1534484, 1053621089, 1978013043, 796620370, 890235481); + uint3x4 r3 = uint3x4(2359761627, 3607975719, 2368172860, 3241673466, 3640972603, 2445305544, 1198448575, 3108682444, 2733658999, 2364617365, 3384645854, 938433983); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void uint3x4_operator_div_wide_wide() + { + uint3x4 a0 = uint3x4(1590198532, 507812502, 126627032, 1058247011, 427387861, 290676154, 1829594484, 1127868739, 499016351, 1341209632, 134906097, 785470242); + uint3x4 b0 = uint3x4(1434703236, 911965201, 390415521, 128746927, 525835375, 816946613, 878264647, 146789678, 2089524057, 254213018, 1916850021, 1737806518); + uint3x4 r0 = uint3x4(1, 0, 0, 8, 0, 0, 2, 7, 0, 5, 0, 0); + TestUtils.AreEqual(a0 / b0, r0); + + uint3x4 a1 = uint3x4(788249865, 1099825433, 1552968283, 1822367139, 1021812060, 1937073018, 645757349, 1097576782, 1246027674, 1152153253, 1900577195, 172149343); + uint3x4 b1 = uint3x4(1906634983, 437754923, 825037958, 902508708, 896853614, 49452028, 1921327824, 787000669, 1032149621, 858558868, 1422112429, 837098844); + uint3x4 r1 = uint3x4(0, 2, 1, 2, 1, 39, 0, 1, 1, 1, 1, 0); + TestUtils.AreEqual(a1 / b1, r1); + + uint3x4 a2 = uint3x4(1735128704, 816492592, 2012272185, 632330092, 649232994, 123715336, 1438073735, 723262291, 850951883, 1942618200, 1088675276, 1648515976); + uint3x4 b2 = uint3x4(616122946, 2035322800, 1324534444, 1820832158, 917489631, 367475696, 620492088, 1749833550, 1535651093, 932740870, 1078416711, 725172174); + uint3x4 r2 = uint3x4(2, 0, 1, 0, 0, 0, 2, 0, 0, 2, 1, 2); + TestUtils.AreEqual(a2 / b2, r2); + + uint3x4 a3 = uint3x4(991947275, 1155668991, 764696768, 1984712970, 1734485640, 850109866, 8545366, 1037720170, 264523522, 1547702681, 1797612488, 1496410581); + uint3x4 b3 = uint3x4(554208963, 1250240123, 2074395021, 1513621083, 262726589, 936845337, 1934527986, 1844761263, 116240860, 1875751365, 730101086, 625535586); + uint3x4 r3 = uint3x4(1, 0, 0, 1, 6, 0, 0, 0, 2, 0, 2, 2); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void uint3x4_operator_div_wide_scalar() + { + uint3x4 a0 = uint3x4(560951562, 1218680769, 375341724, 1613542090, 1919409166, 1397425408, 1349573078, 524526253, 341995568, 495895326, 1515313790, 1676971657); + uint b0 = (947861580); + uint3x4 r0 = uint3x4(0, 1, 0, 1, 2, 1, 1, 0, 0, 0, 1, 1); + TestUtils.AreEqual(a0 / b0, r0); + + uint3x4 a1 = uint3x4(2131487088, 1017891310, 542666029, 1646044372, 1447236569, 107215658, 19616726, 896899915, 707389627, 1249475421, 1486968988, 1738891885); + uint b1 = (2105094094); + uint3x4 r1 = uint3x4(1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); + TestUtils.AreEqual(a1 / b1, r1); + + uint3x4 a2 = uint3x4(1919705924, 1200843642, 206442634, 1508567412, 1825701056, 1117255783, 929925156, 1725332114, 1949103348, 1383839785, 2136282541, 159847918); + uint b2 = (1244966864); + uint3x4 r2 = uint3x4(1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0); + TestUtils.AreEqual(a2 / b2, r2); + + uint3x4 a3 = uint3x4(1515555001, 1033495687, 1947230231, 1969254260, 1948672400, 757256792, 2099218773, 455629883, 324433498, 1679339858, 2024651647, 1222061694); + uint b3 = (614923813); + uint3x4 r3 = uint3x4(2, 1, 3, 3, 3, 1, 3, 0, 0, 2, 3, 1); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void uint3x4_operator_div_scalar_wide() + { + uint a0 = (1161272038); + uint3x4 b0 = uint3x4(187325733, 1594107378, 2016183849, 1589343709, 388768753, 1417077283, 1773486938, 1154044032, 81831373, 1476877645, 653688843, 45756703); + uint3x4 r0 = uint3x4(6, 0, 0, 0, 2, 0, 0, 1, 14, 0, 1, 25); + TestUtils.AreEqual(a0 / b0, r0); + + uint a1 = (631027637); + uint3x4 b1 = uint3x4(396671391, 784365696, 1250594097, 1818363859, 1653451772, 270557729, 48974453, 1796936382, 1427856423, 981056957, 1955700573, 705450043); + uint3x4 r1 = uint3x4(1, 0, 0, 0, 0, 2, 12, 0, 0, 0, 0, 0); + TestUtils.AreEqual(a1 / b1, r1); + + uint a2 = (1054404890); + uint3x4 b2 = uint3x4(351914083, 131970646, 1320586926, 366944102, 1575786200, 257204865, 1582754309, 2114509003, 1266146708, 45105265, 2092444751, 407744534); + uint3x4 r2 = uint3x4(2, 7, 0, 2, 0, 4, 0, 0, 0, 23, 0, 2); + TestUtils.AreEqual(a2 / b2, r2); + + uint a3 = (126616016); + uint3x4 b3 = uint3x4(1900058250, 523718813, 414718546, 1828540203, 860638950, 1827704212, 182494419, 669579562, 717750865, 560379939, 681272719, 638134699); + uint3x4 r3 = uint3x4(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void uint3x4_operator_mod_wide_wide() + { + uint3x4 a0 = uint3x4(146150818, 1846543305, 1071447756, 308965362, 659881575, 1002365460, 861198439, 1510617532, 778525078, 1458458044, 101987897, 1249565173); + uint3x4 b0 = uint3x4(983050390, 771341152, 942375212, 367361754, 749500619, 750718852, 2095151755, 88438806, 769227442, 647214624, 1026513788, 1544950956); + uint3x4 r0 = uint3x4(146150818, 303861001, 129072544, 308965362, 659881575, 251646608, 861198439, 7157830, 9297636, 164028796, 101987897, 1249565173); + TestUtils.AreEqual(a0 % b0, r0); + + uint3x4 a1 = uint3x4(938026607, 1692541775, 1518877124, 1806965510, 1325139851, 994457255, 1372400564, 1770508529, 100255877, 452674793, 1545968777, 629019189); + uint3x4 b1 = uint3x4(160166322, 1099108075, 1158422232, 1798905209, 164686701, 327889784, 1082162785, 1213537518, 608481038, 329133821, 1824387961, 1223426748); + uint3x4 r1 = uint3x4(137194997, 593433700, 360454892, 8060301, 7646243, 10787903, 290237779, 556971011, 100255877, 123540972, 1545968777, 629019189); + TestUtils.AreEqual(a1 % b1, r1); + + uint3x4 a2 = uint3x4(1402964707, 2138294579, 1641714420, 1782022072, 1880968864, 1980798192, 1397317084, 995968277, 1090018756, 1573062648, 1100694500, 863521889); + uint3x4 b2 = uint3x4(798137669, 79717779, 1233582258, 1267120677, 301592349, 911281434, 1357340934, 1648942990, 1350943898, 696511738, 1182727748, 1843845940); + uint3x4 r2 = uint3x4(604827038, 65632325, 408132162, 514901395, 71414770, 158235324, 39976150, 995968277, 1090018756, 180039172, 1100694500, 863521889); + TestUtils.AreEqual(a2 % b2, r2); + + uint3x4 a3 = uint3x4(1146202560, 546958747, 573838995, 2146465826, 1678630780, 1843627015, 1167611300, 157190789, 530148276, 594404567, 1248848240, 1963704081); + uint3x4 b3 = uint3x4(244920526, 1640990506, 920431352, 1261122293, 469115027, 720739455, 1727247731, 91557593, 1874820225, 1070808215, 859227095, 890398590); + uint3x4 r3 = uint3x4(166520456, 546958747, 573838995, 885343533, 271285699, 402148105, 1167611300, 65633196, 530148276, 594404567, 389621145, 182906901); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void uint3x4_operator_mod_wide_scalar() + { + uint3x4 a0 = uint3x4(164800505, 1062177828, 1898749675, 1701653318, 820393245, 19002208, 128329633, 1464010899, 896587769, 405208598, 1982762194, 959236935); + uint b0 = (883951171); + uint3x4 r0 = uint3x4(164800505, 178226657, 130847333, 817702147, 820393245, 19002208, 128329633, 580059728, 12636598, 405208598, 214859852, 75285764); + TestUtils.AreEqual(a0 % b0, r0); + + uint3x4 a1 = uint3x4(712321026, 1540068445, 1085897743, 1607489717, 165478511, 647846716, 915707999, 1602830401, 928191283, 1084934806, 488509689, 2087820912); + uint b1 = (172564850); + uint3x4 r1 = uint3x4(22061626, 159549645, 50508643, 54406067, 165478511, 130152166, 52883749, 49746751, 65367033, 49545706, 143379989, 17042712); + TestUtils.AreEqual(a1 % b1, r1); + + uint3x4 a2 = uint3x4(377501313, 1216011754, 812183417, 1153802502, 1642671870, 1924710742, 665297470, 1568090825, 2050982942, 435886407, 453990946, 1731665372); + uint b2 = (1778384846); + uint3x4 r2 = uint3x4(377501313, 1216011754, 812183417, 1153802502, 1642671870, 146325896, 665297470, 1568090825, 272598096, 435886407, 453990946, 1731665372); + TestUtils.AreEqual(a2 % b2, r2); + + uint3x4 a3 = uint3x4(586777590, 1585649515, 1414579860, 1891664981, 1262495021, 1400758118, 1529532008, 430295164, 1386414018, 2130346558, 666621411, 1524342239); + uint b3 = (1475597526); + uint3x4 r3 = uint3x4(586777590, 110051989, 1414579860, 416067455, 1262495021, 1400758118, 53934482, 430295164, 1386414018, 654749032, 666621411, 48744713); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void uint3x4_operator_mod_scalar_wide() + { + uint a0 = (242383789); + uint3x4 b0 = uint3x4(740000543, 1556450291, 1104736385, 437976569, 1911837205, 1507212038, 1906405167, 247693265, 293460573, 1495295166, 873323603, 530681233); + uint3x4 r0 = uint3x4(242383789, 242383789, 242383789, 242383789, 242383789, 242383789, 242383789, 242383789, 242383789, 242383789, 242383789, 242383789); + TestUtils.AreEqual(a0 % b0, r0); + + uint a1 = (1298102643); + uint3x4 b1 = uint3x4(2057984657, 1000742091, 1461372131, 1859742342, 797184687, 821888842, 1083192997, 840114986, 1894865954, 615159964, 1485575122, 2028738); + uint3x4 r1 = uint3x4(1298102643, 297360552, 1298102643, 1298102643, 500917956, 476213801, 214909646, 457987657, 1298102643, 67782715, 1298102643, 1739061); + TestUtils.AreEqual(a1 % b1, r1); + + uint a2 = (2122220318); + uint3x4 b2 = uint3x4(164578061, 730088119, 1444946139, 1305792037, 1110829011, 872723581, 166847388, 1477846418, 511428733, 1642227542, 1962310765, 207128894); + uint3x4 r2 = uint3x4(147283586, 662044080, 677274179, 816428281, 1011391307, 376773156, 120051662, 644373900, 76505386, 479992776, 159909553, 50931378); + TestUtils.AreEqual(a2 % b2, r2); + + uint a3 = (1342085447); + uint3x4 b3 = uint3x4(448361286, 334667519, 705465751, 753088773, 1146344010, 275140144, 1074480141, 2092749846, 1631900558, 2088387496, 1098441751, 1648646354); + uint3x4 r3 = uint3x4(445362875, 3415371, 636619696, 588996674, 195741437, 241524871, 267605306, 1342085447, 1342085447, 1342085447, 243643696, 1342085447); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void uint3x4_operator_plus() + { + uint3x4 a0 = uint3x4(1643476803, 907898539, 379615839, 1140483021, 1735287433, 1743199272, 1472881565, 339091479, 401565897, 1287765427, 849339193, 174532915); + uint3x4 r0 = uint3x4(1643476803, 907898539, 379615839, 1140483021, 1735287433, 1743199272, 1472881565, 339091479, 401565897, 1287765427, 849339193, 174532915); + TestUtils.AreEqual(+a0, r0); + + uint3x4 a1 = uint3x4(1864850812, 1145639744, 1615499926, 2049663954, 1723005749, 409076474, 591286416, 1706631096, 1079164488, 1808261782, 1201290141, 82958939); + uint3x4 r1 = uint3x4(1864850812, 1145639744, 1615499926, 2049663954, 1723005749, 409076474, 591286416, 1706631096, 1079164488, 1808261782, 1201290141, 82958939); + TestUtils.AreEqual(+a1, r1); + + uint3x4 a2 = uint3x4(308695413, 2067379018, 1673126612, 500666137, 640289062, 836003812, 336058393, 829347661, 33442669, 381670450, 277507230, 361395485); + uint3x4 r2 = uint3x4(308695413, 2067379018, 1673126612, 500666137, 640289062, 836003812, 336058393, 829347661, 33442669, 381670450, 277507230, 361395485); + TestUtils.AreEqual(+a2, r2); + + uint3x4 a3 = uint3x4(1012749225, 2092803800, 1459040742, 531853559, 2093894901, 1589622197, 1559976318, 619729461, 731886792, 1441425968, 1921783986, 1257555634); + uint3x4 r3 = uint3x4(1012749225, 2092803800, 1459040742, 531853559, 2093894901, 1589622197, 1559976318, 619729461, 731886792, 1441425968, 1921783986, 1257555634); + TestUtils.AreEqual(+a3, r3); + } + + [TestCompiler] + public static void uint3x4_operator_neg() + { + uint3x4 a0 = uint3x4(1955022112, 662160019, 370300775, 2141283773, 1004505619, 28153593, 33894270, 505708349, 1115028238, 1636274969, 694995093, 1542206286); + uint3x4 r0 = uint3x4(2339945184, 3632807277, 3924666521, 2153683523, 3290461677, 4266813703, 4261073026, 3789258947, 3179939058, 2658692327, 3599972203, 2752761010); + TestUtils.AreEqual(-a0, r0); + + uint3x4 a1 = uint3x4(213087293, 341522275, 841085242, 574159094, 1687250035, 2057919693, 1175014732, 1259809073, 1212465326, 1190569920, 2047955772, 2120729864); + uint3x4 r1 = uint3x4(4081880003, 3953445021, 3453882054, 3720808202, 2607717261, 2237047603, 3119952564, 3035158223, 3082501970, 3104397376, 2247011524, 2174237432); + TestUtils.AreEqual(-a1, r1); + + uint3x4 a2 = uint3x4(1440774928, 431666091, 1387601718, 1745651998, 319115626, 1119959806, 739132284, 1954173314, 1709857098, 1836511050, 1662806453, 506144868); + uint3x4 r2 = uint3x4(2854192368, 3863301205, 2907365578, 2549315298, 3975851670, 3175007490, 3555835012, 2340793982, 2585110198, 2458456246, 2632160843, 3788822428); + TestUtils.AreEqual(-a2, r2); + + uint3x4 a3 = uint3x4(650922971, 1273997249, 1474445187, 1853826947, 1695573773, 729452512, 345069360, 575867536, 594119038, 1201840609, 1342872551, 1768435578); + uint3x4 r3 = uint3x4(3644044325, 3020970047, 2820522109, 2441140349, 2599393523, 3565514784, 3949897936, 3719099760, 3700848258, 3093126687, 2952094745, 2526531718); + TestUtils.AreEqual(-a3, r3); + } + + [TestCompiler] + public static void uint3x4_operator_prefix_inc() + { + uint3x4 a0 = uint3x4(864455342, 2035793213, 1275443862, 971919915, 411610189, 446210725, 395072276, 115573442, 913293639, 432884105, 1208161871, 1385544935); + uint3x4 r0 = uint3x4(864455343, 2035793214, 1275443863, 971919916, 411610190, 446210726, 395072277, 115573443, 913293640, 432884106, 1208161872, 1385544936); + TestUtils.AreEqual(++a0, r0); + + uint3x4 a1 = uint3x4(1835605516, 388229350, 696475402, 1786514683, 993189311, 752093909, 1622410417, 1398865015, 241906003, 1705625817, 609525897, 172599489); + uint3x4 r1 = uint3x4(1835605517, 388229351, 696475403, 1786514684, 993189312, 752093910, 1622410418, 1398865016, 241906004, 1705625818, 609525898, 172599490); + TestUtils.AreEqual(++a1, r1); + + uint3x4 a2 = uint3x4(504806865, 281942776, 1541894135, 924683935, 259568871, 1349062584, 1120518661, 65514038, 1495168208, 1321109497, 1366348660, 1777734111); + uint3x4 r2 = uint3x4(504806866, 281942777, 1541894136, 924683936, 259568872, 1349062585, 1120518662, 65514039, 1495168209, 1321109498, 1366348661, 1777734112); + TestUtils.AreEqual(++a2, r2); + + uint3x4 a3 = uint3x4(1414867743, 539531120, 886558347, 1733014170, 1586973907, 1145067277, 884064327, 82551838, 1001250037, 924273925, 242241802, 413165245); + uint3x4 r3 = uint3x4(1414867744, 539531121, 886558348, 1733014171, 1586973908, 1145067278, 884064328, 82551839, 1001250038, 924273926, 242241803, 413165246); + TestUtils.AreEqual(++a3, r3); + } + + [TestCompiler] + public static void uint3x4_operator_postfix_inc() + { + uint3x4 a0 = uint3x4(1751003569, 2063707595, 1500486291, 969189211, 1007848192, 2028651936, 1643023524, 1190630527, 1396179607, 708474528, 177416855, 1524860667); + uint3x4 r0 = uint3x4(1751003569, 2063707595, 1500486291, 969189211, 1007848192, 2028651936, 1643023524, 1190630527, 1396179607, 708474528, 177416855, 1524860667); + TestUtils.AreEqual(a0++, r0); + + uint3x4 a1 = uint3x4(1408994706, 1580130369, 1676086778, 717006530, 506142468, 732199129, 2026873940, 130175844, 1513142653, 420613464, 1219979307, 586574160); + uint3x4 r1 = uint3x4(1408994706, 1580130369, 1676086778, 717006530, 506142468, 732199129, 2026873940, 130175844, 1513142653, 420613464, 1219979307, 586574160); + TestUtils.AreEqual(a1++, r1); + + uint3x4 a2 = uint3x4(357567451, 1949784665, 1127356901, 101238629, 2131648021, 423320704, 827539403, 1919960927, 840371710, 2010345998, 1047836590, 586887730); + uint3x4 r2 = uint3x4(357567451, 1949784665, 1127356901, 101238629, 2131648021, 423320704, 827539403, 1919960927, 840371710, 2010345998, 1047836590, 586887730); + TestUtils.AreEqual(a2++, r2); + + uint3x4 a3 = uint3x4(1209169651, 1479717664, 1874959449, 104723114, 817246348, 1972950889, 1784631804, 1550936382, 718649502, 872906800, 717529320, 1995020676); + uint3x4 r3 = uint3x4(1209169651, 1479717664, 1874959449, 104723114, 817246348, 1972950889, 1784631804, 1550936382, 718649502, 872906800, 717529320, 1995020676); + TestUtils.AreEqual(a3++, r3); + } + + [TestCompiler] + public static void uint3x4_operator_prefix_dec() + { + uint3x4 a0 = uint3x4(200904609, 871077500, 968578728, 638967721, 1995396216, 435367037, 1782514098, 1589827826, 1434377580, 596759698, 1699290403, 1758478358); + uint3x4 r0 = uint3x4(200904608, 871077499, 968578727, 638967720, 1995396215, 435367036, 1782514097, 1589827825, 1434377579, 596759697, 1699290402, 1758478357); + TestUtils.AreEqual(--a0, r0); + + uint3x4 a1 = uint3x4(1914114460, 389120307, 1022184392, 1310293956, 356565557, 18299409, 906734601, 799006218, 1383897383, 1040798388, 1469596990, 1719228297); + uint3x4 r1 = uint3x4(1914114459, 389120306, 1022184391, 1310293955, 356565556, 18299408, 906734600, 799006217, 1383897382, 1040798387, 1469596989, 1719228296); + TestUtils.AreEqual(--a1, r1); + + uint3x4 a2 = uint3x4(220897829, 678025545, 14227726, 293093918, 1065286595, 1249415499, 1009503100, 157482354, 965385343, 1797304434, 1083672612, 929765380); + uint3x4 r2 = uint3x4(220897828, 678025544, 14227725, 293093917, 1065286594, 1249415498, 1009503099, 157482353, 965385342, 1797304433, 1083672611, 929765379); + TestUtils.AreEqual(--a2, r2); + + uint3x4 a3 = uint3x4(2083512379, 323646560, 1395297406, 583796119, 999841714, 1788073019, 1618852114, 1777032041, 1252764958, 1070818447, 219340317, 767990877); + uint3x4 r3 = uint3x4(2083512378, 323646559, 1395297405, 583796118, 999841713, 1788073018, 1618852113, 1777032040, 1252764957, 1070818446, 219340316, 767990876); + TestUtils.AreEqual(--a3, r3); + } + + [TestCompiler] + public static void uint3x4_operator_postfix_dec() + { + uint3x4 a0 = uint3x4(283970262, 1109329936, 1073216143, 649439137, 1932646215, 1174104498, 484207852, 524156737, 691209285, 2017728859, 802721301, 377162390); + uint3x4 r0 = uint3x4(283970262, 1109329936, 1073216143, 649439137, 1932646215, 1174104498, 484207852, 524156737, 691209285, 2017728859, 802721301, 377162390); + TestUtils.AreEqual(a0--, r0); + + uint3x4 a1 = uint3x4(526366486, 590919177, 60677868, 1867810045, 2095777993, 670715645, 324944916, 242636153, 1659736954, 1316734088, 1030072405, 1751972064); + uint3x4 r1 = uint3x4(526366486, 590919177, 60677868, 1867810045, 2095777993, 670715645, 324944916, 242636153, 1659736954, 1316734088, 1030072405, 1751972064); + TestUtils.AreEqual(a1--, r1); + + uint3x4 a2 = uint3x4(1868889881, 1931943579, 175622377, 181847458, 665549439, 530897466, 635466911, 416440036, 1447690298, 1444496274, 296146626, 1209855130); + uint3x4 r2 = uint3x4(1868889881, 1931943579, 175622377, 181847458, 665549439, 530897466, 635466911, 416440036, 1447690298, 1444496274, 296146626, 1209855130); + TestUtils.AreEqual(a2--, r2); + + uint3x4 a3 = uint3x4(2016700604, 647102652, 1948542169, 659874422, 2009120584, 1577004911, 1809041177, 518526567, 1464738365, 1815629310, 1216839298, 569144612); + uint3x4 r3 = uint3x4(2016700604, 647102652, 1948542169, 659874422, 2009120584, 1577004911, 1809041177, 518526567, 1464738365, 1815629310, 1216839298, 569144612); + TestUtils.AreEqual(a3--, r3); + } + + [TestCompiler] + public static void uint3x4_operator_bitwise_and_wide_wide() + { + uint3x4 a0 = uint3x4(779935043, 1097962163, 1939593304, 800599247, 952140918, 782792558, 1608557706, 396446406, 2039894114, 1286974642, 442394124, 1759739564); + uint3x4 b0 = uint3x4(307705143, 1710882162, 866836769, 532490608, 679371720, 1794035877, 1439832202, 519529812, 23633139, 1209152681, 646737179, 1255867027); + uint3x4 r0 = uint3x4(39064835, 1097961522, 864731136, 263727168, 675283008, 715673636, 1438646410, 379666500, 16781410, 1209017504, 34366472, 1220739712); + TestUtils.AreEqual(a0 & b0, r0); + + uint3x4 a1 = uint3x4(233435438, 665207770, 1942050241, 1022352952, 60340400, 329119345, 406517382, 1126764634, 343425836, 1957552749, 1624478957, 341972372); + uint3x4 b1 = uint3x4(1900854122, 413173763, 1409138251, 2087190272, 563439483, 354579077, 642224854, 1650432515, 755290290, 902865191, 661389406, 2134212586); + uint3x4 r1 = uint3x4(21541162, 10485762, 1405162561, 1013440000, 26222640, 285241857, 168582, 1107890178, 67125280, 880844837, 541065292, 337646976); + TestUtils.AreEqual(a1 & b1, r1); + + uint3x4 a2 = uint3x4(181537307, 130347414, 1240828622, 526120460, 695449226, 1477446724, 201628999, 737924014, 1804502415, 1733695477, 1110712857, 113012430); + uint3x4 b2 = uint3x4(1855189321, 185194029, 810374380, 133197864, 1989578783, 38739182, 387425484, 1690486314, 843085933, 1045118223, 41867329, 1397669260); + uint3x4 r2 = uint3x4(177340425, 50384900, 4522188, 122712072, 538087434, 3140, 67404868, 549634602, 570425357, 641864965, 36962305, 34352268); + TestUtils.AreEqual(a2 & b2, r2); + + uint3x4 a3 = uint3x4(1044352152, 865726845, 836668077, 1778871717, 1558881750, 231636456, 1278790837, 846361650, 37319023, 1806613498, 1312261777, 1448803516); + uint3x4 b3 = uint3x4(1784025774, 1834587481, 856874373, 1719529679, 678478831, 86860920, 837158923, 1397449667, 195921481, 564422246, 1088025452, 2103483999); + uint3x4 r3 = uint3x4(706085000, 555323737, 823298181, 1644519557, 140542406, 84698216, 2099201, 306339842, 36241481, 564404834, 1074889216, 1413520412); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void uint3x4_operator_bitwise_and_wide_scalar() + { + uint3x4 a0 = uint3x4(443615469, 490057985, 2042441263, 1524760558, 1405175110, 510212004, 1941875181, 1236735839, 1365509729, 428270198, 607982857, 650270920); + uint b0 = (93423598); + uint3x4 r0 = uint3x4(1114348, 85033216, 26281518, 8488942, 25232710, 67176356, 26247660, 26281806, 16778848, 25199206, 68224264, 75497672); + TestUtils.AreEqual(a0 & b0, r0); + + uint3x4 a1 = uint3x4(1249238550, 1862276471, 143502472, 861733033, 1408932942, 957693145, 1567715668, 1102952410, 322053683, 1599352836, 208656708, 1272226025); + uint b1 = (814629680); + uint3x4 r1 = uint3x4(279056, 536871216, 9175040, 806092832, 277479424, 805568528, 268452112, 9175824, 268567088, 268697600, 934144, 8650784); + TestUtils.AreEqual(a1 & b1, r1); + + uint3x4 a2 = uint3x4(462670926, 1466722981, 1817277774, 818900583, 772681077, 1630437952, 546018772, 872875431, 1143080525, 708719245, 1764446048, 1527981061); + uint b2 = (1817145060); + uint3x4 r2 = uint3x4(134433860, 1145858724, 1816224836, 542076516, 739126372, 1611530816, 537593028, 604439716, 1140983364, 672014980, 1745571424, 1208165380); + TestUtils.AreEqual(a2 & b2, r2); + + uint3x4 a3 = uint3x4(398141788, 554819377, 1683835293, 972562207, 393685571, 2118911919, 1503487659, 283854137, 1911282206, 312686024, 384581172, 1826788967); + uint b3 = (156911041); + uint3x4 r3 = uint3x4(18481472, 17843457, 5783937, 156763393, 22151233, 138937729, 152585345, 4867329, 21643264, 132544, 4719616, 138544193); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void uint3x4_operator_bitwise_and_scalar_wide() + { + uint a0 = (1144543590); + uint3x4 b0 = uint3x4(420346723, 562416448, 1393127318, 1560699552, 851218057, 703880958, 1159378889, 2031211279, 1089518981, 270607307, 1349288930, 520199596); + uint3x4 r0 = uint3x4(547170, 18752, 1074284806, 1140867104, 3672064, 3168358, 1142427968, 1074811142, 1076893956, 2097474, 1076363618, 67115300); + TestUtils.AreEqual(a0 & b0, r0); + + uint a1 = (1763483957); + uint3x4 b1 = uint3x4(1248975349, 236938635, 185023291, 1085233038, 1845693112, 946052961, 1436238522, 2042776519, 56356886, 1770159840, 1872339579, 1439201366); + uint3x4 r1 = uint3x4(1209041205, 136061185, 151265585, 1074528516, 1744830512, 671121697, 1092091952, 1761607941, 18391060, 1761615904, 1763221553, 1091051540); + TestUtils.AreEqual(a1 & b1, r1); + + uint a2 = (1233066417); + uint3x4 b2 = uint3x4(1214109404, 2255485, 1814885263, 1711986588, 1286898282, 915476451, 1870138851, 372814411, 1623486506, 211665304, 1668985777, 348112007); + uint3x4 r2 = uint3x4(1214058640, 2230321, 1210847617, 1074401680, 1211367456, 1116577, 1232603553, 3674113, 1078202400, 136118672, 1098518961, 4128897); + TestUtils.AreEqual(a2 & b2, r2); + + uint a3 = (1808619374); + uint3x4 b3 = uint3x4(1516730209, 1647041932, 350465899, 1641369007, 1555310928, 857924828, 1980404095, 34923708, 1073528483, 742357726, 1244015681, 1980296380); + uint3x4 r3 = uint3x4(1246058336, 1644778764, 12650346, 1640318254, 1216610624, 587220044, 1644695918, 33834028, 734795298, 671961678, 1241777216, 1644708908); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void uint3x4_operator_bitwise_or_wide_wide() + { + uint3x4 a0 = uint3x4(1731159103, 659068416, 382702471, 1821032196, 1565773438, 1004000514, 948501377, 600951835, 669346222, 396691477, 2108560248, 2117522137); + uint3x4 b0 = uint3x4(1583847161, 692672727, 1161585489, 1756207130, 1321374429, 1287357212, 2075767170, 1273513430, 1610830169, 1316929125, 511625048, 573925879); + uint3x4 r0 = uint3x4(2138044159, 793370327, 1476391895, 1823457054, 1607720703, 2147473182, 2075786115, 1811533279, 1743223295, 1610595957, 2147407736, 2117598207); + TestUtils.AreEqual(a0 | b0, r0); + + uint3x4 a1 = uint3x4(330307355, 818676817, 1774459567, 1117506257, 1254511182, 1017865993, 1883021644, 1140203470, 759288967, 2122744307, 335621148, 715028074); + uint3x4 b1 = uint3x4(1502255628, 1841676448, 1682928938, 1115131952, 1541423910, 1416096228, 188606371, 1041599540, 219545389, 560097663, 1087543661, 936383841); + uint3x4 r1 = uint3x4(1538957087, 2110637297, 1842315183, 1124063985, 1541821294, 2096099309, 2067654639, 2146934782, 760610735, 2145839615, 1423162749, 1071544171); + TestUtils.AreEqual(a1 | b1, r1); + + uint3x4 a2 = uint3x4(543305337, 662107399, 1934997335, 436754869, 1613808671, 362365372, 342908672, 2129231210, 203868172, 32846030, 1057901177, 1537975433); + uint3x4 b2 = uint3x4(108816721, 1694053551, 452638547, 1219534055, 85142537, 1027930490, 2126839395, 2030328147, 2036352209, 1554561114, 1332339254, 480739851); + uint3x4 r2 = uint3x4(645820281, 1744827823, 2080356183, 1522064887, 1697901599, 1037957630, 2129985379, 2146270587, 2103889117, 1576909022, 2138040959, 1605346955); + TestUtils.AreEqual(a2 | b2, r2); + + uint3x4 a3 = uint3x4(470626699, 557640158, 536364388, 238304731, 787227554, 1298371111, 1020821539, 1327618264, 1104669041, 1949771204, 1973724646, 698690868); + uint3x4 b3 = uint3x4(1502575584, 1889014859, 1557424474, 1390247341, 2029776623, 1665642846, 1570936353, 801872635, 1945815585, 1797879107, 112272980, 779933219); + uint3x4 r3 = uint3x4(1569684459, 1908211167, 1610378622, 1593671167, 2130702319, 1869067135, 2113574435, 1877727995, 1946151793, 2134865351, 2008393718, 805175095); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void uint3x4_operator_bitwise_or_wide_scalar() + { + uint3x4 a0 = uint3x4(961259683, 471103264, 1733389229, 1591585258, 386953869, 1148351449, 1048929715, 1814263250, 860336789, 1637162093, 1227888278, 774029856); + uint b0 = (1666102508); + uint3x4 r0 = uint3x4(2068823279, 2136930284, 1734344685, 2145369582, 2002712301, 1736374269, 2144335359, 1869608446, 1934604029, 1675607277, 1803466494, 1869543148); + TestUtils.AreEqual(a0 | b0, r0); + + uint3x4 a1 = uint3x4(879300408, 797240690, 1977614655, 46921989, 1980838747, 284225881, 64304104, 313591807, 1393862490, 1890090886, 521303722, 2021379070); + uint b1 = (1179087439); + uint3x4 r1 = uint3x4(1987018623, 1875378047, 2011657087, 1188035407, 1985442655, 1459090271, 1205302255, 1459058687, 1465382751, 1995407311, 1599567599, 2122316799); + TestUtils.AreEqual(a1 | b1, r1); + + uint3x4 a2 = uint3x4(2055963359, 1775629833, 1142751163, 1767274359, 1421981808, 1501294791, 485944015, 539526284, 310877895, 1815369493, 529427586, 358352200); + uint b2 = (1511253082); + uint3x4 r2 = uint3x4(2057037535, 2077750875, 1579155451, 2069362559, 1590951034, 1534850271, 1593306847, 2050745566, 1519910623, 2117597023, 1604316378, 1600120154); + TestUtils.AreEqual(a2 | b2, r2); + + uint3x4 a3 = uint3x4(1353013374, 1624839772, 1369983151, 666444298, 207757238, 257316089, 409252967, 1919967661, 1452040383, 2012115244, 1149949643, 142082352); + uint b3 = (1349149982); + uint3x4 r3 = uint3x4(1357872510, 1895528286, 1374318015, 2012964638, 1550483390, 1602123263, 1483666815, 1920624063, 1458464191, 2012116286, 1424685023, 1484416318); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void uint3x4_operator_bitwise_or_scalar_wide() + { + uint a0 = (1213433101); + uint3x4 b0 = uint3x4(1212928242, 1614462616, 936937728, 764766995, 306352095, 574719481, 1283571271, 2109131012, 979469710, 1348323481, 1407542578, 697517649); + uint3x4 r0 = uint3x4(1213978111, 1752940445, 2145094925, 1842867999, 1515425759, 1783858685, 1288945487, 2113391885, 2054391183, 1482673565, 1542972735, 1775486813); + TestUtils.AreEqual(a0 | b0, r0); + + uint a1 = (1059093741); + uint3x4 b1 = uint3x4(627815046, 418822515, 83214352, 424663473, 447949225, 527022375, 1947148461, 305251437, 1254601325, 1752329425, 1592402684, 1587055329); + uint3x4 r1 = uint3x4(1064042223, 1073151487, 1073085693, 1064304125, 1068727789, 1063910895, 2133818605, 1060240621, 2145910509, 2138209533, 2146074365, 2142830317); + TestUtils.AreEqual(a1 | b1, r1); + + uint a2 = (1088734150); + uint3x4 b2 = uint3x4(298563808, 2052547661, 582843231, 656983670, 1944993640, 1081208038, 829763560, 990961386, 547309556, 1307122961, 263229121, 1518227598); + uint3x4 r2 = uint3x4(1374682086, 2063067087, 1660812255, 1743570934, 1945042926, 1089859558, 1911943150, 2079645678, 1627375606, 1307434967, 1341444039, 1526649806); + TestUtils.AreEqual(a2 | b2, r2); + + uint a3 = (1098359242); + uint3x4 b3 = uint3x4(997941952, 1075751132, 996271847, 623986648, 1091787263, 1548400620, 2022447724, 433714471, 963197960, 1639565037, 1287986616, 1326199854); + uint3x4 r3 = uint3x4(2071978954, 1098885598, 2071455727, 1702356954, 1098381823, 1568651246, 2046802926, 1509946863, 2038414794, 1644161007, 1308081658, 1333769710); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void uint3x4_operator_bitwise_xor_wide_wide() + { + uint3x4 a0 = uint3x4(1556324760, 207002929, 1843444873, 1632079131, 1460334334, 1607815585, 220623650, 38668553, 47193340, 643663548, 1371932564, 94957188); + uint3x4 b0 = uint3x4(1054997548, 1523759632, 251164872, 110472397, 384031112, 1109163205, 535118981, 179106262, 1523031711, 1713313372, 1294118730, 520360641); + uint3x4 r0 = uint3x4(1646419380, 1451501345, 1662567489, 1741824470, 1105803126, 499723620, 314783655, 149092575, 1477935715, 1078104288, 484747486, 447544389); + TestUtils.AreEqual(a0 ^ b0, r0); + + uint3x4 a1 = uint3x4(700973621, 370621508, 2087573076, 351476570, 1340815927, 681577472, 314138777, 446857644, 1368661599, 1672499683, 1259759761, 2049102405); + uint3x4 b1 = uint3x4(1040688781, 1020757245, 1143954843, 1281933464, 175288469, 326874157, 1192052687, 1087083643, 1900865484, 1521193463, 569695524, 1622101483); + uint3x4 r1 = uint3x4(399484088, 717273273, 943885263, 1486609346, 1167690402, 1004255277, 1437869910, 1516836311, 551090579, 958119956, 1793242549, 445489070); + TestUtils.AreEqual(a1 ^ b1, r1); + + uint3x4 a2 = uint3x4(1972524935, 91962333, 1960780785, 1303778459, 960040360, 822786011, 2028027011, 170382968, 32554542, 1915830925, 2001025156, 2012451132); + uint3x4 b2 = uint3x4(1340735463, 546583617, 1034420616, 262206030, 1834125935, 802756092, 611321886, 316379491, 325882121, 45335181, 1859278043, 1002624300); + uint3x4 r2 = uint3x4(981182560, 636424092, 1232544377, 1108797141, 1416333255, 517186087, 1553020061, 419186459, 312225575, 1887600640, 429354079, 1278297104); + TestUtils.AreEqual(a2 ^ b2, r2); + + uint3x4 a3 = uint3x4(1076174067, 344651773, 1769102694, 1408084527, 1139070023, 1195715957, 1051992510, 1468636326, 1018993657, 1514317444, 369266676, 1206540279); + uint3x4 b3 = uint3x4(1704063552, 1618550727, 721247372, 131278097, 896003672, 746837613, 1952376600, 306395311, 419371442, 627496489, 1791585199, 757339713); + uint3x4 r3 = uint3x4(632614579, 1962141754, 1133445610, 1413386046, 1988311583, 1808202520, 1256900262, 1170908169, 608404043, 2133094573, 2093737051, 1791902134); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void uint3x4_operator_bitwise_xor_wide_scalar() + { + uint3x4 a0 = uint3x4(2124666952, 177397845, 574879617, 1937385541, 1136545648, 213863690, 535061373, 289301586, 1305234431, 353786540, 1308626970, 1267729267); + uint b0 = (493665894); + uint3x4 r0 = uint3x4(1674536494, 402546227, 1060063719, 1846973987, 1590882582, 299103084, 42523931, 206756404, 1352725913, 142271690, 1399631484, 1459404053); + TestUtils.AreEqual(a0 ^ b0, r0); + + uint3x4 a1 = uint3x4(125659640, 1730088797, 116862046, 375757978, 491079274, 191750702, 187129429, 967051293, 549951551, 653124416, 788984, 1479174924); + uint b1 = (1315625690); + uint3x4 r1 = uint3x4(1226289954, 695588231, 1218311812, 1477396032, 1395629232, 1158101236, 1162708111, 2010043079, 1856848613, 1753692570, 1315361570, 373338582); + TestUtils.AreEqual(a1 ^ b1, r1); + + uint3x4 a2 = uint3x4(1680011736, 890841598, 293394300, 527727631, 529042816, 1382138962, 1206186973, 1059509471, 744733291, 64097148, 1814786305, 716239); + uint b2 = (447453839); + uint3x4 r2 = uint3x4(2122935127, 800240497, 198659571, 98559616, 86185743, 1221222109, 1565485394, 630017616, 919085284, 427397619, 1988160398, 446789440); + TestUtils.AreEqual(a2 ^ b2, r2); + + uint3x4 a3 = uint3x4(476052372, 2058208914, 41260658, 1316660543, 2113008061, 256229982, 111578612, 1207271814, 2099944258, 1913013312, 870798185, 1771744425); + uint b3 = (92561487); + uint3x4 r3 = uint3x4(433822683, 2133436125, 133297725, 1274987888, 2020970994, 180462097, 52620731, 1114759625, 2024733453, 2005017615, 912470822, 1813957862); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void uint3x4_operator_bitwise_xor_scalar_wide() + { + uint a0 = (1288453276); + uint3x4 b0 = uint3x4(1077599928, 884741329, 212164516, 1585020328, 152985454, 1775851275, 1416249064, 1309317737, 1773918217, 1509843030, 1206045972, 1154916424); + uint3x4 r0 = uint3x4(217506340, 2020616269, 1080648504, 313868596, 1171416050, 622160791, 413532788, 46573301, 628614293, 355622090, 187625864, 135961812); + TestUtils.AreEqual(a0 ^ b0, r0); + + uint a1 = (1947871003); + uint3x4 b1 = uint3x4(1774252400, 1946113778, 1079717492, 290620937, 1382343363, 939045099, 1309568053, 221134131, 885841718, 612068188, 194068085, 1396957881); + uint3x4 r1 = uint3x4(500881003, 132477417, 876677487, 1699258642, 645842392, 1138923504, 974408494, 2033457704, 1087830061, 1348553799, 2139822446, 660194722); + TestUtils.AreEqual(a1 ^ b1, r1); + + uint a2 = (573581481); + uint3x4 b2 = uint3x4(1813817520, 86594349, 2006985393, 1431761813, 905646837, 1522414781, 192882943, 714832744, 374210759, 215701593, 1573378082, 779254615); + uint3x4 r2 = uint3x4(1311539225, 655981444, 1435501080, 2003229500, 399194716, 2022579220, 693043286, 145445825, 880683118, 787181808, 2146955403, 205673470); + TestUtils.AreEqual(a2 ^ b2, r2); + + uint a3 = (711527976); + uint3x4 b3 = uint3x4(710611783, 223429246, 593102399, 1444947259, 302938485, 684673240, 1417651941, 1426772271, 948720266, 177752267, 2005602645, 896851285); + uint3x4 r3 = uint3x4(3284335, 658000982, 154339351, 2085169939, 946304861, 44451568, 2115414221, 2137251591, 317021346, 552683235, 1575100285, 522048381); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void uint3x4_operator_left_shift() + { + uint3x4 a0 = uint3x4(197771193, 622182602, 1283988958, 1327917304, 473415985, 432425717, 870301196, 2058433484, 1200694230, 1531607705, 1360008038, 1008296534); + int b0 = (1321149625); + uint3x4 r0 = uint3x4(1912602624, 2483027968, 3154116608, 4026531840, 1644167168, 3925868544, 402653184, 2550136832, 2885681152, 838860800, 3422552064, 2885681152); + TestUtils.AreEqual(a0 << b0, r0); + + uint3x4 a1 = uint3x4(1447702302, 35667343, 1664454606, 2045594989, 2077023268, 592678686, 297755411, 1722762487, 1161625759, 37265945, 997793693, 1521705181); + int b1 = (1079614371); + uint3x4 r1 = uint3x4(2991683824, 285338744, 430734960, 3479858024, 3731284256, 446462192, 2382043288, 897198008, 703071480, 298127560, 3687382248, 3583706856); + TestUtils.AreEqual(a1 << b1, r1); + + uint3x4 a2 = uint3x4(263886278, 2084190583, 230910816, 71403448, 481375728, 1176038816, 1382694875, 1824729613, 1535276688, 1581610518, 407677878, 1208958192); + int b2 = (221147365); + uint3x4 r2 = uint3x4(4149393600, 2269589216, 3094178816, 2284910336, 2519121408, 3273503744, 1296563040, 2556772768, 1884213760, 3366896320, 160790208, 31956480); + TestUtils.AreEqual(a2 << b2, r2); + + uint3x4 a3 = uint3x4(740058147, 880835937, 2063772405, 430594634, 281771991, 1130057990, 1127968177, 1628217625, 979935914, 17663275, 956738326, 1996060114); + int b3 = (946058001); + uint3x4 r3 = uint3x4(3360030720, 4207017984, 1441398784, 3029598208, 4289593344, 2718695424, 3680632832, 1110573056, 1163132928, 173408256, 1445724160, 3953393664); + TestUtils.AreEqual(a3 << b3, r3); + } + + [TestCompiler] + public static void uint3x4_operator_right_shift() + { + uint3x4 a0 = uint3x4(548167301, 1161338299, 1617625829, 1860731847, 713958715, 196552656, 770466193, 1265099998, 572763124, 506619530, 426807581, 2031319045); + int b0 = (1266801540); + uint3x4 r0 = uint3x4(34260456, 72583643, 101101614, 116295740, 44622419, 12284541, 48154137, 79068749, 35797695, 31663720, 26675473, 126957440); + TestUtils.AreEqual(a0 >> b0, r0); + + uint3x4 a1 = uint3x4(701927980, 569504877, 185593382, 1102123711, 334005460, 1624751550, 280138733, 1598620011, 1840564178, 736389149, 1279158873, 408822762); + int b1 = (917785020); + uint3x4 r1 = uint3x4(2, 2, 0, 4, 1, 6, 1, 5, 6, 2, 4, 1); + TestUtils.AreEqual(a1 >> b1, r1); + + uint3x4 a2 = uint3x4(763607760, 1568185874, 774126687, 1587054000, 600069797, 29576474, 1880981389, 352174824, 1164508476, 425441430, 186542511, 1099859381); + int b2 = (348013684); + uint3x4 r2 = uint3x4(728, 1495, 738, 1513, 572, 28, 1793, 335, 1110, 405, 177, 1048); + TestUtils.AreEqual(a2 >> b2, r2); + + uint3x4 a3 = uint3x4(1234295294, 761662151, 1254855819, 903402043, 1180315725, 182990778, 958706431, 1075621082, 1409488892, 1576738052, 700893981, 1435331003); + int b3 = (1028666766); + uint3x4 r3 = uint3x4(75335, 46488, 76590, 55139, 72040, 11168, 58514, 65650, 86028, 96236, 42779, 87605); + TestUtils.AreEqual(a3 >> b3, r3); + } + + [TestCompiler] + public static void uint3x4_operator_bitwise_not() + { + uint3x4 a0 = uint3x4(1403358969, 831360921, 2088190243, 976721016, 878283189, 308994339, 1935567517, 1420884856, 472965491, 771711426, 627580960, 2061524024); + uint3x4 r0 = uint3x4(2891608326, 3463606374, 2206777052, 3318246279, 3416684106, 3985972956, 2359399778, 2874082439, 3822001804, 3523255869, 3667386335, 2233443271); + TestUtils.AreEqual(~a0, r0); + + uint3x4 a1 = uint3x4(753208488, 1303022493, 664744603, 1289372466, 1635981125, 1951018596, 1545651937, 717936457, 1284504687, 1342785385, 869629475, 2045854321); + uint3x4 r1 = uint3x4(3541758807, 2991944802, 3630222692, 3005594829, 2658986170, 2343948699, 2749315358, 3577030838, 3010462608, 2952181910, 3425337820, 2249112974); + TestUtils.AreEqual(~a1, r1); + + uint3x4 a2 = uint3x4(1282546942, 1824824810, 1736570715, 508906058, 2060752880, 1867418756, 388530274, 695179852, 1766938039, 897923626, 1816190464, 1362906829); + uint3x4 r2 = uint3x4(3012420353, 2470142485, 2558396580, 3786061237, 2234214415, 2427548539, 3906437021, 3599787443, 2528029256, 3397043669, 2478776831, 2932060466); + TestUtils.AreEqual(~a2, r2); + + uint3x4 a3 = uint3x4(1227946838, 189609278, 956441808, 2123488810, 1593014251, 19223061, 1722107954, 1636875694, 1914097392, 1382545027, 1285277010, 722020848); + uint3x4 r3 = uint3x4(3067020457, 4105358017, 3338525487, 2171478485, 2701953044, 4275744234, 2572859341, 2658091601, 2380869903, 2912422268, 3009690285, 3572946447); + TestUtils.AreEqual(~a3, r3); + } + + + } +} diff --git a/package/Tests/Tests/Shared/TestUint3x4.gen.cs.meta b/package/Tests/Tests/Shared/TestUint3x4.gen.cs.meta new file mode 100755 index 000000000..be725d5e2 --- /dev/null +++ b/package/Tests/Tests/Shared/TestUint3x4.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f4c3a82cd7a932a4a97b7432498a1d53 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/package/Tests/Tests/Shared/TestUint4.gen.cs b/package/Tests/Tests/Shared/TestUint4.gen.cs new file mode 100755 index 000000000..7b5587d68 --- /dev/null +++ b/package/Tests/Tests/Shared/TestUint4.gen.cs @@ -0,0 +1,1353 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using NUnit.Framework; +using static Unity.Mathematics.math; +using Burst.Compiler.IL.Tests; + +namespace Unity.Mathematics.Tests +{ + [TestFixture] + public class TestUint4 + { + [TestCompiler] + public static void uint4_zero() + { + TestUtils.AreEqual(uint4.zero.x, 0u); + TestUtils.AreEqual(uint4.zero.y, 0u); + TestUtils.AreEqual(uint4.zero.z, 0u); + TestUtils.AreEqual(uint4.zero.w, 0u); + } + + [TestCompiler] + public static void uint4_constructor() + { + uint4 a = new uint4(1, 2, 3, 4); + TestUtils.AreEqual(a.x, 1); + TestUtils.AreEqual(a.y, 2); + TestUtils.AreEqual(a.z, 3); + TestUtils.AreEqual(a.w, 4); + } + + [TestCompiler] + public static void uint4_scalar_constructor() + { + uint4 a = new uint4(17u); + TestUtils.AreEqual(a.x, 17u); + TestUtils.AreEqual(a.y, 17u); + TestUtils.AreEqual(a.z, 17u); + TestUtils.AreEqual(a.w, 17u); + } + + [TestCompiler] + public static void uint4_static_constructor() + { + uint4 a = uint4(1, 2, 3, 4); + TestUtils.AreEqual(a.x, 1); + TestUtils.AreEqual(a.y, 2); + TestUtils.AreEqual(a.z, 3); + TestUtils.AreEqual(a.w, 4); + } + + [TestCompiler] + public static void uint4_static_scalar_constructor() + { + uint4 a = uint4(17u); + TestUtils.AreEqual(a.x, 17u); + TestUtils.AreEqual(a.y, 17u); + TestUtils.AreEqual(a.z, 17u); + TestUtils.AreEqual(a.w, 17u); + } + + [TestCompiler] + public static void uint4_operator_equal_wide_wide() + { + uint4 a0 = uint4(790229414, 970783976, 1428432738, 1578747135); + uint4 b0 = uint4(612337669, 1214209108, 2120643427, 295461214); + bool4 r0 = bool4(false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + uint4 a1 = uint4(1733797753, 2001507228, 1446876437, 1777406370); + uint4 b1 = uint4(1510890331, 1893316566, 921816149, 1834958575); + bool4 r1 = bool4(false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + uint4 a2 = uint4(1426387268, 1809275021, 1843770816, 1172185222); + uint4 b2 = uint4(1482011863, 2062852792, 226398742, 770290735); + bool4 r2 = bool4(false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + uint4 a3 = uint4(1469608940, 869874758, 458603090, 581282460); + uint4 b3 = uint4(36812057, 543224481, 1565350150, 1909926604); + bool4 r3 = bool4(false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void uint4_operator_equal_wide_scalar() + { + uint4 a0 = uint4(1211464300, 1921862607, 508076684, 1249127920); + uint b0 = (746972502); + bool4 r0 = bool4(false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + uint4 a1 = uint4(1394594555, 1733655277, 1884008277, 1682018538); + uint b1 = (746862310); + bool4 r1 = bool4(false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + uint4 a2 = uint4(795585660, 927605411, 672785749, 1465584610); + uint b2 = (936027116); + bool4 r2 = bool4(false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + uint4 a3 = uint4(585324157, 969511077, 442746747, 1772925698); + uint b3 = (404448210); + bool4 r3 = bool4(false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void uint4_operator_equal_scalar_wide() + { + uint a0 = (1150044438); + uint4 b0 = uint4(233855098, 924242519, 1402948791, 601381975); + bool4 r0 = bool4(false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + uint a1 = (2120518068); + uint4 b1 = uint4(629187703, 1971977031, 47183124, 1061805787); + bool4 r1 = bool4(false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + uint a2 = (1009011238); + uint4 b2 = uint4(312511148, 1460673064, 737210539, 1737844479); + bool4 r2 = bool4(false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + uint a3 = (1892405453); + uint4 b3 = uint4(2133024000, 455818693, 2003197687, 1276241219); + bool4 r3 = bool4(false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void uint4_operator_not_equal_wide_wide() + { + uint4 a0 = uint4(1660932106, 982847023, 97046264, 1739517447); + uint4 b0 = uint4(107139049, 75478496, 2055495054, 358586687); + bool4 r0 = bool4(true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + uint4 a1 = uint4(1253499180, 1830584069, 1841470429, 1397841646); + uint4 b1 = uint4(942338347, 111564990, 113811950, 948912488); + bool4 r1 = bool4(true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + uint4 a2 = uint4(1770890135, 1906548631, 169082967, 2099271786); + uint4 b2 = uint4(1080084121, 1400504872, 1032134499, 1061123400); + bool4 r2 = bool4(true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + uint4 a3 = uint4(1909317609, 46519139, 1433204003, 931492669); + uint4 b3 = uint4(221862069, 858950046, 989094643, 2023070999); + bool4 r3 = bool4(true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void uint4_operator_not_equal_wide_scalar() + { + uint4 a0 = uint4(747758183, 1033001286, 1439973882, 2138928797); + uint b0 = (248693828); + bool4 r0 = bool4(true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + uint4 a1 = uint4(1197845089, 950170763, 238704450, 2105962247); + uint b1 = (1432672459); + bool4 r1 = bool4(true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + uint4 a2 = uint4(727205263, 276313906, 2126300423, 791998981); + uint b2 = (1640688041); + bool4 r2 = bool4(true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + uint4 a3 = uint4(2035077187, 1412347883, 1622176923, 768370497); + uint b3 = (1171827730); + bool4 r3 = bool4(true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void uint4_operator_not_equal_scalar_wide() + { + uint a0 = (2076921066); + uint4 b0 = uint4(2037494727, 1989050616, 48833929, 1897435904); + bool4 r0 = bool4(true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + uint a1 = (514354517); + uint4 b1 = uint4(1783749164, 364694471, 754315072, 124108032); + bool4 r1 = bool4(true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + uint a2 = (1512967900); + uint4 b2 = uint4(1178825850, 1854793298, 50286949, 2100802631); + bool4 r2 = bool4(true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + uint a3 = (1640811853); + uint4 b3 = uint4(82110247, 472172806, 266984506, 2003668365); + bool4 r3 = bool4(true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void uint4_operator_less_wide_wide() + { + uint4 a0 = uint4(1182186063, 415538999, 1667335818, 1566618442); + uint4 b0 = uint4(524633529, 1032195686, 760723389, 1505751409); + bool4 r0 = bool4(false, true, false, false); + TestUtils.AreEqual(a0 < b0, r0); + + uint4 a1 = uint4(1166180837, 639095188, 1080836365, 771119973); + uint4 b1 = uint4(431962172, 1287906509, 1560084663, 1450178202); + bool4 r1 = bool4(false, true, true, true); + TestUtils.AreEqual(a1 < b1, r1); + + uint4 a2 = uint4(928263233, 789225474, 665243110, 1003542034); + uint4 b2 = uint4(2066166337, 1107069023, 1640077524, 2103263105); + bool4 r2 = bool4(true, true, true, true); + TestUtils.AreEqual(a2 < b2, r2); + + uint4 a3 = uint4(1032480172, 1961336172, 923379558, 21210619); + uint4 b3 = uint4(684229139, 1234033624, 1278743281, 1953079347); + bool4 r3 = bool4(false, false, true, true); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void uint4_operator_less_wide_scalar() + { + uint4 a0 = uint4(608447185, 818840405, 869219329, 2080125385); + uint b0 = (1491216667); + bool4 r0 = bool4(true, true, true, false); + TestUtils.AreEqual(a0 < b0, r0); + + uint4 a1 = uint4(1214500548, 1667165786, 1615392341, 840091491); + uint b1 = (1361741203); + bool4 r1 = bool4(true, false, false, true); + TestUtils.AreEqual(a1 < b1, r1); + + uint4 a2 = uint4(469591900, 315321650, 930950514, 1100560246); + uint b2 = (1247103789); + bool4 r2 = bool4(true, true, true, true); + TestUtils.AreEqual(a2 < b2, r2); + + uint4 a3 = uint4(933855388, 1127696709, 1286331950, 380753337); + uint b3 = (908563901); + bool4 r3 = bool4(false, false, false, true); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void uint4_operator_less_scalar_wide() + { + uint a0 = (548436837); + uint4 b0 = uint4(282703327, 14370648, 1862117300, 1304793311); + bool4 r0 = bool4(false, false, true, true); + TestUtils.AreEqual(a0 < b0, r0); + + uint a1 = (826073259); + uint4 b1 = uint4(988910157, 445132446, 1139670255, 111349251); + bool4 r1 = bool4(true, false, true, false); + TestUtils.AreEqual(a1 < b1, r1); + + uint a2 = (1102440676); + uint4 b2 = uint4(112183144, 1594415311, 1890019295, 2098715503); + bool4 r2 = bool4(false, true, true, true); + TestUtils.AreEqual(a2 < b2, r2); + + uint a3 = (608933527); + uint4 b3 = uint4(183989010, 1596056507, 1027318999, 146281093); + bool4 r3 = bool4(false, true, true, false); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void uint4_operator_greater_wide_wide() + { + uint4 a0 = uint4(592884447, 2133928932, 918957182, 1284069471); + uint4 b0 = uint4(138737040, 192863971, 1700841444, 1044631301); + bool4 r0 = bool4(true, true, false, true); + TestUtils.AreEqual(a0 > b0, r0); + + uint4 a1 = uint4(194584707, 739120780, 241654068, 1340158550); + uint4 b1 = uint4(1391589821, 730837695, 253553987, 2078872742); + bool4 r1 = bool4(false, true, false, false); + TestUtils.AreEqual(a1 > b1, r1); + + uint4 a2 = uint4(2099542537, 1182623667, 1399607274, 789301637); + uint4 b2 = uint4(910845808, 976047676, 202633078, 1223618940); + bool4 r2 = bool4(true, true, true, false); + TestUtils.AreEqual(a2 > b2, r2); + + uint4 a3 = uint4(180400925, 594688333, 1877031463, 1360073500); + uint4 b3 = uint4(641600530, 1830470354, 1570701388, 1104256103); + bool4 r3 = bool4(false, false, true, true); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void uint4_operator_greater_wide_scalar() + { + uint4 a0 = uint4(1097138316, 211763648, 1883002501, 56406996); + uint b0 = (438688675); + bool4 r0 = bool4(true, false, true, false); + TestUtils.AreEqual(a0 > b0, r0); + + uint4 a1 = uint4(43662641, 1437755186, 1219010035, 2125058448); + uint b1 = (1923456111); + bool4 r1 = bool4(false, false, false, true); + TestUtils.AreEqual(a1 > b1, r1); + + uint4 a2 = uint4(304028799, 48044515, 711945018, 1035679270); + uint b2 = (893125636); + bool4 r2 = bool4(false, false, false, true); + TestUtils.AreEqual(a2 > b2, r2); + + uint4 a3 = uint4(577943770, 1016617211, 2063134811, 1577403353); + uint b3 = (572743717); + bool4 r3 = bool4(true, true, true, true); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void uint4_operator_greater_scalar_wide() + { + uint a0 = (2024896938); + uint4 b0 = uint4(599356784, 185671342, 1932327391, 2025591013); + bool4 r0 = bool4(true, true, true, false); + TestUtils.AreEqual(a0 > b0, r0); + + uint a1 = (1257191721); + uint4 b1 = uint4(1312388500, 1443698859, 779217735, 691047512); + bool4 r1 = bool4(false, false, true, true); + TestUtils.AreEqual(a1 > b1, r1); + + uint a2 = (741776730); + uint4 b2 = uint4(732565983, 668302204, 1556466996, 858599525); + bool4 r2 = bool4(true, true, false, false); + TestUtils.AreEqual(a2 > b2, r2); + + uint a3 = (1896917159); + uint4 b3 = uint4(701542098, 1052151621, 1023307544, 1435392907); + bool4 r3 = bool4(true, true, true, true); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void uint4_operator_less_equal_wide_wide() + { + uint4 a0 = uint4(1577248162, 2043073061, 1688380407, 176431985); + uint4 b0 = uint4(903445031, 2108974565, 210822256, 1281704747); + bool4 r0 = bool4(false, true, false, true); + TestUtils.AreEqual(a0 <= b0, r0); + + uint4 a1 = uint4(223299035, 1502802140, 1691709825, 386789394); + uint4 b1 = uint4(453681718, 66138830, 1229799377, 1620922595); + bool4 r1 = bool4(true, false, false, true); + TestUtils.AreEqual(a1 <= b1, r1); + + uint4 a2 = uint4(117182003, 1665770435, 1958490731, 420032601); + uint4 b2 = uint4(1715833766, 1366430432, 13102000, 46919981); + bool4 r2 = bool4(true, false, false, false); + TestUtils.AreEqual(a2 <= b2, r2); + + uint4 a3 = uint4(1251092689, 2011681765, 749743684, 183784440); + uint4 b3 = uint4(486470891, 1709514236, 2145785285, 854254454); + bool4 r3 = bool4(false, false, true, true); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void uint4_operator_less_equal_wide_scalar() + { + uint4 a0 = uint4(1722165358, 1219858357, 860410743, 411099660); + uint b0 = (1688048545); + bool4 r0 = bool4(false, true, true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + uint4 a1 = uint4(348104022, 212084836, 58924407, 1459242706); + uint b1 = (1963256951); + bool4 r1 = bool4(true, true, true, true); + TestUtils.AreEqual(a1 <= b1, r1); + + uint4 a2 = uint4(1745758438, 262559763, 690091301, 1806172431); + uint b2 = (532949158); + bool4 r2 = bool4(false, true, false, false); + TestUtils.AreEqual(a2 <= b2, r2); + + uint4 a3 = uint4(2091514001, 1617221948, 2017733017, 804204255); + uint b3 = (1857173043); + bool4 r3 = bool4(false, true, false, true); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void uint4_operator_less_equal_scalar_wide() + { + uint a0 = (1777585); + uint4 b0 = uint4(1181030049, 1787703989, 1729760948, 1816537388); + bool4 r0 = bool4(true, true, true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + uint a1 = (1359786460); + uint4 b1 = uint4(874999193, 1678863148, 1711365839, 762067160); + bool4 r1 = bool4(false, true, true, false); + TestUtils.AreEqual(a1 <= b1, r1); + + uint a2 = (11953554); + uint4 b2 = uint4(1131583906, 1175393186, 1293698493, 48893340); + bool4 r2 = bool4(true, true, true, true); + TestUtils.AreEqual(a2 <= b2, r2); + + uint a3 = (66196247); + uint4 b3 = uint4(1958607116, 1576473309, 861890786, 478252419); + bool4 r3 = bool4(true, true, true, true); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void uint4_operator_greater_equal_wide_wide() + { + uint4 a0 = uint4(263000030, 744235661, 1893760267, 237248); + uint4 b0 = uint4(1395535146, 1178373944, 1237373760, 1364855321); + bool4 r0 = bool4(false, false, true, false); + TestUtils.AreEqual(a0 >= b0, r0); + + uint4 a1 = uint4(1062370984, 1676977687, 816766880, 1089431546); + uint4 b1 = uint4(600811864, 362060472, 290870624, 1839067862); + bool4 r1 = bool4(true, true, true, false); + TestUtils.AreEqual(a1 >= b1, r1); + + uint4 a2 = uint4(1394493730, 1176473380, 1193988637, 1703862455); + uint4 b2 = uint4(396958580, 1336888643, 1019684398, 1697684196); + bool4 r2 = bool4(true, false, true, true); + TestUtils.AreEqual(a2 >= b2, r2); + + uint4 a3 = uint4(1806186947, 1253571980, 589397635, 1951842887); + uint4 b3 = uint4(1227300220, 2044269675, 1898323839, 874509380); + bool4 r3 = bool4(true, false, false, true); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void uint4_operator_greater_equal_wide_scalar() + { + uint4 a0 = uint4(2112791350, 1043657935, 101764761, 1529909067); + uint b0 = (1470533736); + bool4 r0 = bool4(true, false, false, true); + TestUtils.AreEqual(a0 >= b0, r0); + + uint4 a1 = uint4(556026890, 1186600258, 815093894, 609211196); + uint b1 = (281734132); + bool4 r1 = bool4(true, true, true, true); + TestUtils.AreEqual(a1 >= b1, r1); + + uint4 a2 = uint4(1604309397, 244604867, 1419295004, 471843809); + uint b2 = (829548642); + bool4 r2 = bool4(true, false, true, false); + TestUtils.AreEqual(a2 >= b2, r2); + + uint4 a3 = uint4(1819986195, 1646290021, 196833647, 1596738181); + uint b3 = (1460027917); + bool4 r3 = bool4(true, true, false, true); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void uint4_operator_greater_equal_scalar_wide() + { + uint a0 = (1525542481); + uint4 b0 = uint4(1503244746, 861711266, 817773856, 925984572); + bool4 r0 = bool4(true, true, true, true); + TestUtils.AreEqual(a0 >= b0, r0); + + uint a1 = (571221723); + uint4 b1 = uint4(683686810, 118252990, 1653952090, 1240253990); + bool4 r1 = bool4(false, true, false, false); + TestUtils.AreEqual(a1 >= b1, r1); + + uint a2 = (1947039008); + uint4 b2 = uint4(1869136019, 152012637, 1214546726, 917376832); + bool4 r2 = bool4(true, true, true, true); + TestUtils.AreEqual(a2 >= b2, r2); + + uint a3 = (303549425); + uint4 b3 = uint4(2111728811, 945321577, 173706579, 625318949); + bool4 r3 = bool4(false, false, true, false); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void uint4_operator_add_wide_wide() + { + uint4 a0 = uint4(2049228671, 1658660009, 491719392, 937013355); + uint4 b0 = uint4(2088751567, 645762023, 306868786, 4360271); + uint4 r0 = uint4(4137980238, 2304422032, 798588178, 941373626); + TestUtils.AreEqual(a0 + b0, r0); + + uint4 a1 = uint4(81108663, 1063894558, 86954702, 843159721); + uint4 b1 = uint4(506047997, 2094559874, 1634712736, 1601474440); + uint4 r1 = uint4(587156660, 3158454432, 1721667438, 2444634161); + TestUtils.AreEqual(a1 + b1, r1); + + uint4 a2 = uint4(698977704, 192867135, 1683407172, 137301303); + uint4 b2 = uint4(1586485231, 908746788, 1812370320, 1247342357); + uint4 r2 = uint4(2285462935, 1101613923, 3495777492, 1384643660); + TestUtils.AreEqual(a2 + b2, r2); + + uint4 a3 = uint4(2103582820, 526139155, 447937230, 2127411006); + uint4 b3 = uint4(2043773873, 223363428, 175115707, 985928617); + uint4 r3 = uint4(4147356693, 749502583, 623052937, 3113339623); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void uint4_operator_add_wide_scalar() + { + uint4 a0 = uint4(2038218457, 134923711, 875689667, 1338884463); + uint b0 = (2124409227); + uint4 r0 = uint4(4162627684, 2259332938, 3000098894, 3463293690); + TestUtils.AreEqual(a0 + b0, r0); + + uint4 a1 = uint4(997710928, 1067888129, 70433301, 2003021861); + uint b1 = (340490871); + uint4 r1 = uint4(1338201799, 1408379000, 410924172, 2343512732); + TestUtils.AreEqual(a1 + b1, r1); + + uint4 a2 = uint4(1635971971, 85446202, 1068152966, 1239387100); + uint b2 = (1160398286); + uint4 r2 = uint4(2796370257, 1245844488, 2228551252, 2399785386); + TestUtils.AreEqual(a2 + b2, r2); + + uint4 a3 = uint4(1497676888, 1095438654, 756559204, 1818718931); + uint b3 = (1727477485); + uint4 r3 = uint4(3225154373, 2822916139, 2484036689, 3546196416); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void uint4_operator_add_scalar_wide() + { + uint a0 = (391092078); + uint4 b0 = uint4(519908870, 851424292, 328314822, 135622204); + uint4 r0 = uint4(911000948, 1242516370, 719406900, 526714282); + TestUtils.AreEqual(a0 + b0, r0); + + uint a1 = (740923360); + uint4 b1 = uint4(655394201, 1451896269, 1781697072, 996031825); + uint4 r1 = uint4(1396317561, 2192819629, 2522620432, 1736955185); + TestUtils.AreEqual(a1 + b1, r1); + + uint a2 = (1557774949); + uint4 b2 = uint4(779774940, 1111541302, 783046445, 1130163944); + uint4 r2 = uint4(2337549889, 2669316251, 2340821394, 2687938893); + TestUtils.AreEqual(a2 + b2, r2); + + uint a3 = (288279584); + uint4 b3 = uint4(1397683861, 1636583489, 673263339, 1469300874); + uint4 r3 = uint4(1685963445, 1924863073, 961542923, 1757580458); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void uint4_operator_sub_wide_wide() + { + uint4 a0 = uint4(1353441118, 797269833, 659988112, 56022121); + uint4 b0 = uint4(1332656812, 1827794007, 972557431, 2078233689); + uint4 r0 = uint4(20784306, 3264443122, 3982397977, 2272755728); + TestUtils.AreEqual(a0 - b0, r0); + + uint4 a1 = uint4(365847472, 2062899435, 1380988474, 799885138); + uint4 b1 = uint4(1508184327, 1372307701, 810327977, 936799885); + uint4 r1 = uint4(3152630441, 690591734, 570660497, 4158052549); + TestUtils.AreEqual(a1 - b1, r1); + + uint4 a2 = uint4(1306058185, 579775276, 1239163824, 344591081); + uint4 b2 = uint4(71562303, 1418723328, 1971342989, 1226053395); + uint4 r2 = uint4(1234495882, 3456019244, 3562788131, 3413504982); + TestUtils.AreEqual(a2 - b2, r2); + + uint4 a3 = uint4(86359575, 1049709943, 721529513, 1767221271); + uint4 b3 = uint4(136565478, 1979903295, 600719425, 837912956); + uint4 r3 = uint4(4244761393, 3364773944, 120810088, 929308315); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void uint4_operator_sub_wide_scalar() + { + uint4 a0 = uint4(1176369558, 1934521195, 309452150, 1417634074); + uint b0 = (462232403); + uint4 r0 = uint4(714137155, 1472288792, 4142187043, 955401671); + TestUtils.AreEqual(a0 - b0, r0); + + uint4 a1 = uint4(108910717, 1502312334, 1451794815, 281174200); + uint b1 = (1306356714); + uint4 r1 = uint4(3097521299, 195955620, 145438101, 3269784782); + TestUtils.AreEqual(a1 - b1, r1); + + uint4 a2 = uint4(87530840, 2041593336, 557239990, 1119051448); + uint b2 = (1913724431); + uint4 r2 = uint4(2468773705, 127868905, 2938482855, 3500294313); + TestUtils.AreEqual(a2 - b2, r2); + + uint4 a3 = uint4(1590376732, 816382635, 815920639, 1829033117); + uint b3 = (819090189); + uint4 r3 = uint4(771286543, 4292259742, 4291797746, 1009942928); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void uint4_operator_sub_scalar_wide() + { + uint a0 = (1691534405); + uint4 b0 = uint4(2022393810, 1612688515, 496689713, 887037586); + uint4 r0 = uint4(3964107891, 78845890, 1194844692, 804496819); + TestUtils.AreEqual(a0 - b0, r0); + + uint a1 = (2097630964); + uint4 b1 = uint4(374934538, 939035482, 935242277, 1789300421); + uint4 r1 = uint4(1722696426, 1158595482, 1162388687, 308330543); + TestUtils.AreEqual(a1 - b1, r1); + + uint a2 = (264712893); + uint4 b2 = uint4(1231856067, 1818112748, 1428436109, 1258745460); + uint4 r2 = uint4(3327824122, 2741567441, 3131244080, 3300934729); + TestUtils.AreEqual(a2 - b2, r2); + + uint a3 = (1077380396); + uint4 b3 = uint4(1330722719, 518111829, 967128529, 344666254); + uint4 r3 = uint4(4041624973, 559268567, 110251867, 732714142); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void uint4_operator_mul_wide_wide() + { + uint4 a0 = uint4(245827027, 208934650, 1019478917, 568231809); + uint4 b0 = uint4(759663997, 350129201, 477450108, 1635735015); + uint4 r0 = uint4(3662155527, 1402281434, 332447596, 2361989735); + TestUtils.AreEqual(a0 * b0, r0); + + uint4 a1 = uint4(877289039, 1585782440, 2111178729, 1186019069); + uint4 b1 = uint4(388710278, 757722665, 1509388321, 1841703980); + uint4 r1 = uint4(2624048730, 1455036648, 2128344329, 3700879228); + TestUtils.AreEqual(a1 * b1, r1); + + uint4 a2 = uint4(571481445, 1570087048, 629447153, 619383734); + uint4 b2 = uint4(1826369331, 1524322467, 1605207974, 428419155); + uint4 r2 = uint4(2640799263, 2093463192, 3087460678, 3161406466); + TestUtils.AreEqual(a2 * b2, r2); + + uint4 a3 = uint4(2055121568, 700402816, 263414349, 187830569); + uint4 b3 = uint4(1460605791, 1968043860, 771161742, 2037340417); + uint4 r3 = uint4(990589280, 3356793344, 2953243830, 1156600361); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void uint4_operator_mul_wide_scalar() + { + uint4 a0 = uint4(1762033447, 465343930, 1570757881, 1326409563); + uint b0 = (1476837906); + uint4 r0 = uint4(2981789374, 1326807828, 2156411778, 4018813542); + TestUtils.AreEqual(a0 * b0, r0); + + uint4 a1 = uint4(1824319147, 72749215, 154616909, 975743632); + uint b1 = (1356578909); + uint4 r1 = uint4(4058582047, 130042307, 1244434425, 2313287248); + TestUtils.AreEqual(a1 * b1, r1); + + uint4 a2 = uint4(573770299, 971327747, 1818877398, 1324050764); + uint b2 = (1958912969); + uint4 r2 = uint4(3595344211, 583613531, 2609540870, 377032876); + TestUtils.AreEqual(a2 * b2, r2); + + uint4 a3 = uint4(660611671, 391009467, 1186856590, 890343818); + uint b3 = (1279757657); + uint4 r3 = uint4(4252425023, 1120105475, 4272141662, 1972017914); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void uint4_operator_mul_scalar_wide() + { + uint a0 = (99541948); + uint4 b0 = uint4(1764461774, 657072478, 1459784358, 1610646683); + uint4 r0 = uint4(3344568648, 4192918280, 1260585960, 1158730452); + TestUtils.AreEqual(a0 * b0, r0); + + uint a1 = (1632058826); + uint4 b1 = uint4(868441654, 1408757883, 335917146, 2105124483); + uint4 r1 = uint4(4237636764, 2735607822, 712546564, 3489634910); + TestUtils.AreEqual(a1 * b1, r1); + + uint a2 = (1178393968); + uint4 b2 = uint4(1963904348, 1409533767, 243286231, 1336308795); + uint4 r2 = uint4(1196573760, 592673296, 209320208, 3942500560); + TestUtils.AreEqual(a2 * b2, r2); + + uint a3 = (517963367); + uint4 b3 = uint4(1733623488, 459880225, 994616533, 1420531535); + uint4 r3 = uint4(3520397120, 3023465543, 652617651, 2505294537); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void uint4_operator_div_wide_wide() + { + uint4 a0 = uint4(1590198532, 507812502, 126627032, 1058247011); + uint4 b0 = uint4(1434703236, 911965201, 390415521, 128746927); + uint4 r0 = uint4(1, 0, 0, 8); + TestUtils.AreEqual(a0 / b0, r0); + + uint4 a1 = uint4(427387861, 290676154, 1829594484, 1127868739); + uint4 b1 = uint4(525835375, 816946613, 878264647, 146789678); + uint4 r1 = uint4(0, 0, 2, 7); + TestUtils.AreEqual(a1 / b1, r1); + + uint4 a2 = uint4(499016351, 1341209632, 134906097, 785470242); + uint4 b2 = uint4(2089524057, 254213018, 1916850021, 1737806518); + uint4 r2 = uint4(0, 5, 0, 0); + TestUtils.AreEqual(a2 / b2, r2); + + uint4 a3 = uint4(788249865, 1099825433, 1552968283, 1822367139); + uint4 b3 = uint4(1906634983, 437754923, 825037958, 902508708); + uint4 r3 = uint4(0, 2, 1, 2); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void uint4_operator_div_wide_scalar() + { + uint4 a0 = uint4(560951562, 1218680769, 375341724, 1613542090); + uint b0 = (947861580); + uint4 r0 = uint4(0, 1, 0, 1); + TestUtils.AreEqual(a0 / b0, r0); + + uint4 a1 = uint4(1919409166, 1349573078, 524526253, 341995568); + uint b1 = (1397425408); + uint4 r1 = uint4(1, 0, 0, 0); + TestUtils.AreEqual(a1 / b1, r1); + + uint4 a2 = uint4(495895326, 1676971657, 2131487088, 2105094094); + uint b2 = (1515313790); + uint4 r2 = uint4(0, 1, 1, 1); + TestUtils.AreEqual(a2 / b2, r2); + + uint4 a3 = uint4(1017891310, 1646044372, 1447236569, 107215658); + uint b3 = (542666029); + uint4 r3 = uint4(1, 3, 2, 0); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void uint4_operator_div_scalar_wide() + { + uint a0 = (1161272038); + uint4 b0 = uint4(187325733, 1594107378, 2016183849, 1589343709); + uint4 r0 = uint4(6, 0, 0, 0); + TestUtils.AreEqual(a0 / b0, r0); + + uint a1 = (388768753); + uint4 b1 = uint4(1417077283, 1773486938, 1154044032, 81831373); + uint4 r1 = uint4(0, 0, 0, 4); + TestUtils.AreEqual(a1 / b1, r1); + + uint a2 = (1476877645); + uint4 b2 = uint4(653688843, 45756703, 631027637, 396671391); + uint4 r2 = uint4(2, 32, 2, 3); + TestUtils.AreEqual(a2 / b2, r2); + + uint a3 = (784365696); + uint4 b3 = uint4(1250594097, 1818363859, 1653451772, 270557729); + uint4 r3 = uint4(0, 0, 0, 2); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void uint4_operator_mod_wide_wide() + { + uint4 a0 = uint4(146150818, 1846543305, 1071447756, 308965362); + uint4 b0 = uint4(983050390, 771341152, 942375212, 367361754); + uint4 r0 = uint4(146150818, 303861001, 129072544, 308965362); + TestUtils.AreEqual(a0 % b0, r0); + + uint4 a1 = uint4(659881575, 1002365460, 861198439, 1510617532); + uint4 b1 = uint4(749500619, 750718852, 2095151755, 88438806); + uint4 r1 = uint4(659881575, 251646608, 861198439, 7157830); + TestUtils.AreEqual(a1 % b1, r1); + + uint4 a2 = uint4(778525078, 1458458044, 101987897, 1249565173); + uint4 b2 = uint4(769227442, 647214624, 1026513788, 1544950956); + uint4 r2 = uint4(9297636, 164028796, 101987897, 1249565173); + TestUtils.AreEqual(a2 % b2, r2); + + uint4 a3 = uint4(938026607, 1692541775, 1518877124, 1806965510); + uint4 b3 = uint4(160166322, 1099108075, 1158422232, 1798905209); + uint4 r3 = uint4(137194997, 593433700, 360454892, 8060301); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void uint4_operator_mod_wide_scalar() + { + uint4 a0 = uint4(164800505, 1062177828, 1898749675, 1701653318); + uint b0 = (883951171); + uint4 r0 = uint4(164800505, 178226657, 130847333, 817702147); + TestUtils.AreEqual(a0 % b0, r0); + + uint4 a1 = uint4(820393245, 128329633, 1464010899, 896587769); + uint b1 = (19002208); + uint4 r1 = uint4(3298301, 14316385, 840883, 3483993); + TestUtils.AreEqual(a1 % b1, r1); + + uint4 a2 = uint4(405208598, 959236935, 712321026, 172564850); + uint b2 = (1982762194); + uint4 r2 = uint4(405208598, 959236935, 712321026, 172564850); + TestUtils.AreEqual(a2 % b2, r2); + + uint4 a3 = uint4(1540068445, 1607489717, 165478511, 647846716); + uint b3 = (1085897743); + uint4 r3 = uint4(454170702, 521591974, 165478511, 647846716); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void uint4_operator_mod_scalar_wide() + { + uint a0 = (242383789); + uint4 b0 = uint4(740000543, 1556450291, 1104736385, 437976569); + uint4 r0 = uint4(242383789, 242383789, 242383789, 242383789); + TestUtils.AreEqual(a0 % b0, r0); + + uint a1 = (1911837205); + uint4 b1 = uint4(1507212038, 1906405167, 247693265, 293460573); + uint4 r1 = uint4(404625167, 5432038, 177984350, 151073767); + TestUtils.AreEqual(a1 % b1, r1); + + uint a2 = (1495295166); + uint4 b2 = uint4(873323603, 530681233, 1298102643, 2057984657); + uint4 r2 = uint4(621971563, 433932700, 197192523, 1495295166); + TestUtils.AreEqual(a2 % b2, r2); + + uint a3 = (1000742091); + uint4 b3 = uint4(1461372131, 1859742342, 797184687, 821888842); + uint4 r3 = uint4(1000742091, 1000742091, 203557404, 178853249); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void uint4_operator_plus() + { + uint4 a0 = uint4(1643476803, 907898539, 379615839, 1140483021); + uint4 r0 = uint4(1643476803, 907898539, 379615839, 1140483021); + TestUtils.AreEqual(+a0, r0); + + uint4 a1 = uint4(1735287433, 1472881565, 339091479, 401565897); + uint4 r1 = uint4(1735287433, 1472881565, 339091479, 401565897); + TestUtils.AreEqual(+a1, r1); + + uint4 a2 = uint4(1287765427, 174532915, 1864850812, 1566098441); + uint4 r2 = uint4(1287765427, 174532915, 1864850812, 1566098441); + TestUtils.AreEqual(+a2, r2); + + uint4 a3 = uint4(1145639744, 2049663954, 1723005749, 409076474); + uint4 r3 = uint4(1145639744, 2049663954, 1723005749, 409076474); + TestUtils.AreEqual(+a3, r3); + } + + [TestCompiler] + public static void uint4_operator_neg() + { + uint4 a0 = uint4(1955022112, 662160019, 370300775, 2141283773); + uint4 r0 = uint4(2339945184, 3632807277, 3924666521, 2153683523); + TestUtils.AreEqual(-a0, r0); + + uint4 a1 = uint4(1004505619, 33894270, 505708349, 1115028238); + uint4 r1 = uint4(3290461677, 4261073026, 3789258947, 3179939058); + TestUtils.AreEqual(-a1, r1); + + uint4 a2 = uint4(1636274969, 1542206286, 213087293, 243937487); + uint4 r2 = uint4(2658692327, 2752761010, 4081880003, 4051029809); + TestUtils.AreEqual(-a2, r2); + + uint4 a3 = uint4(341522275, 574159094, 1687250035, 2057919693); + uint4 r3 = uint4(3953445021, 3720808202, 2607717261, 2237047603); + TestUtils.AreEqual(-a3, r3); + } + + [TestCompiler] + public static void uint4_operator_prefix_inc() + { + uint4 a0 = uint4(864455342, 2035793213, 1275443862, 971919915); + uint4 r0 = uint4(864455343, 2035793214, 1275443863, 971919916); + TestUtils.AreEqual(++a0, r0); + + uint4 a1 = uint4(411610189, 395072276, 115573442, 913293639); + uint4 r1 = uint4(411610190, 395072277, 115573443, 913293640); + TestUtils.AreEqual(++a1, r1); + + uint4 a2 = uint4(432884105, 1385544935, 1835605516, 831396561); + uint4 r2 = uint4(432884106, 1385544936, 1835605517, 831396562); + TestUtils.AreEqual(++a2, r2); + + uint4 a3 = uint4(388229350, 1786514683, 993189311, 752093909); + uint4 r3 = uint4(388229351, 1786514684, 993189312, 752093910); + TestUtils.AreEqual(++a3, r3); + } + + [TestCompiler] + public static void uint4_operator_postfix_inc() + { + uint4 a0 = uint4(1751003569, 2063707595, 1500486291, 969189211); + uint4 r0 = uint4(1751003569, 2063707595, 1500486291, 969189211); + TestUtils.AreEqual(a0++, r0); + + uint4 a1 = uint4(1007848192, 1643023524, 1190630527, 1396179607); + uint4 r1 = uint4(1007848192, 1643023524, 1190630527, 1396179607); + TestUtils.AreEqual(a1++, r1); + + uint4 a2 = uint4(708474528, 1524860667, 1408994706, 375284401); + uint4 r2 = uint4(708474528, 1524860667, 1408994706, 375284401); + TestUtils.AreEqual(a2++, r2); + + uint4 a3 = uint4(1580130369, 717006530, 506142468, 732199129); + uint4 r3 = uint4(1580130369, 717006530, 506142468, 732199129); + TestUtils.AreEqual(a3++, r3); + } + + [TestCompiler] + public static void uint4_operator_prefix_dec() + { + uint4 a0 = uint4(200904609, 871077500, 968578728, 638967721); + uint4 r0 = uint4(200904608, 871077499, 968578727, 638967720); + TestUtils.AreEqual(--a0, r0); + + uint4 a1 = uint4(1995396216, 1782514098, 1589827826, 1434377580); + uint4 r1 = uint4(1995396215, 1782514097, 1589827825, 1434377579); + TestUtils.AreEqual(--a1, r1); + + uint4 a2 = uint4(596759698, 1758478358, 1914114460, 71237375); + uint4 r2 = uint4(596759697, 1758478357, 1914114459, 71237374); + TestUtils.AreEqual(--a2, r2); + + uint4 a3 = uint4(389120307, 1310293956, 356565557, 18299409); + uint4 r3 = uint4(389120306, 1310293955, 356565556, 18299408); + TestUtils.AreEqual(--a3, r3); + } + + [TestCompiler] + public static void uint4_operator_postfix_dec() + { + uint4 a0 = uint4(283970262, 1109329936, 1073216143, 649439137); + uint4 r0 = uint4(283970262, 1109329936, 1073216143, 649439137); + TestUtils.AreEqual(a0--, r0); + + uint4 a1 = uint4(1932646215, 484207852, 524156737, 691209285); + uint4 r1 = uint4(1932646215, 484207852, 524156737, 691209285); + TestUtils.AreEqual(a1--, r1); + + uint4 a2 = uint4(2017728859, 377162390, 526366486, 1504625034); + uint4 r2 = uint4(2017728859, 377162390, 526366486, 1504625034); + TestUtils.AreEqual(a2--, r2); + + uint4 a3 = uint4(590919177, 1867810045, 2095777993, 670715645); + uint4 r3 = uint4(590919177, 1867810045, 2095777993, 670715645); + TestUtils.AreEqual(a3--, r3); + } + + [TestCompiler] + public static void uint4_operator_bitwise_and_wide_wide() + { + uint4 a0 = uint4(779935043, 1097962163, 1939593304, 800599247); + uint4 b0 = uint4(307705143, 1710882162, 866836769, 532490608); + uint4 r0 = uint4(39064835, 1097961522, 864731136, 263727168); + TestUtils.AreEqual(a0 & b0, r0); + + uint4 a1 = uint4(952140918, 782792558, 1608557706, 396446406); + uint4 b1 = uint4(679371720, 1794035877, 1439832202, 519529812); + uint4 r1 = uint4(675283008, 715673636, 1438646410, 379666500); + TestUtils.AreEqual(a1 & b1, r1); + + uint4 a2 = uint4(2039894114, 1286974642, 442394124, 1759739564); + uint4 b2 = uint4(23633139, 1209152681, 646737179, 1255867027); + uint4 r2 = uint4(16781410, 1209017504, 34366472, 1220739712); + TestUtils.AreEqual(a2 & b2, r2); + + uint4 a3 = uint4(233435438, 665207770, 1942050241, 1022352952); + uint4 b3 = uint4(1900854122, 413173763, 1409138251, 2087190272); + uint4 r3 = uint4(21541162, 10485762, 1405162561, 1013440000); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void uint4_operator_bitwise_and_wide_scalar() + { + uint4 a0 = uint4(443615469, 490057985, 2042441263, 1524760558); + uint b0 = (93423598); + uint4 r0 = uint4(1114348, 85033216, 26281518, 8488942); + TestUtils.AreEqual(a0 & b0, r0); + + uint4 a1 = uint4(1405175110, 1941875181, 1236735839, 1365509729); + uint b1 = (510212004); + uint4 r1 = uint4(306251012, 304619940, 136386308, 274728480); + TestUtils.AreEqual(a1 & b1, r1); + + uint4 a2 = uint4(428270198, 650270920, 1249238550, 814629680); + uint b2 = (607982857); + uint4 r2 = uint4(262144, 603983880, 3478528, 537657600); + TestUtils.AreEqual(a2 & b2, r2); + + uint4 a3 = uint4(1862276471, 861733033, 1408932942, 957693145); + uint b3 = (143502472); + uint4 r3 = uint4(134218752, 852104, 8948744, 134556808); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void uint4_operator_bitwise_and_scalar_wide() + { + uint a0 = (1144543590); + uint4 b0 = uint4(420346723, 562416448, 1393127318, 1560699552); + uint4 r0 = uint4(547170, 18752, 1074284806, 1140867104); + TestUtils.AreEqual(a0 & b0, r0); + + uint a1 = (851218057); + uint4 b1 = uint4(703880958, 1159378889, 2031211279, 1089518981); + uint4 r1 = uint4(548671112, 1607305, 806388233, 11570305); + TestUtils.AreEqual(a1 & b1, r1); + + uint a2 = (270607307); + uint4 b2 = uint4(1349288930, 520199596, 1763483957, 1248975349); + uint4 r2 = uint4(270533570, 268501384, 8449, 2163137); + TestUtils.AreEqual(a2 & b2, r2); + + uint a3 = (236938635); + uint4 b3 = uint4(185023291, 1085233038, 1845693112, 946052961); + uint4 r3 = uint4(168239371, 1000842, 235077768, 134415617); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void uint4_operator_bitwise_or_wide_wide() + { + uint4 a0 = uint4(1731159103, 659068416, 382702471, 1821032196); + uint4 b0 = uint4(1583847161, 692672727, 1161585489, 1756207130); + uint4 r0 = uint4(2138044159, 793370327, 1476391895, 1823457054); + TestUtils.AreEqual(a0 | b0, r0); + + uint4 a1 = uint4(1565773438, 1004000514, 948501377, 600951835); + uint4 b1 = uint4(1321374429, 1287357212, 2075767170, 1273513430); + uint4 r1 = uint4(1607720703, 2147473182, 2075786115, 1811533279); + TestUtils.AreEqual(a1 | b1, r1); + + uint4 a2 = uint4(669346222, 396691477, 2108560248, 2117522137); + uint4 b2 = uint4(1610830169, 1316929125, 511625048, 573925879); + uint4 r2 = uint4(1743223295, 1610595957, 2147407736, 2117598207); + TestUtils.AreEqual(a2 | b2, r2); + + uint4 a3 = uint4(330307355, 818676817, 1774459567, 1117506257); + uint4 b3 = uint4(1502255628, 1841676448, 1682928938, 1115131952); + uint4 r3 = uint4(1538957087, 2110637297, 1842315183, 1124063985); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void uint4_operator_bitwise_or_wide_scalar() + { + uint4 a0 = uint4(961259683, 471103264, 1733389229, 1591585258); + uint b0 = (1666102508); + uint4 r0 = uint4(2068823279, 2136930284, 1734344685, 2145369582); + TestUtils.AreEqual(a0 | b0, r0); + + uint4 a1 = uint4(386953869, 1048929715, 1814263250, 860336789); + uint b1 = (1148351449); + uint4 r1 = uint4(1467118557, 2130147323, 1819506651, 2004349917); + TestUtils.AreEqual(a1 | b1, r1); + + uint4 a2 = uint4(1637162093, 774029856, 879300408, 1179087439); + uint b2 = (1227888278); + uint4 r2 = uint4(1773477631, 1865602742, 2105089982, 1333229279); + TestUtils.AreEqual(a2 | b2, r2); + + uint4 a3 = uint4(797240690, 46921989, 1980838747, 284225881); + uint b3 = (1977614655); + uint4 r3 = uint4(2145709439, 2011953471, 2012296063, 1978724735); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void uint4_operator_bitwise_or_scalar_wide() + { + uint a0 = (1213433101); + uint4 b0 = uint4(1212928242, 1614462616, 936937728, 764766995); + uint4 r0 = uint4(1213978111, 1752940445, 2145094925, 1842867999); + TestUtils.AreEqual(a0 | b0, r0); + + uint a1 = (306352095); + uint4 b1 = uint4(574719481, 1283571271, 2109131012, 979469710); + uint4 r1 = uint4(843288575, 1589886943, 2146881503, 979603423); + TestUtils.AreEqual(a1 | b1, r1); + + uint a2 = (1348323481); + uint4 b2 = uint4(1407542578, 697517649, 1059093741, 627815046); + uint4 r2 = uint4(1409150395, 2044710617, 2138963197, 1971321503); + TestUtils.AreEqual(a2 | b2, r2); + + uint a3 = (418822515); + uint4 b3 = uint4(83214352, 424663473, 447949225, 527022375); + uint4 r3 = uint4(486013299, 436206067, 452442619, 536852855); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void uint4_operator_bitwise_xor_wide_wide() + { + uint4 a0 = uint4(1556324760, 207002929, 1843444873, 1632079131); + uint4 b0 = uint4(1054997548, 1523759632, 251164872, 110472397); + uint4 r0 = uint4(1646419380, 1451501345, 1662567489, 1741824470); + TestUtils.AreEqual(a0 ^ b0, r0); + + uint4 a1 = uint4(1460334334, 1607815585, 220623650, 38668553); + uint4 b1 = uint4(384031112, 1109163205, 535118981, 179106262); + uint4 r1 = uint4(1105803126, 499723620, 314783655, 149092575); + TestUtils.AreEqual(a1 ^ b1, r1); + + uint4 a2 = uint4(47193340, 643663548, 1371932564, 94957188); + uint4 b2 = uint4(1523031711, 1713313372, 1294118730, 520360641); + uint4 r2 = uint4(1477935715, 1078104288, 484747486, 447544389); + TestUtils.AreEqual(a2 ^ b2, r2); + + uint4 a3 = uint4(700973621, 370621508, 2087573076, 351476570); + uint4 b3 = uint4(1040688781, 1020757245, 1143954843, 1281933464); + uint4 r3 = uint4(399484088, 717273273, 943885263, 1486609346); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void uint4_operator_bitwise_xor_wide_scalar() + { + uint4 a0 = uint4(2124666952, 177397845, 574879617, 1937385541); + uint b0 = (493665894); + uint4 r0 = uint4(1674536494, 402546227, 1060063719, 1846973987); + TestUtils.AreEqual(a0 ^ b0, r0); + + uint4 a1 = uint4(1136545648, 535061373, 289301586, 1305234431); + uint b1 = (213863690); + uint4 r1 = uint4(1325466234, 324742775, 495003992, 1098057461); + TestUtils.AreEqual(a1 ^ b1, r1); + + uint4 a2 = uint4(353786540, 1267729267, 125659640, 1315625690); + uint b2 = (1308626970); + uint4 r2 = uint4(1528187574, 93328233, 1232959970, 6998720); + TestUtils.AreEqual(a2 ^ b2, r2); + + uint4 a3 = uint4(1730088797, 375757978, 491079274, 191750702); + uint b3 = (116862046); + uint4 r3 = uint4(1642603267, 278048964, 464677428, 228249200); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void uint4_operator_bitwise_xor_scalar_wide() + { + uint a0 = (1288453276); + uint4 b0 = uint4(1077599928, 884741329, 212164516, 1585020328); + uint4 r0 = uint4(217506340, 2020616269, 1080648504, 313868596); + TestUtils.AreEqual(a0 ^ b0, r0); + + uint a1 = (152985454); + uint4 b1 = uint4(1775851275, 1416249064, 1309317737, 1773918217); + uint4 r1 = uint4(1623656549, 1567908230, 1192543495, 1621460839); + TestUtils.AreEqual(a1 ^ b1, r1); + + uint a2 = (1509843030); + uint4 b2 = uint4(1206045972, 1154916424, 1947871003, 1774252400); + uint4 r2 = uint4(505195842, 489209886, 769935181, 809406758); + TestUtils.AreEqual(a2 ^ b2, r2); + + uint a3 = (1946113778); + uint4 b3 = uint4(1079717492, 290620937, 1382343363, 939045099); + uint4 r3 = uint4(866416774, 1655558395, 563852337, 1141368345); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void uint4_operator_left_shift() + { + uint4 a0 = uint4(197771193, 622182602, 1283988958, 1327917304); + int b0 = (1321149625); + uint4 r0 = uint4(1912602624, 2483027968, 3154116608, 4026531840); + TestUtils.AreEqual(a0 << b0, r0); + + uint4 a1 = uint4(473415985, 870301196, 2058433484, 1200694230); + int b1 = (432425717); + uint4 r1 = uint4(639631360, 3246391296, 2038431744, 2059403264); + TestUtils.AreEqual(a1 << b1, r1); + + uint4 a2 = uint4(1531607705, 1008296534, 1447702302, 1079614371); + int b2 = (1360008038); + uint4 r2 = uint4(3533612608, 106468736, 2458634112, 375843008); + TestUtils.AreEqual(a2 << b2, r2); + + uint4 a3 = uint4(35667343, 2045594989, 2077023268, 592678686); + int b3 = (1664454606); + uint4 r3 = uint4(258195456, 1398489088, 923336704, 3821502464); + TestUtils.AreEqual(a3 << b3, r3); + } + + [TestCompiler] + public static void uint4_operator_right_shift() + { + uint4 a0 = uint4(548167301, 1161338299, 1617625829, 1860731847); + int b0 = (1266801540); + uint4 r0 = uint4(34260456, 72583643, 101101614, 116295740); + TestUtils.AreEqual(a0 >> b0, r0); + + uint4 a1 = uint4(713958715, 770466193, 1265099998, 572763124); + int b1 = (196552656); + uint4 r1 = uint4(10894, 11756, 19303, 8739); + TestUtils.AreEqual(a1 >> b1, r1); + + uint4 a2 = uint4(506619530, 2031319045, 701927980, 917785020); + int b2 = (426807581); + uint4 r2 = uint4(0, 3, 1, 1); + TestUtils.AreEqual(a2 >> b2, r2); + + uint4 a3 = uint4(569504877, 1102123711, 334005460, 1624751550); + int b3 = (185593382); + uint4 r3 = uint4(8898513, 17220682, 5218835, 25386742); + TestUtils.AreEqual(a3 >> b3, r3); + } + + [TestCompiler] + public static void uint4_operator_bitwise_not() + { + uint4 a0 = uint4(1403358969, 831360921, 2088190243, 976721016); + uint4 r0 = uint4(2891608326, 3463606374, 2206777052, 3318246279); + TestUtils.AreEqual(~a0, r0); + + uint4 a1 = uint4(878283189, 1935567517, 1420884856, 472965491); + uint4 r1 = uint4(3416684106, 2359399778, 2874082439, 3822001804); + TestUtils.AreEqual(~a1, r1); + + uint4 a2 = uint4(771711426, 2061524024, 753208488, 2097179283); + uint4 r2 = uint4(3523255869, 2233443271, 3541758807, 2197788012); + TestUtils.AreEqual(~a2, r2); + + uint4 a3 = uint4(1303022493, 1289372466, 1635981125, 1951018596); + uint4 r3 = uint4(2991944802, 3005594829, 2658986170, 2343948699); + TestUtils.AreEqual(~a3, r3); + } + + [TestCompiler] + public static void uint4_shuffle_result_1() + { + uint4 a = uint4(0, 1, 2, 3); + uint4 b = uint4(4, 5, 6, 7); + + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftX), (0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftY), (1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftZ), (2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftW), (3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX), (4)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY), (5)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ), (6)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightW), (7)); + } + + [TestCompiler] + public static void uint4_shuffle_result_2() + { + uint4 a = uint4(0, 1, 2, 3); + uint4 b = uint4(4, 5, 6, 7); + + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.RightZ), uint2(5, 6)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ, ShuffleComponent.RightX), uint2(6, 4)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftY, ShuffleComponent.RightX), uint2(1, 4)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightW, ShuffleComponent.LeftW), uint2(7, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightW, ShuffleComponent.LeftZ), uint2(7, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftZ, ShuffleComponent.LeftW), uint2(2, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.LeftW), uint2(5, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightW, ShuffleComponent.LeftX), uint2(7, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ, ShuffleComponent.RightW), uint2(6, 7)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.LeftZ), uint2(5, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ, ShuffleComponent.RightZ), uint2(6, 6)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightW, ShuffleComponent.LeftX), uint2(7, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.RightX), uint2(5, 4)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightW, ShuffleComponent.RightY), uint2(7, 5)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.LeftX), uint2(4, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftY, ShuffleComponent.LeftW), uint2(1, 3)); + } + + [TestCompiler] + public static void uint4_shuffle_result_3() + { + uint4 a = uint4(0, 1, 2, 3); + uint4 b = uint4(4, 5, 6, 7); + + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftZ, ShuffleComponent.RightW, ShuffleComponent.RightY), uint3(2, 7, 5)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ, ShuffleComponent.LeftX, ShuffleComponent.LeftW), uint3(6, 0, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftZ, ShuffleComponent.RightW, ShuffleComponent.RightX), uint3(2, 7, 4)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.LeftX, ShuffleComponent.LeftZ), uint3(5, 0, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightW, ShuffleComponent.RightZ, ShuffleComponent.LeftZ), uint3(7, 6, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftW, ShuffleComponent.LeftY, ShuffleComponent.LeftY), uint3(3, 1, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftW, ShuffleComponent.RightY, ShuffleComponent.RightX), uint3(3, 5, 4)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftW, ShuffleComponent.LeftY, ShuffleComponent.RightW), uint3(3, 1, 7)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ, ShuffleComponent.RightY, ShuffleComponent.RightZ), uint3(6, 5, 6)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.RightX, ShuffleComponent.LeftY), uint3(5, 4, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightW, ShuffleComponent.RightW, ShuffleComponent.LeftX), uint3(7, 7, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ, ShuffleComponent.LeftY, ShuffleComponent.RightY), uint3(6, 1, 5)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ, ShuffleComponent.LeftY, ShuffleComponent.RightW), uint3(6, 1, 7)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftW, ShuffleComponent.RightY, ShuffleComponent.RightY), uint3(3, 5, 5)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ, ShuffleComponent.LeftX, ShuffleComponent.RightY), uint3(6, 0, 5)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.LeftY, ShuffleComponent.RightW), uint3(5, 1, 7)); + } + + [TestCompiler] + public static void uint4_shuffle_result_4() + { + uint4 a = uint4(0, 1, 2, 3); + uint4 b = uint4(4, 5, 6, 7); + + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftY, ShuffleComponent.LeftW, ShuffleComponent.RightX, ShuffleComponent.LeftZ), uint4(1, 3, 4, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.LeftW, ShuffleComponent.RightZ, ShuffleComponent.RightZ), uint4(5, 3, 6, 6)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ, ShuffleComponent.RightZ, ShuffleComponent.RightW, ShuffleComponent.LeftZ), uint4(6, 6, 7, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.RightY, ShuffleComponent.LeftZ, ShuffleComponent.LeftZ), uint4(4, 5, 2, 2)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ, ShuffleComponent.LeftY, ShuffleComponent.LeftY, ShuffleComponent.LeftX), uint4(6, 1, 1, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.RightY, ShuffleComponent.RightY, ShuffleComponent.RightW), uint4(4, 5, 5, 7)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftY, ShuffleComponent.RightW, ShuffleComponent.LeftX, ShuffleComponent.RightW), uint4(1, 7, 0, 7)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.LeftX, ShuffleComponent.LeftY, ShuffleComponent.LeftX), uint4(5, 0, 1, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.RightW, ShuffleComponent.LeftW, ShuffleComponent.LeftY), uint4(4, 7, 3, 1)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightY, ShuffleComponent.RightX, ShuffleComponent.LeftY, ShuffleComponent.RightX), uint4(5, 4, 1, 4)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftX, ShuffleComponent.LeftZ, ShuffleComponent.RightZ, ShuffleComponent.LeftX), uint4(0, 2, 6, 0)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftZ, ShuffleComponent.RightY, ShuffleComponent.RightW, ShuffleComponent.RightW), uint4(2, 5, 7, 7)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftW, ShuffleComponent.RightX, ShuffleComponent.LeftZ, ShuffleComponent.RightX), uint4(3, 4, 2, 4)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightX, ShuffleComponent.LeftX, ShuffleComponent.LeftZ, ShuffleComponent.LeftW), uint4(4, 0, 2, 3)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.RightZ, ShuffleComponent.RightX, ShuffleComponent.LeftX, ShuffleComponent.RightY), uint4(6, 4, 0, 5)); + TestUtils.AreEqual(shuffle(a, b, ShuffleComponent.LeftW, ShuffleComponent.RightW, ShuffleComponent.LeftY, ShuffleComponent.RightY), uint4(3, 7, 1, 5)); + } + + + } +} diff --git a/package/Tests/Tests/Shared/TestUint4.gen.cs.meta b/package/Tests/Tests/Shared/TestUint4.gen.cs.meta new file mode 100755 index 000000000..b1ef89f35 --- /dev/null +++ b/package/Tests/Tests/Shared/TestUint4.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f91c46b1912b5d04d8e4e1ddb7377874 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/package/Tests/Tests/Shared/TestUint4x2.gen.cs b/package/Tests/Tests/Shared/TestUint4x2.gen.cs new file mode 100755 index 000000000..c1358accd --- /dev/null +++ b/package/Tests/Tests/Shared/TestUint4x2.gen.cs @@ -0,0 +1,1229 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using NUnit.Framework; +using static Unity.Mathematics.math; +using Burst.Compiler.IL.Tests; + +namespace Unity.Mathematics.Tests +{ + [TestFixture] + public class TestUint4x2 + { + [TestCompiler] + public static void uint4x2_zero() + { + TestUtils.AreEqual(uint4x2.zero.c0.x, 0u); + TestUtils.AreEqual(uint4x2.zero.c0.y, 0u); + TestUtils.AreEqual(uint4x2.zero.c0.z, 0u); + TestUtils.AreEqual(uint4x2.zero.c0.w, 0u); + TestUtils.AreEqual(uint4x2.zero.c1.x, 0u); + TestUtils.AreEqual(uint4x2.zero.c1.y, 0u); + TestUtils.AreEqual(uint4x2.zero.c1.z, 0u); + TestUtils.AreEqual(uint4x2.zero.c1.w, 0u); + } + + [TestCompiler] + public static void uint4x2_operator_equal_wide_wide() + { + uint4x2 a0 = uint4x2(790229414, 970783976, 1428432738, 1578747135, 1733797753, 2001507228, 1446876437, 1777406370); + uint4x2 b0 = uint4x2(612337669, 1214209108, 2120643427, 295461214, 1510890331, 1893316566, 921816149, 1834958575); + bool4x2 r0 = bool4x2(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + uint4x2 a1 = uint4x2(1426387268, 1809275021, 1843770816, 1172185222, 1469608940, 869874758, 458603090, 581282460); + uint4x2 b1 = uint4x2(1482011863, 2062852792, 226398742, 770290735, 36812057, 543224481, 1565350150, 1909926604); + bool4x2 r1 = bool4x2(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + uint4x2 a2 = uint4x2(1948324909, 1129078206, 1638391029, 1135553683, 2079295200, 576232476, 608208235, 11172509); + uint4x2 b2 = uint4x2(1619900436, 1849990483, 1261604411, 161864811, 843379453, 1780425458, 215681636, 2123130580); + bool4x2 r2 = bool4x2(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + uint4x2 a3 = uint4x2(1025529486, 2095601864, 193500113, 1780908384, 1587636094, 1892083815, 1250768669, 1984341771); + uint4x2 b3 = uint4x2(708665810, 1902328998, 1808456602, 563830672, 200493241, 1391620681, 1035522654, 168447603); + bool4x2 r3 = bool4x2(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void uint4x2_operator_equal_wide_scalar() + { + uint4x2 a0 = uint4x2(1211464300, 1921862607, 508076684, 1249127920, 1394594555, 746862310, 1733655277, 1884008277); + uint b0 = (746972502); + bool4x2 r0 = bool4x2(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + uint4x2 a1 = uint4x2(1682018538, 936027116, 927605411, 672785749, 1465584610, 585324157, 404448210, 969511077); + uint b1 = (795585660); + bool4x2 r1 = bool4x2(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + uint4x2 a2 = uint4x2(442746747, 1884034177, 451512860, 425476075, 1370577708, 597010220, 1249636005, 211986678); + uint b2 = (1772925698); + bool4x2 r2 = bool4x2(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + uint4x2 a3 = uint4x2(1305479811, 1150443719, 177122433, 511346787, 1442445694, 667984966, 1684122010, 1962874832); + uint b3 = (255635293); + bool4x2 r3 = bool4x2(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void uint4x2_operator_equal_scalar_wide() + { + uint a0 = (1150044438); + uint4x2 b0 = uint4x2(233855098, 924242519, 1402948791, 601381975, 2120518068, 629187703, 1971977031, 47183124); + bool4x2 r0 = bool4x2(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + uint a1 = (1061805787); + uint4x2 b1 = uint4x2(1009011238, 312511148, 1460673064, 737210539, 1737844479, 1892405453, 2133024000, 455818693); + bool4x2 r1 = bool4x2(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + uint a2 = (2003197687); + uint4x2 b2 = uint4x2(1276241219, 534746610, 559824292, 1758388240, 1023494292, 719963017, 1883763832, 597498209); + bool4x2 r2 = bool4x2(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + uint a3 = (367814403); + uint4x2 b3 = uint4x2(1839429063, 223575614, 79701214, 1699606118, 759455864, 2017599457, 1395605233, 1191785903); + bool4x2 r3 = bool4x2(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void uint4x2_operator_not_equal_wide_wide() + { + uint4x2 a0 = uint4x2(1660932106, 982847023, 97046264, 1739517447, 1253499180, 1830584069, 1841470429, 1397841646); + uint4x2 b0 = uint4x2(107139049, 75478496, 2055495054, 358586687, 942338347, 111564990, 113811950, 948912488); + bool4x2 r0 = bool4x2(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + uint4x2 a1 = uint4x2(1770890135, 1906548631, 169082967, 2099271786, 1909317609, 46519139, 1433204003, 931492669); + uint4x2 b1 = uint4x2(1080084121, 1400504872, 1032134499, 1061123400, 221862069, 858950046, 989094643, 2023070999); + bool4x2 r1 = bool4x2(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + uint4x2 a2 = uint4x2(670504132, 1551558665, 1204055048, 1623586740, 226381077, 1145987803, 644253929, 475189890); + uint4x2 b2 = uint4x2(1269317127, 531883744, 687761409, 278427731, 296354221, 536981557, 1134676193, 1749879634); + bool4x2 r2 = bool4x2(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + uint4x2 a3 = uint4x2(922313145, 2006448607, 1574579050, 1839580033, 155350910, 313644534, 2008975915, 1072866331); + uint4x2 b3 = uint4x2(1944210269, 92849031, 164029425, 628797607, 2069207270, 2022667842, 880567401, 264404537); + bool4x2 r3 = bool4x2(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void uint4x2_operator_not_equal_wide_scalar() + { + uint4x2 a0 = uint4x2(747758183, 1033001286, 1439973882, 2138928797, 1197845089, 1432672459, 950170763, 238704450); + uint b0 = (248693828); + bool4x2 r0 = bool4x2(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + uint4x2 a1 = uint4x2(2105962247, 1640688041, 276313906, 2126300423, 791998981, 2035077187, 1171827730, 1412347883); + uint b1 = (727205263); + bool4x2 r1 = bool4x2(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + uint4x2 a2 = uint4x2(1622176923, 1072798259, 1808712713, 1497830076, 1582645163, 1876273820, 90244766, 30493685); + uint b2 = (768370497); + bool4x2 r2 = bool4x2(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + uint4x2 a3 = uint4x2(904014575, 11554610, 2016093187, 1515760622, 1596313927, 363921847, 1555396158, 913218907); + uint b3 = (384643370); + bool4x2 r3 = bool4x2(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void uint4x2_operator_not_equal_scalar_wide() + { + uint a0 = (2076921066); + uint4x2 b0 = uint4x2(2037494727, 1989050616, 48833929, 1897435904, 514354517, 1783749164, 364694471, 754315072); + bool4x2 r0 = bool4x2(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + uint a1 = (124108032); + uint4x2 b1 = uint4x2(1512967900, 1178825850, 1854793298, 50286949, 2100802631, 1640811853, 82110247, 472172806); + bool4x2 r1 = bool4x2(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + uint a2 = (266984506); + uint4x2 b2 = uint4x2(2003668365, 1826089250, 1041416160, 356140110, 2057237962, 799920703, 1916347720, 510966350); + bool4x2 r2 = bool4x2(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + uint a3 = (572038024); + uint4x2 b3 = uint4x2(1936481966, 1366859342, 1775285431, 604757336, 1047551607, 1311703338, 676012224, 627370253); + bool4x2 r3 = bool4x2(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void uint4x2_operator_less_wide_wide() + { + uint4x2 a0 = uint4x2(1182186063, 415538999, 1667335818, 1566618442, 1166180837, 639095188, 1080836365, 771119973); + uint4x2 b0 = uint4x2(524633529, 1032195686, 760723389, 1505751409, 431962172, 1287906509, 1560084663, 1450178202); + bool4x2 r0 = bool4x2(false, true, false, false, false, true, true, true); + TestUtils.AreEqual(a0 < b0, r0); + + uint4x2 a1 = uint4x2(928263233, 789225474, 665243110, 1003542034, 1032480172, 1961336172, 923379558, 21210619); + uint4x2 b1 = uint4x2(2066166337, 1107069023, 1640077524, 2103263105, 684229139, 1234033624, 1278743281, 1953079347); + bool4x2 r1 = bool4x2(true, true, true, true, false, false, true, true); + TestUtils.AreEqual(a1 < b1, r1); + + uint4x2 a2 = uint4x2(1089772116, 1707633052, 778986024, 158153146, 336715101, 1839141169, 1706859710, 1928438162); + uint4x2 b2 = uint4x2(1228832942, 2082539723, 1088437561, 1058382082, 207459172, 750531081, 2015788562, 2126542133); + bool4x2 r2 = bool4x2(true, true, true, true, false, false, true, true); + TestUtils.AreEqual(a2 < b2, r2); + + uint4x2 a3 = uint4x2(1638101724, 2044698552, 1543260981, 471462349, 1668575142, 2147199161, 946870864, 582371851); + uint4x2 b3 = uint4x2(271967348, 1601249324, 1373999400, 1689592186, 459759541, 983106679, 332584818, 2034921203); + bool4x2 r3 = bool4x2(false, false, false, true, false, false, false, true); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void uint4x2_operator_less_wide_scalar() + { + uint4x2 a0 = uint4x2(608447185, 818840405, 869219329, 2080125385, 1214500548, 1361741203, 1667165786, 1615392341); + uint b0 = (1491216667); + bool4x2 r0 = bool4x2(true, true, true, false, true, true, false, false); + TestUtils.AreEqual(a0 < b0, r0); + + uint4x2 a1 = uint4x2(840091491, 1247103789, 315321650, 930950514, 1100560246, 933855388, 908563901, 1127696709); + uint b1 = (469591900); + bool4x2 r1 = bool4x2(false, false, true, false, false, false, false, false); + TestUtils.AreEqual(a1 < b1, r1); + + uint4x2 a2 = uint4x2(1286331950, 971148054, 1827886929, 1056649851, 1579735991, 689044913, 1960894027, 371987110); + uint b2 = (380753337); + bool4x2 r2 = bool4x2(false, false, false, false, false, false, false, true); + TestUtils.AreEqual(a2 < b2, r2); + + uint4x2 a3 = uint4x2(867559111, 1698536333, 41716206, 243673862, 1274625476, 611065092, 118750042, 1829327996); + uint b3 = (1703747625); + bool4x2 r3 = bool4x2(true, true, true, true, true, true, true, false); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void uint4x2_operator_less_scalar_wide() + { + uint a0 = (548436837); + uint4x2 b0 = uint4x2(282703327, 14370648, 1862117300, 1304793311, 826073259, 988910157, 445132446, 1139670255); + bool4x2 r0 = bool4x2(false, false, true, true, true, true, false, true); + TestUtils.AreEqual(a0 < b0, r0); + + uint a1 = (111349251); + uint4x2 b1 = uint4x2(1102440676, 112183144, 1594415311, 1890019295, 2098715503, 608933527, 183989010, 1596056507); + bool4x2 r1 = bool4x2(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 < b1, r1); + + uint a2 = (1027318999); + uint4x2 b2 = uint4x2(146281093, 358911716, 874278078, 1106057699, 1256807459, 2111973919, 1736480659, 810406400); + bool4x2 r2 = bool4x2(false, false, false, true, true, true, true, false); + TestUtils.AreEqual(a2 < b2, r2); + + uint a3 = (1329939911); + uint4x2 b3 = uint4x2(1276652605, 593690439, 771851138, 590897155, 386688344, 1290583204, 1984930954, 743544838); + bool4x2 r3 = bool4x2(false, false, false, false, false, false, true, false); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void uint4x2_operator_greater_wide_wide() + { + uint4x2 a0 = uint4x2(592884447, 2133928932, 918957182, 1284069471, 194584707, 739120780, 241654068, 1340158550); + uint4x2 b0 = uint4x2(138737040, 192863971, 1700841444, 1044631301, 1391589821, 730837695, 253553987, 2078872742); + bool4x2 r0 = bool4x2(true, true, false, true, false, true, false, false); + TestUtils.AreEqual(a0 > b0, r0); + + uint4x2 a1 = uint4x2(2099542537, 1182623667, 1399607274, 789301637, 180400925, 594688333, 1877031463, 1360073500); + uint4x2 b1 = uint4x2(910845808, 976047676, 202633078, 1223618940, 641600530, 1830470354, 1570701388, 1104256103); + bool4x2 r1 = bool4x2(true, true, true, false, false, false, true, true); + TestUtils.AreEqual(a1 > b1, r1); + + uint4x2 a2 = uint4x2(1091782422, 546676424, 348221770, 716039145, 458742739, 1365508046, 1523167942, 1574478622); + uint4x2 b2 = uint4x2(1838646932, 740166101, 1549021845, 1457092873, 1790630950, 907793213, 555122804, 1418910265); + bool4x2 r2 = bool4x2(false, false, false, false, false, true, true, true); + TestUtils.AreEqual(a2 > b2, r2); + + uint4x2 a3 = uint4x2(1295065160, 715285504, 1130323487, 677530432, 1496919050, 12463046, 1106153111, 1315083485); + uint4x2 b3 = uint4x2(335209251, 1094341422, 1465325455, 390251369, 910309992, 277356652, 1601082764, 771366966); + bool4x2 r3 = bool4x2(true, false, false, true, true, false, false, true); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void uint4x2_operator_greater_wide_scalar() + { + uint4x2 a0 = uint4x2(1097138316, 211763648, 1883002501, 56406996, 43662641, 1923456111, 1437755186, 1219010035); + uint b0 = (438688675); + bool4x2 r0 = bool4x2(true, false, true, false, false, true, true, true); + TestUtils.AreEqual(a0 > b0, r0); + + uint4x2 a1 = uint4x2(2125058448, 893125636, 48044515, 711945018, 1035679270, 577943770, 572743717, 1016617211); + uint b1 = (304028799); + bool4x2 r1 = bool4x2(true, true, false, true, true, true, true, true); + TestUtils.AreEqual(a1 > b1, r1); + + uint4x2 a2 = uint4x2(2063134811, 64009107, 1462961460, 1143565920, 3715845, 689362811, 263973424, 1045140419); + uint b2 = (1577403353); + bool4x2 r2 = bool4x2(true, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 > b2, r2); + + uint4x2 a3 = uint4x2(1058332184, 1183316983, 1107974092, 212839726, 523727054, 112709358, 614746280, 1000986708); + uint b3 = (524569092); + bool4x2 r3 = bool4x2(true, true, true, false, false, false, true, true); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void uint4x2_operator_greater_scalar_wide() + { + uint a0 = (2024896938); + uint4x2 b0 = uint4x2(599356784, 185671342, 1932327391, 2025591013, 1257191721, 1312388500, 1443698859, 779217735); + bool4x2 r0 = bool4x2(true, true, true, false, true, true, true, true); + TestUtils.AreEqual(a0 > b0, r0); + + uint a1 = (691047512); + uint4x2 b1 = uint4x2(741776730, 732565983, 668302204, 1556466996, 858599525, 1896917159, 701542098, 1052151621); + bool4x2 r1 = bool4x2(false, false, true, false, false, false, false, false); + TestUtils.AreEqual(a1 > b1, r1); + + uint a2 = (1023307544); + uint4x2 b2 = uint4x2(1435392907, 1858177345, 299897686, 632930355, 1387203601, 483722222, 863042711, 1713088900); + bool4x2 r2 = bool4x2(false, false, true, true, false, true, true, false); + TestUtils.AreEqual(a2 > b2, r2); + + uint a3 = (315569296); + uint4x2 b3 = uint4x2(292652611, 1002628348, 927789921, 108145064, 425005337, 2093233588, 2063431853, 2079035844); + bool4x2 r3 = bool4x2(true, false, false, true, false, false, false, false); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void uint4x2_operator_less_equal_wide_wide() + { + uint4x2 a0 = uint4x2(1577248162, 2043073061, 1688380407, 176431985, 223299035, 1502802140, 1691709825, 386789394); + uint4x2 b0 = uint4x2(903445031, 2108974565, 210822256, 1281704747, 453681718, 66138830, 1229799377, 1620922595); + bool4x2 r0 = bool4x2(false, true, false, true, true, false, false, true); + TestUtils.AreEqual(a0 <= b0, r0); + + uint4x2 a1 = uint4x2(117182003, 1665770435, 1958490731, 420032601, 1251092689, 2011681765, 749743684, 183784440); + uint4x2 b1 = uint4x2(1715833766, 1366430432, 13102000, 46919981, 486470891, 1709514236, 2145785285, 854254454); + bool4x2 r1 = bool4x2(true, false, false, false, false, false, true, true); + TestUtils.AreEqual(a1 <= b1, r1); + + uint4x2 a2 = uint4x2(1150674774, 1633828822, 1719442172, 336047314, 743733218, 1393995865, 1854442658, 1498138884); + uint4x2 b2 = uint4x2(1273278658, 810263315, 1862773824, 201799013, 974166844, 1320622967, 2058099616, 522102017); + bool4x2 r2 = bool4x2(true, false, true, false, true, false, true, false); + TestUtils.AreEqual(a2 <= b2, r2); + + uint4x2 a3 = uint4x2(912169992, 1992682021, 1619593455, 1883313982, 483412430, 857881876, 346624138, 531961063); + uint4x2 b3 = uint4x2(620752145, 1213693681, 1281818305, 1564146162, 1996153080, 1201909516, 614401396, 224997397); + bool4x2 r3 = bool4x2(false, false, false, false, true, true, true, false); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void uint4x2_operator_less_equal_wide_scalar() + { + uint4x2 a0 = uint4x2(1722165358, 1219858357, 860410743, 411099660, 348104022, 1963256951, 212084836, 58924407); + uint b0 = (1688048545); + bool4x2 r0 = bool4x2(false, true, true, true, true, false, true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + uint4x2 a1 = uint4x2(1459242706, 532949158, 262559763, 690091301, 1806172431, 2091514001, 1857173043, 1617221948); + uint b1 = (1745758438); + bool4x2 r1 = bool4x2(true, true, true, true, false, false, false, true); + TestUtils.AreEqual(a1 <= b1, r1); + + uint4x2 a2 = uint4x2(2017733017, 981729559, 2032949254, 910922522, 2079225209, 26179915, 238796519, 1917813750); + uint b2 = (804204255); + bool4x2 r2 = bool4x2(false, false, false, false, false, true, true, false); + TestUtils.AreEqual(a2 <= b2, r2); + + uint4x2 a3 = uint4x2(1258115260, 1337879822, 959460446, 1599429457, 1279143037, 1551937606, 626254356, 1162369122); + uint b3 = (20607406); + bool4x2 r3 = bool4x2(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void uint4x2_operator_less_equal_scalar_wide() + { + uint a0 = (1777585); + uint4x2 b0 = uint4x2(1181030049, 1787703989, 1729760948, 1816537388, 1359786460, 874999193, 1678863148, 1711365839); + bool4x2 r0 = bool4x2(true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + uint a1 = (762067160); + uint4x2 b1 = uint4x2(11953554, 1131583906, 1175393186, 1293698493, 48893340, 66196247, 1958607116, 1576473309); + bool4x2 r1 = bool4x2(false, true, true, true, false, false, true, true); + TestUtils.AreEqual(a1 <= b1, r1); + + uint a2 = (861890786); + uint4x2 b2 = uint4x2(478252419, 957887737, 117849810, 1348693584, 105489302, 259034238, 530713566, 601413850); + bool4x2 r2 = bool4x2(false, true, false, true, false, false, false, false); + TestUtils.AreEqual(a2 <= b2, r2); + + uint a3 = (830430286); + uint4x2 b3 = uint4x2(145552297, 1697295044, 1150680564, 2091065664, 1796096704, 1572008712, 1556906486, 205552788); + bool4x2 r3 = bool4x2(false, true, true, true, true, true, true, false); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void uint4x2_operator_greater_equal_wide_wide() + { + uint4x2 a0 = uint4x2(263000030, 744235661, 1893760267, 237248, 1062370984, 1676977687, 816766880, 1089431546); + uint4x2 b0 = uint4x2(1395535146, 1178373944, 1237373760, 1364855321, 600811864, 362060472, 290870624, 1839067862); + bool4x2 r0 = bool4x2(false, false, true, false, true, true, true, false); + TestUtils.AreEqual(a0 >= b0, r0); + + uint4x2 a1 = uint4x2(1394493730, 1176473380, 1193988637, 1703862455, 1806186947, 1253571980, 589397635, 1951842887); + uint4x2 b1 = uint4x2(396958580, 1336888643, 1019684398, 1697684196, 1227300220, 2044269675, 1898323839, 874509380); + bool4x2 r1 = bool4x2(true, false, true, true, true, false, false, true); + TestUtils.AreEqual(a1 >= b1, r1); + + uint4x2 a2 = uint4x2(798931197, 808426484, 744869638, 1959531616, 207430702, 1533946595, 1148381840, 2011549474); + uint4x2 b2 = uint4x2(1873505472, 1268843918, 1606949562, 1263896445, 1805518202, 1412091359, 1240330374, 1955056253); + bool4x2 r2 = bool4x2(false, false, false, true, false, true, false, true); + TestUtils.AreEqual(a2 >= b2, r2); + + uint4x2 a3 = uint4x2(605043041, 1707339660, 2038122892, 345761584, 1839156338, 1519670644, 2131285427, 775457686); + uint4x2 b3 = uint4x2(2025187918, 750755999, 869709740, 1390799279, 1194035112, 666460047, 103451220, 1311530792); + bool4x2 r3 = bool4x2(false, true, true, false, true, true, true, false); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void uint4x2_operator_greater_equal_wide_scalar() + { + uint4x2 a0 = uint4x2(2112791350, 1043657935, 101764761, 1529909067, 556026890, 281734132, 1186600258, 815093894); + uint b0 = (1470533736); + bool4x2 r0 = bool4x2(true, false, false, true, false, false, false, false); + TestUtils.AreEqual(a0 >= b0, r0); + + uint4x2 a1 = uint4x2(609211196, 829548642, 244604867, 1419295004, 471843809, 1819986195, 1460027917, 1646290021); + uint b1 = (1604309397); + bool4x2 r1 = bool4x2(false, false, false, false, false, true, false, true); + TestUtils.AreEqual(a1 >= b1, r1); + + uint4x2 a2 = uint4x2(196833647, 1905036391, 1771391775, 1584946560, 370941146, 440219668, 1607345862, 1449142607); + uint b2 = (1596738181); + bool4x2 r2 = bool4x2(false, true, true, false, false, false, true, false); + TestUtils.AreEqual(a2 >= b2, r2); + + uint4x2 a3 = uint4x2(1223010129, 1719435169, 258833609, 1389585003, 612593660, 42612027, 1138747386, 1491562090); + uint b3 = (379014762); + bool4x2 r3 = bool4x2(true, true, false, true, true, false, true, true); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void uint4x2_operator_greater_equal_scalar_wide() + { + uint a0 = (1525542481); + uint4x2 b0 = uint4x2(1503244746, 861711266, 817773856, 925984572, 571221723, 683686810, 118252990, 1653952090); + bool4x2 r0 = bool4x2(true, true, true, true, true, true, true, false); + TestUtils.AreEqual(a0 >= b0, r0); + + uint a1 = (1240253990); + uint4x2 b1 = uint4x2(1947039008, 1869136019, 152012637, 1214546726, 917376832, 303549425, 2111728811, 945321577); + bool4x2 r1 = bool4x2(false, false, true, true, true, true, false, true); + TestUtils.AreEqual(a1 >= b1, r1); + + uint a2 = (173706579); + uint4x2 b2 = uint4x2(625318949, 519443238, 1583588379, 1026799433, 1713083717, 394922760, 1216218189, 1336522452); + bool4x2 r2 = bool4x2(false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 >= b2, r2); + + uint a3 = (233894308); + uint4x2 b3 = uint4x2(479913036, 984991199, 172993285, 2121050903, 465645173, 788510727, 337378780, 273010835); + bool4x2 r3 = bool4x2(false, false, true, false, false, false, false, false); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void uint4x2_operator_add_wide_wide() + { + uint4x2 a0 = uint4x2(2049228671, 1658660009, 491719392, 937013355, 81108663, 1063894558, 86954702, 843159721); + uint4x2 b0 = uint4x2(2088751567, 645762023, 306868786, 4360271, 506047997, 2094559874, 1634712736, 1601474440); + uint4x2 r0 = uint4x2(4137980238, 2304422032, 798588178, 941373626, 587156660, 3158454432, 1721667438, 2444634161); + TestUtils.AreEqual(a0 + b0, r0); + + uint4x2 a1 = uint4x2(698977704, 192867135, 1683407172, 137301303, 2103582820, 526139155, 447937230, 2127411006); + uint4x2 b1 = uint4x2(1586485231, 908746788, 1812370320, 1247342357, 2043773873, 223363428, 175115707, 985928617); + uint4x2 r1 = uint4x2(2285462935, 1101613923, 3495777492, 1384643660, 4147356693, 749502583, 623052937, 3113339623); + TestUtils.AreEqual(a1 + b1, r1); + + uint4x2 a2 = uint4x2(1670579390, 1914969141, 997691756, 857841794, 2129024875, 267535529, 978891383, 657092366); + uint4x2 b2 = uint4x2(507662836, 1231457019, 776127866, 607782424, 1160366210, 1384832242, 702057048, 703554905); + uint4x2 r2 = uint4x2(2178242226, 3146426160, 1773819622, 1465624218, 3289391085, 1652367771, 1680948431, 1360647271); + TestUtils.AreEqual(a2 + b2, r2); + + uint4x2 a3 = uint4x2(941872903, 906908654, 1940071697, 862186205, 1951450264, 689662850, 1928213278, 1703906688); + uint4x2 b3 = uint4x2(2106992817, 1994483489, 539473, 236858351, 411317652, 595429166, 713649927, 2053476603); + uint4x2 r3 = uint4x2(3048865720, 2901392143, 1940611170, 1099044556, 2362767916, 1285092016, 2641863205, 3757383291); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void uint4x2_operator_add_wide_scalar() + { + uint4x2 a0 = uint4x2(2038218457, 134923711, 875689667, 1338884463, 997710928, 340490871, 1067888129, 70433301); + uint b0 = (2124409227); + uint4x2 r0 = uint4x2(4162627684, 2259332938, 3000098894, 3463293690, 3122120155, 2464900098, 3192297356, 2194842528); + TestUtils.AreEqual(a0 + b0, r0); + + uint4x2 a1 = uint4x2(2003021861, 1160398286, 85446202, 1068152966, 1239387100, 1497676888, 1727477485, 1095438654); + uint b1 = (1635971971); + uint4x2 r1 = uint4x2(3638993832, 2796370257, 1721418173, 2704124937, 2875359071, 3133648859, 3363449456, 2731410625); + TestUtils.AreEqual(a1 + b1, r1); + + uint4x2 a2 = uint4x2(756559204, 658923552, 1610518921, 1585755398, 692843300, 1068593469, 1704776233, 577782260); + uint b2 = (1818718931); + uint4x2 r2 = uint4x2(2575278135, 2477642483, 3429237852, 3404474329, 2511562231, 2887312400, 3523495164, 2396501191); + TestUtils.AreEqual(a2 + b2, r2); + + uint4x2 a3 = uint4x2(736972565, 564257439, 2051736283, 1572837697, 1628006545, 1855700263, 656748782, 272774516); + uint b3 = (711894571); + uint4x2 r3 = uint4x2(1448867136, 1276152010, 2763630854, 2284732268, 2339901116, 2567594834, 1368643353, 984669087); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void uint4x2_operator_add_scalar_wide() + { + uint a0 = (391092078); + uint4x2 b0 = uint4x2(519908870, 851424292, 328314822, 135622204, 740923360, 655394201, 1451896269, 1781697072); + uint4x2 r0 = uint4x2(911000948, 1242516370, 719406900, 526714282, 1132015438, 1046486279, 1842988347, 2172789150); + TestUtils.AreEqual(a0 + b0, r0); + + uint a1 = (996031825); + uint4x2 b1 = uint4x2(1557774949, 779774940, 1111541302, 783046445, 1130163944, 288279584, 1397683861, 1636583489); + uint4x2 r1 = uint4x2(2553806774, 1775806765, 2107573127, 1779078270, 2126195769, 1284311409, 2393715686, 2632615314); + TestUtils.AreEqual(a1 + b1, r1); + + uint a2 = (673263339); + uint4x2 b2 = uint4x2(1469300874, 14855965, 1116636999, 1488863300, 1600990886, 190651301, 1307459768, 920085839); + uint4x2 r2 = uint4x2(2142564213, 688119304, 1789900338, 2162126639, 2274254225, 863914640, 1980723107, 1593349178); + TestUtils.AreEqual(a2 + b2, r2); + + uint a3 = (2082229835); + uint4x2 b3 = uint4x2(1992405574, 1213924458, 505841452, 981421162, 1488337699, 1113826640, 1806146508, 1841791222); + uint4x2 r3 = uint4x2(4074635409, 3296154293, 2588071287, 3063650997, 3570567534, 3196056475, 3888376343, 3924021057); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void uint4x2_operator_sub_wide_wide() + { + uint4x2 a0 = uint4x2(1353441118, 797269833, 659988112, 56022121, 365847472, 2062899435, 1380988474, 799885138); + uint4x2 b0 = uint4x2(1332656812, 1827794007, 972557431, 2078233689, 1508184327, 1372307701, 810327977, 936799885); + uint4x2 r0 = uint4x2(20784306, 3264443122, 3982397977, 2272755728, 3152630441, 690591734, 570660497, 4158052549); + TestUtils.AreEqual(a0 - b0, r0); + + uint4x2 a1 = uint4x2(1306058185, 579775276, 1239163824, 344591081, 86359575, 1049709943, 721529513, 1767221271); + uint4x2 b1 = uint4x2(71562303, 1418723328, 1971342989, 1226053395, 136565478, 1979903295, 600719425, 837912956); + uint4x2 r1 = uint4x2(1234495882, 3456019244, 3562788131, 3413504982, 4244761393, 3364773944, 120810088, 929308315); + TestUtils.AreEqual(a1 - b1, r1); + + uint4x2 a2 = uint4x2(7652784, 545192611, 176298787, 1477774126, 1426963688, 2032787858, 2059525977, 445200454); + uint4x2 b2 = uint4x2(632054793, 711091688, 904695656, 1640069560, 750244414, 1385118097, 1102391291, 1221949855); + uint4x2 r2 = uint4x2(3670565287, 4129068219, 3566570427, 4132671862, 676719274, 647669761, 957134686, 3518217895); + TestUtils.AreEqual(a2 - b2, r2); + + uint4x2 a3 = uint4x2(425848588, 2026967474, 1128492011, 61421784, 988065731, 1741434432, 2070331135, 1356704176); + uint4x2 b3 = uint4x2(609588723, 1054324682, 1678086165, 1529581776, 1718700085, 523422634, 223602473, 1912611694); + uint4x2 r3 = uint4x2(4111227161, 972642792, 3745373142, 2826807304, 3564332942, 1218011798, 1846728662, 3739059778); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void uint4x2_operator_sub_wide_scalar() + { + uint4x2 a0 = uint4x2(1176369558, 1934521195, 309452150, 1417634074, 108910717, 1306356714, 1502312334, 1451794815); + uint b0 = (462232403); + uint4x2 r0 = uint4x2(714137155, 1472288792, 4142187043, 955401671, 3941645610, 844124311, 1040079931, 989562412); + TestUtils.AreEqual(a0 - b0, r0); + + uint4x2 a1 = uint4x2(281174200, 1913724431, 2041593336, 557239990, 1119051448, 1590376732, 819090189, 816382635); + uint b1 = (87530840); + uint4x2 r1 = uint4x2(193643360, 1826193591, 1954062496, 469709150, 1031520608, 1502845892, 731559349, 728851795); + TestUtils.AreEqual(a1 - b1, r1); + + uint4x2 a2 = uint4x2(815920639, 1792801932, 1113440549, 1418937976, 1277257189, 2092779398, 642236742, 1605250794); + uint b2 = (1829033117); + uint4x2 r2 = uint4x2(3281854818, 4258736111, 3579374728, 3884872155, 3743191368, 263746281, 3108170921, 4071184973); + TestUtils.AreEqual(a2 - b2, r2); + + uint4x2 a3 = uint4x2(819644478, 128303186, 553494257, 1017126971, 1999744782, 2017272758, 1817991764, 1280985500); + uint b3 = (1468003019); + uint4x2 r3 = uint4x2(3646608755, 2955267463, 3380458534, 3844091248, 531741763, 549269739, 349988745, 4107949777); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void uint4x2_operator_sub_scalar_wide() + { + uint a0 = (1691534405); + uint4x2 b0 = uint4x2(2022393810, 1612688515, 496689713, 887037586, 2097630964, 374934538, 939035482, 935242277); + uint4x2 r0 = uint4x2(3964107891, 78845890, 1194844692, 804496819, 3888870737, 1316599867, 752498923, 756292128); + TestUtils.AreEqual(a0 - b0, r0); + + uint a1 = (1789300421); + uint4x2 b1 = uint4x2(264712893, 1231856067, 1818112748, 1428436109, 1258745460, 1077380396, 1330722719, 518111829); + uint4x2 r1 = uint4x2(1524587528, 557444354, 4266154969, 360864312, 530554961, 711920025, 458577702, 1271188592); + TestUtils.AreEqual(a1 - b1, r1); + + uint a2 = (967128529); + uint4x2 b2 = uint4x2(344666254, 1082267918, 907866696, 1816885123, 460340568, 962154498, 557113461, 1701216709); + uint4x2 r2 = uint4x2(622462275, 4179827907, 59261833, 3445210702, 506787961, 4974031, 410015068, 3560879116); + TestUtils.AreEqual(a2 - b2, r2); + + uint a3 = (1980098777); + uint4x2 b3 = uint4x2(730060552, 1444397827, 853570556, 138836432, 1013190428, 718089530, 506757390, 1216448041); + uint4x2 r3 = uint4x2(1250038225, 535700950, 1126528221, 1841262345, 966908349, 1262009247, 1473341387, 763650736); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void uint4x2_operator_mul_wide_wide() + { + uint4x2 a0 = uint4x2(245827027, 208934650, 1019478917, 568231809, 877289039, 1585782440, 2111178729, 1186019069); + uint4x2 b0 = uint4x2(759663997, 350129201, 477450108, 1635735015, 388710278, 757722665, 1509388321, 1841703980); + uint4x2 r0 = uint4x2(3662155527, 1402281434, 332447596, 2361989735, 2624048730, 1455036648, 2128344329, 3700879228); + TestUtils.AreEqual(a0 * b0, r0); + + uint4x2 a1 = uint4x2(571481445, 1570087048, 629447153, 619383734, 2055121568, 700402816, 263414349, 187830569); + uint4x2 b1 = uint4x2(1826369331, 1524322467, 1605207974, 428419155, 1460605791, 1968043860, 771161742, 2037340417); + uint4x2 r1 = uint4x2(2640799263, 2093463192, 3087460678, 3161406466, 990589280, 3356793344, 2953243830, 1156600361); + TestUtils.AreEqual(a1 * b1, r1); + + uint4x2 a2 = uint4x2(2048056680, 546694675, 853585367, 933370718, 990212476, 1915885905, 1984212358, 368146234); + uint4x2 b2 = uint4x2(322304267, 651448359, 1608326767, 1427155898, 1092185338, 665119139, 223634707, 694718952); + uint4x2 r2 = uint4x2(649177976, 678952165, 1063621177, 2683284556, 2152538904, 3721713555, 2642853618, 1626072720); + TestUtils.AreEqual(a2 * b2, r2); + + uint4x2 a3 = uint4x2(899438811, 1765718681, 409003054, 2069758852, 140280263, 442491280, 1924530939, 1372320666); + uint4x2 b3 = uint4x2(675813713, 999254223, 1326064110, 788102700, 1927999142, 1706356773, 747671596, 106127297); + uint4x2 r3 = uint4x2(1891467339, 335415735, 1128927428, 2638713520, 2861115658, 479369680, 3928339236, 4044803354); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void uint4x2_operator_mul_wide_scalar() + { + uint4x2 a0 = uint4x2(1762033447, 465343930, 1570757881, 1326409563, 1824319147, 1356578909, 72749215, 154616909); + uint b0 = (1476837906); + uint4x2 r0 = uint4x2(2981789374, 1326807828, 2156411778, 4018813542, 4229418502, 2976383114, 2455742766, 2574460778); + TestUtils.AreEqual(a0 * b0, r0); + + uint4x2 a1 = uint4x2(975743632, 1958912969, 971327747, 1818877398, 1324050764, 660611671, 1279757657, 391009467); + uint b1 = (573770299); + uint4x2 r1 = uint4x2(414773040, 3595344211, 1045098929, 3165813842, 1954692228, 970215437, 1522404739, 631100697); + TestUtils.AreEqual(a1 * b1, r1); + + uint4x2 a2 = uint4x2(1186856590, 800117742, 606927173, 1338014500, 1688964615, 1439447294, 387721300, 1192501703); + uint b2 = (890343818); + uint4x2 r2 = uint4x2(218605196, 908725324, 3489887282, 2766521704, 1365477062, 1262261996, 2040090952, 691203142); + TestUtils.AreEqual(a2 * b2, r2); + + uint4x2 a3 = uint4x2(1613845584, 124378112, 970518733, 1370700538, 1978842602, 1451974062, 987919119, 1659987051); + uint b3 = (76318055); + uint4x2 r3 = uint4x2(2959506480, 1256424448, 3749667707, 628661398, 357366566, 753276674, 2132219401, 3469671949); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void uint4x2_operator_mul_scalar_wide() + { + uint a0 = (99541948); + uint4x2 b0 = uint4x2(1764461774, 657072478, 1459784358, 1610646683, 1632058826, 868441654, 1408757883, 335917146); + uint4x2 r0 = uint4x2(3344568648, 4192918280, 1260585960, 1158730452, 4293361240, 3828814248, 2108402516, 1966690328); + TestUtils.AreEqual(a0 * b0, r0); + + uint a1 = (2105124483); + uint4x2 b1 = uint4x2(1178393968, 1963904348, 1409533767, 243286231, 1336308795, 517963367, 1733623488, 459880225); + uint4x2 r1 = uint4x2(3266048080, 2084093460, 1286996821, 910923781, 1886305329, 3255007413, 644799552, 1815059427); + TestUtils.AreEqual(a1 * b1, r1); + + uint a2 = (994616533); + uint4x2 b2 = uint4x2(1420531535, 1821413700, 677771573, 2132626845, 1158827713, 640102997, 944551639, 1323243330); + uint4x2 r2 = uint4x2(585859259, 2021158292, 1046891801, 2353145761, 3556190869, 2579715257, 4134395107, 1259643370); + TestUtils.AreEqual(a2 * b2, r2); + + uint a3 = (1186460236); + uint4x2 b3 = uint4x2(657101857, 1275563580, 1031291523, 1008470115, 1155301041, 1046199281, 2138825098, 1273008873); + uint4x2 r3 = uint4x2(3393334220, 3415667152, 1278776548, 1761940324, 3619679884, 2049744268, 3919669496, 2350571308); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void uint4x2_operator_div_wide_wide() + { + uint4x2 a0 = uint4x2(1590198532, 507812502, 126627032, 1058247011, 427387861, 290676154, 1829594484, 1127868739); + uint4x2 b0 = uint4x2(1434703236, 911965201, 390415521, 128746927, 525835375, 816946613, 878264647, 146789678); + uint4x2 r0 = uint4x2(1, 0, 0, 8, 0, 0, 2, 7); + TestUtils.AreEqual(a0 / b0, r0); + + uint4x2 a1 = uint4x2(499016351, 1341209632, 134906097, 785470242, 788249865, 1099825433, 1552968283, 1822367139); + uint4x2 b1 = uint4x2(2089524057, 254213018, 1916850021, 1737806518, 1906634983, 437754923, 825037958, 902508708); + uint4x2 r1 = uint4x2(0, 5, 0, 0, 0, 2, 1, 2); + TestUtils.AreEqual(a1 / b1, r1); + + uint4x2 a2 = uint4x2(1021812060, 1937073018, 645757349, 1097576782, 1246027674, 1152153253, 1900577195, 172149343); + uint4x2 b2 = uint4x2(896853614, 49452028, 1921327824, 787000669, 1032149621, 858558868, 1422112429, 837098844); + uint4x2 r2 = uint4x2(1, 39, 0, 1, 1, 1, 1, 0); + TestUtils.AreEqual(a2 / b2, r2); + + uint4x2 a3 = uint4x2(1735128704, 816492592, 2012272185, 632330092, 649232994, 123715336, 1438073735, 723262291); + uint4x2 b3 = uint4x2(616122946, 2035322800, 1324534444, 1820832158, 917489631, 367475696, 620492088, 1749833550); + uint4x2 r3 = uint4x2(2, 0, 1, 0, 0, 0, 2, 0); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void uint4x2_operator_div_wide_scalar() + { + uint4x2 a0 = uint4x2(560951562, 1218680769, 375341724, 1613542090, 1919409166, 1397425408, 1349573078, 524526253); + uint b0 = (947861580); + uint4x2 r0 = uint4x2(0, 1, 0, 1, 2, 1, 1, 0); + TestUtils.AreEqual(a0 / b0, r0); + + uint4x2 a1 = uint4x2(341995568, 1515313790, 1676971657, 2131487088, 2105094094, 1017891310, 542666029, 1646044372); + uint b1 = (495895326); + uint4x2 r1 = uint4x2(0, 3, 3, 4, 4, 2, 1, 3); + TestUtils.AreEqual(a1 / b1, r1); + + uint4x2 a2 = uint4x2(1447236569, 19616726, 896899915, 707389627, 1249475421, 1486968988, 1738891885, 1919705924); + uint b2 = (107215658); + uint4x2 r2 = uint4x2(13, 0, 8, 6, 11, 13, 16, 17); + TestUtils.AreEqual(a2 / b2, r2); + + uint4x2 a3 = uint4x2(1244966864, 206442634, 1508567412, 1825701056, 1117255783, 929925156, 1725332114, 1949103348); + uint b3 = (1200843642); + uint4x2 r3 = uint4x2(1, 0, 1, 1, 0, 0, 1, 1); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void uint4x2_operator_div_scalar_wide() + { + uint a0 = (1161272038); + uint4x2 b0 = uint4x2(187325733, 1594107378, 2016183849, 1589343709, 388768753, 1417077283, 1773486938, 1154044032); + uint4x2 r0 = uint4x2(6, 0, 0, 0, 2, 0, 0, 1); + TestUtils.AreEqual(a0 / b0, r0); + + uint a1 = (81831373); + uint4x2 b1 = uint4x2(1476877645, 653688843, 45756703, 631027637, 396671391, 784365696, 1250594097, 1818363859); + uint4x2 r1 = uint4x2(0, 0, 1, 0, 0, 0, 0, 0); + TestUtils.AreEqual(a1 / b1, r1); + + uint a2 = (1653451772); + uint4x2 b2 = uint4x2(270557729, 48974453, 1796936382, 1427856423, 981056957, 1955700573, 705450043, 1054404890); + uint4x2 r2 = uint4x2(6, 33, 0, 1, 1, 0, 2, 1); + TestUtils.AreEqual(a2 / b2, r2); + + uint a3 = (351914083); + uint4x2 b3 = uint4x2(131970646, 1320586926, 366944102, 1575786200, 257204865, 1582754309, 2114509003, 1266146708); + uint4x2 r3 = uint4x2(2, 0, 0, 0, 1, 0, 0, 0); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void uint4x2_operator_mod_wide_wide() + { + uint4x2 a0 = uint4x2(146150818, 1846543305, 1071447756, 308965362, 659881575, 1002365460, 861198439, 1510617532); + uint4x2 b0 = uint4x2(983050390, 771341152, 942375212, 367361754, 749500619, 750718852, 2095151755, 88438806); + uint4x2 r0 = uint4x2(146150818, 303861001, 129072544, 308965362, 659881575, 251646608, 861198439, 7157830); + TestUtils.AreEqual(a0 % b0, r0); + + uint4x2 a1 = uint4x2(778525078, 1458458044, 101987897, 1249565173, 938026607, 1692541775, 1518877124, 1806965510); + uint4x2 b1 = uint4x2(769227442, 647214624, 1026513788, 1544950956, 160166322, 1099108075, 1158422232, 1798905209); + uint4x2 r1 = uint4x2(9297636, 164028796, 101987897, 1249565173, 137194997, 593433700, 360454892, 8060301); + TestUtils.AreEqual(a1 % b1, r1); + + uint4x2 a2 = uint4x2(1325139851, 994457255, 1372400564, 1770508529, 100255877, 452674793, 1545968777, 629019189); + uint4x2 b2 = uint4x2(164686701, 327889784, 1082162785, 1213537518, 608481038, 329133821, 1824387961, 1223426748); + uint4x2 r2 = uint4x2(7646243, 10787903, 290237779, 556971011, 100255877, 123540972, 1545968777, 629019189); + TestUtils.AreEqual(a2 % b2, r2); + + uint4x2 a3 = uint4x2(1402964707, 2138294579, 1641714420, 1782022072, 1880968864, 1980798192, 1397317084, 995968277); + uint4x2 b3 = uint4x2(798137669, 79717779, 1233582258, 1267120677, 301592349, 911281434, 1357340934, 1648942990); + uint4x2 r3 = uint4x2(604827038, 65632325, 408132162, 514901395, 71414770, 158235324, 39976150, 995968277); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void uint4x2_operator_mod_wide_scalar() + { + uint4x2 a0 = uint4x2(164800505, 1062177828, 1898749675, 1701653318, 820393245, 19002208, 128329633, 1464010899); + uint b0 = (883951171); + uint4x2 r0 = uint4x2(164800505, 178226657, 130847333, 817702147, 820393245, 19002208, 128329633, 580059728); + TestUtils.AreEqual(a0 % b0, r0); + + uint4x2 a1 = uint4x2(896587769, 1982762194, 959236935, 712321026, 172564850, 1540068445, 1085897743, 1607489717); + uint b1 = (405208598); + uint4x2 r1 = uint4x2(86170573, 361927802, 148819739, 307112428, 172564850, 324442651, 275480547, 391863923); + TestUtils.AreEqual(a1 % b1, r1); + + uint4x2 a2 = uint4x2(165478511, 915707999, 1602830401, 928191283, 1084934806, 488509689, 2087820912, 377501313); + uint b2 = (647846716); + uint4x2 r2 = uint4x2(165478511, 267861283, 307136969, 280344567, 437088090, 488509689, 144280764, 377501313); + TestUtils.AreEqual(a2 % b2, r2); + + uint4x2 a3 = uint4x2(1778384846, 812183417, 1153802502, 1642671870, 1924710742, 665297470, 1568090825, 2050982942); + uint b3 = (1216011754); + uint4x2 r3 = uint4x2(562373092, 812183417, 1153802502, 426660116, 708698988, 665297470, 352079071, 834971188); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void uint4x2_operator_mod_scalar_wide() + { + uint a0 = (242383789); + uint4x2 b0 = uint4x2(740000543, 1556450291, 1104736385, 437976569, 1911837205, 1507212038, 1906405167, 247693265); + uint4x2 r0 = uint4x2(242383789, 242383789, 242383789, 242383789, 242383789, 242383789, 242383789, 242383789); + TestUtils.AreEqual(a0 % b0, r0); + + uint a1 = (293460573); + uint4x2 b1 = uint4x2(1495295166, 873323603, 530681233, 1298102643, 2057984657, 1000742091, 1461372131, 1859742342); + uint4x2 r1 = uint4x2(293460573, 293460573, 293460573, 293460573, 293460573, 293460573, 293460573, 293460573); + TestUtils.AreEqual(a1 % b1, r1); + + uint a2 = (797184687); + uint4x2 b2 = uint4x2(821888842, 1083192997, 840114986, 1894865954, 615159964, 1485575122, 2028738, 2122220318); + uint4x2 r2 = uint4x2(797184687, 797184687, 797184687, 797184687, 182024723, 797184687, 1919391, 797184687); + TestUtils.AreEqual(a2 % b2, r2); + + uint a3 = (164578061); + uint4x2 b3 = uint4x2(730088119, 1444946139, 1305792037, 1110829011, 872723581, 166847388, 1477846418, 511428733); + uint4x2 r3 = uint4x2(164578061, 164578061, 164578061, 164578061, 164578061, 164578061, 164578061, 164578061); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void uint4x2_operator_plus() + { + uint4x2 a0 = uint4x2(1643476803, 907898539, 379615839, 1140483021, 1735287433, 1743199272, 1472881565, 339091479); + uint4x2 r0 = uint4x2(1643476803, 907898539, 379615839, 1140483021, 1735287433, 1743199272, 1472881565, 339091479); + TestUtils.AreEqual(+a0, r0); + + uint4x2 a1 = uint4x2(401565897, 849339193, 174532915, 1864850812, 1566098441, 1145639744, 1615499926, 2049663954); + uint4x2 r1 = uint4x2(401565897, 849339193, 174532915, 1864850812, 1566098441, 1145639744, 1615499926, 2049663954); + TestUtils.AreEqual(+a1, r1); + + uint4x2 a2 = uint4x2(1723005749, 591286416, 1706631096, 1079164488, 1808261782, 1201290141, 82958939, 308695413); + uint4x2 r2 = uint4x2(1723005749, 591286416, 1706631096, 1079164488, 1808261782, 1201290141, 82958939, 308695413); + TestUtils.AreEqual(+a2, r2); + + uint4x2 a3 = uint4x2(1575280693, 1673126612, 500666137, 640289062, 836003812, 336058393, 829347661, 33442669); + uint4x2 r3 = uint4x2(1575280693, 1673126612, 500666137, 640289062, 836003812, 336058393, 829347661, 33442669); + TestUtils.AreEqual(+a3, r3); + } + + [TestCompiler] + public static void uint4x2_operator_neg() + { + uint4x2 a0 = uint4x2(1955022112, 662160019, 370300775, 2141283773, 1004505619, 28153593, 33894270, 505708349); + uint4x2 r0 = uint4x2(2339945184, 3632807277, 3924666521, 2153683523, 3290461677, 4266813703, 4261073026, 3789258947); + TestUtils.AreEqual(-a0, r0); + + uint4x2 a1 = uint4x2(1115028238, 694995093, 1542206286, 213087293, 243937487, 341522275, 841085242, 574159094); + uint4x2 r1 = uint4x2(3179939058, 3599972203, 2752761010, 4081880003, 4051029809, 3953445021, 3453882054, 3720808202); + TestUtils.AreEqual(-a1, r1); + + uint4x2 a2 = uint4x2(1687250035, 1175014732, 1259809073, 1212465326, 1190569920, 2047955772, 2120729864, 1440774928); + uint4x2 r2 = uint4x2(2607717261, 3119952564, 3035158223, 3082501970, 3104397376, 2247011524, 2174237432, 2854192368); + TestUtils.AreEqual(-a2, r2); + + uint4x2 a3 = uint4x2(1485596454, 1387601718, 1745651998, 319115626, 1119959806, 739132284, 1954173314, 1709857098); + uint4x2 r3 = uint4x2(2809370842, 2907365578, 2549315298, 3975851670, 3175007490, 3555835012, 2340793982, 2585110198); + TestUtils.AreEqual(-a3, r3); + } + + [TestCompiler] + public static void uint4x2_operator_prefix_inc() + { + uint4x2 a0 = uint4x2(864455342, 2035793213, 1275443862, 971919915, 411610189, 446210725, 395072276, 115573442); + uint4x2 r0 = uint4x2(864455343, 2035793214, 1275443863, 971919916, 411610190, 446210726, 395072277, 115573443); + TestUtils.AreEqual(++a0, r0); + + uint4x2 a1 = uint4x2(913293639, 1208161871, 1385544935, 1835605516, 831396561, 388229350, 696475402, 1786514683); + uint4x2 r1 = uint4x2(913293640, 1208161872, 1385544936, 1835605517, 831396562, 388229351, 696475403, 1786514684); + TestUtils.AreEqual(++a1, r1); + + uint4x2 a2 = uint4x2(993189311, 1622410417, 1398865015, 241906003, 1705625817, 609525897, 172599489, 504806865); + uint4x2 r2 = uint4x2(993189312, 1622410418, 1398865016, 241906004, 1705625818, 609525898, 172599490, 504806866); + TestUtils.AreEqual(++a2, r2); + + uint4x2 a3 = uint4x2(519296647, 1541894135, 924683935, 259568871, 1349062584, 1120518661, 65514038, 1495168208); + uint4x2 r3 = uint4x2(519296648, 1541894136, 924683936, 259568872, 1349062585, 1120518662, 65514039, 1495168209); + TestUtils.AreEqual(++a3, r3); + } + + [TestCompiler] + public static void uint4x2_operator_postfix_inc() + { + uint4x2 a0 = uint4x2(1751003569, 2063707595, 1500486291, 969189211, 1007848192, 2028651936, 1643023524, 1190630527); + uint4x2 r0 = uint4x2(1751003569, 2063707595, 1500486291, 969189211, 1007848192, 2028651936, 1643023524, 1190630527); + TestUtils.AreEqual(a0++, r0); + + uint4x2 a1 = uint4x2(1396179607, 177416855, 1524860667, 1408994706, 375284401, 1580130369, 1676086778, 717006530); + uint4x2 r1 = uint4x2(1396179607, 177416855, 1524860667, 1408994706, 375284401, 1580130369, 1676086778, 717006530); + TestUtils.AreEqual(a1++, r1); + + uint4x2 a2 = uint4x2(506142468, 2026873940, 130175844, 1513142653, 420613464, 1219979307, 586574160, 357567451); + uint4x2 r2 = uint4x2(506142468, 2026873940, 130175844, 1513142653, 420613464, 1219979307, 586574160, 357567451); + TestUtils.AreEqual(a2++, r2); + + uint4x2 a3 = uint4x2(1468020171, 1127356901, 101238629, 2131648021, 423320704, 827539403, 1919960927, 840371710); + uint4x2 r3 = uint4x2(1468020171, 1127356901, 101238629, 2131648021, 423320704, 827539403, 1919960927, 840371710); + TestUtils.AreEqual(a3++, r3); + } + + [TestCompiler] + public static void uint4x2_operator_prefix_dec() + { + uint4x2 a0 = uint4x2(200904609, 871077500, 968578728, 638967721, 1995396216, 435367037, 1782514098, 1589827826); + uint4x2 r0 = uint4x2(200904608, 871077499, 968578727, 638967720, 1995396215, 435367036, 1782514097, 1589827825); + TestUtils.AreEqual(--a0, r0); + + uint4x2 a1 = uint4x2(1434377580, 1699290403, 1758478358, 1914114460, 71237375, 389120307, 1022184392, 1310293956); + uint4x2 r1 = uint4x2(1434377579, 1699290402, 1758478357, 1914114459, 71237374, 389120306, 1022184391, 1310293955); + TestUtils.AreEqual(--a1, r1); + + uint4x2 a2 = uint4x2(356565557, 906734601, 799006218, 1383897383, 1040798388, 1469596990, 1719228297, 220897829); + uint4x2 r2 = uint4x2(356565556, 906734600, 799006217, 1383897382, 1040798387, 1469596989, 1719228296, 220897828); + TestUtils.AreEqual(--a2, r2); + + uint4x2 a3 = uint4x2(1454322707, 14227726, 293093918, 1065286595, 1249415499, 1009503100, 157482354, 965385343); + uint4x2 r3 = uint4x2(1454322706, 14227725, 293093917, 1065286594, 1249415498, 1009503099, 157482353, 965385342); + TestUtils.AreEqual(--a3, r3); + } + + [TestCompiler] + public static void uint4x2_operator_postfix_dec() + { + uint4x2 a0 = uint4x2(283970262, 1109329936, 1073216143, 649439137, 1932646215, 1174104498, 484207852, 524156737); + uint4x2 r0 = uint4x2(283970262, 1109329936, 1073216143, 649439137, 1932646215, 1174104498, 484207852, 524156737); + TestUtils.AreEqual(a0--, r0); + + uint4x2 a1 = uint4x2(691209285, 802721301, 377162390, 526366486, 1504625034, 590919177, 60677868, 1867810045); + uint4x2 r1 = uint4x2(691209285, 802721301, 377162390, 526366486, 1504625034, 590919177, 60677868, 1867810045); + TestUtils.AreEqual(a1--, r1); + + uint4x2 a2 = uint4x2(2095777993, 324944916, 242636153, 1659736954, 1316734088, 1030072405, 1751972064, 1868889881); + uint4x2 r2 = uint4x2(2095777993, 324944916, 242636153, 1659736954, 1316734088, 1030072405, 1751972064, 1868889881); + TestUtils.AreEqual(a2--, r2); + + uint4x2 a3 = uint4x2(1726583208, 175622377, 181847458, 665549439, 530897466, 635466911, 416440036, 1447690298); + uint4x2 r3 = uint4x2(1726583208, 175622377, 181847458, 665549439, 530897466, 635466911, 416440036, 1447690298); + TestUtils.AreEqual(a3--, r3); + } + + [TestCompiler] + public static void uint4x2_operator_bitwise_and_wide_wide() + { + uint4x2 a0 = uint4x2(779935043, 1097962163, 1939593304, 800599247, 952140918, 782792558, 1608557706, 396446406); + uint4x2 b0 = uint4x2(307705143, 1710882162, 866836769, 532490608, 679371720, 1794035877, 1439832202, 519529812); + uint4x2 r0 = uint4x2(39064835, 1097961522, 864731136, 263727168, 675283008, 715673636, 1438646410, 379666500); + TestUtils.AreEqual(a0 & b0, r0); + + uint4x2 a1 = uint4x2(2039894114, 1286974642, 442394124, 1759739564, 233435438, 665207770, 1942050241, 1022352952); + uint4x2 b1 = uint4x2(23633139, 1209152681, 646737179, 1255867027, 1900854122, 413173763, 1409138251, 2087190272); + uint4x2 r1 = uint4x2(16781410, 1209017504, 34366472, 1220739712, 21541162, 10485762, 1405162561, 1013440000); + TestUtils.AreEqual(a1 & b1, r1); + + uint4x2 a2 = uint4x2(60340400, 329119345, 406517382, 1126764634, 343425836, 1957552749, 1624478957, 341972372); + uint4x2 b2 = uint4x2(563439483, 354579077, 642224854, 1650432515, 755290290, 902865191, 661389406, 2134212586); + uint4x2 r2 = uint4x2(26222640, 285241857, 168582, 1107890178, 67125280, 880844837, 541065292, 337646976); + TestUtils.AreEqual(a2 & b2, r2); + + uint4x2 a3 = uint4x2(181537307, 130347414, 1240828622, 526120460, 695449226, 1477446724, 201628999, 737924014); + uint4x2 b3 = uint4x2(1855189321, 185194029, 810374380, 133197864, 1989578783, 38739182, 387425484, 1690486314); + uint4x2 r3 = uint4x2(177340425, 50384900, 4522188, 122712072, 538087434, 3140, 67404868, 549634602); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void uint4x2_operator_bitwise_and_wide_scalar() + { + uint4x2 a0 = uint4x2(443615469, 490057985, 2042441263, 1524760558, 1405175110, 510212004, 1941875181, 1236735839); + uint b0 = (93423598); + uint4x2 r0 = uint4x2(1114348, 85033216, 26281518, 8488942, 25232710, 67176356, 26247660, 26281806); + TestUtils.AreEqual(a0 & b0, r0); + + uint4x2 a1 = uint4x2(1365509729, 607982857, 650270920, 1249238550, 814629680, 1862276471, 143502472, 861733033); + uint b1 = (428270198); + uint4x2 r1 = uint4x2(285475424, 262144, 8536128, 134529558, 277234224, 150995062, 142909440, 285474848); + TestUtils.AreEqual(a1 & b1, r1); + + uint4x2 a2 = uint4x2(1408932942, 1567715668, 1102952410, 322053683, 1599352836, 208656708, 1272226025, 462670926); + uint b2 = (957693145); + uint4x2 r2 = uint4x2(286268488, 420556880, 18167000, 286270481, 420753408, 134551616, 152314057, 420547656); + TestUtils.AreEqual(a2 & b2, r2); + + uint4x2 a3 = uint4x2(1817145060, 1817277774, 818900583, 772681077, 1630437952, 546018772, 872875431, 1143080525); + uint b3 = (1466722981); + uint4x2 r3 = uint4x2(1145858724, 1145069572, 273443365, 101460005, 1093403136, 524420, 335806629, 1142948357); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void uint4x2_operator_bitwise_and_scalar_wide() + { + uint a0 = (1144543590); + uint4x2 b0 = uint4x2(420346723, 562416448, 1393127318, 1560699552, 851218057, 703880958, 1159378889, 2031211279); + uint4x2 r0 = uint4x2(547170, 18752, 1074284806, 1140867104, 3672064, 3168358, 1142427968, 1074811142); + TestUtils.AreEqual(a0 & b0, r0); + + uint a1 = (1089518981); + uint4x2 b1 = uint4x2(270607307, 1349288930, 520199596, 1763483957, 1248975349, 236938635, 185023291, 1085233038); + uint4x2 r1 = uint4x2(2105729, 1080066432, 40324, 1074831621, 1081121157, 1058177, 14593, 1084233092); + TestUtils.AreEqual(a1 & b1, r1); + + uint a2 = (1845693112); + uint4x2 b2 = uint4x2(946052961, 1436238522, 2042776519, 56356886, 1770159840, 1872339579, 1439201366, 1233066417); + uint4x2 r2 = uint4x2(671287840, 1141047992, 1744964224, 33751056, 1744964256, 1845559864, 1140852752, 1208158384); + TestUtils.AreEqual(a2 & b2, r2); + + uint a3 = (1214109404); + uint4x2 b3 = uint4x2(2255485, 1814885263, 1711986588, 1286898282, 915476451, 1870138851, 372814411, 1623486506); + uint4x2 r3 = uint4x2(16988, 1208799884, 1074321052, 1209303624, 1115840, 1213727936, 1610312, 1078218760); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void uint4x2_operator_bitwise_or_wide_wide() + { + uint4x2 a0 = uint4x2(1731159103, 659068416, 382702471, 1821032196, 1565773438, 1004000514, 948501377, 600951835); + uint4x2 b0 = uint4x2(1583847161, 692672727, 1161585489, 1756207130, 1321374429, 1287357212, 2075767170, 1273513430); + uint4x2 r0 = uint4x2(2138044159, 793370327, 1476391895, 1823457054, 1607720703, 2147473182, 2075786115, 1811533279); + TestUtils.AreEqual(a0 | b0, r0); + + uint4x2 a1 = uint4x2(669346222, 396691477, 2108560248, 2117522137, 330307355, 818676817, 1774459567, 1117506257); + uint4x2 b1 = uint4x2(1610830169, 1316929125, 511625048, 573925879, 1502255628, 1841676448, 1682928938, 1115131952); + uint4x2 r1 = uint4x2(1743223295, 1610595957, 2147407736, 2117598207, 1538957087, 2110637297, 1842315183, 1124063985); + TestUtils.AreEqual(a1 | b1, r1); + + uint4x2 a2 = uint4x2(1254511182, 1017865993, 1883021644, 1140203470, 759288967, 2122744307, 335621148, 715028074); + uint4x2 b2 = uint4x2(1541423910, 1416096228, 188606371, 1041599540, 219545389, 560097663, 1087543661, 936383841); + uint4x2 r2 = uint4x2(1541821294, 2096099309, 2067654639, 2146934782, 760610735, 2145839615, 1423162749, 1071544171); + TestUtils.AreEqual(a2 | b2, r2); + + uint4x2 a3 = uint4x2(543305337, 662107399, 1934997335, 436754869, 1613808671, 362365372, 342908672, 2129231210); + uint4x2 b3 = uint4x2(108816721, 1694053551, 452638547, 1219534055, 85142537, 1027930490, 2126839395, 2030328147); + uint4x2 r3 = uint4x2(645820281, 1744827823, 2080356183, 1522064887, 1697901599, 1037957630, 2129985379, 2146270587); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void uint4x2_operator_bitwise_or_wide_scalar() + { + uint4x2 a0 = uint4x2(961259683, 471103264, 1733389229, 1591585258, 386953869, 1148351449, 1048929715, 1814263250); + uint b0 = (1666102508); + uint4x2 r0 = uint4x2(2068823279, 2136930284, 1734344685, 2145369582, 2002712301, 1736374269, 2144335359, 1869608446); + TestUtils.AreEqual(a0 | b0, r0); + + uint4x2 a1 = uint4x2(860336789, 1227888278, 774029856, 879300408, 1179087439, 797240690, 1977614655, 46921989); + uint b1 = (1637162093); + uint4x2 r1 = uint4x2(1943518973, 1773477631, 1874321005, 1979522941, 1742175855, 1872100735, 1978998143, 1675623789); + TestUtils.AreEqual(a1 | b1, r1); + + uint4x2 a2 = uint4x2(1980838747, 64304104, 313591807, 1393862490, 1890090886, 521303722, 2021379070, 2055963359); + uint b2 = (284225881); + uint4x2 r2 = uint4x2(1995567963, 334885881, 317847551, 1408563035, 1895366623, 536016891, 2029779967, 2063332319); + TestUtils.AreEqual(a2 | b2, r2); + + uint4x2 a3 = uint4x2(1511253082, 1142751163, 1767274359, 1421981808, 1501294791, 485944015, 539526284, 310877895); + uint b3 = (1775629833); + uint4x2 r3 = uint4x2(2077750875, 1843265467, 1775761279, 2111176313, 2046817999, 2113404623, 1778251405, 2077753039); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void uint4x2_operator_bitwise_or_scalar_wide() + { + uint a0 = (1213433101); + uint4x2 b0 = uint4x2(1212928242, 1614462616, 936937728, 764766995, 306352095, 574719481, 1283571271, 2109131012); + uint4x2 r0 = uint4x2(1213978111, 1752940445, 2145094925, 1842867999, 1515425759, 1783858685, 1288945487, 2113391885); + TestUtils.AreEqual(a0 | b0, r0); + + uint a1 = (979469710); + uint4x2 b1 = uint4x2(1348323481, 1407542578, 697517649, 1059093741, 627815046, 418822515, 83214352, 424663473); + uint4x2 r1 = uint4x2(2055064991, 2078664126, 1005832159, 1063386607, 1064023950, 989314559, 1056294302, 997187007); + TestUtils.AreEqual(a1 | b1, r1); + + uint a2 = (447949225); + uint4x2 b2 = uint4x2(527022375, 1947148461, 305251437, 1254601325, 1752329425, 1592402684, 1587055329, 1088734150); + uint4x2 r2 = uint4x2(536590767, 2126457261, 447999469, 1526184941, 2062773753, 1593519101, 1589357545, 1526197231); + TestUtils.AreEqual(a2 | b2, r2); + + uint a3 = (298563808); + uint4x2 b3 = uint4x2(2052547661, 582843231, 656983670, 1944993640, 1081208038, 829763560, 990961386, 547309556); + uint4x2 r3 = uint4x2(2078276845, 872414207, 938213110, 1945092072, 1375468774, 838844392, 1004273386, 836763636); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void uint4x2_operator_bitwise_xor_wide_wide() + { + uint4x2 a0 = uint4x2(1556324760, 207002929, 1843444873, 1632079131, 1460334334, 1607815585, 220623650, 38668553); + uint4x2 b0 = uint4x2(1054997548, 1523759632, 251164872, 110472397, 384031112, 1109163205, 535118981, 179106262); + uint4x2 r0 = uint4x2(1646419380, 1451501345, 1662567489, 1741824470, 1105803126, 499723620, 314783655, 149092575); + TestUtils.AreEqual(a0 ^ b0, r0); + + uint4x2 a1 = uint4x2(47193340, 643663548, 1371932564, 94957188, 700973621, 370621508, 2087573076, 351476570); + uint4x2 b1 = uint4x2(1523031711, 1713313372, 1294118730, 520360641, 1040688781, 1020757245, 1143954843, 1281933464); + uint4x2 r1 = uint4x2(1477935715, 1078104288, 484747486, 447544389, 399484088, 717273273, 943885263, 1486609346); + TestUtils.AreEqual(a1 ^ b1, r1); + + uint4x2 a2 = uint4x2(1340815927, 681577472, 314138777, 446857644, 1368661599, 1672499683, 1259759761, 2049102405); + uint4x2 b2 = uint4x2(175288469, 326874157, 1192052687, 1087083643, 1900865484, 1521193463, 569695524, 1622101483); + uint4x2 r2 = uint4x2(1167690402, 1004255277, 1437869910, 1516836311, 551090579, 958119956, 1793242549, 445489070); + TestUtils.AreEqual(a2 ^ b2, r2); + + uint4x2 a3 = uint4x2(1972524935, 91962333, 1960780785, 1303778459, 960040360, 822786011, 2028027011, 170382968); + uint4x2 b3 = uint4x2(1340735463, 546583617, 1034420616, 262206030, 1834125935, 802756092, 611321886, 316379491); + uint4x2 r3 = uint4x2(981182560, 636424092, 1232544377, 1108797141, 1416333255, 517186087, 1553020061, 419186459); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void uint4x2_operator_bitwise_xor_wide_scalar() + { + uint4x2 a0 = uint4x2(2124666952, 177397845, 574879617, 1937385541, 1136545648, 213863690, 535061373, 289301586); + uint b0 = (493665894); + uint4x2 r0 = uint4x2(1674536494, 402546227, 1060063719, 1846973987, 1590882582, 299103084, 42523931, 206756404); + TestUtils.AreEqual(a0 ^ b0, r0); + + uint4x2 a1 = uint4x2(1305234431, 1308626970, 1267729267, 125659640, 1315625690, 1730088797, 116862046, 375757978); + uint b1 = (353786540); + uint4x2 r1 = uint4x2(1490686291, 1528187574, 1585863135, 309015380, 1534886006, 1913214449, 333543154, 57919030); + TestUtils.AreEqual(a1 ^ b1, r1); + + uint4x2 a2 = uint4x2(491079274, 187129429, 967051293, 549951551, 653124416, 788984, 1479174924, 1680011736); + uint b2 = (191750702); + uint4x2 r2 = uint4x2(371762244, 4897915, 852093491, 732592657, 763363694, 190966742, 1397197090, 1867453430); + TestUtils.AreEqual(a2 ^ b2, r2); + + uint4x2 a3 = uint4x2(447453839, 293394300, 527727631, 529042816, 1382138962, 1206186973, 1059509471, 744733291); + uint b3 = (890841598); + uint4x2 r3 = uint4x2(800240497, 610664066, 711808497, 714187902, 1735978412, 1929239075, 171965729, 427463573); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void uint4x2_operator_bitwise_xor_scalar_wide() + { + uint a0 = (1288453276); + uint4x2 b0 = uint4x2(1077599928, 884741329, 212164516, 1585020328, 152985454, 1775851275, 1416249064, 1309317737); + uint4x2 r0 = uint4x2(217506340, 2020616269, 1080648504, 313868596, 1171416050, 622160791, 413532788, 46573301); + TestUtils.AreEqual(a0 ^ b0, r0); + + uint a1 = (1773918217); + uint4x2 b1 = uint4x2(1509843030, 1206045972, 1154916424, 1947871003, 1774252400, 1946113778, 1079717492, 290620937); + uint4x2 r1 = uint4x2(809875551, 777590045, 762148929, 497155858, 8071545, 440700667, 702609021, 2028559872); + TestUtils.AreEqual(a1 ^ b1, r1); + + uint a2 = (1382343363); + uint4x2 b2 = uint4x2(939045099, 1309568053, 221134131, 885841718, 612068188, 194068085, 1396957881, 573581481); + uint4x2 r2 = uint4x2(1704743464, 476745462, 1598742512, 1722301941, 1981778335, 1509285046, 19333242, 1884605034); + TestUtils.AreEqual(a2 ^ b2, r2); + + uint a3 = (1813817520); + uint4x2 b3 = uint4x2(86594349, 2006985393, 1431761813, 905646837, 1522414781, 192882943, 714832744, 374210759); + uint4x2 r3 = uint4x2(1765145501, 465338881, 961174309, 1508358725, 916626445, 1734574159, 1183306712, 2052237431); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void uint4x2_operator_left_shift() + { + uint4x2 a0 = uint4x2(197771193, 622182602, 1283988958, 1327917304, 473415985, 432425717, 870301196, 2058433484); + int b0 = (1321149625); + uint4x2 r0 = uint4x2(1912602624, 2483027968, 3154116608, 4026531840, 1644167168, 3925868544, 402653184, 2550136832); + TestUtils.AreEqual(a0 << b0, r0); + + uint4x2 a1 = uint4x2(1200694230, 1360008038, 1008296534, 1447702302, 1079614371, 35667343, 1664454606, 2045594989); + int b1 = (1531607705); + uint4x2 r1 = uint4x2(2885681152, 3422552064, 2885681152, 1006632960, 1174405120, 503316480, 2617245696, 3657433088); + TestUtils.AreEqual(a1 << b1, r1); + + uint4x2 a2 = uint4x2(2077023268, 297755411, 1722762487, 1161625759, 37265945, 997793693, 1521705181, 263886278); + int b2 = (592678686); + uint4x2 r2 = uint4x2(0, 3221225472, 3221225472, 3221225472, 1073741824, 1073741824, 1073741824, 2147483648); + TestUtils.AreEqual(a2 << b2, r2); + + uint4x2 a3 = uint4x2(221147365, 230910816, 71403448, 481375728, 1176038816, 1382694875, 1824729613, 1535276688); + int b3 = (2084190583); + uint4x2 r3 = uint4x2(1920991232, 2952790016, 3690987520, 4160749568, 3489660928, 3984588800, 109051904, 1207959552); + TestUtils.AreEqual(a3 << b3, r3); + } + + [TestCompiler] + public static void uint4x2_operator_right_shift() + { + uint4x2 a0 = uint4x2(548167301, 1161338299, 1617625829, 1860731847, 713958715, 196552656, 770466193, 1265099998); + int b0 = (1266801540); + uint4x2 r0 = uint4x2(34260456, 72583643, 101101614, 116295740, 44622419, 12284541, 48154137, 79068749); + TestUtils.AreEqual(a0 >> b0, r0); + + uint4x2 a1 = uint4x2(572763124, 426807581, 2031319045, 701927980, 917785020, 569504877, 185593382, 1102123711); + int b1 = (506619530); + uint4x2 r1 = uint4x2(559338, 416804, 1983710, 685476, 896274, 556157, 181243, 1076292); + TestUtils.AreEqual(a1 >> b1, r1); + + uint4x2 a2 = uint4x2(334005460, 280138733, 1598620011, 1840564178, 736389149, 1279158873, 408822762, 763607760); + int b2 = (1624751550); + uint4x2 r2 = uint4x2(0, 0, 1, 1, 0, 1, 0, 0); + TestUtils.AreEqual(a2 >> b2, r2); + + uint4x2 a3 = uint4x2(348013684, 774126687, 1587054000, 600069797, 29576474, 1880981389, 352174824, 1164508476); + int b3 = (1568185874); + uint4x2 r3 = uint4x2(1327, 2953, 6054, 2289, 112, 7175, 1343, 4442); + TestUtils.AreEqual(a3 >> b3, r3); + } + + [TestCompiler] + public static void uint4x2_operator_bitwise_not() + { + uint4x2 a0 = uint4x2(1403358969, 831360921, 2088190243, 976721016, 878283189, 308994339, 1935567517, 1420884856); + uint4x2 r0 = uint4x2(2891608326, 3463606374, 2206777052, 3318246279, 3416684106, 3985972956, 2359399778, 2874082439); + TestUtils.AreEqual(~a0, r0); + + uint4x2 a1 = uint4x2(472965491, 627580960, 2061524024, 753208488, 2097179283, 1303022493, 664744603, 1289372466); + uint4x2 r1 = uint4x2(3822001804, 3667386335, 2233443271, 3541758807, 2197788012, 2991944802, 3630222692, 3005594829); + TestUtils.AreEqual(~a1, r1); + + uint4x2 a2 = uint4x2(1635981125, 1545651937, 717936457, 1284504687, 1342785385, 869629475, 2045854321, 1282546942); + uint4x2 r2 = uint4x2(2658986170, 2749315358, 3577030838, 3010462608, 2952181910, 3425337820, 2249112974, 3012420353); + TestUtils.AreEqual(~a2, r2); + + uint4x2 a3 = uint4x2(1562433528, 1736570715, 508906058, 2060752880, 1867418756, 388530274, 695179852, 1766938039); + uint4x2 r3 = uint4x2(2732533767, 2558396580, 3786061237, 2234214415, 2427548539, 3906437021, 3599787443, 2528029256); + TestUtils.AreEqual(~a3, r3); + } + + + } +} diff --git a/package/Tests/Tests/Shared/TestUint4x2.gen.cs.meta b/package/Tests/Tests/Shared/TestUint4x2.gen.cs.meta new file mode 100755 index 000000000..89848b5b2 --- /dev/null +++ b/package/Tests/Tests/Shared/TestUint4x2.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 89ef12b5bac48bb47b957005fa49bd89 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/package/Tests/Tests/Shared/TestUint4x3.gen.cs b/package/Tests/Tests/Shared/TestUint4x3.gen.cs new file mode 100755 index 000000000..2db3b302d --- /dev/null +++ b/package/Tests/Tests/Shared/TestUint4x3.gen.cs @@ -0,0 +1,1233 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using NUnit.Framework; +using static Unity.Mathematics.math; +using Burst.Compiler.IL.Tests; + +namespace Unity.Mathematics.Tests +{ + [TestFixture] + public class TestUint4x3 + { + [TestCompiler] + public static void uint4x3_zero() + { + TestUtils.AreEqual(uint4x3.zero.c0.x, 0u); + TestUtils.AreEqual(uint4x3.zero.c0.y, 0u); + TestUtils.AreEqual(uint4x3.zero.c0.z, 0u); + TestUtils.AreEqual(uint4x3.zero.c0.w, 0u); + TestUtils.AreEqual(uint4x3.zero.c1.x, 0u); + TestUtils.AreEqual(uint4x3.zero.c1.y, 0u); + TestUtils.AreEqual(uint4x3.zero.c1.z, 0u); + TestUtils.AreEqual(uint4x3.zero.c1.w, 0u); + TestUtils.AreEqual(uint4x3.zero.c2.x, 0u); + TestUtils.AreEqual(uint4x3.zero.c2.y, 0u); + TestUtils.AreEqual(uint4x3.zero.c2.z, 0u); + TestUtils.AreEqual(uint4x3.zero.c2.w, 0u); + } + + [TestCompiler] + public static void uint4x3_operator_equal_wide_wide() + { + uint4x3 a0 = uint4x3(790229414, 970783976, 1428432738, 1578747135, 1733797753, 2001507228, 1446876437, 1777406370, 1426387268, 1809275021, 1843770816, 1172185222); + uint4x3 b0 = uint4x3(612337669, 1214209108, 2120643427, 295461214, 1510890331, 1893316566, 921816149, 1834958575, 1482011863, 2062852792, 226398742, 770290735); + bool4x3 r0 = bool4x3(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + uint4x3 a1 = uint4x3(1469608940, 869874758, 458603090, 581282460, 1948324909, 1129078206, 1638391029, 1135553683, 2079295200, 576232476, 608208235, 11172509); + uint4x3 b1 = uint4x3(36812057, 543224481, 1565350150, 1909926604, 1619900436, 1849990483, 1261604411, 161864811, 843379453, 1780425458, 215681636, 2123130580); + bool4x3 r1 = bool4x3(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + uint4x3 a2 = uint4x3(1025529486, 2095601864, 193500113, 1780908384, 1587636094, 1892083815, 1250768669, 1984341771, 929607871, 2092475304, 1940221590, 196567546); + uint4x3 b2 = uint4x3(708665810, 1902328998, 1808456602, 563830672, 200493241, 1391620681, 1035522654, 168447603, 91580624, 1974459648, 2074899534, 164782857); + bool4x3 r2 = bool4x3(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + uint4x3 a3 = uint4x3(346458180, 2131041239, 1797649913, 162082500, 25639548, 1665178642, 1617231933, 1716426491, 1986475699, 262354389, 1517004243, 1058579789); + uint4x3 b3 = uint4x3(1647410210, 1000391363, 1539243411, 1253927304, 894227825, 1897420927, 826437109, 139868307, 565247534, 1437897788, 1891416649, 1043772546); + bool4x3 r3 = bool4x3(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void uint4x3_operator_equal_wide_scalar() + { + uint4x3 a0 = uint4x3(1211464300, 1921862607, 508076684, 1249127920, 1394594555, 746862310, 1733655277, 1884008277, 1682018538, 795585660, 936027116, 927605411); + uint b0 = (746972502); + bool4x3 r0 = bool4x3(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + uint4x3 a1 = uint4x3(672785749, 585324157, 404448210, 969511077, 442746747, 1772925698, 1884034177, 451512860, 425476075, 1370577708, 597010220, 1249636005); + uint b1 = (1465584610); + bool4x3 r1 = bool4x3(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + uint4x3 a2 = uint4x3(211986678, 255635293, 1150443719, 177122433, 511346787, 1442445694, 667984966, 1684122010, 1962874832, 172230876, 496695881, 955604291); + uint b2 = (1305479811); + bool4x3 r2 = bool4x3(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + uint4x3 a3 = uint4x3(872759249, 1604334190, 443527663, 1734064824, 1483978726, 1018945528, 476526026, 564821616, 1368099334, 2134154866, 2136028886, 20195989); + uint b3 = (811880239); + bool4x3 r3 = bool4x3(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void uint4x3_operator_equal_scalar_wide() + { + uint a0 = (1150044438); + uint4x3 b0 = uint4x3(233855098, 924242519, 1402948791, 601381975, 2120518068, 629187703, 1971977031, 47183124, 1061805787, 1009011238, 312511148, 1460673064); + bool4x3 r0 = bool4x3(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + uint a1 = (737210539); + uint4x3 b1 = uint4x3(1737844479, 1892405453, 2133024000, 455818693, 2003197687, 1276241219, 534746610, 559824292, 1758388240, 1023494292, 719963017, 1883763832); + bool4x3 r1 = bool4x3(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + uint a2 = (597498209); + uint4x3 b2 = uint4x3(367814403, 1839429063, 223575614, 79701214, 1699606118, 759455864, 2017599457, 1395605233, 1191785903, 1156248212, 338891967, 61410415); + bool4x3 r2 = bool4x3(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + uint a3 = (1576985758); + uint4x3 b3 = uint4x3(1066598856, 1070606918, 1295956934, 1391539053, 1206456305, 466211205, 1362213007, 554347592, 361925309, 1122476040, 1118155036, 2074160001); + bool4x3 r3 = bool4x3(false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void uint4x3_operator_not_equal_wide_wide() + { + uint4x3 a0 = uint4x3(1660932106, 982847023, 97046264, 1739517447, 1253499180, 1830584069, 1841470429, 1397841646, 1770890135, 1906548631, 169082967, 2099271786); + uint4x3 b0 = uint4x3(107139049, 75478496, 2055495054, 358586687, 942338347, 111564990, 113811950, 948912488, 1080084121, 1400504872, 1032134499, 1061123400); + bool4x3 r0 = bool4x3(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + uint4x3 a1 = uint4x3(1909317609, 46519139, 1433204003, 931492669, 670504132, 1551558665, 1204055048, 1623586740, 226381077, 1145987803, 644253929, 475189890); + uint4x3 b1 = uint4x3(221862069, 858950046, 989094643, 2023070999, 1269317127, 531883744, 687761409, 278427731, 296354221, 536981557, 1134676193, 1749879634); + bool4x3 r1 = bool4x3(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + uint4x3 a2 = uint4x3(922313145, 2006448607, 1574579050, 1839580033, 155350910, 313644534, 2008975915, 1072866331, 10845678, 1588544505, 709736932, 1892341087); + uint4x3 b2 = uint4x3(1944210269, 92849031, 164029425, 628797607, 2069207270, 2022667842, 880567401, 264404537, 1954996717, 572153302, 865957902, 1083128726); + bool4x3 r2 = bool4x3(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + uint4x3 a3 = uint4x3(1603981028, 1174123795, 2033630343, 416869471, 1894155826, 2084120548, 1130129683, 448491949, 1577220741, 376532834, 374116875, 416935463); + uint4x3 b3 = uint4x3(1628120900, 2020212393, 1562290229, 774641416, 444123152, 1636477381, 838643638, 506474707, 922761058, 1282331425, 1748402545, 1493297323); + bool4x3 r3 = bool4x3(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void uint4x3_operator_not_equal_wide_scalar() + { + uint4x3 a0 = uint4x3(747758183, 1033001286, 1439973882, 2138928797, 1197845089, 1432672459, 950170763, 238704450, 2105962247, 727205263, 1640688041, 276313906); + uint b0 = (248693828); + bool4x3 r0 = bool4x3(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + uint4x3 a1 = uint4x3(2126300423, 2035077187, 1171827730, 1412347883, 1622176923, 768370497, 1072798259, 1808712713, 1497830076, 1582645163, 1876273820, 90244766); + uint b1 = (791998981); + bool4x3 r1 = bool4x3(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + uint4x3 a2 = uint4x3(30493685, 384643370, 11554610, 2016093187, 1515760622, 1596313927, 363921847, 1555396158, 913218907, 1739138988, 1916670251, 1516209113); + uint b2 = (904014575); + bool4x3 r2 = bool4x3(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + uint4x3 a3 = uint4x3(765258490, 1509386069, 1670155205, 6112585, 1942607934, 964072392, 779222124, 409389668, 321500037, 1728722181, 1641292942, 780105497); + uint b3 = (668154629); + bool4x3 r3 = bool4x3(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void uint4x3_operator_not_equal_scalar_wide() + { + uint a0 = (2076921066); + uint4x3 b0 = uint4x3(2037494727, 1989050616, 48833929, 1897435904, 514354517, 1783749164, 364694471, 754315072, 124108032, 1512967900, 1178825850, 1854793298); + bool4x3 r0 = bool4x3(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + uint a1 = (50286949); + uint4x3 b1 = uint4x3(2100802631, 1640811853, 82110247, 472172806, 266984506, 2003668365, 1826089250, 1041416160, 356140110, 2057237962, 799920703, 1916347720); + bool4x3 r1 = bool4x3(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + uint a2 = (510966350); + uint4x3 b2 = uint4x3(572038024, 1936481966, 1366859342, 1775285431, 604757336, 1047551607, 1311703338, 676012224, 627370253, 1715733805, 699755913, 1875151666); + bool4x3 r2 = bool4x3(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + uint a3 = (358894860); + uint4x3 b3 = uint4x3(1036873378, 214171973, 340364269, 1652250278, 592713982, 806342921, 1264065574, 188560943, 1068608955, 485382245, 57935167, 1002934795); + bool4x3 r3 = bool4x3(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void uint4x3_operator_less_wide_wide() + { + uint4x3 a0 = uint4x3(1182186063, 415538999, 1667335818, 1566618442, 1166180837, 639095188, 1080836365, 771119973, 928263233, 789225474, 665243110, 1003542034); + uint4x3 b0 = uint4x3(524633529, 1032195686, 760723389, 1505751409, 431962172, 1287906509, 1560084663, 1450178202, 2066166337, 1107069023, 1640077524, 2103263105); + bool4x3 r0 = bool4x3(false, true, false, false, false, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 < b0, r0); + + uint4x3 a1 = uint4x3(1032480172, 1961336172, 923379558, 21210619, 1089772116, 1707633052, 778986024, 158153146, 336715101, 1839141169, 1706859710, 1928438162); + uint4x3 b1 = uint4x3(684229139, 1234033624, 1278743281, 1953079347, 1228832942, 2082539723, 1088437561, 1058382082, 207459172, 750531081, 2015788562, 2126542133); + bool4x3 r1 = bool4x3(false, false, true, true, true, true, true, true, false, false, true, true); + TestUtils.AreEqual(a1 < b1, r1); + + uint4x3 a2 = uint4x3(1638101724, 2044698552, 1543260981, 471462349, 1668575142, 2147199161, 946870864, 582371851, 410751553, 198134393, 1999935258, 671192178); + uint4x3 b2 = uint4x3(271967348, 1601249324, 1373999400, 1689592186, 459759541, 983106679, 332584818, 2034921203, 833499488, 1999487070, 836063897, 1987309319); + bool4x3 r2 = bool4x3(false, false, false, true, false, false, false, true, true, true, false, true); + TestUtils.AreEqual(a2 < b2, r2); + + uint4x3 a3 = uint4x3(1908013191, 770353922, 1948420002, 396403395, 903274624, 1743415547, 1381528376, 409818366, 757370593, 413964581, 1088722047, 111511218); + uint4x3 b3 = uint4x3(1878327039, 457783938, 253010953, 1164175257, 1982277686, 651412210, 567444942, 1863256363, 18040866, 319226483, 1322530114, 4130283); + bool4x3 r3 = bool4x3(false, false, false, true, true, false, false, true, false, false, true, false); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void uint4x3_operator_less_wide_scalar() + { + uint4x3 a0 = uint4x3(608447185, 818840405, 869219329, 2080125385, 1214500548, 1361741203, 1667165786, 1615392341, 840091491, 469591900, 1247103789, 315321650); + uint b0 = (1491216667); + bool4x3 r0 = bool4x3(true, true, true, false, true, true, false, false, true, true, true, true); + TestUtils.AreEqual(a0 < b0, r0); + + uint4x3 a1 = uint4x3(930950514, 933855388, 908563901, 1127696709, 1286331950, 380753337, 971148054, 1827886929, 1056649851, 1579735991, 689044913, 1960894027); + uint b1 = (1100560246); + bool4x3 r1 = bool4x3(true, true, true, false, false, true, true, false, true, false, true, false); + TestUtils.AreEqual(a1 < b1, r1); + + uint4x3 a2 = uint4x3(371987110, 1703747625, 1698536333, 41716206, 243673862, 1274625476, 611065092, 118750042, 1829327996, 452204442, 1645191336, 1829152606); + uint b2 = (867559111); + bool4x3 r2 = bool4x3(true, false, false, true, true, false, true, true, false, true, false, false); + TestUtils.AreEqual(a2 < b2, r2); + + uint4x3 a3 = uint4x3(1891059504, 233590785, 894500093, 92899312, 965973603, 1496873003, 973411415, 694702440, 215973795, 1555455579, 1443255493, 212954934); + uint b3 = (1217893177); + bool4x3 r3 = bool4x3(false, true, true, true, true, false, true, true, true, false, false, true); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void uint4x3_operator_less_scalar_wide() + { + uint a0 = (548436837); + uint4x3 b0 = uint4x3(282703327, 14370648, 1862117300, 1304793311, 826073259, 988910157, 445132446, 1139670255, 111349251, 1102440676, 112183144, 1594415311); + bool4x3 r0 = bool4x3(false, false, true, true, true, true, false, true, false, true, false, true); + TestUtils.AreEqual(a0 < b0, r0); + + uint a1 = (1890019295); + uint4x3 b1 = uint4x3(2098715503, 608933527, 183989010, 1596056507, 1027318999, 146281093, 358911716, 874278078, 1106057699, 1256807459, 2111973919, 1736480659); + bool4x3 r1 = bool4x3(true, false, false, false, false, false, false, false, false, false, true, false); + TestUtils.AreEqual(a1 < b1, r1); + + uint a2 = (810406400); + uint4x3 b2 = uint4x3(1329939911, 1276652605, 593690439, 771851138, 590897155, 386688344, 1290583204, 1984930954, 743544838, 1473400608, 1300775973, 1351720916); + bool4x3 r2 = bool4x3(true, true, false, false, false, false, true, true, false, true, true, true); + TestUtils.AreEqual(a2 < b2, r2); + + uint a3 = (168788814); + uint4x3 b3 = uint4x3(670661854, 168118205, 894264935, 1763013903, 1647476162, 699045651, 1813273687, 900504872, 1574770031, 1684716245, 1458270033, 685700324); + bool4x3 r3 = bool4x3(true, false, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void uint4x3_operator_greater_wide_wide() + { + uint4x3 a0 = uint4x3(592884447, 2133928932, 918957182, 1284069471, 194584707, 739120780, 241654068, 1340158550, 2099542537, 1182623667, 1399607274, 789301637); + uint4x3 b0 = uint4x3(138737040, 192863971, 1700841444, 1044631301, 1391589821, 730837695, 253553987, 2078872742, 910845808, 976047676, 202633078, 1223618940); + bool4x3 r0 = bool4x3(true, true, false, true, false, true, false, false, true, true, true, false); + TestUtils.AreEqual(a0 > b0, r0); + + uint4x3 a1 = uint4x3(180400925, 594688333, 1877031463, 1360073500, 1091782422, 546676424, 348221770, 716039145, 458742739, 1365508046, 1523167942, 1574478622); + uint4x3 b1 = uint4x3(641600530, 1830470354, 1570701388, 1104256103, 1838646932, 740166101, 1549021845, 1457092873, 1790630950, 907793213, 555122804, 1418910265); + bool4x3 r1 = bool4x3(false, false, true, true, false, false, false, false, false, true, true, true); + TestUtils.AreEqual(a1 > b1, r1); + + uint4x3 a2 = uint4x3(1295065160, 715285504, 1130323487, 677530432, 1496919050, 12463046, 1106153111, 1315083485, 31516321, 1786538920, 1854361210, 1730650972); + uint4x3 b2 = uint4x3(335209251, 1094341422, 1465325455, 390251369, 910309992, 277356652, 1601082764, 771366966, 1782348324, 550490783, 599992449, 550520692); + bool4x3 r2 = bool4x3(true, false, false, true, true, false, false, true, false, true, true, true); + TestUtils.AreEqual(a2 > b2, r2); + + uint4x3 a3 = uint4x3(194806663, 517304937, 984608679, 1847934645, 1214605555, 535405194, 855415884, 2121416263, 1161116500, 1390730698, 1536558799, 350939762); + uint4x3 b3 = uint4x3(1873014441, 1756459971, 2028992071, 1772761768, 1323261715, 1541822212, 265732078, 1773940614, 156425055, 1585395425, 438682493, 1005143622); + bool4x3 r3 = bool4x3(false, false, false, true, false, false, true, true, true, false, true, false); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void uint4x3_operator_greater_wide_scalar() + { + uint4x3 a0 = uint4x3(1097138316, 211763648, 1883002501, 56406996, 43662641, 1923456111, 1437755186, 1219010035, 2125058448, 304028799, 893125636, 48044515); + uint b0 = (438688675); + bool4x3 r0 = bool4x3(true, false, true, false, false, true, true, true, true, false, true, false); + TestUtils.AreEqual(a0 > b0, r0); + + uint4x3 a1 = uint4x3(711945018, 577943770, 572743717, 1016617211, 2063134811, 1577403353, 64009107, 1462961460, 1143565920, 3715845, 689362811, 263973424); + uint b1 = (1035679270); + bool4x3 r1 = bool4x3(false, false, false, false, true, true, false, true, true, false, false, false); + TestUtils.AreEqual(a1 > b1, r1); + + uint4x3 a2 = uint4x3(1045140419, 524569092, 1183316983, 1107974092, 212839726, 523727054, 112709358, 614746280, 1000986708, 1683117650, 1451781409, 61102732); + uint b2 = (1058332184); + bool4x3 r2 = bool4x3(false, false, true, true, false, false, false, false, false, true, true, false); + TestUtils.AreEqual(a2 > b2, r2); + + uint4x3 a3 = uint4x3(1284938191, 2125085618, 467075658, 1019531089, 2028286621, 940955706, 1037153304, 1184928188, 1260010015, 1456174269, 174216269, 1930086291); + uint b3 = (1452639553); + bool4x3 r3 = bool4x3(false, true, false, false, true, false, false, false, false, true, false, true); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void uint4x3_operator_greater_scalar_wide() + { + uint a0 = (2024896938); + uint4x3 b0 = uint4x3(599356784, 185671342, 1932327391, 2025591013, 1257191721, 1312388500, 1443698859, 779217735, 691047512, 741776730, 732565983, 668302204); + bool4x3 r0 = bool4x3(true, true, true, false, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 > b0, r0); + + uint a1 = (1556466996); + uint4x3 b1 = uint4x3(858599525, 1896917159, 701542098, 1052151621, 1023307544, 1435392907, 1858177345, 299897686, 632930355, 1387203601, 483722222, 863042711); + bool4x3 r1 = bool4x3(true, false, true, true, true, true, false, true, true, true, true, true); + TestUtils.AreEqual(a1 > b1, r1); + + uint a2 = (1713088900); + uint4x3 b2 = uint4x3(315569296, 292652611, 1002628348, 927789921, 108145064, 425005337, 2093233588, 2063431853, 2079035844, 849337819, 1769234051, 358948261); + bool4x3 r2 = bool4x3(true, true, true, true, true, true, false, false, false, true, false, true); + TestUtils.AreEqual(a2 > b2, r2); + + uint a3 = (267985383); + uint4x3 b3 = uint4x3(126402553, 2055164423, 577620406, 1167389614, 474380256, 1163355187, 1782967398, 1648397169, 845981950, 630459977, 1033887217, 1480829811); + bool4x3 r3 = bool4x3(true, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void uint4x3_operator_less_equal_wide_wide() + { + uint4x3 a0 = uint4x3(1577248162, 2043073061, 1688380407, 176431985, 223299035, 1502802140, 1691709825, 386789394, 117182003, 1665770435, 1958490731, 420032601); + uint4x3 b0 = uint4x3(903445031, 2108974565, 210822256, 1281704747, 453681718, 66138830, 1229799377, 1620922595, 1715833766, 1366430432, 13102000, 46919981); + bool4x3 r0 = bool4x3(false, true, false, true, true, false, false, true, true, false, false, false); + TestUtils.AreEqual(a0 <= b0, r0); + + uint4x3 a1 = uint4x3(1251092689, 2011681765, 749743684, 183784440, 1150674774, 1633828822, 1719442172, 336047314, 743733218, 1393995865, 1854442658, 1498138884); + uint4x3 b1 = uint4x3(486470891, 1709514236, 2145785285, 854254454, 1273278658, 810263315, 1862773824, 201799013, 974166844, 1320622967, 2058099616, 522102017); + bool4x3 r1 = bool4x3(false, false, true, true, true, false, true, false, true, false, true, false); + TestUtils.AreEqual(a1 <= b1, r1); + + uint4x3 a2 = uint4x3(912169992, 1992682021, 1619593455, 1883313982, 483412430, 857881876, 346624138, 531961063, 269897278, 1062947703, 1743454202, 2048964070); + uint4x3 b2 = uint4x3(620752145, 1213693681, 1281818305, 1564146162, 1996153080, 1201909516, 614401396, 224997397, 648547686, 418431167, 1724009726, 401891826); + bool4x3 r2 = bool4x3(false, false, false, false, true, true, true, false, true, false, false, false); + TestUtils.AreEqual(a2 <= b2, r2); + + uint4x3 a3 = uint4x3(1379786452, 622697214, 766589782, 339960970, 1135815654, 797344244, 153103264, 1382144646, 1537448323, 326850885, 1004891948, 2002658522); + uint4x3 b3 = uint4x3(1463971422, 984323887, 1246893281, 1340476720, 1489579748, 128991539, 1117574406, 2016340116, 69682660, 1870772739, 1281621445, 129331822); + bool4x3 r3 = bool4x3(true, true, true, true, true, false, true, true, false, true, true, false); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void uint4x3_operator_less_equal_wide_scalar() + { + uint4x3 a0 = uint4x3(1722165358, 1219858357, 860410743, 411099660, 348104022, 1963256951, 212084836, 58924407, 1459242706, 1745758438, 532949158, 262559763); + uint b0 = (1688048545); + bool4x3 r0 = bool4x3(false, true, true, true, true, false, true, true, true, false, true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + uint4x3 a1 = uint4x3(690091301, 2091514001, 1857173043, 1617221948, 2017733017, 804204255, 981729559, 2032949254, 910922522, 2079225209, 26179915, 238796519); + uint b1 = (1806172431); + bool4x3 r1 = bool4x3(true, false, false, true, false, true, true, false, true, false, true, true); + TestUtils.AreEqual(a1 <= b1, r1); + + uint4x3 a2 = uint4x3(1917813750, 20607406, 1337879822, 959460446, 1599429457, 1279143037, 1551937606, 626254356, 1162369122, 1021674613, 127839058, 1974631244); + uint b2 = (1258115260); + bool4x3 r2 = bool4x3(false, true, false, true, false, false, false, true, true, true, true, false); + TestUtils.AreEqual(a2 <= b2, r2); + + uint4x3 a3 = uint4x3(426908235, 487782623, 1454736163, 465255784, 686095683, 2012624010, 1427922646, 1129062501, 1896996725, 1609784025, 1413823266, 1483727269); + uint b3 = (1818566980); + bool4x3 r3 = bool4x3(true, true, true, true, true, false, true, true, false, true, true, true); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void uint4x3_operator_less_equal_scalar_wide() + { + uint a0 = (1777585); + uint4x3 b0 = uint4x3(1181030049, 1787703989, 1729760948, 1816537388, 1359786460, 874999193, 1678863148, 1711365839, 762067160, 11953554, 1131583906, 1175393186); + bool4x3 r0 = bool4x3(true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + uint a1 = (1293698493); + uint4x3 b1 = uint4x3(48893340, 66196247, 1958607116, 1576473309, 861890786, 478252419, 957887737, 117849810, 1348693584, 105489302, 259034238, 530713566); + bool4x3 r1 = bool4x3(false, false, true, true, false, false, false, false, true, false, false, false); + TestUtils.AreEqual(a1 <= b1, r1); + + uint a2 = (601413850); + uint4x3 b2 = uint4x3(830430286, 145552297, 1697295044, 1150680564, 2091065664, 1796096704, 1572008712, 1556906486, 205552788, 620963188, 1156705971, 1121867260); + bool4x3 r2 = bool4x3(true, false, true, true, true, true, true, true, false, true, true, true); + TestUtils.AreEqual(a2 <= b2, r2); + + uint a3 = (733876180); + uint4x3 b3 = uint4x3(1570208446, 541165966, 644414754, 734807383, 938714737, 591783460, 56988751, 790541516, 1811299247, 1308256680, 549490410, 1987696011); + bool4x3 r3 = bool4x3(true, false, false, true, true, false, false, true, true, true, false, true); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void uint4x3_operator_greater_equal_wide_wide() + { + uint4x3 a0 = uint4x3(263000030, 744235661, 1893760267, 237248, 1062370984, 1676977687, 816766880, 1089431546, 1394493730, 1176473380, 1193988637, 1703862455); + uint4x3 b0 = uint4x3(1395535146, 1178373944, 1237373760, 1364855321, 600811864, 362060472, 290870624, 1839067862, 396958580, 1336888643, 1019684398, 1697684196); + bool4x3 r0 = bool4x3(false, false, true, false, true, true, true, false, true, false, true, true); + TestUtils.AreEqual(a0 >= b0, r0); + + uint4x3 a1 = uint4x3(1806186947, 1253571980, 589397635, 1951842887, 798931197, 808426484, 744869638, 1959531616, 207430702, 1533946595, 1148381840, 2011549474); + uint4x3 b1 = uint4x3(1227300220, 2044269675, 1898323839, 874509380, 1873505472, 1268843918, 1606949562, 1263896445, 1805518202, 1412091359, 1240330374, 1955056253); + bool4x3 r1 = bool4x3(true, false, false, true, false, false, false, true, false, true, false, true); + TestUtils.AreEqual(a1 >= b1, r1); + + uint4x3 a2 = uint4x3(605043041, 1707339660, 2038122892, 345761584, 1839156338, 1519670644, 2131285427, 775457686, 796452624, 1710612922, 1629927787, 1094198224); + uint4x3 b2 = uint4x3(2025187918, 750755999, 869709740, 1390799279, 1194035112, 666460047, 103451220, 1311530792, 802468307, 1090745055, 1968071275, 1935027815); + bool4x3 r2 = bool4x3(false, true, true, false, true, true, true, false, false, true, false, false); + TestUtils.AreEqual(a2 >= b2, r2); + + uint4x3 a3 = uint4x3(584910611, 1129457941, 1633221450, 549302356, 1363234393, 1439226634, 190984179, 983870135, 1527743888, 1577171227, 87278918, 1280094665); + uint4x3 b3 = uint4x3(2060060582, 1535954082, 291771096, 565856573, 1445999374, 711693364, 1201086888, 2076705104, 1565110852, 1698318173, 1293071569, 103979482); + bool4x3 r3 = bool4x3(false, false, true, false, false, true, false, false, false, false, false, true); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void uint4x3_operator_greater_equal_wide_scalar() + { + uint4x3 a0 = uint4x3(2112791350, 1043657935, 101764761, 1529909067, 556026890, 281734132, 1186600258, 815093894, 609211196, 1604309397, 829548642, 244604867); + uint b0 = (1470533736); + bool4x3 r0 = bool4x3(true, false, false, true, false, false, false, false, false, true, false, false); + TestUtils.AreEqual(a0 >= b0, r0); + + uint4x3 a1 = uint4x3(1419295004, 1819986195, 1460027917, 1646290021, 196833647, 1596738181, 1905036391, 1771391775, 1584946560, 370941146, 440219668, 1607345862); + uint b1 = (471843809); + bool4x3 r1 = bool4x3(true, true, true, true, false, true, true, true, true, false, false, true); + TestUtils.AreEqual(a1 >= b1, r1); + + uint4x3 a2 = uint4x3(1449142607, 379014762, 1719435169, 258833609, 1389585003, 612593660, 42612027, 1138747386, 1491562090, 917503963, 353608194, 1526792895); + uint b2 = (1223010129); + bool4x3 r2 = bool4x3(true, false, true, false, true, false, false, false, true, false, false, true); + TestUtils.AreEqual(a2 >= b2, r2); + + uint4x3 a3 = uint4x3(192092521, 367754234, 1738737389, 523396822, 594728703, 1332667659, 1627604854, 1542713928, 1997611484, 191413337, 1230701700, 702382564); + uint b3 = (909358617); + bool4x3 r3 = bool4x3(false, false, true, false, false, true, true, true, true, false, true, false); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void uint4x3_operator_greater_equal_scalar_wide() + { + uint a0 = (1525542481); + uint4x3 b0 = uint4x3(1503244746, 861711266, 817773856, 925984572, 571221723, 683686810, 118252990, 1653952090, 1240253990, 1947039008, 1869136019, 152012637); + bool4x3 r0 = bool4x3(true, true, true, true, true, true, true, false, true, false, false, true); + TestUtils.AreEqual(a0 >= b0, r0); + + uint a1 = (1214546726); + uint4x3 b1 = uint4x3(917376832, 303549425, 2111728811, 945321577, 173706579, 625318949, 519443238, 1583588379, 1026799433, 1713083717, 394922760, 1216218189); + bool4x3 r1 = bool4x3(true, true, false, true, true, true, true, false, true, false, true, false); + TestUtils.AreEqual(a1 >= b1, r1); + + uint a2 = (1336522452); + uint4x3 b2 = uint4x3(233894308, 479913036, 984991199, 172993285, 2121050903, 465645173, 788510727, 337378780, 273010835, 1898553615, 1111540136, 717385513); + bool4x3 r2 = bool4x3(true, true, true, true, false, true, true, true, true, false, true, true); + TestUtils.AreEqual(a2 >= b2, r2); + + uint a3 = (474197678); + uint4x3 b3 = uint4x3(1417152771, 1476091619, 1312849725, 243299324, 1470872301, 1443256118, 1203165035, 2138148138, 1543595760, 186659728, 807288168, 1274079907); + bool4x3 r3 = bool4x3(false, false, false, true, false, false, false, false, false, true, false, false); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void uint4x3_operator_add_wide_wide() + { + uint4x3 a0 = uint4x3(2049228671, 1658660009, 491719392, 937013355, 81108663, 1063894558, 86954702, 843159721, 698977704, 192867135, 1683407172, 137301303); + uint4x3 b0 = uint4x3(2088751567, 645762023, 306868786, 4360271, 506047997, 2094559874, 1634712736, 1601474440, 1586485231, 908746788, 1812370320, 1247342357); + uint4x3 r0 = uint4x3(4137980238, 2304422032, 798588178, 941373626, 587156660, 3158454432, 1721667438, 2444634161, 2285462935, 1101613923, 3495777492, 1384643660); + TestUtils.AreEqual(a0 + b0, r0); + + uint4x3 a1 = uint4x3(2103582820, 526139155, 447937230, 2127411006, 1670579390, 1914969141, 997691756, 857841794, 2129024875, 267535529, 978891383, 657092366); + uint4x3 b1 = uint4x3(2043773873, 223363428, 175115707, 985928617, 507662836, 1231457019, 776127866, 607782424, 1160366210, 1384832242, 702057048, 703554905); + uint4x3 r1 = uint4x3(4147356693, 749502583, 623052937, 3113339623, 2178242226, 3146426160, 1773819622, 1465624218, 3289391085, 1652367771, 1680948431, 1360647271); + TestUtils.AreEqual(a1 + b1, r1); + + uint4x3 a2 = uint4x3(941872903, 906908654, 1940071697, 862186205, 1951450264, 689662850, 1928213278, 1703906688, 526120638, 423980484, 1867227242, 603782684); + uint4x3 b2 = uint4x3(2106992817, 1994483489, 539473, 236858351, 411317652, 595429166, 713649927, 2053476603, 77965941, 1726775513, 1759186349, 2070333485); + uint4x3 r2 = uint4x3(3048865720, 2901392143, 1940611170, 1099044556, 2362767916, 1285092016, 2641863205, 3757383291, 604086579, 2150755997, 3626413591, 2674116169); + TestUtils.AreEqual(a2 + b2, r2); + + uint4x3 a3 = uint4x3(728643437, 927205560, 1544834791, 268450974, 1386681507, 1428974172, 1415690700, 1193340567, 1792960278, 1427490402, 86465016, 827052793); + uint4x3 b3 = uint4x3(1732568358, 523040962, 899952708, 1401525772, 1970067897, 488428060, 132927517, 1670039917, 1678110790, 586374104, 262412628, 1415374948); + uint4x3 r3 = uint4x3(2461211795, 1450246522, 2444787499, 1669976746, 3356749404, 1917402232, 1548618217, 2863380484, 3471071068, 2013864506, 348877644, 2242427741); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void uint4x3_operator_add_wide_scalar() + { + uint4x3 a0 = uint4x3(2038218457, 134923711, 875689667, 1338884463, 997710928, 340490871, 1067888129, 70433301, 2003021861, 1635971971, 1160398286, 85446202); + uint b0 = (2124409227); + uint4x3 r0 = uint4x3(4162627684, 2259332938, 3000098894, 3463293690, 3122120155, 2464900098, 3192297356, 2194842528, 4127431088, 3760381198, 3284807513, 2209855429); + TestUtils.AreEqual(a0 + b0, r0); + + uint4x3 a1 = uint4x3(1068152966, 1497676888, 1727477485, 1095438654, 756559204, 1818718931, 658923552, 1610518921, 1585755398, 692843300, 1068593469, 1704776233); + uint b1 = (1239387100); + uint4x3 r1 = uint4x3(2307540066, 2737063988, 2966864585, 2334825754, 1995946304, 3058106031, 1898310652, 2849906021, 2825142498, 1932230400, 2307980569, 2944163333); + TestUtils.AreEqual(a1 + b1, r1); + + uint4x3 a2 = uint4x3(577782260, 711894571, 564257439, 2051736283, 1572837697, 1628006545, 1855700263, 656748782, 272774516, 1917133199, 828322973, 2116810190); + uint b2 = (736972565); + uint4x3 r2 = uint4x3(1314754825, 1448867136, 1301230004, 2788708848, 2309810262, 2364979110, 2592672828, 1393721347, 1009747081, 2654105764, 1565295538, 2853782755); + TestUtils.AreEqual(a2 + b2, r2); + + uint4x3 a3 = uint4x3(2092767444, 1236931273, 504264449, 794292574, 1518058681, 1604636324, 354873417, 685247897, 227781140, 321182517, 1210575914, 1340503111); + uint b3 = (973587865); + uint4x3 r3 = uint4x3(3066355309, 2210519138, 1477852314, 1767880439, 2491646546, 2578224189, 1328461282, 1658835762, 1201369005, 1294770382, 2184163779, 2314090976); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void uint4x3_operator_add_scalar_wide() + { + uint a0 = (391092078); + uint4x3 b0 = uint4x3(519908870, 851424292, 328314822, 135622204, 740923360, 655394201, 1451896269, 1781697072, 996031825, 1557774949, 779774940, 1111541302); + uint4x3 r0 = uint4x3(911000948, 1242516370, 719406900, 526714282, 1132015438, 1046486279, 1842988347, 2172789150, 1387123903, 1948867027, 1170867018, 1502633380); + TestUtils.AreEqual(a0 + b0, r0); + + uint a1 = (783046445); + uint4x3 b1 = uint4x3(1130163944, 288279584, 1397683861, 1636583489, 673263339, 1469300874, 14855965, 1116636999, 1488863300, 1600990886, 190651301, 1307459768); + uint4x3 r1 = uint4x3(1913210389, 1071326029, 2180730306, 2419629934, 1456309784, 2252347319, 797902410, 1899683444, 2271909745, 2384037331, 973697746, 2090506213); + TestUtils.AreEqual(a1 + b1, r1); + + uint a2 = (920085839); + uint4x3 b2 = uint4x3(2082229835, 1992405574, 1213924458, 505841452, 981421162, 1488337699, 1113826640, 1806146508, 1841791222, 206610851, 526971953, 1236359886); + uint4x3 r2 = uint4x3(3002315674, 2912491413, 2134010297, 1425927291, 1901507001, 2408423538, 2033912479, 2726232347, 2761877061, 1126696690, 1447057792, 2156445725); + TestUtils.AreEqual(a2 + b2, r2); + + uint a3 = (1459523189); + uint4x3 b3 = uint4x3(965740631, 82842799, 1298403201, 1805809772, 1978864191, 415003386, 1906304148, 722870197, 744248796, 1677223559, 303376031, 1275565021); + uint4x3 r3 = uint4x3(2425263820, 1542365988, 2757926390, 3265332961, 3438387380, 1874526575, 3365827337, 2182393386, 2203771985, 3136746748, 1762899220, 2735088210); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void uint4x3_operator_sub_wide_wide() + { + uint4x3 a0 = uint4x3(1353441118, 797269833, 659988112, 56022121, 365847472, 2062899435, 1380988474, 799885138, 1306058185, 579775276, 1239163824, 344591081); + uint4x3 b0 = uint4x3(1332656812, 1827794007, 972557431, 2078233689, 1508184327, 1372307701, 810327977, 936799885, 71562303, 1418723328, 1971342989, 1226053395); + uint4x3 r0 = uint4x3(20784306, 3264443122, 3982397977, 2272755728, 3152630441, 690591734, 570660497, 4158052549, 1234495882, 3456019244, 3562788131, 3413504982); + TestUtils.AreEqual(a0 - b0, r0); + + uint4x3 a1 = uint4x3(86359575, 1049709943, 721529513, 1767221271, 7652784, 545192611, 176298787, 1477774126, 1426963688, 2032787858, 2059525977, 445200454); + uint4x3 b1 = uint4x3(136565478, 1979903295, 600719425, 837912956, 632054793, 711091688, 904695656, 1640069560, 750244414, 1385118097, 1102391291, 1221949855); + uint4x3 r1 = uint4x3(4244761393, 3364773944, 120810088, 929308315, 3670565287, 4129068219, 3566570427, 4132671862, 676719274, 647669761, 957134686, 3518217895); + TestUtils.AreEqual(a1 - b1, r1); + + uint4x3 a2 = uint4x3(425848588, 2026967474, 1128492011, 61421784, 988065731, 1741434432, 2070331135, 1356704176, 1888446703, 1364654917, 265135366, 760501098); + uint4x3 b2 = uint4x3(609588723, 1054324682, 1678086165, 1529581776, 1718700085, 523422634, 223602473, 1912611694, 1224986479, 748933681, 88793450, 401362529); + uint4x3 r2 = uint4x3(4111227161, 972642792, 3745373142, 2826807304, 3564332942, 1218011798, 1846728662, 3739059778, 663460224, 615721236, 176341916, 359138569); + TestUtils.AreEqual(a2 - b2, r2); + + uint4x3 a3 = uint4x3(741271824, 2139243287, 2086038778, 1314011065, 1838848671, 1554054707, 721235598, 1856904592, 570633009, 1870509604, 1310744871, 1717222072); + uint4x3 b3 = uint4x3(1087189363, 488919410, 1106956631, 1131451931, 1975243735, 111940790, 712896589, 477050266, 1163094482, 605082349, 954351492, 1203361215); + uint4x3 r3 = uint4x3(3949049757, 1650323877, 979082147, 182559134, 4158572232, 1442113917, 8339009, 1379854326, 3702505823, 1265427255, 356393379, 513860857); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void uint4x3_operator_sub_wide_scalar() + { + uint4x3 a0 = uint4x3(1176369558, 1934521195, 309452150, 1417634074, 108910717, 1306356714, 1502312334, 1451794815, 281174200, 87530840, 1913724431, 2041593336); + uint b0 = (462232403); + uint4x3 r0 = uint4x3(714137155, 1472288792, 4142187043, 955401671, 3941645610, 844124311, 1040079931, 989562412, 4113909093, 3920265733, 1451492028, 1579360933); + TestUtils.AreEqual(a0 - b0, r0); + + uint4x3 a1 = uint4x3(557239990, 1590376732, 819090189, 816382635, 815920639, 1829033117, 1792801932, 1113440549, 1418937976, 1277257189, 2092779398, 642236742); + uint b1 = (1119051448); + uint4x3 r1 = uint4x3(3733155838, 471325284, 3995006037, 3992298483, 3991836487, 709981669, 673750484, 4289356397, 299886528, 158205741, 973727950, 3818152590); + TestUtils.AreEqual(a1 - b1, r1); + + uint4x3 a2 = uint4x3(1605250794, 1468003019, 128303186, 553494257, 1017126971, 1999744782, 2017272758, 1817991764, 1280985500, 676974855, 1638032613, 949761204); + uint b2 = (819644478); + uint4x3 r2 = uint4x3(785606316, 648358541, 3603626004, 4028817075, 197482493, 1180100304, 1197628280, 998347286, 461341022, 4152297673, 818388135, 130116726); + TestUtils.AreEqual(a2 - b2, r2); + + uint4x3 a3 = uint4x3(1835969317, 976947310, 1304246606, 1456780208, 1554022712, 769804365, 2057831687, 758136579, 670433255, 603231411, 1673268965, 941598524); + uint b3 = (919015590); + uint4x3 r3 = uint4x3(916953727, 57931720, 385231016, 537764618, 635007122, 4145756071, 1138816097, 4134088285, 4046384961, 3979183117, 754253375, 22582934); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void uint4x3_operator_sub_scalar_wide() + { + uint a0 = (1691534405); + uint4x3 b0 = uint4x3(2022393810, 1612688515, 496689713, 887037586, 2097630964, 374934538, 939035482, 935242277, 1789300421, 264712893, 1231856067, 1818112748); + uint4x3 r0 = uint4x3(3964107891, 78845890, 1194844692, 804496819, 3888870737, 1316599867, 752498923, 756292128, 4197201280, 1426821512, 459678338, 4168388953); + TestUtils.AreEqual(a0 - b0, r0); + + uint a1 = (1428436109); + uint4x3 b1 = uint4x3(1258745460, 1077380396, 1330722719, 518111829, 967128529, 344666254, 1082267918, 907866696, 1816885123, 460340568, 962154498, 557113461); + uint4x3 r1 = uint4x3(169690649, 351055713, 97713390, 910324280, 461307580, 1083769855, 346168191, 520569413, 3906518282, 968095541, 466281611, 871322648); + TestUtils.AreEqual(a1 - b1, r1); + + uint a2 = (1701216709); + uint4x3 b2 = uint4x3(1980098777, 730060552, 1444397827, 853570556, 138836432, 1013190428, 718089530, 506757390, 1216448041, 936312747, 1997286455, 1969982026); + uint4x3 r2 = uint4x3(4016085228, 971156157, 256818882, 847646153, 1562380277, 688026281, 983127179, 1194459319, 484768668, 764903962, 3998897550, 4026201979); + TestUtils.AreEqual(a2 - b2, r2); + + uint a3 = (902880656); + uint4x3 b3 = uint4x3(1161220697, 1442464725, 622960765, 730968909, 614823841, 1889779020, 918322352, 133929920, 213123108, 1835450460, 521068072, 2066839749); + uint4x3 r3 = uint4x3(4036627255, 3755383227, 279919891, 171911747, 288056815, 3308068932, 4279525600, 768950736, 689757548, 3362397492, 381812584, 3131008203); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void uint4x3_operator_mul_wide_wide() + { + uint4x3 a0 = uint4x3(245827027, 208934650, 1019478917, 568231809, 877289039, 1585782440, 2111178729, 1186019069, 571481445, 1570087048, 629447153, 619383734); + uint4x3 b0 = uint4x3(759663997, 350129201, 477450108, 1635735015, 388710278, 757722665, 1509388321, 1841703980, 1826369331, 1524322467, 1605207974, 428419155); + uint4x3 r0 = uint4x3(3662155527, 1402281434, 332447596, 2361989735, 2624048730, 1455036648, 2128344329, 3700879228, 2640799263, 2093463192, 3087460678, 3161406466); + TestUtils.AreEqual(a0 * b0, r0); + + uint4x3 a1 = uint4x3(2055121568, 700402816, 263414349, 187830569, 2048056680, 546694675, 853585367, 933370718, 990212476, 1915885905, 1984212358, 368146234); + uint4x3 b1 = uint4x3(1460605791, 1968043860, 771161742, 2037340417, 322304267, 651448359, 1608326767, 1427155898, 1092185338, 665119139, 223634707, 694718952); + uint4x3 r1 = uint4x3(990589280, 3356793344, 2953243830, 1156600361, 649177976, 678952165, 1063621177, 2683284556, 2152538904, 3721713555, 2642853618, 1626072720); + TestUtils.AreEqual(a1 * b1, r1); + + uint4x3 a2 = uint4x3(899438811, 1765718681, 409003054, 2069758852, 140280263, 442491280, 1924530939, 1372320666, 200879709, 857149632, 962693646, 988118613); + uint4x3 b2 = uint4x3(675813713, 999254223, 1326064110, 788102700, 1927999142, 1706356773, 747671596, 106127297, 1695925670, 1788874462, 534570710, 1110638325); + uint4x3 r2 = uint4x3(1891467339, 335415735, 1128927428, 2638713520, 2861115658, 479369680, 3928339236, 4044803354, 48406862, 2297104000, 4019846068, 2811510105); + TestUtils.AreEqual(a2 * b2, r2); + + uint4x3 a3 = uint4x3(892998613, 534109991, 1836805716, 591690444, 1092459557, 1068605049, 1152926708, 1628337363, 400029062, 511168096, 1165835487, 1650108606); + uint4x3 b3 = uint4x3(142931150, 1684745462, 2101748242, 1831486861, 5683864, 1735084283, 1336059993, 721992570, 1906075622, 1073069872, 1374497592, 242540880); + uint4x3 r3 = uint4x3(293009766, 3677102970, 1179445736, 3813187164, 2708838392, 1397450915, 487571412, 3889286542, 326598756, 995119616, 638698952, 1153153376); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void uint4x3_operator_mul_wide_scalar() + { + uint4x3 a0 = uint4x3(1762033447, 465343930, 1570757881, 1326409563, 1824319147, 1356578909, 72749215, 154616909, 975743632, 573770299, 1958912969, 971327747); + uint b0 = (1476837906); + uint4x3 r0 = uint4x3(2981789374, 1326807828, 2156411778, 4018813542, 4229418502, 2976383114, 2455742766, 2574460778, 1736252960, 2595843622, 2760103458, 2441439286); + TestUtils.AreEqual(a0 * b0, r0); + + uint4x3 a1 = uint4x3(1818877398, 660611671, 1279757657, 391009467, 1186856590, 890343818, 800117742, 606927173, 1338014500, 1688964615, 1439447294, 387721300); + uint b1 = (1324050764); + uint4x3 r1 = uint4x3(1927061896, 645718228, 3706353516, 3450526340, 3727282216, 2610351864, 3202713768, 133057916, 2712818352, 3265005844, 4046133608, 100822256); + TestUtils.AreEqual(a1 * b1, r1); + + uint4x3 a2 = uint4x3(1192501703, 76318055, 124378112, 970518733, 1370700538, 1978842602, 1451974062, 987919119, 1659987051, 1325430351, 948943118, 1743760648); + uint b2 = (1613845584); + uint4x3 r2 = uint4x3(3900103216, 2959506480, 692371456, 973833232, 1630959136, 2616598816, 4103626336, 1516495024, 2027781488, 471196848, 2169531488, 1043640960); + TestUtils.AreEqual(a2 * b2, r2); + + uint4x3 a3 = uint4x3(227492421, 370371313, 309869840, 1389753586, 1895557060, 1449787207, 1817244670, 2117623142, 1951266912, 206918942, 382686790, 396984449); + uint b3 = (217698851); + uint4x3 r3 = uint4x3(269461871, 1120555251, 1293383984, 1838219542, 3023271884, 1677010101, 1900394426, 512258290, 4056397088, 3786096410, 1697920914, 1359963043); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void uint4x3_operator_mul_scalar_wide() + { + uint a0 = (99541948); + uint4x3 b0 = uint4x3(1764461774, 657072478, 1459784358, 1610646683, 1632058826, 868441654, 1408757883, 335917146, 2105124483, 1178393968, 1963904348, 1409533767); + uint4x3 r0 = uint4x3(3344568648, 4192918280, 1260585960, 1158730452, 4293361240, 3828814248, 2108402516, 1966690328, 1623617844, 2603413056, 3464455056, 3011267876); + TestUtils.AreEqual(a0 * b0, r0); + + uint a1 = (243286231); + uint4x3 b1 = uint4x3(1336308795, 517963367, 1733623488, 459880225, 994616533, 1420531535, 1821413700, 677771573, 2132626845, 1158827713, 640102997, 944551639); + uint4x3 r1 = uint4x3(3646578061, 2731337857, 3893490496, 2980416695, 62369507, 4218409817, 2881159196, 3966864259, 2038656731, 2224055319, 2818606435, 2745388689); + TestUtils.AreEqual(a1 * b1, r1); + + uint a2 = (1323243330); + uint4x3 b2 = uint4x3(1186460236, 657101857, 1275563580, 1031291523, 1008470115, 1155301041, 1046199281, 2138825098, 1273008873, 1788343477, 1994364082, 597340263); + uint4x3 r2 = uint4x3(4200942488, 50866050, 1979584376, 2165828294, 2084048518, 3664351394, 1987582754, 2187955092, 3020934930, 1909741994, 2131645412, 527678350); + TestUtils.AreEqual(a2 * b2, r2); + + uint a3 = (2022856151); + uint4x3 b3 = uint4x3(1375763101, 1007501105, 1162446628, 96412054, 1676576573, 1763698296, 729299033, 1534484, 1053621089, 1978013043, 796620370, 890235481); + uint4x3 r3 = uint4x3(2359761627, 3607975719, 2368172860, 3241673466, 3640972603, 2445305544, 1198448575, 3108682444, 2733658999, 2364617365, 3384645854, 938433983); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void uint4x3_operator_div_wide_wide() + { + uint4x3 a0 = uint4x3(1590198532, 507812502, 126627032, 1058247011, 427387861, 290676154, 1829594484, 1127868739, 499016351, 1341209632, 134906097, 785470242); + uint4x3 b0 = uint4x3(1434703236, 911965201, 390415521, 128746927, 525835375, 816946613, 878264647, 146789678, 2089524057, 254213018, 1916850021, 1737806518); + uint4x3 r0 = uint4x3(1, 0, 0, 8, 0, 0, 2, 7, 0, 5, 0, 0); + TestUtils.AreEqual(a0 / b0, r0); + + uint4x3 a1 = uint4x3(788249865, 1099825433, 1552968283, 1822367139, 1021812060, 1937073018, 645757349, 1097576782, 1246027674, 1152153253, 1900577195, 172149343); + uint4x3 b1 = uint4x3(1906634983, 437754923, 825037958, 902508708, 896853614, 49452028, 1921327824, 787000669, 1032149621, 858558868, 1422112429, 837098844); + uint4x3 r1 = uint4x3(0, 2, 1, 2, 1, 39, 0, 1, 1, 1, 1, 0); + TestUtils.AreEqual(a1 / b1, r1); + + uint4x3 a2 = uint4x3(1735128704, 816492592, 2012272185, 632330092, 649232994, 123715336, 1438073735, 723262291, 850951883, 1942618200, 1088675276, 1648515976); + uint4x3 b2 = uint4x3(616122946, 2035322800, 1324534444, 1820832158, 917489631, 367475696, 620492088, 1749833550, 1535651093, 932740870, 1078416711, 725172174); + uint4x3 r2 = uint4x3(2, 0, 1, 0, 0, 0, 2, 0, 0, 2, 1, 2); + TestUtils.AreEqual(a2 / b2, r2); + + uint4x3 a3 = uint4x3(991947275, 1155668991, 764696768, 1984712970, 1734485640, 850109866, 8545366, 1037720170, 264523522, 1547702681, 1797612488, 1496410581); + uint4x3 b3 = uint4x3(554208963, 1250240123, 2074395021, 1513621083, 262726589, 936845337, 1934527986, 1844761263, 116240860, 1875751365, 730101086, 625535586); + uint4x3 r3 = uint4x3(1, 0, 0, 1, 6, 0, 0, 0, 2, 0, 2, 2); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void uint4x3_operator_div_wide_scalar() + { + uint4x3 a0 = uint4x3(560951562, 1218680769, 375341724, 1613542090, 1919409166, 1397425408, 1349573078, 524526253, 341995568, 495895326, 1515313790, 1676971657); + uint b0 = (947861580); + uint4x3 r0 = uint4x3(0, 1, 0, 1, 2, 1, 1, 0, 0, 0, 1, 1); + TestUtils.AreEqual(a0 / b0, r0); + + uint4x3 a1 = uint4x3(2131487088, 1017891310, 542666029, 1646044372, 1447236569, 107215658, 19616726, 896899915, 707389627, 1249475421, 1486968988, 1738891885); + uint b1 = (2105094094); + uint4x3 r1 = uint4x3(1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); + TestUtils.AreEqual(a1 / b1, r1); + + uint4x3 a2 = uint4x3(1919705924, 1200843642, 206442634, 1508567412, 1825701056, 1117255783, 929925156, 1725332114, 1949103348, 1383839785, 2136282541, 159847918); + uint b2 = (1244966864); + uint4x3 r2 = uint4x3(1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0); + TestUtils.AreEqual(a2 / b2, r2); + + uint4x3 a3 = uint4x3(1515555001, 1033495687, 1947230231, 1969254260, 1948672400, 757256792, 2099218773, 455629883, 324433498, 1679339858, 2024651647, 1222061694); + uint b3 = (614923813); + uint4x3 r3 = uint4x3(2, 1, 3, 3, 3, 1, 3, 0, 0, 2, 3, 1); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void uint4x3_operator_div_scalar_wide() + { + uint a0 = (1161272038); + uint4x3 b0 = uint4x3(187325733, 1594107378, 2016183849, 1589343709, 388768753, 1417077283, 1773486938, 1154044032, 81831373, 1476877645, 653688843, 45756703); + uint4x3 r0 = uint4x3(6, 0, 0, 0, 2, 0, 0, 1, 14, 0, 1, 25); + TestUtils.AreEqual(a0 / b0, r0); + + uint a1 = (631027637); + uint4x3 b1 = uint4x3(396671391, 784365696, 1250594097, 1818363859, 1653451772, 270557729, 48974453, 1796936382, 1427856423, 981056957, 1955700573, 705450043); + uint4x3 r1 = uint4x3(1, 0, 0, 0, 0, 2, 12, 0, 0, 0, 0, 0); + TestUtils.AreEqual(a1 / b1, r1); + + uint a2 = (1054404890); + uint4x3 b2 = uint4x3(351914083, 131970646, 1320586926, 366944102, 1575786200, 257204865, 1582754309, 2114509003, 1266146708, 45105265, 2092444751, 407744534); + uint4x3 r2 = uint4x3(2, 7, 0, 2, 0, 4, 0, 0, 0, 23, 0, 2); + TestUtils.AreEqual(a2 / b2, r2); + + uint a3 = (126616016); + uint4x3 b3 = uint4x3(1900058250, 523718813, 414718546, 1828540203, 860638950, 1827704212, 182494419, 669579562, 717750865, 560379939, 681272719, 638134699); + uint4x3 r3 = uint4x3(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void uint4x3_operator_mod_wide_wide() + { + uint4x3 a0 = uint4x3(146150818, 1846543305, 1071447756, 308965362, 659881575, 1002365460, 861198439, 1510617532, 778525078, 1458458044, 101987897, 1249565173); + uint4x3 b0 = uint4x3(983050390, 771341152, 942375212, 367361754, 749500619, 750718852, 2095151755, 88438806, 769227442, 647214624, 1026513788, 1544950956); + uint4x3 r0 = uint4x3(146150818, 303861001, 129072544, 308965362, 659881575, 251646608, 861198439, 7157830, 9297636, 164028796, 101987897, 1249565173); + TestUtils.AreEqual(a0 % b0, r0); + + uint4x3 a1 = uint4x3(938026607, 1692541775, 1518877124, 1806965510, 1325139851, 994457255, 1372400564, 1770508529, 100255877, 452674793, 1545968777, 629019189); + uint4x3 b1 = uint4x3(160166322, 1099108075, 1158422232, 1798905209, 164686701, 327889784, 1082162785, 1213537518, 608481038, 329133821, 1824387961, 1223426748); + uint4x3 r1 = uint4x3(137194997, 593433700, 360454892, 8060301, 7646243, 10787903, 290237779, 556971011, 100255877, 123540972, 1545968777, 629019189); + TestUtils.AreEqual(a1 % b1, r1); + + uint4x3 a2 = uint4x3(1402964707, 2138294579, 1641714420, 1782022072, 1880968864, 1980798192, 1397317084, 995968277, 1090018756, 1573062648, 1100694500, 863521889); + uint4x3 b2 = uint4x3(798137669, 79717779, 1233582258, 1267120677, 301592349, 911281434, 1357340934, 1648942990, 1350943898, 696511738, 1182727748, 1843845940); + uint4x3 r2 = uint4x3(604827038, 65632325, 408132162, 514901395, 71414770, 158235324, 39976150, 995968277, 1090018756, 180039172, 1100694500, 863521889); + TestUtils.AreEqual(a2 % b2, r2); + + uint4x3 a3 = uint4x3(1146202560, 546958747, 573838995, 2146465826, 1678630780, 1843627015, 1167611300, 157190789, 530148276, 594404567, 1248848240, 1963704081); + uint4x3 b3 = uint4x3(244920526, 1640990506, 920431352, 1261122293, 469115027, 720739455, 1727247731, 91557593, 1874820225, 1070808215, 859227095, 890398590); + uint4x3 r3 = uint4x3(166520456, 546958747, 573838995, 885343533, 271285699, 402148105, 1167611300, 65633196, 530148276, 594404567, 389621145, 182906901); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void uint4x3_operator_mod_wide_scalar() + { + uint4x3 a0 = uint4x3(164800505, 1062177828, 1898749675, 1701653318, 820393245, 19002208, 128329633, 1464010899, 896587769, 405208598, 1982762194, 959236935); + uint b0 = (883951171); + uint4x3 r0 = uint4x3(164800505, 178226657, 130847333, 817702147, 820393245, 19002208, 128329633, 580059728, 12636598, 405208598, 214859852, 75285764); + TestUtils.AreEqual(a0 % b0, r0); + + uint4x3 a1 = uint4x3(712321026, 1540068445, 1085897743, 1607489717, 165478511, 647846716, 915707999, 1602830401, 928191283, 1084934806, 488509689, 2087820912); + uint b1 = (172564850); + uint4x3 r1 = uint4x3(22061626, 159549645, 50508643, 54406067, 165478511, 130152166, 52883749, 49746751, 65367033, 49545706, 143379989, 17042712); + TestUtils.AreEqual(a1 % b1, r1); + + uint4x3 a2 = uint4x3(377501313, 1216011754, 812183417, 1153802502, 1642671870, 1924710742, 665297470, 1568090825, 2050982942, 435886407, 453990946, 1731665372); + uint b2 = (1778384846); + uint4x3 r2 = uint4x3(377501313, 1216011754, 812183417, 1153802502, 1642671870, 146325896, 665297470, 1568090825, 272598096, 435886407, 453990946, 1731665372); + TestUtils.AreEqual(a2 % b2, r2); + + uint4x3 a3 = uint4x3(586777590, 1585649515, 1414579860, 1891664981, 1262495021, 1400758118, 1529532008, 430295164, 1386414018, 2130346558, 666621411, 1524342239); + uint b3 = (1475597526); + uint4x3 r3 = uint4x3(586777590, 110051989, 1414579860, 416067455, 1262495021, 1400758118, 53934482, 430295164, 1386414018, 654749032, 666621411, 48744713); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void uint4x3_operator_mod_scalar_wide() + { + uint a0 = (242383789); + uint4x3 b0 = uint4x3(740000543, 1556450291, 1104736385, 437976569, 1911837205, 1507212038, 1906405167, 247693265, 293460573, 1495295166, 873323603, 530681233); + uint4x3 r0 = uint4x3(242383789, 242383789, 242383789, 242383789, 242383789, 242383789, 242383789, 242383789, 242383789, 242383789, 242383789, 242383789); + TestUtils.AreEqual(a0 % b0, r0); + + uint a1 = (1298102643); + uint4x3 b1 = uint4x3(2057984657, 1000742091, 1461372131, 1859742342, 797184687, 821888842, 1083192997, 840114986, 1894865954, 615159964, 1485575122, 2028738); + uint4x3 r1 = uint4x3(1298102643, 297360552, 1298102643, 1298102643, 500917956, 476213801, 214909646, 457987657, 1298102643, 67782715, 1298102643, 1739061); + TestUtils.AreEqual(a1 % b1, r1); + + uint a2 = (2122220318); + uint4x3 b2 = uint4x3(164578061, 730088119, 1444946139, 1305792037, 1110829011, 872723581, 166847388, 1477846418, 511428733, 1642227542, 1962310765, 207128894); + uint4x3 r2 = uint4x3(147283586, 662044080, 677274179, 816428281, 1011391307, 376773156, 120051662, 644373900, 76505386, 479992776, 159909553, 50931378); + TestUtils.AreEqual(a2 % b2, r2); + + uint a3 = (1342085447); + uint4x3 b3 = uint4x3(448361286, 334667519, 705465751, 753088773, 1146344010, 275140144, 1074480141, 2092749846, 1631900558, 2088387496, 1098441751, 1648646354); + uint4x3 r3 = uint4x3(445362875, 3415371, 636619696, 588996674, 195741437, 241524871, 267605306, 1342085447, 1342085447, 1342085447, 243643696, 1342085447); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void uint4x3_operator_plus() + { + uint4x3 a0 = uint4x3(1643476803, 907898539, 379615839, 1140483021, 1735287433, 1743199272, 1472881565, 339091479, 401565897, 1287765427, 849339193, 174532915); + uint4x3 r0 = uint4x3(1643476803, 907898539, 379615839, 1140483021, 1735287433, 1743199272, 1472881565, 339091479, 401565897, 1287765427, 849339193, 174532915); + TestUtils.AreEqual(+a0, r0); + + uint4x3 a1 = uint4x3(1864850812, 1145639744, 1615499926, 2049663954, 1723005749, 409076474, 591286416, 1706631096, 1079164488, 1808261782, 1201290141, 82958939); + uint4x3 r1 = uint4x3(1864850812, 1145639744, 1615499926, 2049663954, 1723005749, 409076474, 591286416, 1706631096, 1079164488, 1808261782, 1201290141, 82958939); + TestUtils.AreEqual(+a1, r1); + + uint4x3 a2 = uint4x3(308695413, 2067379018, 1673126612, 500666137, 640289062, 836003812, 336058393, 829347661, 33442669, 381670450, 277507230, 361395485); + uint4x3 r2 = uint4x3(308695413, 2067379018, 1673126612, 500666137, 640289062, 836003812, 336058393, 829347661, 33442669, 381670450, 277507230, 361395485); + TestUtils.AreEqual(+a2, r2); + + uint4x3 a3 = uint4x3(1012749225, 2092803800, 1459040742, 531853559, 2093894901, 1589622197, 1559976318, 619729461, 731886792, 1441425968, 1921783986, 1257555634); + uint4x3 r3 = uint4x3(1012749225, 2092803800, 1459040742, 531853559, 2093894901, 1589622197, 1559976318, 619729461, 731886792, 1441425968, 1921783986, 1257555634); + TestUtils.AreEqual(+a3, r3); + } + + [TestCompiler] + public static void uint4x3_operator_neg() + { + uint4x3 a0 = uint4x3(1955022112, 662160019, 370300775, 2141283773, 1004505619, 28153593, 33894270, 505708349, 1115028238, 1636274969, 694995093, 1542206286); + uint4x3 r0 = uint4x3(2339945184, 3632807277, 3924666521, 2153683523, 3290461677, 4266813703, 4261073026, 3789258947, 3179939058, 2658692327, 3599972203, 2752761010); + TestUtils.AreEqual(-a0, r0); + + uint4x3 a1 = uint4x3(213087293, 341522275, 841085242, 574159094, 1687250035, 2057919693, 1175014732, 1259809073, 1212465326, 1190569920, 2047955772, 2120729864); + uint4x3 r1 = uint4x3(4081880003, 3953445021, 3453882054, 3720808202, 2607717261, 2237047603, 3119952564, 3035158223, 3082501970, 3104397376, 2247011524, 2174237432); + TestUtils.AreEqual(-a1, r1); + + uint4x3 a2 = uint4x3(1440774928, 431666091, 1387601718, 1745651998, 319115626, 1119959806, 739132284, 1954173314, 1709857098, 1836511050, 1662806453, 506144868); + uint4x3 r2 = uint4x3(2854192368, 3863301205, 2907365578, 2549315298, 3975851670, 3175007490, 3555835012, 2340793982, 2585110198, 2458456246, 2632160843, 3788822428); + TestUtils.AreEqual(-a2, r2); + + uint4x3 a3 = uint4x3(650922971, 1273997249, 1474445187, 1853826947, 1695573773, 729452512, 345069360, 575867536, 594119038, 1201840609, 1342872551, 1768435578); + uint4x3 r3 = uint4x3(3644044325, 3020970047, 2820522109, 2441140349, 2599393523, 3565514784, 3949897936, 3719099760, 3700848258, 3093126687, 2952094745, 2526531718); + TestUtils.AreEqual(-a3, r3); + } + + [TestCompiler] + public static void uint4x3_operator_prefix_inc() + { + uint4x3 a0 = uint4x3(864455342, 2035793213, 1275443862, 971919915, 411610189, 446210725, 395072276, 115573442, 913293639, 432884105, 1208161871, 1385544935); + uint4x3 r0 = uint4x3(864455343, 2035793214, 1275443863, 971919916, 411610190, 446210726, 395072277, 115573443, 913293640, 432884106, 1208161872, 1385544936); + TestUtils.AreEqual(++a0, r0); + + uint4x3 a1 = uint4x3(1835605516, 388229350, 696475402, 1786514683, 993189311, 752093909, 1622410417, 1398865015, 241906003, 1705625817, 609525897, 172599489); + uint4x3 r1 = uint4x3(1835605517, 388229351, 696475403, 1786514684, 993189312, 752093910, 1622410418, 1398865016, 241906004, 1705625818, 609525898, 172599490); + TestUtils.AreEqual(++a1, r1); + + uint4x3 a2 = uint4x3(504806865, 281942776, 1541894135, 924683935, 259568871, 1349062584, 1120518661, 65514038, 1495168208, 1321109497, 1366348660, 1777734111); + uint4x3 r2 = uint4x3(504806866, 281942777, 1541894136, 924683936, 259568872, 1349062585, 1120518662, 65514039, 1495168209, 1321109498, 1366348661, 1777734112); + TestUtils.AreEqual(++a2, r2); + + uint4x3 a3 = uint4x3(1414867743, 539531120, 886558347, 1733014170, 1586973907, 1145067277, 884064327, 82551838, 1001250037, 924273925, 242241802, 413165245); + uint4x3 r3 = uint4x3(1414867744, 539531121, 886558348, 1733014171, 1586973908, 1145067278, 884064328, 82551839, 1001250038, 924273926, 242241803, 413165246); + TestUtils.AreEqual(++a3, r3); + } + + [TestCompiler] + public static void uint4x3_operator_postfix_inc() + { + uint4x3 a0 = uint4x3(1751003569, 2063707595, 1500486291, 969189211, 1007848192, 2028651936, 1643023524, 1190630527, 1396179607, 708474528, 177416855, 1524860667); + uint4x3 r0 = uint4x3(1751003569, 2063707595, 1500486291, 969189211, 1007848192, 2028651936, 1643023524, 1190630527, 1396179607, 708474528, 177416855, 1524860667); + TestUtils.AreEqual(a0++, r0); + + uint4x3 a1 = uint4x3(1408994706, 1580130369, 1676086778, 717006530, 506142468, 732199129, 2026873940, 130175844, 1513142653, 420613464, 1219979307, 586574160); + uint4x3 r1 = uint4x3(1408994706, 1580130369, 1676086778, 717006530, 506142468, 732199129, 2026873940, 130175844, 1513142653, 420613464, 1219979307, 586574160); + TestUtils.AreEqual(a1++, r1); + + uint4x3 a2 = uint4x3(357567451, 1949784665, 1127356901, 101238629, 2131648021, 423320704, 827539403, 1919960927, 840371710, 2010345998, 1047836590, 586887730); + uint4x3 r2 = uint4x3(357567451, 1949784665, 1127356901, 101238629, 2131648021, 423320704, 827539403, 1919960927, 840371710, 2010345998, 1047836590, 586887730); + TestUtils.AreEqual(a2++, r2); + + uint4x3 a3 = uint4x3(1209169651, 1479717664, 1874959449, 104723114, 817246348, 1972950889, 1784631804, 1550936382, 718649502, 872906800, 717529320, 1995020676); + uint4x3 r3 = uint4x3(1209169651, 1479717664, 1874959449, 104723114, 817246348, 1972950889, 1784631804, 1550936382, 718649502, 872906800, 717529320, 1995020676); + TestUtils.AreEqual(a3++, r3); + } + + [TestCompiler] + public static void uint4x3_operator_prefix_dec() + { + uint4x3 a0 = uint4x3(200904609, 871077500, 968578728, 638967721, 1995396216, 435367037, 1782514098, 1589827826, 1434377580, 596759698, 1699290403, 1758478358); + uint4x3 r0 = uint4x3(200904608, 871077499, 968578727, 638967720, 1995396215, 435367036, 1782514097, 1589827825, 1434377579, 596759697, 1699290402, 1758478357); + TestUtils.AreEqual(--a0, r0); + + uint4x3 a1 = uint4x3(1914114460, 389120307, 1022184392, 1310293956, 356565557, 18299409, 906734601, 799006218, 1383897383, 1040798388, 1469596990, 1719228297); + uint4x3 r1 = uint4x3(1914114459, 389120306, 1022184391, 1310293955, 356565556, 18299408, 906734600, 799006217, 1383897382, 1040798387, 1469596989, 1719228296); + TestUtils.AreEqual(--a1, r1); + + uint4x3 a2 = uint4x3(220897829, 678025545, 14227726, 293093918, 1065286595, 1249415499, 1009503100, 157482354, 965385343, 1797304434, 1083672612, 929765380); + uint4x3 r2 = uint4x3(220897828, 678025544, 14227725, 293093917, 1065286594, 1249415498, 1009503099, 157482353, 965385342, 1797304433, 1083672611, 929765379); + TestUtils.AreEqual(--a2, r2); + + uint4x3 a3 = uint4x3(2083512379, 323646560, 1395297406, 583796119, 999841714, 1788073019, 1618852114, 1777032041, 1252764958, 1070818447, 219340317, 767990877); + uint4x3 r3 = uint4x3(2083512378, 323646559, 1395297405, 583796118, 999841713, 1788073018, 1618852113, 1777032040, 1252764957, 1070818446, 219340316, 767990876); + TestUtils.AreEqual(--a3, r3); + } + + [TestCompiler] + public static void uint4x3_operator_postfix_dec() + { + uint4x3 a0 = uint4x3(283970262, 1109329936, 1073216143, 649439137, 1932646215, 1174104498, 484207852, 524156737, 691209285, 2017728859, 802721301, 377162390); + uint4x3 r0 = uint4x3(283970262, 1109329936, 1073216143, 649439137, 1932646215, 1174104498, 484207852, 524156737, 691209285, 2017728859, 802721301, 377162390); + TestUtils.AreEqual(a0--, r0); + + uint4x3 a1 = uint4x3(526366486, 590919177, 60677868, 1867810045, 2095777993, 670715645, 324944916, 242636153, 1659736954, 1316734088, 1030072405, 1751972064); + uint4x3 r1 = uint4x3(526366486, 590919177, 60677868, 1867810045, 2095777993, 670715645, 324944916, 242636153, 1659736954, 1316734088, 1030072405, 1751972064); + TestUtils.AreEqual(a1--, r1); + + uint4x3 a2 = uint4x3(1868889881, 1931943579, 175622377, 181847458, 665549439, 530897466, 635466911, 416440036, 1447690298, 1444496274, 296146626, 1209855130); + uint4x3 r2 = uint4x3(1868889881, 1931943579, 175622377, 181847458, 665549439, 530897466, 635466911, 416440036, 1447690298, 1444496274, 296146626, 1209855130); + TestUtils.AreEqual(a2--, r2); + + uint4x3 a3 = uint4x3(2016700604, 647102652, 1948542169, 659874422, 2009120584, 1577004911, 1809041177, 518526567, 1464738365, 1815629310, 1216839298, 569144612); + uint4x3 r3 = uint4x3(2016700604, 647102652, 1948542169, 659874422, 2009120584, 1577004911, 1809041177, 518526567, 1464738365, 1815629310, 1216839298, 569144612); + TestUtils.AreEqual(a3--, r3); + } + + [TestCompiler] + public static void uint4x3_operator_bitwise_and_wide_wide() + { + uint4x3 a0 = uint4x3(779935043, 1097962163, 1939593304, 800599247, 952140918, 782792558, 1608557706, 396446406, 2039894114, 1286974642, 442394124, 1759739564); + uint4x3 b0 = uint4x3(307705143, 1710882162, 866836769, 532490608, 679371720, 1794035877, 1439832202, 519529812, 23633139, 1209152681, 646737179, 1255867027); + uint4x3 r0 = uint4x3(39064835, 1097961522, 864731136, 263727168, 675283008, 715673636, 1438646410, 379666500, 16781410, 1209017504, 34366472, 1220739712); + TestUtils.AreEqual(a0 & b0, r0); + + uint4x3 a1 = uint4x3(233435438, 665207770, 1942050241, 1022352952, 60340400, 329119345, 406517382, 1126764634, 343425836, 1957552749, 1624478957, 341972372); + uint4x3 b1 = uint4x3(1900854122, 413173763, 1409138251, 2087190272, 563439483, 354579077, 642224854, 1650432515, 755290290, 902865191, 661389406, 2134212586); + uint4x3 r1 = uint4x3(21541162, 10485762, 1405162561, 1013440000, 26222640, 285241857, 168582, 1107890178, 67125280, 880844837, 541065292, 337646976); + TestUtils.AreEqual(a1 & b1, r1); + + uint4x3 a2 = uint4x3(181537307, 130347414, 1240828622, 526120460, 695449226, 1477446724, 201628999, 737924014, 1804502415, 1733695477, 1110712857, 113012430); + uint4x3 b2 = uint4x3(1855189321, 185194029, 810374380, 133197864, 1989578783, 38739182, 387425484, 1690486314, 843085933, 1045118223, 41867329, 1397669260); + uint4x3 r2 = uint4x3(177340425, 50384900, 4522188, 122712072, 538087434, 3140, 67404868, 549634602, 570425357, 641864965, 36962305, 34352268); + TestUtils.AreEqual(a2 & b2, r2); + + uint4x3 a3 = uint4x3(1044352152, 865726845, 836668077, 1778871717, 1558881750, 231636456, 1278790837, 846361650, 37319023, 1806613498, 1312261777, 1448803516); + uint4x3 b3 = uint4x3(1784025774, 1834587481, 856874373, 1719529679, 678478831, 86860920, 837158923, 1397449667, 195921481, 564422246, 1088025452, 2103483999); + uint4x3 r3 = uint4x3(706085000, 555323737, 823298181, 1644519557, 140542406, 84698216, 2099201, 306339842, 36241481, 564404834, 1074889216, 1413520412); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void uint4x3_operator_bitwise_and_wide_scalar() + { + uint4x3 a0 = uint4x3(443615469, 490057985, 2042441263, 1524760558, 1405175110, 510212004, 1941875181, 1236735839, 1365509729, 428270198, 607982857, 650270920); + uint b0 = (93423598); + uint4x3 r0 = uint4x3(1114348, 85033216, 26281518, 8488942, 25232710, 67176356, 26247660, 26281806, 16778848, 25199206, 68224264, 75497672); + TestUtils.AreEqual(a0 & b0, r0); + + uint4x3 a1 = uint4x3(1249238550, 1862276471, 143502472, 861733033, 1408932942, 957693145, 1567715668, 1102952410, 322053683, 1599352836, 208656708, 1272226025); + uint b1 = (814629680); + uint4x3 r1 = uint4x3(279056, 536871216, 9175040, 806092832, 277479424, 805568528, 268452112, 9175824, 268567088, 268697600, 934144, 8650784); + TestUtils.AreEqual(a1 & b1, r1); + + uint4x3 a2 = uint4x3(462670926, 1466722981, 1817277774, 818900583, 772681077, 1630437952, 546018772, 872875431, 1143080525, 708719245, 1764446048, 1527981061); + uint b2 = (1817145060); + uint4x3 r2 = uint4x3(134433860, 1145858724, 1816224836, 542076516, 739126372, 1611530816, 537593028, 604439716, 1140983364, 672014980, 1745571424, 1208165380); + TestUtils.AreEqual(a2 & b2, r2); + + uint4x3 a3 = uint4x3(398141788, 554819377, 1683835293, 972562207, 393685571, 2118911919, 1503487659, 283854137, 1911282206, 312686024, 384581172, 1826788967); + uint b3 = (156911041); + uint4x3 r3 = uint4x3(18481472, 17843457, 5783937, 156763393, 22151233, 138937729, 152585345, 4867329, 21643264, 132544, 4719616, 138544193); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void uint4x3_operator_bitwise_and_scalar_wide() + { + uint a0 = (1144543590); + uint4x3 b0 = uint4x3(420346723, 562416448, 1393127318, 1560699552, 851218057, 703880958, 1159378889, 2031211279, 1089518981, 270607307, 1349288930, 520199596); + uint4x3 r0 = uint4x3(547170, 18752, 1074284806, 1140867104, 3672064, 3168358, 1142427968, 1074811142, 1076893956, 2097474, 1076363618, 67115300); + TestUtils.AreEqual(a0 & b0, r0); + + uint a1 = (1763483957); + uint4x3 b1 = uint4x3(1248975349, 236938635, 185023291, 1085233038, 1845693112, 946052961, 1436238522, 2042776519, 56356886, 1770159840, 1872339579, 1439201366); + uint4x3 r1 = uint4x3(1209041205, 136061185, 151265585, 1074528516, 1744830512, 671121697, 1092091952, 1761607941, 18391060, 1761615904, 1763221553, 1091051540); + TestUtils.AreEqual(a1 & b1, r1); + + uint a2 = (1233066417); + uint4x3 b2 = uint4x3(1214109404, 2255485, 1814885263, 1711986588, 1286898282, 915476451, 1870138851, 372814411, 1623486506, 211665304, 1668985777, 348112007); + uint4x3 r2 = uint4x3(1214058640, 2230321, 1210847617, 1074401680, 1211367456, 1116577, 1232603553, 3674113, 1078202400, 136118672, 1098518961, 4128897); + TestUtils.AreEqual(a2 & b2, r2); + + uint a3 = (1808619374); + uint4x3 b3 = uint4x3(1516730209, 1647041932, 350465899, 1641369007, 1555310928, 857924828, 1980404095, 34923708, 1073528483, 742357726, 1244015681, 1980296380); + uint4x3 r3 = uint4x3(1246058336, 1644778764, 12650346, 1640318254, 1216610624, 587220044, 1644695918, 33834028, 734795298, 671961678, 1241777216, 1644708908); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void uint4x3_operator_bitwise_or_wide_wide() + { + uint4x3 a0 = uint4x3(1731159103, 659068416, 382702471, 1821032196, 1565773438, 1004000514, 948501377, 600951835, 669346222, 396691477, 2108560248, 2117522137); + uint4x3 b0 = uint4x3(1583847161, 692672727, 1161585489, 1756207130, 1321374429, 1287357212, 2075767170, 1273513430, 1610830169, 1316929125, 511625048, 573925879); + uint4x3 r0 = uint4x3(2138044159, 793370327, 1476391895, 1823457054, 1607720703, 2147473182, 2075786115, 1811533279, 1743223295, 1610595957, 2147407736, 2117598207); + TestUtils.AreEqual(a0 | b0, r0); + + uint4x3 a1 = uint4x3(330307355, 818676817, 1774459567, 1117506257, 1254511182, 1017865993, 1883021644, 1140203470, 759288967, 2122744307, 335621148, 715028074); + uint4x3 b1 = uint4x3(1502255628, 1841676448, 1682928938, 1115131952, 1541423910, 1416096228, 188606371, 1041599540, 219545389, 560097663, 1087543661, 936383841); + uint4x3 r1 = uint4x3(1538957087, 2110637297, 1842315183, 1124063985, 1541821294, 2096099309, 2067654639, 2146934782, 760610735, 2145839615, 1423162749, 1071544171); + TestUtils.AreEqual(a1 | b1, r1); + + uint4x3 a2 = uint4x3(543305337, 662107399, 1934997335, 436754869, 1613808671, 362365372, 342908672, 2129231210, 203868172, 32846030, 1057901177, 1537975433); + uint4x3 b2 = uint4x3(108816721, 1694053551, 452638547, 1219534055, 85142537, 1027930490, 2126839395, 2030328147, 2036352209, 1554561114, 1332339254, 480739851); + uint4x3 r2 = uint4x3(645820281, 1744827823, 2080356183, 1522064887, 1697901599, 1037957630, 2129985379, 2146270587, 2103889117, 1576909022, 2138040959, 1605346955); + TestUtils.AreEqual(a2 | b2, r2); + + uint4x3 a3 = uint4x3(470626699, 557640158, 536364388, 238304731, 787227554, 1298371111, 1020821539, 1327618264, 1104669041, 1949771204, 1973724646, 698690868); + uint4x3 b3 = uint4x3(1502575584, 1889014859, 1557424474, 1390247341, 2029776623, 1665642846, 1570936353, 801872635, 1945815585, 1797879107, 112272980, 779933219); + uint4x3 r3 = uint4x3(1569684459, 1908211167, 1610378622, 1593671167, 2130702319, 1869067135, 2113574435, 1877727995, 1946151793, 2134865351, 2008393718, 805175095); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void uint4x3_operator_bitwise_or_wide_scalar() + { + uint4x3 a0 = uint4x3(961259683, 471103264, 1733389229, 1591585258, 386953869, 1148351449, 1048929715, 1814263250, 860336789, 1637162093, 1227888278, 774029856); + uint b0 = (1666102508); + uint4x3 r0 = uint4x3(2068823279, 2136930284, 1734344685, 2145369582, 2002712301, 1736374269, 2144335359, 1869608446, 1934604029, 1675607277, 1803466494, 1869543148); + TestUtils.AreEqual(a0 | b0, r0); + + uint4x3 a1 = uint4x3(879300408, 797240690, 1977614655, 46921989, 1980838747, 284225881, 64304104, 313591807, 1393862490, 1890090886, 521303722, 2021379070); + uint b1 = (1179087439); + uint4x3 r1 = uint4x3(1987018623, 1875378047, 2011657087, 1188035407, 1985442655, 1459090271, 1205302255, 1459058687, 1465382751, 1995407311, 1599567599, 2122316799); + TestUtils.AreEqual(a1 | b1, r1); + + uint4x3 a2 = uint4x3(2055963359, 1775629833, 1142751163, 1767274359, 1421981808, 1501294791, 485944015, 539526284, 310877895, 1815369493, 529427586, 358352200); + uint b2 = (1511253082); + uint4x3 r2 = uint4x3(2057037535, 2077750875, 1579155451, 2069362559, 1590951034, 1534850271, 1593306847, 2050745566, 1519910623, 2117597023, 1604316378, 1600120154); + TestUtils.AreEqual(a2 | b2, r2); + + uint4x3 a3 = uint4x3(1353013374, 1624839772, 1369983151, 666444298, 207757238, 257316089, 409252967, 1919967661, 1452040383, 2012115244, 1149949643, 142082352); + uint b3 = (1349149982); + uint4x3 r3 = uint4x3(1357872510, 1895528286, 1374318015, 2012964638, 1550483390, 1602123263, 1483666815, 1920624063, 1458464191, 2012116286, 1424685023, 1484416318); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void uint4x3_operator_bitwise_or_scalar_wide() + { + uint a0 = (1213433101); + uint4x3 b0 = uint4x3(1212928242, 1614462616, 936937728, 764766995, 306352095, 574719481, 1283571271, 2109131012, 979469710, 1348323481, 1407542578, 697517649); + uint4x3 r0 = uint4x3(1213978111, 1752940445, 2145094925, 1842867999, 1515425759, 1783858685, 1288945487, 2113391885, 2054391183, 1482673565, 1542972735, 1775486813); + TestUtils.AreEqual(a0 | b0, r0); + + uint a1 = (1059093741); + uint4x3 b1 = uint4x3(627815046, 418822515, 83214352, 424663473, 447949225, 527022375, 1947148461, 305251437, 1254601325, 1752329425, 1592402684, 1587055329); + uint4x3 r1 = uint4x3(1064042223, 1073151487, 1073085693, 1064304125, 1068727789, 1063910895, 2133818605, 1060240621, 2145910509, 2138209533, 2146074365, 2142830317); + TestUtils.AreEqual(a1 | b1, r1); + + uint a2 = (1088734150); + uint4x3 b2 = uint4x3(298563808, 2052547661, 582843231, 656983670, 1944993640, 1081208038, 829763560, 990961386, 547309556, 1307122961, 263229121, 1518227598); + uint4x3 r2 = uint4x3(1374682086, 2063067087, 1660812255, 1743570934, 1945042926, 1089859558, 1911943150, 2079645678, 1627375606, 1307434967, 1341444039, 1526649806); + TestUtils.AreEqual(a2 | b2, r2); + + uint a3 = (1098359242); + uint4x3 b3 = uint4x3(997941952, 1075751132, 996271847, 623986648, 1091787263, 1548400620, 2022447724, 433714471, 963197960, 1639565037, 1287986616, 1326199854); + uint4x3 r3 = uint4x3(2071978954, 1098885598, 2071455727, 1702356954, 1098381823, 1568651246, 2046802926, 1509946863, 2038414794, 1644161007, 1308081658, 1333769710); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void uint4x3_operator_bitwise_xor_wide_wide() + { + uint4x3 a0 = uint4x3(1556324760, 207002929, 1843444873, 1632079131, 1460334334, 1607815585, 220623650, 38668553, 47193340, 643663548, 1371932564, 94957188); + uint4x3 b0 = uint4x3(1054997548, 1523759632, 251164872, 110472397, 384031112, 1109163205, 535118981, 179106262, 1523031711, 1713313372, 1294118730, 520360641); + uint4x3 r0 = uint4x3(1646419380, 1451501345, 1662567489, 1741824470, 1105803126, 499723620, 314783655, 149092575, 1477935715, 1078104288, 484747486, 447544389); + TestUtils.AreEqual(a0 ^ b0, r0); + + uint4x3 a1 = uint4x3(700973621, 370621508, 2087573076, 351476570, 1340815927, 681577472, 314138777, 446857644, 1368661599, 1672499683, 1259759761, 2049102405); + uint4x3 b1 = uint4x3(1040688781, 1020757245, 1143954843, 1281933464, 175288469, 326874157, 1192052687, 1087083643, 1900865484, 1521193463, 569695524, 1622101483); + uint4x3 r1 = uint4x3(399484088, 717273273, 943885263, 1486609346, 1167690402, 1004255277, 1437869910, 1516836311, 551090579, 958119956, 1793242549, 445489070); + TestUtils.AreEqual(a1 ^ b1, r1); + + uint4x3 a2 = uint4x3(1972524935, 91962333, 1960780785, 1303778459, 960040360, 822786011, 2028027011, 170382968, 32554542, 1915830925, 2001025156, 2012451132); + uint4x3 b2 = uint4x3(1340735463, 546583617, 1034420616, 262206030, 1834125935, 802756092, 611321886, 316379491, 325882121, 45335181, 1859278043, 1002624300); + uint4x3 r2 = uint4x3(981182560, 636424092, 1232544377, 1108797141, 1416333255, 517186087, 1553020061, 419186459, 312225575, 1887600640, 429354079, 1278297104); + TestUtils.AreEqual(a2 ^ b2, r2); + + uint4x3 a3 = uint4x3(1076174067, 344651773, 1769102694, 1408084527, 1139070023, 1195715957, 1051992510, 1468636326, 1018993657, 1514317444, 369266676, 1206540279); + uint4x3 b3 = uint4x3(1704063552, 1618550727, 721247372, 131278097, 896003672, 746837613, 1952376600, 306395311, 419371442, 627496489, 1791585199, 757339713); + uint4x3 r3 = uint4x3(632614579, 1962141754, 1133445610, 1413386046, 1988311583, 1808202520, 1256900262, 1170908169, 608404043, 2133094573, 2093737051, 1791902134); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void uint4x3_operator_bitwise_xor_wide_scalar() + { + uint4x3 a0 = uint4x3(2124666952, 177397845, 574879617, 1937385541, 1136545648, 213863690, 535061373, 289301586, 1305234431, 353786540, 1308626970, 1267729267); + uint b0 = (493665894); + uint4x3 r0 = uint4x3(1674536494, 402546227, 1060063719, 1846973987, 1590882582, 299103084, 42523931, 206756404, 1352725913, 142271690, 1399631484, 1459404053); + TestUtils.AreEqual(a0 ^ b0, r0); + + uint4x3 a1 = uint4x3(125659640, 1730088797, 116862046, 375757978, 491079274, 191750702, 187129429, 967051293, 549951551, 653124416, 788984, 1479174924); + uint b1 = (1315625690); + uint4x3 r1 = uint4x3(1226289954, 695588231, 1218311812, 1477396032, 1395629232, 1158101236, 1162708111, 2010043079, 1856848613, 1753692570, 1315361570, 373338582); + TestUtils.AreEqual(a1 ^ b1, r1); + + uint4x3 a2 = uint4x3(1680011736, 890841598, 293394300, 527727631, 529042816, 1382138962, 1206186973, 1059509471, 744733291, 64097148, 1814786305, 716239); + uint b2 = (447453839); + uint4x3 r2 = uint4x3(2122935127, 800240497, 198659571, 98559616, 86185743, 1221222109, 1565485394, 630017616, 919085284, 427397619, 1988160398, 446789440); + TestUtils.AreEqual(a2 ^ b2, r2); + + uint4x3 a3 = uint4x3(476052372, 2058208914, 41260658, 1316660543, 2113008061, 256229982, 111578612, 1207271814, 2099944258, 1913013312, 870798185, 1771744425); + uint b3 = (92561487); + uint4x3 r3 = uint4x3(433822683, 2133436125, 133297725, 1274987888, 2020970994, 180462097, 52620731, 1114759625, 2024733453, 2005017615, 912470822, 1813957862); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void uint4x3_operator_bitwise_xor_scalar_wide() + { + uint a0 = (1288453276); + uint4x3 b0 = uint4x3(1077599928, 884741329, 212164516, 1585020328, 152985454, 1775851275, 1416249064, 1309317737, 1773918217, 1509843030, 1206045972, 1154916424); + uint4x3 r0 = uint4x3(217506340, 2020616269, 1080648504, 313868596, 1171416050, 622160791, 413532788, 46573301, 628614293, 355622090, 187625864, 135961812); + TestUtils.AreEqual(a0 ^ b0, r0); + + uint a1 = (1947871003); + uint4x3 b1 = uint4x3(1774252400, 1946113778, 1079717492, 290620937, 1382343363, 939045099, 1309568053, 221134131, 885841718, 612068188, 194068085, 1396957881); + uint4x3 r1 = uint4x3(500881003, 132477417, 876677487, 1699258642, 645842392, 1138923504, 974408494, 2033457704, 1087830061, 1348553799, 2139822446, 660194722); + TestUtils.AreEqual(a1 ^ b1, r1); + + uint a2 = (573581481); + uint4x3 b2 = uint4x3(1813817520, 86594349, 2006985393, 1431761813, 905646837, 1522414781, 192882943, 714832744, 374210759, 215701593, 1573378082, 779254615); + uint4x3 r2 = uint4x3(1311539225, 655981444, 1435501080, 2003229500, 399194716, 2022579220, 693043286, 145445825, 880683118, 787181808, 2146955403, 205673470); + TestUtils.AreEqual(a2 ^ b2, r2); + + uint a3 = (711527976); + uint4x3 b3 = uint4x3(710611783, 223429246, 593102399, 1444947259, 302938485, 684673240, 1417651941, 1426772271, 948720266, 177752267, 2005602645, 896851285); + uint4x3 r3 = uint4x3(3284335, 658000982, 154339351, 2085169939, 946304861, 44451568, 2115414221, 2137251591, 317021346, 552683235, 1575100285, 522048381); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void uint4x3_operator_left_shift() + { + uint4x3 a0 = uint4x3(197771193, 622182602, 1283988958, 1327917304, 473415985, 432425717, 870301196, 2058433484, 1200694230, 1531607705, 1360008038, 1008296534); + int b0 = (1321149625); + uint4x3 r0 = uint4x3(1912602624, 2483027968, 3154116608, 4026531840, 1644167168, 3925868544, 402653184, 2550136832, 2885681152, 838860800, 3422552064, 2885681152); + TestUtils.AreEqual(a0 << b0, r0); + + uint4x3 a1 = uint4x3(1447702302, 35667343, 1664454606, 2045594989, 2077023268, 592678686, 297755411, 1722762487, 1161625759, 37265945, 997793693, 1521705181); + int b1 = (1079614371); + uint4x3 r1 = uint4x3(2991683824, 285338744, 430734960, 3479858024, 3731284256, 446462192, 2382043288, 897198008, 703071480, 298127560, 3687382248, 3583706856); + TestUtils.AreEqual(a1 << b1, r1); + + uint4x3 a2 = uint4x3(263886278, 2084190583, 230910816, 71403448, 481375728, 1176038816, 1382694875, 1824729613, 1535276688, 1581610518, 407677878, 1208958192); + int b2 = (221147365); + uint4x3 r2 = uint4x3(4149393600, 2269589216, 3094178816, 2284910336, 2519121408, 3273503744, 1296563040, 2556772768, 1884213760, 3366896320, 160790208, 31956480); + TestUtils.AreEqual(a2 << b2, r2); + + uint4x3 a3 = uint4x3(740058147, 880835937, 2063772405, 430594634, 281771991, 1130057990, 1127968177, 1628217625, 979935914, 17663275, 956738326, 1996060114); + int b3 = (946058001); + uint4x3 r3 = uint4x3(3360030720, 4207017984, 1441398784, 3029598208, 4289593344, 2718695424, 3680632832, 1110573056, 1163132928, 173408256, 1445724160, 3953393664); + TestUtils.AreEqual(a3 << b3, r3); + } + + [TestCompiler] + public static void uint4x3_operator_right_shift() + { + uint4x3 a0 = uint4x3(548167301, 1161338299, 1617625829, 1860731847, 713958715, 196552656, 770466193, 1265099998, 572763124, 506619530, 426807581, 2031319045); + int b0 = (1266801540); + uint4x3 r0 = uint4x3(34260456, 72583643, 101101614, 116295740, 44622419, 12284541, 48154137, 79068749, 35797695, 31663720, 26675473, 126957440); + TestUtils.AreEqual(a0 >> b0, r0); + + uint4x3 a1 = uint4x3(701927980, 569504877, 185593382, 1102123711, 334005460, 1624751550, 280138733, 1598620011, 1840564178, 736389149, 1279158873, 408822762); + int b1 = (917785020); + uint4x3 r1 = uint4x3(2, 2, 0, 4, 1, 6, 1, 5, 6, 2, 4, 1); + TestUtils.AreEqual(a1 >> b1, r1); + + uint4x3 a2 = uint4x3(763607760, 1568185874, 774126687, 1587054000, 600069797, 29576474, 1880981389, 352174824, 1164508476, 425441430, 186542511, 1099859381); + int b2 = (348013684); + uint4x3 r2 = uint4x3(728, 1495, 738, 1513, 572, 28, 1793, 335, 1110, 405, 177, 1048); + TestUtils.AreEqual(a2 >> b2, r2); + + uint4x3 a3 = uint4x3(1234295294, 761662151, 1254855819, 903402043, 1180315725, 182990778, 958706431, 1075621082, 1409488892, 1576738052, 700893981, 1435331003); + int b3 = (1028666766); + uint4x3 r3 = uint4x3(75335, 46488, 76590, 55139, 72040, 11168, 58514, 65650, 86028, 96236, 42779, 87605); + TestUtils.AreEqual(a3 >> b3, r3); + } + + [TestCompiler] + public static void uint4x3_operator_bitwise_not() + { + uint4x3 a0 = uint4x3(1403358969, 831360921, 2088190243, 976721016, 878283189, 308994339, 1935567517, 1420884856, 472965491, 771711426, 627580960, 2061524024); + uint4x3 r0 = uint4x3(2891608326, 3463606374, 2206777052, 3318246279, 3416684106, 3985972956, 2359399778, 2874082439, 3822001804, 3523255869, 3667386335, 2233443271); + TestUtils.AreEqual(~a0, r0); + + uint4x3 a1 = uint4x3(753208488, 1303022493, 664744603, 1289372466, 1635981125, 1951018596, 1545651937, 717936457, 1284504687, 1342785385, 869629475, 2045854321); + uint4x3 r1 = uint4x3(3541758807, 2991944802, 3630222692, 3005594829, 2658986170, 2343948699, 2749315358, 3577030838, 3010462608, 2952181910, 3425337820, 2249112974); + TestUtils.AreEqual(~a1, r1); + + uint4x3 a2 = uint4x3(1282546942, 1824824810, 1736570715, 508906058, 2060752880, 1867418756, 388530274, 695179852, 1766938039, 897923626, 1816190464, 1362906829); + uint4x3 r2 = uint4x3(3012420353, 2470142485, 2558396580, 3786061237, 2234214415, 2427548539, 3906437021, 3599787443, 2528029256, 3397043669, 2478776831, 2932060466); + TestUtils.AreEqual(~a2, r2); + + uint4x3 a3 = uint4x3(1227946838, 189609278, 956441808, 2123488810, 1593014251, 19223061, 1722107954, 1636875694, 1914097392, 1382545027, 1285277010, 722020848); + uint4x3 r3 = uint4x3(3067020457, 4105358017, 3338525487, 2171478485, 2701953044, 4275744234, 2572859341, 2658091601, 2380869903, 2912422268, 3009690285, 3572946447); + TestUtils.AreEqual(~a3, r3); + } + + + } +} diff --git a/package/Tests/Tests/Shared/TestUint4x3.gen.cs.meta b/package/Tests/Tests/Shared/TestUint4x3.gen.cs.meta new file mode 100755 index 000000000..4c46c9277 --- /dev/null +++ b/package/Tests/Tests/Shared/TestUint4x3.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 2459d4a10dea40e469cb5f05b3fa80c2 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/package/Tests/Tests/Shared/TestUint4x4.gen.cs b/package/Tests/Tests/Shared/TestUint4x4.gen.cs new file mode 100755 index 000000000..13b277375 --- /dev/null +++ b/package/Tests/Tests/Shared/TestUint4x4.gen.cs @@ -0,0 +1,1258 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ +using NUnit.Framework; +using static Unity.Mathematics.math; +using Burst.Compiler.IL.Tests; + +namespace Unity.Mathematics.Tests +{ + [TestFixture] + public class TestUint4x4 + { + [TestCompiler] + public static void uint4x4_zero() + { + TestUtils.AreEqual(uint4x4.zero.c0.x, 0u); + TestUtils.AreEqual(uint4x4.zero.c0.y, 0u); + TestUtils.AreEqual(uint4x4.zero.c0.z, 0u); + TestUtils.AreEqual(uint4x4.zero.c0.w, 0u); + TestUtils.AreEqual(uint4x4.zero.c1.x, 0u); + TestUtils.AreEqual(uint4x4.zero.c1.y, 0u); + TestUtils.AreEqual(uint4x4.zero.c1.z, 0u); + TestUtils.AreEqual(uint4x4.zero.c1.w, 0u); + TestUtils.AreEqual(uint4x4.zero.c2.x, 0u); + TestUtils.AreEqual(uint4x4.zero.c2.y, 0u); + TestUtils.AreEqual(uint4x4.zero.c2.z, 0u); + TestUtils.AreEqual(uint4x4.zero.c2.w, 0u); + TestUtils.AreEqual(uint4x4.zero.c3.x, 0u); + TestUtils.AreEqual(uint4x4.zero.c3.y, 0u); + TestUtils.AreEqual(uint4x4.zero.c3.z, 0u); + TestUtils.AreEqual(uint4x4.zero.c3.w, 0u); + } + + [TestCompiler] + public static void uint4x4_identity() + { + TestUtils.AreEqual(uint4x4.identity.c0.x, 1u); + TestUtils.AreEqual(uint4x4.identity.c0.y, 0u); + TestUtils.AreEqual(uint4x4.identity.c0.z, 0u); + TestUtils.AreEqual(uint4x4.identity.c0.w, 0u); + TestUtils.AreEqual(uint4x4.identity.c1.x, 0u); + TestUtils.AreEqual(uint4x4.identity.c1.y, 1u); + TestUtils.AreEqual(uint4x4.identity.c1.z, 0u); + TestUtils.AreEqual(uint4x4.identity.c1.w, 0u); + TestUtils.AreEqual(uint4x4.identity.c2.x, 0u); + TestUtils.AreEqual(uint4x4.identity.c2.y, 0u); + TestUtils.AreEqual(uint4x4.identity.c2.z, 1u); + TestUtils.AreEqual(uint4x4.identity.c2.w, 0u); + TestUtils.AreEqual(uint4x4.identity.c3.x, 0u); + TestUtils.AreEqual(uint4x4.identity.c3.y, 0u); + TestUtils.AreEqual(uint4x4.identity.c3.z, 0u); + TestUtils.AreEqual(uint4x4.identity.c3.w, 1u); + } + + [TestCompiler] + public static void uint4x4_operator_equal_wide_wide() + { + uint4x4 a0 = uint4x4(790229414, 970783976, 1428432738, 1578747135, 1733797753, 2001507228, 1446876437, 1777406370, 1426387268, 1809275021, 1843770816, 1172185222, 1469608940, 869874758, 458603090, 581282460); + uint4x4 b0 = uint4x4(612337669, 1214209108, 2120643427, 295461214, 1510890331, 1893316566, 921816149, 1834958575, 1482011863, 2062852792, 226398742, 770290735, 36812057, 543224481, 1565350150, 1909926604); + bool4x4 r0 = bool4x4(false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + uint4x4 a1 = uint4x4(1948324909, 1129078206, 1638391029, 1135553683, 2079295200, 576232476, 608208235, 11172509, 1025529486, 2095601864, 193500113, 1780908384, 1587636094, 1892083815, 1250768669, 1984341771); + uint4x4 b1 = uint4x4(1619900436, 1849990483, 1261604411, 161864811, 843379453, 1780425458, 215681636, 2123130580, 708665810, 1902328998, 1808456602, 563830672, 200493241, 1391620681, 1035522654, 168447603); + bool4x4 r1 = bool4x4(false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + uint4x4 a2 = uint4x4(929607871, 2092475304, 1940221590, 196567546, 346458180, 2131041239, 1797649913, 162082500, 25639548, 1665178642, 1617231933, 1716426491, 1986475699, 262354389, 1517004243, 1058579789); + uint4x4 b2 = uint4x4(91580624, 1974459648, 2074899534, 164782857, 1647410210, 1000391363, 1539243411, 1253927304, 894227825, 1897420927, 826437109, 139868307, 565247534, 1437897788, 1891416649, 1043772546); + bool4x4 r2 = bool4x4(false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + uint4x4 a3 = uint4x4(1006521329, 850817587, 270689979, 182908990, 512098264, 1555870818, 1824899010, 913664406, 38410741, 1365981133, 1517827659, 698699317, 522637780, 2135467596, 1812545145, 795262261); + uint4x4 b3 = uint4x4(407784873, 516627611, 184196508, 1098113599, 1930819007, 693573550, 780517021, 48392683, 638156511, 356540844, 86920844, 103170762, 1952606997, 1374974056, 906153405, 602525178); + bool4x4 r3 = bool4x4(false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void uint4x4_operator_equal_wide_scalar() + { + uint4x4 a0 = uint4x4(1211464300, 1921862607, 508076684, 1249127920, 1394594555, 746862310, 1733655277, 1884008277, 1682018538, 795585660, 936027116, 927605411, 672785749, 1465584610, 585324157, 404448210); + uint b0 = (746972502); + bool4x4 r0 = bool4x4(false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + uint4x4 a1 = uint4x4(969511077, 1772925698, 1884034177, 451512860, 425476075, 1370577708, 597010220, 1249636005, 211986678, 1305479811, 255635293, 1150443719, 177122433, 511346787, 1442445694, 667984966); + uint b1 = (442746747); + bool4x4 r1 = bool4x4(false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + uint4x4 a2 = uint4x4(1684122010, 172230876, 496695881, 955604291, 872759249, 811880239, 1604334190, 443527663, 1734064824, 1483978726, 1018945528, 476526026, 564821616, 1368099334, 2134154866, 2136028886); + uint b2 = (1962874832); + bool4x4 r2 = bool4x4(false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + uint4x4 a3 = uint4x4(20195989, 1256964339, 165389004, 759951440, 321496427, 551284899, 2058550111, 2146975562, 1182607877, 1588866146, 1478019984, 733564558, 1504896105, 284238873, 1641065069, 259620445); + uint b3 = (550465422); + bool4x4 r3 = bool4x4(false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void uint4x4_operator_equal_scalar_wide() + { + uint a0 = (1150044438); + uint4x4 b0 = uint4x4(233855098, 924242519, 1402948791, 601381975, 2120518068, 629187703, 1971977031, 47183124, 1061805787, 1009011238, 312511148, 1460673064, 737210539, 1737844479, 1892405453, 2133024000); + bool4x4 r0 = bool4x4(false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a0 == b0, r0); + + uint a1 = (455818693); + uint4x4 b1 = uint4x4(2003197687, 1276241219, 534746610, 559824292, 1758388240, 1023494292, 719963017, 1883763832, 597498209, 367814403, 1839429063, 223575614, 79701214, 1699606118, 759455864, 2017599457); + bool4x4 r1 = bool4x4(false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 == b1, r1); + + uint a2 = (1395605233); + uint4x4 b2 = uint4x4(1191785903, 1156248212, 338891967, 61410415, 1576985758, 1066598856, 1070606918, 1295956934, 1391539053, 1206456305, 466211205, 1362213007, 554347592, 361925309, 1122476040, 1118155036); + bool4x4 r2 = bool4x4(false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 == b2, r2); + + uint a3 = (2074160001); + uint4x4 b3 = uint4x4(211145132, 1330427155, 231737739, 590220146, 622950505, 2048231874, 682985774, 865101790, 1523019859, 261373300, 132547968, 1971091157, 982104573, 1456888767, 1700538931, 1590557254); + bool4x4 r3 = bool4x4(false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 == b3, r3); + } + + [TestCompiler] + public static void uint4x4_operator_not_equal_wide_wide() + { + uint4x4 a0 = uint4x4(1660932106, 982847023, 97046264, 1739517447, 1253499180, 1830584069, 1841470429, 1397841646, 1770890135, 1906548631, 169082967, 2099271786, 1909317609, 46519139, 1433204003, 931492669); + uint4x4 b0 = uint4x4(107139049, 75478496, 2055495054, 358586687, 942338347, 111564990, 113811950, 948912488, 1080084121, 1400504872, 1032134499, 1061123400, 221862069, 858950046, 989094643, 2023070999); + bool4x4 r0 = bool4x4(true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + uint4x4 a1 = uint4x4(670504132, 1551558665, 1204055048, 1623586740, 226381077, 1145987803, 644253929, 475189890, 922313145, 2006448607, 1574579050, 1839580033, 155350910, 313644534, 2008975915, 1072866331); + uint4x4 b1 = uint4x4(1269317127, 531883744, 687761409, 278427731, 296354221, 536981557, 1134676193, 1749879634, 1944210269, 92849031, 164029425, 628797607, 2069207270, 2022667842, 880567401, 264404537); + bool4x4 r1 = bool4x4(true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + uint4x4 a2 = uint4x4(10845678, 1588544505, 709736932, 1892341087, 1603981028, 1174123795, 2033630343, 416869471, 1894155826, 2084120548, 1130129683, 448491949, 1577220741, 376532834, 374116875, 416935463); + uint4x4 b2 = uint4x4(1954996717, 572153302, 865957902, 1083128726, 1628120900, 2020212393, 1562290229, 774641416, 444123152, 1636477381, 838643638, 506474707, 922761058, 1282331425, 1748402545, 1493297323); + bool4x4 r2 = bool4x4(true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + uint4x4 a3 = uint4x4(1370971537, 526135879, 1693615335, 1040142702, 51869182, 636351650, 1137389277, 742650911, 1652337799, 128512016, 943930500, 1281758501, 1506504768, 1142416208, 489425068, 709011851); + uint4x4 b3 = uint4x4(881583266, 836740859, 2050520235, 56355243, 923319881, 2093941797, 1966851287, 740544328, 1686486765, 1564852763, 1583872597, 1319685687, 1082069798, 1934459521, 610009662, 2003062130); + bool4x4 r3 = bool4x4(true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void uint4x4_operator_not_equal_wide_scalar() + { + uint4x4 a0 = uint4x4(747758183, 1033001286, 1439973882, 2138928797, 1197845089, 1432672459, 950170763, 238704450, 2105962247, 727205263, 1640688041, 276313906, 2126300423, 791998981, 2035077187, 1171827730); + uint b0 = (248693828); + bool4x4 r0 = bool4x4(true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + uint4x4 a1 = uint4x4(1412347883, 768370497, 1072798259, 1808712713, 1497830076, 1582645163, 1876273820, 90244766, 30493685, 904014575, 384643370, 11554610, 2016093187, 1515760622, 1596313927, 363921847); + uint b1 = (1622176923); + bool4x4 r1 = bool4x4(true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + uint4x4 a2 = uint4x4(1555396158, 1739138988, 1916670251, 1516209113, 765258490, 668154629, 1509386069, 1670155205, 6112585, 1942607934, 964072392, 779222124, 409389668, 321500037, 1728722181, 1641292942); + uint b2 = (913218907); + bool4x4 r2 = bool4x4(true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + uint4x4 a3 = uint4x4(780105497, 1311007738, 2079744789, 1086529117, 898347399, 1597839770, 1711183709, 2048684031, 1167351404, 528657884, 565527393, 227149840, 89869060, 1358928288, 44374114, 2059875706); + uint b3 = (1302143939); + bool4x4 r3 = bool4x4(true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void uint4x4_operator_not_equal_scalar_wide() + { + uint a0 = (2076921066); + uint4x4 b0 = uint4x4(2037494727, 1989050616, 48833929, 1897435904, 514354517, 1783749164, 364694471, 754315072, 124108032, 1512967900, 1178825850, 1854793298, 50286949, 2100802631, 1640811853, 82110247); + bool4x4 r0 = bool4x4(true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 != b0, r0); + + uint a1 = (472172806); + uint4x4 b1 = uint4x4(266984506, 2003668365, 1826089250, 1041416160, 356140110, 2057237962, 799920703, 1916347720, 510966350, 572038024, 1936481966, 1366859342, 1775285431, 604757336, 1047551607, 1311703338); + bool4x4 r1 = bool4x4(true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 != b1, r1); + + uint a2 = (676012224); + uint4x4 b2 = uint4x4(627370253, 1715733805, 699755913, 1875151666, 358894860, 1036873378, 214171973, 340364269, 1652250278, 592713982, 806342921, 1264065574, 188560943, 1068608955, 485382245, 57935167); + bool4x4 r2 = bool4x4(true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 != b2, r2); + + uint a3 = (1002934795); + uint4x4 b3 = uint4x4(1859322106, 1990390938, 1674000894, 1035504906, 1681354617, 2079296301, 1396396873, 2128571831, 3388167, 1211711140, 575696152, 1534939377, 496306248, 908210564, 131274243, 543089960); + bool4x4 r3 = bool4x4(true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 != b3, r3); + } + + [TestCompiler] + public static void uint4x4_operator_less_wide_wide() + { + uint4x4 a0 = uint4x4(1182186063, 415538999, 1667335818, 1566618442, 1166180837, 639095188, 1080836365, 771119973, 928263233, 789225474, 665243110, 1003542034, 1032480172, 1961336172, 923379558, 21210619); + uint4x4 b0 = uint4x4(524633529, 1032195686, 760723389, 1505751409, 431962172, 1287906509, 1560084663, 1450178202, 2066166337, 1107069023, 1640077524, 2103263105, 684229139, 1234033624, 1278743281, 1953079347); + bool4x4 r0 = bool4x4(false, true, false, false, false, true, true, true, true, true, true, true, false, false, true, true); + TestUtils.AreEqual(a0 < b0, r0); + + uint4x4 a1 = uint4x4(1089772116, 1707633052, 778986024, 158153146, 336715101, 1839141169, 1706859710, 1928438162, 1638101724, 2044698552, 1543260981, 471462349, 1668575142, 2147199161, 946870864, 582371851); + uint4x4 b1 = uint4x4(1228832942, 2082539723, 1088437561, 1058382082, 207459172, 750531081, 2015788562, 2126542133, 271967348, 1601249324, 1373999400, 1689592186, 459759541, 983106679, 332584818, 2034921203); + bool4x4 r1 = bool4x4(true, true, true, true, false, false, true, true, false, false, false, true, false, false, false, true); + TestUtils.AreEqual(a1 < b1, r1); + + uint4x4 a2 = uint4x4(410751553, 198134393, 1999935258, 671192178, 1908013191, 770353922, 1948420002, 396403395, 903274624, 1743415547, 1381528376, 409818366, 757370593, 413964581, 1088722047, 111511218); + uint4x4 b2 = uint4x4(833499488, 1999487070, 836063897, 1987309319, 1878327039, 457783938, 253010953, 1164175257, 1982277686, 651412210, 567444942, 1863256363, 18040866, 319226483, 1322530114, 4130283); + bool4x4 r2 = bool4x4(true, true, false, true, false, false, false, true, true, false, false, true, false, false, true, false); + TestUtils.AreEqual(a2 < b2, r2); + + uint4x4 a3 = uint4x4(1772570968, 339779528, 1817654169, 126606875, 1748258817, 1840719780, 603645478, 1888655831, 63356146, 79832055, 736652918, 653392827, 423681122, 1242116477, 422099316, 898587272); + uint4x4 b3 = uint4x4(1951703613, 873360222, 2076434739, 802037827, 57389233, 1812417589, 13678411, 1415564189, 983023904, 1112076825, 2078443288, 1990790258, 482361677, 1981894392, 351965695, 585483077); + bool4x4 r3 = bool4x4(true, true, true, true, false, false, false, false, true, true, true, true, true, true, false, false); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void uint4x4_operator_less_wide_scalar() + { + uint4x4 a0 = uint4x4(608447185, 818840405, 869219329, 2080125385, 1214500548, 1361741203, 1667165786, 1615392341, 840091491, 469591900, 1247103789, 315321650, 930950514, 1100560246, 933855388, 908563901); + uint b0 = (1491216667); + bool4x4 r0 = bool4x4(true, true, true, false, true, true, false, false, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 < b0, r0); + + uint4x4 a1 = uint4x4(1127696709, 380753337, 971148054, 1827886929, 1056649851, 1579735991, 689044913, 1960894027, 371987110, 867559111, 1703747625, 1698536333, 41716206, 243673862, 1274625476, 611065092); + uint b1 = (1286331950); + bool4x4 r1 = bool4x4(true, true, true, false, true, false, true, false, true, true, false, false, true, true, true, true); + TestUtils.AreEqual(a1 < b1, r1); + + uint4x4 a2 = uint4x4(118750042, 452204442, 1645191336, 1829152606, 1891059504, 1217893177, 233590785, 894500093, 92899312, 965973603, 1496873003, 973411415, 694702440, 215973795, 1555455579, 1443255493); + uint b2 = (1829327996); + bool4x4 r2 = bool4x4(true, true, true, true, false, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 < b2, r2); + + uint4x4 a3 = uint4x4(212954934, 1031281872, 1389987778, 928043903, 434566816, 1386588061, 180174416, 119231358, 842513438, 494182092, 2110901808, 2064339655, 798375285, 225918038, 2119961960, 1851740205); + uint b3 = (519181838); + bool4x4 r3 = bool4x4(true, false, false, false, true, false, true, true, false, true, false, false, false, true, false, false); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void uint4x4_operator_less_scalar_wide() + { + uint a0 = (548436837); + uint4x4 b0 = uint4x4(282703327, 14370648, 1862117300, 1304793311, 826073259, 988910157, 445132446, 1139670255, 111349251, 1102440676, 112183144, 1594415311, 1890019295, 2098715503, 608933527, 183989010); + bool4x4 r0 = bool4x4(false, false, true, true, true, true, false, true, false, true, false, true, true, true, true, false); + TestUtils.AreEqual(a0 < b0, r0); + + uint a1 = (1596056507); + uint4x4 b1 = uint4x4(1027318999, 146281093, 358911716, 874278078, 1106057699, 1256807459, 2111973919, 1736480659, 810406400, 1329939911, 1276652605, 593690439, 771851138, 590897155, 386688344, 1290583204); + bool4x4 r1 = bool4x4(false, false, false, false, false, false, true, true, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 < b1, r1); + + uint a2 = (1984930954); + uint4x4 b2 = uint4x4(743544838, 1473400608, 1300775973, 1351720916, 168788814, 670661854, 168118205, 894264935, 1763013903, 1647476162, 699045651, 1813273687, 900504872, 1574770031, 1684716245, 1458270033); + bool4x4 r2 = bool4x4(false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a2 < b2, r2); + + uint a3 = (685700324); + uint4x4 b3 = uint4x4(697607066, 378454814, 1198070277, 1821642406, 1324129275, 905046836, 1897627028, 1715796299, 15666859, 1806453893, 1315963488, 545979816, 1486981760, 511543521, 1872978447, 303832107); + bool4x4 r3 = bool4x4(true, false, true, true, true, true, true, true, false, true, true, false, true, false, true, false); + TestUtils.AreEqual(a3 < b3, r3); + } + + [TestCompiler] + public static void uint4x4_operator_greater_wide_wide() + { + uint4x4 a0 = uint4x4(592884447, 2133928932, 918957182, 1284069471, 194584707, 739120780, 241654068, 1340158550, 2099542537, 1182623667, 1399607274, 789301637, 180400925, 594688333, 1877031463, 1360073500); + uint4x4 b0 = uint4x4(138737040, 192863971, 1700841444, 1044631301, 1391589821, 730837695, 253553987, 2078872742, 910845808, 976047676, 202633078, 1223618940, 641600530, 1830470354, 1570701388, 1104256103); + bool4x4 r0 = bool4x4(true, true, false, true, false, true, false, false, true, true, true, false, false, false, true, true); + TestUtils.AreEqual(a0 > b0, r0); + + uint4x4 a1 = uint4x4(1091782422, 546676424, 348221770, 716039145, 458742739, 1365508046, 1523167942, 1574478622, 1295065160, 715285504, 1130323487, 677530432, 1496919050, 12463046, 1106153111, 1315083485); + uint4x4 b1 = uint4x4(1838646932, 740166101, 1549021845, 1457092873, 1790630950, 907793213, 555122804, 1418910265, 335209251, 1094341422, 1465325455, 390251369, 910309992, 277356652, 1601082764, 771366966); + bool4x4 r1 = bool4x4(false, false, false, false, false, true, true, true, true, false, false, true, true, false, false, true); + TestUtils.AreEqual(a1 > b1, r1); + + uint4x4 a2 = uint4x4(31516321, 1786538920, 1854361210, 1730650972, 194806663, 517304937, 984608679, 1847934645, 1214605555, 535405194, 855415884, 2121416263, 1161116500, 1390730698, 1536558799, 350939762); + uint4x4 b2 = uint4x4(1782348324, 550490783, 599992449, 550520692, 1873014441, 1756459971, 2028992071, 1772761768, 1323261715, 1541822212, 265732078, 1773940614, 156425055, 1585395425, 438682493, 1005143622); + bool4x4 r2 = bool4x4(false, true, true, true, false, false, false, true, false, false, true, true, true, false, true, false); + TestUtils.AreEqual(a2 > b2, r2); + + uint4x4 a3 = uint4x4(475547465, 876276892, 916067531, 1712032702, 752041926, 899534759, 948020518, 1553126337, 1209858994, 1210234744, 1065677570, 2063434729, 1808415708, 1536857930, 1356745398, 1161445540); + uint4x4 b3 = uint4x4(594141080, 1888303265, 1023987839, 695072711, 164764812, 1404792693, 1068554108, 1615410626, 387184925, 1930375043, 1920744920, 1913267890, 12598306, 1697936155, 145255547, 1903607817); + bool4x4 r3 = bool4x4(false, false, false, true, true, false, false, false, true, false, false, true, true, false, true, false); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void uint4x4_operator_greater_wide_scalar() + { + uint4x4 a0 = uint4x4(1097138316, 211763648, 1883002501, 56406996, 43662641, 1923456111, 1437755186, 1219010035, 2125058448, 304028799, 893125636, 48044515, 711945018, 1035679270, 577943770, 572743717); + uint b0 = (438688675); + bool4x4 r0 = bool4x4(true, false, true, false, false, true, true, true, true, false, true, false, true, true, true, true); + TestUtils.AreEqual(a0 > b0, r0); + + uint4x4 a1 = uint4x4(1016617211, 1577403353, 64009107, 1462961460, 1143565920, 3715845, 689362811, 263973424, 1045140419, 1058332184, 524569092, 1183316983, 1107974092, 212839726, 523727054, 112709358); + uint b1 = (2063134811); + bool4x4 r1 = bool4x4(false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a1 > b1, r1); + + uint4x4 a2 = uint4x4(614746280, 1683117650, 1451781409, 61102732, 1284938191, 1452639553, 2125085618, 467075658, 1019531089, 2028286621, 940955706, 1037153304, 1184928188, 1260010015, 1456174269, 174216269); + uint b2 = (1000986708); + bool4x4 r2 = bool4x4(false, true, true, false, true, true, true, false, true, true, false, true, true, true, true, false); + TestUtils.AreEqual(a2 > b2, r2); + + uint4x4 a3 = uint4x4(1930086291, 2112194236, 1797322269, 1781660503, 1442606402, 208047803, 1193639690, 1939917219, 1146005869, 865123927, 913186094, 35693052, 1017084356, 91189073, 369398582, 2082818804); + uint b3 = (108635332); + bool4x4 r3 = bool4x4(true, true, true, true, true, true, true, true, true, true, true, false, true, false, true, true); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void uint4x4_operator_greater_scalar_wide() + { + uint a0 = (2024896938); + uint4x4 b0 = uint4x4(599356784, 185671342, 1932327391, 2025591013, 1257191721, 1312388500, 1443698859, 779217735, 691047512, 741776730, 732565983, 668302204, 1556466996, 858599525, 1896917159, 701542098); + bool4x4 r0 = bool4x4(true, true, true, false, true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 > b0, r0); + + uint a1 = (1052151621); + uint4x4 b1 = uint4x4(1023307544, 1435392907, 1858177345, 299897686, 632930355, 1387203601, 483722222, 863042711, 1713088900, 315569296, 292652611, 1002628348, 927789921, 108145064, 425005337, 2093233588); + bool4x4 r1 = bool4x4(true, false, false, true, true, false, true, true, false, true, true, true, true, true, true, false); + TestUtils.AreEqual(a1 > b1, r1); + + uint a2 = (2063431853); + uint4x4 b2 = uint4x4(2079035844, 849337819, 1769234051, 358948261, 267985383, 126402553, 2055164423, 577620406, 1167389614, 474380256, 1163355187, 1782967398, 1648397169, 845981950, 630459977, 1033887217); + bool4x4 r2 = bool4x4(false, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a2 > b2, r2); + + uint a3 = (1480829811); + uint4x4 b3 = uint4x4(1903710461, 402220631, 266619022, 1724999252, 2113910076, 945951388, 1448605169, 1162548302, 1691586468, 996819204, 1151046248, 1924073034, 1910741238, 633631666, 307560646, 722552263); + bool4x4 r3 = bool4x4(false, true, true, false, false, true, true, true, false, true, true, false, false, true, true, true); + TestUtils.AreEqual(a3 > b3, r3); + } + + [TestCompiler] + public static void uint4x4_operator_less_equal_wide_wide() + { + uint4x4 a0 = uint4x4(1577248162, 2043073061, 1688380407, 176431985, 223299035, 1502802140, 1691709825, 386789394, 117182003, 1665770435, 1958490731, 420032601, 1251092689, 2011681765, 749743684, 183784440); + uint4x4 b0 = uint4x4(903445031, 2108974565, 210822256, 1281704747, 453681718, 66138830, 1229799377, 1620922595, 1715833766, 1366430432, 13102000, 46919981, 486470891, 1709514236, 2145785285, 854254454); + bool4x4 r0 = bool4x4(false, true, false, true, true, false, false, true, true, false, false, false, false, false, true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + uint4x4 a1 = uint4x4(1150674774, 1633828822, 1719442172, 336047314, 743733218, 1393995865, 1854442658, 1498138884, 912169992, 1992682021, 1619593455, 1883313982, 483412430, 857881876, 346624138, 531961063); + uint4x4 b1 = uint4x4(1273278658, 810263315, 1862773824, 201799013, 974166844, 1320622967, 2058099616, 522102017, 620752145, 1213693681, 1281818305, 1564146162, 1996153080, 1201909516, 614401396, 224997397); + bool4x4 r1 = bool4x4(true, false, true, false, true, false, true, false, false, false, false, false, true, true, true, false); + TestUtils.AreEqual(a1 <= b1, r1); + + uint4x4 a2 = uint4x4(269897278, 1062947703, 1743454202, 2048964070, 1379786452, 622697214, 766589782, 339960970, 1135815654, 797344244, 153103264, 1382144646, 1537448323, 326850885, 1004891948, 2002658522); + uint4x4 b2 = uint4x4(648547686, 418431167, 1724009726, 401891826, 1463971422, 984323887, 1246893281, 1340476720, 1489579748, 128991539, 1117574406, 2016340116, 69682660, 1870772739, 1281621445, 129331822); + bool4x4 r2 = bool4x4(true, false, false, false, true, true, true, true, true, false, true, true, false, true, true, false); + TestUtils.AreEqual(a2 <= b2, r2); + + uint4x4 a3 = uint4x4(442205781, 1050725689, 995151913, 926131462, 719271722, 1981390876, 659121091, 797556380, 1656192110, 66093862, 1964540799, 71894133, 1413886687, 1028466491, 1397158841, 1544483525); + uint4x4 b3 = uint4x4(1168998468, 1205894972, 1079707717, 1335643913, 1590790195, 155622033, 898990095, 1384002796, 1664888803, 1004528037, 402969524, 1299806519, 1194091234, 1673771542, 178191331, 98165007); + bool4x4 r3 = bool4x4(true, true, true, true, true, false, true, true, true, true, false, true, false, true, false, false); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void uint4x4_operator_less_equal_wide_scalar() + { + uint4x4 a0 = uint4x4(1722165358, 1219858357, 860410743, 411099660, 348104022, 1963256951, 212084836, 58924407, 1459242706, 1745758438, 532949158, 262559763, 690091301, 1806172431, 2091514001, 1857173043); + uint b0 = (1688048545); + bool4x4 r0 = bool4x4(false, true, true, true, true, false, true, true, true, false, true, true, true, false, false, false); + TestUtils.AreEqual(a0 <= b0, r0); + + uint4x4 a1 = uint4x4(1617221948, 804204255, 981729559, 2032949254, 910922522, 2079225209, 26179915, 238796519, 1917813750, 1258115260, 20607406, 1337879822, 959460446, 1599429457, 1279143037, 1551937606); + uint b1 = (2017733017); + bool4x4 r1 = bool4x4(true, true, true, false, true, false, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a1 <= b1, r1); + + uint4x4 a2 = uint4x4(626254356, 1021674613, 127839058, 1974631244, 426908235, 1818566980, 487782623, 1454736163, 465255784, 686095683, 2012624010, 1427922646, 1129062501, 1896996725, 1609784025, 1413823266); + uint b2 = (1162369122); + bool4x4 r2 = bool4x4(true, true, true, false, true, false, true, false, true, true, false, false, true, false, false, false); + TestUtils.AreEqual(a2 <= b2, r2); + + uint4x4 a3 = uint4x4(1483727269, 1823599046, 1379007149, 1836699751, 777126023, 1288116795, 834230828, 172303141, 577773919, 705141691, 191477430, 868528232, 499782260, 146328981, 1401289768, 858105804); + uint b3 = (2045244870); + bool4x4 r3 = bool4x4(true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void uint4x4_operator_less_equal_scalar_wide() + { + uint a0 = (1777585); + uint4x4 b0 = uint4x4(1181030049, 1787703989, 1729760948, 1816537388, 1359786460, 874999193, 1678863148, 1711365839, 762067160, 11953554, 1131583906, 1175393186, 1293698493, 48893340, 66196247, 1958607116); + bool4x4 r0 = bool4x4(true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true); + TestUtils.AreEqual(a0 <= b0, r0); + + uint a1 = (1576473309); + uint4x4 b1 = uint4x4(861890786, 478252419, 957887737, 117849810, 1348693584, 105489302, 259034238, 530713566, 601413850, 830430286, 145552297, 1697295044, 1150680564, 2091065664, 1796096704, 1572008712); + bool4x4 r1 = bool4x4(false, false, false, false, false, false, false, false, false, false, false, true, false, true, true, false); + TestUtils.AreEqual(a1 <= b1, r1); + + uint a2 = (1556906486); + uint4x4 b2 = uint4x4(205552788, 620963188, 1156705971, 1121867260, 733876180, 1570208446, 541165966, 644414754, 734807383, 938714737, 591783460, 56988751, 790541516, 1811299247, 1308256680, 549490410); + bool4x4 r2 = bool4x4(false, false, false, false, false, true, false, false, false, false, false, false, false, true, false, false); + TestUtils.AreEqual(a2 <= b2, r2); + + uint a3 = (1987696011); + uint4x4 b3 = uint4x4(1079808067, 363499438, 1873483674, 2031411422, 1979820112, 1682214687, 1470726710, 1285823822, 758372610, 44568907, 1533310851, 14070795, 1758870243, 68371537, 1482970849, 1750868121); + bool4x4 r3 = bool4x4(false, false, false, true, false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 <= b3, r3); + } + + [TestCompiler] + public static void uint4x4_operator_greater_equal_wide_wide() + { + uint4x4 a0 = uint4x4(263000030, 744235661, 1893760267, 237248, 1062370984, 1676977687, 816766880, 1089431546, 1394493730, 1176473380, 1193988637, 1703862455, 1806186947, 1253571980, 589397635, 1951842887); + uint4x4 b0 = uint4x4(1395535146, 1178373944, 1237373760, 1364855321, 600811864, 362060472, 290870624, 1839067862, 396958580, 1336888643, 1019684398, 1697684196, 1227300220, 2044269675, 1898323839, 874509380); + bool4x4 r0 = bool4x4(false, false, true, false, true, true, true, false, true, false, true, true, true, false, false, true); + TestUtils.AreEqual(a0 >= b0, r0); + + uint4x4 a1 = uint4x4(798931197, 808426484, 744869638, 1959531616, 207430702, 1533946595, 1148381840, 2011549474, 605043041, 1707339660, 2038122892, 345761584, 1839156338, 1519670644, 2131285427, 775457686); + uint4x4 b1 = uint4x4(1873505472, 1268843918, 1606949562, 1263896445, 1805518202, 1412091359, 1240330374, 1955056253, 2025187918, 750755999, 869709740, 1390799279, 1194035112, 666460047, 103451220, 1311530792); + bool4x4 r1 = bool4x4(false, false, false, true, false, true, false, true, false, true, true, false, true, true, true, false); + TestUtils.AreEqual(a1 >= b1, r1); + + uint4x4 a2 = uint4x4(796452624, 1710612922, 1629927787, 1094198224, 584910611, 1129457941, 1633221450, 549302356, 1363234393, 1439226634, 190984179, 983870135, 1527743888, 1577171227, 87278918, 1280094665); + uint4x4 b2 = uint4x4(802468307, 1090745055, 1968071275, 1935027815, 2060060582, 1535954082, 291771096, 565856573, 1445999374, 711693364, 1201086888, 2076705104, 1565110852, 1698318173, 1293071569, 103979482); + bool4x4 r2 = bool4x4(false, true, false, false, false, false, true, false, false, true, false, false, false, false, false, true); + TestUtils.AreEqual(a2 >= b2, r2); + + uint4x4 a3 = uint4x4(1030060516, 615638735, 1677201099, 325128466, 930989694, 165845388, 1887735446, 1905061476, 644732756, 1450709301, 811708233, 1120546613, 1966081819, 1710484814, 390900048, 1847748897); + uint4x4 b3 = uint4x4(222415803, 345913533, 920804419, 784455413, 1919795492, 2125545957, 957291149, 1547385242, 953814071, 685286053, 63764322, 1742849383, 1781391465, 64816935, 1543363698, 1439322689); + bool4x4 r3 = bool4x4(true, true, true, false, false, false, true, true, false, true, true, false, true, true, false, true); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void uint4x4_operator_greater_equal_wide_scalar() + { + uint4x4 a0 = uint4x4(2112791350, 1043657935, 101764761, 1529909067, 556026890, 281734132, 1186600258, 815093894, 609211196, 1604309397, 829548642, 244604867, 1419295004, 471843809, 1819986195, 1460027917); + uint b0 = (1470533736); + bool4x4 r0 = bool4x4(true, false, false, true, false, false, false, false, false, true, false, false, false, false, true, false); + TestUtils.AreEqual(a0 >= b0, r0); + + uint4x4 a1 = uint4x4(1646290021, 1596738181, 1905036391, 1771391775, 1584946560, 370941146, 440219668, 1607345862, 1449142607, 1223010129, 379014762, 1719435169, 258833609, 1389585003, 612593660, 42612027); + uint b1 = (196833647); + bool4x4 r1 = bool4x4(true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, false); + TestUtils.AreEqual(a1 >= b1, r1); + + uint4x4 a2 = uint4x4(1138747386, 917503963, 353608194, 1526792895, 192092521, 909358617, 367754234, 1738737389, 523396822, 594728703, 1332667659, 1627604854, 1542713928, 1997611484, 191413337, 1230701700); + uint b2 = (1491562090); + bool4x4 r2 = bool4x4(false, false, false, true, false, false, false, true, false, false, false, true, true, true, false, false); + TestUtils.AreEqual(a2 >= b2, r2); + + uint4x4 a3 = uint4x4(702382564, 1013770865, 1420374964, 341399575, 2033070823, 672716789, 1809028740, 2070046852, 1254367930, 1206207650, 807585496, 1243142372, 350377587, 214724394, 216954982, 201992840); + uint b3 = (2086058548); + bool4x4 r3 = bool4x4(false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void uint4x4_operator_greater_equal_scalar_wide() + { + uint a0 = (1525542481); + uint4x4 b0 = uint4x4(1503244746, 861711266, 817773856, 925984572, 571221723, 683686810, 118252990, 1653952090, 1240253990, 1947039008, 1869136019, 152012637, 1214546726, 917376832, 303549425, 2111728811); + bool4x4 r0 = bool4x4(true, true, true, true, true, true, true, false, true, false, false, true, true, true, true, false); + TestUtils.AreEqual(a0 >= b0, r0); + + uint a1 = (945321577); + uint4x4 b1 = uint4x4(173706579, 625318949, 519443238, 1583588379, 1026799433, 1713083717, 394922760, 1216218189, 1336522452, 233894308, 479913036, 984991199, 172993285, 2121050903, 465645173, 788510727); + bool4x4 r1 = bool4x4(true, true, true, false, false, false, true, false, false, true, true, false, true, false, true, true); + TestUtils.AreEqual(a1 >= b1, r1); + + uint a2 = (337378780); + uint4x4 b2 = uint4x4(273010835, 1898553615, 1111540136, 717385513, 474197678, 1417152771, 1476091619, 1312849725, 243299324, 1470872301, 1443256118, 1203165035, 2138148138, 1543595760, 186659728, 807288168); + bool4x4 r2 = bool4x4(true, false, false, false, false, false, false, false, true, false, false, false, false, false, true, false); + TestUtils.AreEqual(a2 >= b2, r2); + + uint a3 = (1274079907); + uint4x4 b3 = uint4x4(1834102381, 22983902, 1733648920, 2089437749, 476445313, 1296111196, 422851096, 1857250030, 1382182918, 449792502, 1785823601, 668960891, 1067260705, 1973471752, 1403490846, 1510985557); + bool4x4 r3 = bool4x4(false, true, false, false, true, false, true, false, false, true, false, true, true, false, false, false); + TestUtils.AreEqual(a3 >= b3, r3); + } + + [TestCompiler] + public static void uint4x4_operator_add_wide_wide() + { + uint4x4 a0 = uint4x4(2049228671, 1658660009, 491719392, 937013355, 81108663, 1063894558, 86954702, 843159721, 698977704, 192867135, 1683407172, 137301303, 2103582820, 526139155, 447937230, 2127411006); + uint4x4 b0 = uint4x4(2088751567, 645762023, 306868786, 4360271, 506047997, 2094559874, 1634712736, 1601474440, 1586485231, 908746788, 1812370320, 1247342357, 2043773873, 223363428, 175115707, 985928617); + uint4x4 r0 = uint4x4(4137980238, 2304422032, 798588178, 941373626, 587156660, 3158454432, 1721667438, 2444634161, 2285462935, 1101613923, 3495777492, 1384643660, 4147356693, 749502583, 623052937, 3113339623); + TestUtils.AreEqual(a0 + b0, r0); + + uint4x4 a1 = uint4x4(1670579390, 1914969141, 997691756, 857841794, 2129024875, 267535529, 978891383, 657092366, 941872903, 906908654, 1940071697, 862186205, 1951450264, 689662850, 1928213278, 1703906688); + uint4x4 b1 = uint4x4(507662836, 1231457019, 776127866, 607782424, 1160366210, 1384832242, 702057048, 703554905, 2106992817, 1994483489, 539473, 236858351, 411317652, 595429166, 713649927, 2053476603); + uint4x4 r1 = uint4x4(2178242226, 3146426160, 1773819622, 1465624218, 3289391085, 1652367771, 1680948431, 1360647271, 3048865720, 2901392143, 1940611170, 1099044556, 2362767916, 1285092016, 2641863205, 3757383291); + TestUtils.AreEqual(a1 + b1, r1); + + uint4x4 a2 = uint4x4(526120638, 423980484, 1867227242, 603782684, 728643437, 927205560, 1544834791, 268450974, 1386681507, 1428974172, 1415690700, 1193340567, 1792960278, 1427490402, 86465016, 827052793); + uint4x4 b2 = uint4x4(77965941, 1726775513, 1759186349, 2070333485, 1732568358, 523040962, 899952708, 1401525772, 1970067897, 488428060, 132927517, 1670039917, 1678110790, 586374104, 262412628, 1415374948); + uint4x4 r2 = uint4x4(604086579, 2150755997, 3626413591, 2674116169, 2461211795, 1450246522, 2444787499, 1669976746, 3356749404, 1917402232, 1548618217, 2863380484, 3471071068, 2013864506, 348877644, 2242427741); + TestUtils.AreEqual(a2 + b2, r2); + + uint4x4 a3 = uint4x4(1603943169, 858711604, 278076564, 983811310, 1503210133, 1265840052, 1220817560, 839507207, 142866678, 1356231306, 1432159402, 637785903, 1032109021, 2081298882, 331695947, 1983868469); + uint4x4 b3 = uint4x4(361542573, 900925442, 1077800500, 1330170201, 984058816, 207503339, 339145243, 1051497556, 1435620725, 2105629028, 1215478628, 393193121, 901424214, 189116452, 17408580, 466230809); + uint4x4 r3 = uint4x4(1965485742, 1759637046, 1355877064, 2313981511, 2487268949, 1473343391, 1559962803, 1891004763, 1578487403, 3461860334, 2647638030, 1030979024, 1933533235, 2270415334, 349104527, 2450099278); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void uint4x4_operator_add_wide_scalar() + { + uint4x4 a0 = uint4x4(2038218457, 134923711, 875689667, 1338884463, 997710928, 340490871, 1067888129, 70433301, 2003021861, 1635971971, 1160398286, 85446202, 1068152966, 1239387100, 1497676888, 1727477485); + uint b0 = (2124409227); + uint4x4 r0 = uint4x4(4162627684, 2259332938, 3000098894, 3463293690, 3122120155, 2464900098, 3192297356, 2194842528, 4127431088, 3760381198, 3284807513, 2209855429, 3192562193, 3363796327, 3622086115, 3851886712); + TestUtils.AreEqual(a0 + b0, r0); + + uint4x4 a1 = uint4x4(1095438654, 1818718931, 658923552, 1610518921, 1585755398, 692843300, 1068593469, 1704776233, 577782260, 736972565, 711894571, 564257439, 2051736283, 1572837697, 1628006545, 1855700263); + uint b1 = (756559204); + uint4x4 r1 = uint4x4(1851997858, 2575278135, 1415482756, 2367078125, 2342314602, 1449402504, 1825152673, 2461335437, 1334341464, 1493531769, 1468453775, 1320816643, 2808295487, 2329396901, 2384565749, 2612259467); + TestUtils.AreEqual(a1 + b1, r1); + + uint4x4 a2 = uint4x4(656748782, 1917133199, 828322973, 2116810190, 2092767444, 973587865, 1236931273, 504264449, 794292574, 1518058681, 1604636324, 354873417, 685247897, 227781140, 321182517, 1210575914); + uint b2 = (272774516); + uint4x4 r2 = uint4x4(929523298, 2189907715, 1101097489, 2389584706, 2365541960, 1246362381, 1509705789, 777038965, 1067067090, 1790833197, 1877410840, 627647933, 958022413, 500555656, 593957033, 1483350430); + TestUtils.AreEqual(a2 + b2, r2); + + uint4x4 a3 = uint4x4(1340503111, 1979965576, 1988286575, 427699536, 538653829, 1589564058, 1954579845, 1781591877, 419928668, 1751001953, 355993558, 1653659509, 2098769225, 63134274, 1679875388, 377229586); + uint b3 = (838567468); + uint4x4 r3 = uint4x4(2179070579, 2818533044, 2826854043, 1266267004, 1377221297, 2428131526, 2793147313, 2620159345, 1258496136, 2589569421, 1194561026, 2492226977, 2937336693, 901701742, 2518442856, 1215797054); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void uint4x4_operator_add_scalar_wide() + { + uint a0 = (391092078); + uint4x4 b0 = uint4x4(519908870, 851424292, 328314822, 135622204, 740923360, 655394201, 1451896269, 1781697072, 996031825, 1557774949, 779774940, 1111541302, 783046445, 1130163944, 288279584, 1397683861); + uint4x4 r0 = uint4x4(911000948, 1242516370, 719406900, 526714282, 1132015438, 1046486279, 1842988347, 2172789150, 1387123903, 1948867027, 1170867018, 1502633380, 1174138523, 1521256022, 679371662, 1788775939); + TestUtils.AreEqual(a0 + b0, r0); + + uint a1 = (1636583489); + uint4x4 b1 = uint4x4(673263339, 1469300874, 14855965, 1116636999, 1488863300, 1600990886, 190651301, 1307459768, 920085839, 2082229835, 1992405574, 1213924458, 505841452, 981421162, 1488337699, 1113826640); + uint4x4 r1 = uint4x4(2309846828, 3105884363, 1651439454, 2753220488, 3125446789, 3237574375, 1827234790, 2944043257, 2556669328, 3718813324, 3628989063, 2850507947, 2142424941, 2618004651, 3124921188, 2750410129); + TestUtils.AreEqual(a1 + b1, r1); + + uint a2 = (1806146508); + uint4x4 b2 = uint4x4(1841791222, 206610851, 526971953, 1236359886, 1459523189, 965740631, 82842799, 1298403201, 1805809772, 1978864191, 415003386, 1906304148, 722870197, 744248796, 1677223559, 303376031); + uint4x4 r2 = uint4x4(3647937730, 2012757359, 2333118461, 3042506394, 3265669697, 2771887139, 1888989307, 3104549709, 3611956280, 3785010699, 2221149894, 3712450656, 2529016705, 2550395304, 3483370067, 2109522539); + TestUtils.AreEqual(a2 + b2, r2); + + uint a3 = (1275565021); + uint4x4 b3 = uint4x4(1518386617, 233426699, 1128986758, 1421938726, 1178529217, 1397917053, 137663521, 975646083, 1968321168, 720648013, 1606974342, 567772614, 490190373, 576353787, 1438920888, 2145198309); + uint4x4 r3 = uint4x4(2793951638, 1508991720, 2404551779, 2697503747, 2454094238, 2673482074, 1413228542, 2251211104, 3243886189, 1996213034, 2882539363, 1843337635, 1765755394, 1851918808, 2714485909, 3420763330); + TestUtils.AreEqual(a3 + b3, r3); + } + + [TestCompiler] + public static void uint4x4_operator_sub_wide_wide() + { + uint4x4 a0 = uint4x4(1353441118, 797269833, 659988112, 56022121, 365847472, 2062899435, 1380988474, 799885138, 1306058185, 579775276, 1239163824, 344591081, 86359575, 1049709943, 721529513, 1767221271); + uint4x4 b0 = uint4x4(1332656812, 1827794007, 972557431, 2078233689, 1508184327, 1372307701, 810327977, 936799885, 71562303, 1418723328, 1971342989, 1226053395, 136565478, 1979903295, 600719425, 837912956); + uint4x4 r0 = uint4x4(20784306, 3264443122, 3982397977, 2272755728, 3152630441, 690591734, 570660497, 4158052549, 1234495882, 3456019244, 3562788131, 3413504982, 4244761393, 3364773944, 120810088, 929308315); + TestUtils.AreEqual(a0 - b0, r0); + + uint4x4 a1 = uint4x4(7652784, 545192611, 176298787, 1477774126, 1426963688, 2032787858, 2059525977, 445200454, 425848588, 2026967474, 1128492011, 61421784, 988065731, 1741434432, 2070331135, 1356704176); + uint4x4 b1 = uint4x4(632054793, 711091688, 904695656, 1640069560, 750244414, 1385118097, 1102391291, 1221949855, 609588723, 1054324682, 1678086165, 1529581776, 1718700085, 523422634, 223602473, 1912611694); + uint4x4 r1 = uint4x4(3670565287, 4129068219, 3566570427, 4132671862, 676719274, 647669761, 957134686, 3518217895, 4111227161, 972642792, 3745373142, 2826807304, 3564332942, 1218011798, 1846728662, 3739059778); + TestUtils.AreEqual(a1 - b1, r1); + + uint4x4 a2 = uint4x4(1888446703, 1364654917, 265135366, 760501098, 741271824, 2139243287, 2086038778, 1314011065, 1838848671, 1554054707, 721235598, 1856904592, 570633009, 1870509604, 1310744871, 1717222072); + uint4x4 b2 = uint4x4(1224986479, 748933681, 88793450, 401362529, 1087189363, 488919410, 1106956631, 1131451931, 1975243735, 111940790, 712896589, 477050266, 1163094482, 605082349, 954351492, 1203361215); + uint4x4 r2 = uint4x4(663460224, 615721236, 176341916, 359138569, 3949049757, 1650323877, 979082147, 182559134, 4158572232, 1442113917, 8339009, 1379854326, 3702505823, 1265427255, 356393379, 513860857); + TestUtils.AreEqual(a2 - b2, r2); + + uint4x4 a3 = uint4x4(1541023885, 1644155041, 1885220021, 956814489, 1996571272, 313052858, 1686326525, 1591026645, 404689020, 832057610, 817031413, 1191376096, 1515565534, 178300672, 365767493, 1238101305); + uint4x4 b3 = uint4x4(120176164, 834539498, 1843750420, 337055138, 1625604945, 41302648, 1719986021, 2028592747, 609982501, 95087400, 1244763386, 1175550114, 887604651, 1249524531, 155418749, 1934403979); + uint4x4 r3 = uint4x4(1420847721, 809615543, 41469601, 619759351, 370966327, 271750210, 4261307800, 3857401194, 4089673815, 736970210, 3867235323, 15825982, 627960883, 3223743437, 210348744, 3598664622); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void uint4x4_operator_sub_wide_scalar() + { + uint4x4 a0 = uint4x4(1176369558, 1934521195, 309452150, 1417634074, 108910717, 1306356714, 1502312334, 1451794815, 281174200, 87530840, 1913724431, 2041593336, 557239990, 1119051448, 1590376732, 819090189); + uint b0 = (462232403); + uint4x4 r0 = uint4x4(714137155, 1472288792, 4142187043, 955401671, 3941645610, 844124311, 1040079931, 989562412, 4113909093, 3920265733, 1451492028, 1579360933, 95007587, 656819045, 1128144329, 356857786); + TestUtils.AreEqual(a0 - b0, r0); + + uint4x4 a1 = uint4x4(816382635, 1829033117, 1792801932, 1113440549, 1418937976, 1277257189, 2092779398, 642236742, 1605250794, 819644478, 1468003019, 128303186, 553494257, 1017126971, 1999744782, 2017272758); + uint b1 = (815920639); + uint4x4 r1 = uint4x4(461996, 1013112478, 976881293, 297519910, 603017337, 461336550, 1276858759, 4121283399, 789330155, 3723839, 652082380, 3607349843, 4032540914, 201206332, 1183824143, 1201352119); + TestUtils.AreEqual(a1 - b1, r1); + + uint4x4 a2 = uint4x4(1817991764, 676974855, 1638032613, 949761204, 1835969317, 919015590, 976947310, 1304246606, 1456780208, 1554022712, 769804365, 2057831687, 758136579, 670433255, 603231411, 1673268965); + uint b2 = (1280985500); + uint4x4 r2 = uint4x4(537006264, 3690956651, 357047113, 3963743000, 554983817, 3932997386, 3990929106, 23261106, 175794708, 273037212, 3783786161, 776846187, 3772118375, 3684415051, 3617213207, 392283465); + TestUtils.AreEqual(a2 - b2, r2); + + uint4x4 a3 = uint4x4(941598524, 1394256067, 1267352835, 62929009, 1190778074, 657264006, 364156399, 775397332, 651143570, 486712236, 34309315, 1323491629, 1875163590, 1217887516, 2061463296, 24320578); + uint b3 = (2122131631); + uint4x4 r3 = uint4x4(3114434189, 3567091732, 3440188500, 2235764674, 3363613739, 2830099671, 2536992064, 2948232997, 2823979235, 2659547901, 2207144980, 3496327294, 4047999255, 3390723181, 4234298961, 2197156243); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void uint4x4_operator_sub_scalar_wide() + { + uint a0 = (1691534405); + uint4x4 b0 = uint4x4(2022393810, 1612688515, 496689713, 887037586, 2097630964, 374934538, 939035482, 935242277, 1789300421, 264712893, 1231856067, 1818112748, 1428436109, 1258745460, 1077380396, 1330722719); + uint4x4 r0 = uint4x4(3964107891, 78845890, 1194844692, 804496819, 3888870737, 1316599867, 752498923, 756292128, 4197201280, 1426821512, 459678338, 4168388953, 263098296, 432788945, 614154009, 360811686); + TestUtils.AreEqual(a0 - b0, r0); + + uint a1 = (518111829); + uint4x4 b1 = uint4x4(967128529, 344666254, 1082267918, 907866696, 1816885123, 460340568, 962154498, 557113461, 1701216709, 1980098777, 730060552, 1444397827, 853570556, 138836432, 1013190428, 718089530); + uint4x4 r1 = uint4x4(3845950596, 173445575, 3730811207, 3905212429, 2996194002, 57771261, 3850924627, 4255965664, 3111862416, 2832980348, 4083018573, 3368681298, 3959508569, 379275397, 3799888697, 4094989595); + TestUtils.AreEqual(a1 - b1, r1); + + uint a2 = (506757390); + uint4x4 b2 = uint4x4(1216448041, 936312747, 1997286455, 1969982026, 902880656, 1161220697, 1442464725, 622960765, 730968909, 614823841, 1889779020, 918322352, 133929920, 213123108, 1835450460, 521068072); + uint4x4 r2 = uint4x4(3585276645, 3865411939, 2804438231, 2831742660, 3898844030, 3640503989, 3359259961, 4178763921, 4070755777, 4186900845, 2911945666, 3883402334, 372827470, 293634282, 2966274226, 4280656614); + TestUtils.AreEqual(a2 - b2, r2); + + uint a3 = (2066839749); + uint4x4 b3 = uint4x4(1982717309, 1580139939, 136826185, 783667709, 205508687, 1152347947, 1682018862, 329924125, 396414255, 542319408, 208974930, 1638328097, 935729865, 125876461, 218665639, 1100023218); + uint4x4 r3 = uint4x4(84122440, 486699810, 1930013564, 1283172040, 1861331062, 914491802, 384820887, 1736915624, 1670425494, 1524520341, 1857864819, 428511652, 1131109884, 1940963288, 1848174110, 966816531); + TestUtils.AreEqual(a3 - b3, r3); + } + + [TestCompiler] + public static void uint4x4_operator_mul_wide_wide() + { + uint4x4 a0 = uint4x4(245827027, 208934650, 1019478917, 568231809, 877289039, 1585782440, 2111178729, 1186019069, 571481445, 1570087048, 629447153, 619383734, 2055121568, 700402816, 263414349, 187830569); + uint4x4 b0 = uint4x4(759663997, 350129201, 477450108, 1635735015, 388710278, 757722665, 1509388321, 1841703980, 1826369331, 1524322467, 1605207974, 428419155, 1460605791, 1968043860, 771161742, 2037340417); + uint4x4 r0 = uint4x4(3662155527, 1402281434, 332447596, 2361989735, 2624048730, 1455036648, 2128344329, 3700879228, 2640799263, 2093463192, 3087460678, 3161406466, 990589280, 3356793344, 2953243830, 1156600361); + TestUtils.AreEqual(a0 * b0, r0); + + uint4x4 a1 = uint4x4(2048056680, 546694675, 853585367, 933370718, 990212476, 1915885905, 1984212358, 368146234, 899438811, 1765718681, 409003054, 2069758852, 140280263, 442491280, 1924530939, 1372320666); + uint4x4 b1 = uint4x4(322304267, 651448359, 1608326767, 1427155898, 1092185338, 665119139, 223634707, 694718952, 675813713, 999254223, 1326064110, 788102700, 1927999142, 1706356773, 747671596, 106127297); + uint4x4 r1 = uint4x4(649177976, 678952165, 1063621177, 2683284556, 2152538904, 3721713555, 2642853618, 1626072720, 1891467339, 335415735, 1128927428, 2638713520, 2861115658, 479369680, 3928339236, 4044803354); + TestUtils.AreEqual(a1 * b1, r1); + + uint4x4 a2 = uint4x4(200879709, 857149632, 962693646, 988118613, 892998613, 534109991, 1836805716, 591690444, 1092459557, 1068605049, 1152926708, 1628337363, 400029062, 511168096, 1165835487, 1650108606); + uint4x4 b2 = uint4x4(1695925670, 1788874462, 534570710, 1110638325, 142931150, 1684745462, 2101748242, 1831486861, 5683864, 1735084283, 1336059993, 721992570, 1906075622, 1073069872, 1374497592, 242540880); + uint4x4 r2 = uint4x4(48406862, 2297104000, 4019846068, 2811510105, 293009766, 3677102970, 1179445736, 3813187164, 2708838392, 1397450915, 487571412, 3889286542, 326598756, 995119616, 638698952, 1153153376); + TestUtils.AreEqual(a2 * b2, r2); + + uint4x4 a3 = uint4x4(1867348319, 464239430, 1513968722, 1879508953, 1835178747, 106255610, 791954119, 1098780631, 1336308698, 613897216, 1826550194, 1100684236, 67588307, 1388845400, 23402614, 2092286485); + uint4x4 b3 = uint4x4(1809758608, 288286688, 726755419, 364868101, 655080356, 266071904, 385013390, 186015668, 758488066, 1918847075, 1784720030, 1012303363, 135157062, 1204101671, 2062532388, 1665984668); + uint4x4 r3 = uint4x4(2376854640, 2027161408, 1912621350, 4186491197, 2728396, 1647526848, 418210914, 1845357612, 1544011700, 3794107392, 2497273820, 468065124, 2338334898, 412191848, 2980149912, 1944145100); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void uint4x4_operator_mul_wide_scalar() + { + uint4x4 a0 = uint4x4(1762033447, 465343930, 1570757881, 1326409563, 1824319147, 1356578909, 72749215, 154616909, 975743632, 573770299, 1958912969, 971327747, 1818877398, 1324050764, 660611671, 1279757657); + uint b0 = (1476837906); + uint4x4 r0 = uint4x4(2981789374, 1326807828, 2156411778, 4018813542, 4229418502, 2976383114, 2455742766, 2574460778, 1736252960, 2595843622, 2760103458, 2441439286, 2626798860, 2317418328, 1423071262, 2117820994); + TestUtils.AreEqual(a0 * b0, r0); + + uint4x4 a1 = uint4x4(391009467, 890343818, 800117742, 606927173, 1338014500, 1688964615, 1439447294, 387721300, 1192501703, 1613845584, 76318055, 124378112, 970518733, 1370700538, 1978842602, 1451974062); + uint b1 = (1186856590); + uint4x4 r1 = uint4x4(1435732410, 218605196, 1896985092, 2520103494, 4169532920, 3544103394, 3210322148, 2141566616, 3231264354, 1813259360, 2572759330, 2432698368, 714733494, 209765036, 1993704396, 95853188); + TestUtils.AreEqual(a1 * b1, r1); + + uint4x4 a2 = uint4x4(987919119, 1325430351, 948943118, 1743760648, 227492421, 217698851, 370371313, 309869840, 1389753586, 1895557060, 1449787207, 1817244670, 2117623142, 1951266912, 206918942, 382686790); + uint b2 = (1659987051); + uint4x4 r2 = uint4x4(548860741, 3519500037, 1518981338, 88896088, 1840817879, 997425313, 3200571067, 1277937072, 1861085478, 3612765932, 98332333, 3544396586, 3205554594, 2751221792, 438848394, 2319607618); + TestUtils.AreEqual(a2 * b2, r2); + + uint4x4 a3 = uint4x4(396984449, 352046491, 1513331645, 1155106274, 138823406, 923862962, 131310587, 938688263, 631817444, 1890216972, 2143914807, 30238797, 5224899, 1350553408, 2127554014, 1666837332); + uint b3 = (474729765); + uint4x4 r3 = uint4x4(3912359845, 3698513511, 2844449617, 349983658, 1219417702, 1371907770, 443527751, 447592195, 903547124, 3098229180, 2847484403, 3116678177, 2741501999, 3006215232, 1864957718, 2131576612); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void uint4x4_operator_mul_scalar_wide() + { + uint a0 = (99541948); + uint4x4 b0 = uint4x4(1764461774, 657072478, 1459784358, 1610646683, 1632058826, 868441654, 1408757883, 335917146, 2105124483, 1178393968, 1963904348, 1409533767, 243286231, 1336308795, 517963367, 1733623488); + uint4x4 r0 = uint4x4(3344568648, 4192918280, 1260585960, 1158730452, 4293361240, 3828814248, 2108402516, 1966690328, 1623617844, 2603413056, 3464455056, 3011267876, 3666887396, 1294445652, 1610098852, 3603911936); + TestUtils.AreEqual(a0 * b0, r0); + + uint a1 = (459880225); + uint4x4 b1 = uint4x4(994616533, 1420531535, 1821413700, 677771573, 2132626845, 1158827713, 640102997, 944551639, 1323243330, 1186460236, 657101857, 1275563580, 1031291523, 1008470115, 1155301041, 1046199281); + uint4x4 r1 = uint4x4(1378091637, 738687535, 3468449220, 3949757141, 316193853, 2121309665, 4072325109, 1750778551, 2563976578, 133205964, 1859727169, 388250044, 3682973667, 2802145731, 3778894801, 1074594065); + TestUtils.AreEqual(a1 * b1, r1); + + uint a2 = (2138825098); + uint4x4 b2 = uint4x4(1273008873, 1788343477, 1994364082, 597340263, 2022856151, 1375763101, 1007501105, 1162446628, 96412054, 1676576573, 1763698296, 729299033, 1534484, 1053621089, 1978013043, 796620370); + uint4x4 r2 = uint4x4(1965095578, 1643380370, 1438423540, 15376006, 2208382182, 1819612578, 2939756906, 3283451240, 2728325340, 3233842146, 4167677104, 1377278202, 2222375624, 3926573898, 572695294, 2733759028); + TestUtils.AreEqual(a2 * b2, r2); + + uint a3 = (890235481); + uint4x4 b3 = uint4x4(1880345584, 1882904983, 267128787, 1569254022, 1779318576, 1645728412, 819681361, 666095044, 308815496, 1829465065, 751656026, 1207837213, 1073832960, 169923853, 808603307, 363334486); + uint4x4 r3 = uint4x4(2992326256, 3526536063, 3957677659, 651297942, 2290472880, 2213466172, 1824177705, 3390288164, 56997192, 3913448961, 1427464010, 1396399637, 1642316800, 3035296645, 3228215155, 2580712678); + TestUtils.AreEqual(a3 * b3, r3); + } + + [TestCompiler] + public static void uint4x4_operator_div_wide_wide() + { + uint4x4 a0 = uint4x4(1590198532, 507812502, 126627032, 1058247011, 427387861, 290676154, 1829594484, 1127868739, 499016351, 1341209632, 134906097, 785470242, 788249865, 1099825433, 1552968283, 1822367139); + uint4x4 b0 = uint4x4(1434703236, 911965201, 390415521, 128746927, 525835375, 816946613, 878264647, 146789678, 2089524057, 254213018, 1916850021, 1737806518, 1906634983, 437754923, 825037958, 902508708); + uint4x4 r0 = uint4x4(1, 0, 0, 8, 0, 0, 2, 7, 0, 5, 0, 0, 0, 2, 1, 2); + TestUtils.AreEqual(a0 / b0, r0); + + uint4x4 a1 = uint4x4(1021812060, 1937073018, 645757349, 1097576782, 1246027674, 1152153253, 1900577195, 172149343, 1735128704, 816492592, 2012272185, 632330092, 649232994, 123715336, 1438073735, 723262291); + uint4x4 b1 = uint4x4(896853614, 49452028, 1921327824, 787000669, 1032149621, 858558868, 1422112429, 837098844, 616122946, 2035322800, 1324534444, 1820832158, 917489631, 367475696, 620492088, 1749833550); + uint4x4 r1 = uint4x4(1, 39, 0, 1, 1, 1, 1, 0, 2, 0, 1, 0, 0, 0, 2, 0); + TestUtils.AreEqual(a1 / b1, r1); + + uint4x4 a2 = uint4x4(850951883, 1942618200, 1088675276, 1648515976, 991947275, 1155668991, 764696768, 1984712970, 1734485640, 850109866, 8545366, 1037720170, 264523522, 1547702681, 1797612488, 1496410581); + uint4x4 b2 = uint4x4(1535651093, 932740870, 1078416711, 725172174, 554208963, 1250240123, 2074395021, 1513621083, 262726589, 936845337, 1934527986, 1844761263, 116240860, 1875751365, 730101086, 625535586); + uint4x4 r2 = uint4x4(0, 2, 1, 2, 1, 0, 0, 1, 6, 0, 0, 0, 2, 0, 2, 2); + TestUtils.AreEqual(a2 / b2, r2); + + uint4x4 a3 = uint4x4(308887330, 7606985, 1626977876, 1895907215, 1115090617, 1043375525, 168865453, 1056135390, 1080260308, 780473703, 1917865869, 1741288184, 497930923, 668217348, 1678197677, 1075043333); + uint4x4 b3 = uint4x4(1549803350, 364926102, 1386892120, 656711993, 91320418, 1458063222, 1529573616, 722321620, 757577900, 1175347146, 1933900601, 1063907544, 97856937, 972434416, 1920248258, 261846189); + uint4x4 r3 = uint4x4(0, 0, 1, 2, 12, 0, 0, 1, 1, 0, 0, 1, 5, 0, 0, 4); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void uint4x4_operator_div_wide_scalar() + { + uint4x4 a0 = uint4x4(560951562, 1218680769, 375341724, 1613542090, 1919409166, 1397425408, 1349573078, 524526253, 341995568, 495895326, 1515313790, 1676971657, 2131487088, 2105094094, 1017891310, 542666029); + uint b0 = (947861580); + uint4x4 r0 = uint4x4(0, 1, 0, 1, 2, 1, 1, 0, 0, 0, 1, 1, 2, 2, 1, 0); + TestUtils.AreEqual(a0 / b0, r0); + + uint4x4 a1 = uint4x4(1646044372, 107215658, 19616726, 896899915, 707389627, 1249475421, 1486968988, 1738891885, 1919705924, 1244966864, 1200843642, 206442634, 1508567412, 1825701056, 1117255783, 929925156); + uint b1 = (1447236569); + uint4x4 r1 = uint4x4(1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0); + TestUtils.AreEqual(a1 / b1, r1); + + uint4x4 a2 = uint4x4(1725332114, 1383839785, 2136282541, 159847918, 1515555001, 614923813, 1033495687, 1947230231, 1969254260, 1948672400, 757256792, 2099218773, 455629883, 324433498, 1679339858, 2024651647); + uint b2 = (1949103348); + uint4x4 r2 = uint4x4(0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1); + TestUtils.AreEqual(a2 / b2, r2); + + uint4x4 a3 = uint4x4(1222061694, 1966139194, 1303421248, 1811535294, 240471953, 2116688995, 1035856383, 2022133852, 2147186889, 152458544, 148729436, 318083619, 980911803, 817677917, 398058007, 747046501); + uint b3 = (579280546); + uint4x4 r3 = uint4x4(2, 3, 2, 3, 0, 3, 1, 3, 3, 0, 0, 0, 1, 1, 0, 1); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void uint4x4_operator_div_scalar_wide() + { + uint a0 = (1161272038); + uint4x4 b0 = uint4x4(187325733, 1594107378, 2016183849, 1589343709, 388768753, 1417077283, 1773486938, 1154044032, 81831373, 1476877645, 653688843, 45756703, 631027637, 396671391, 784365696, 1250594097); + uint4x4 r0 = uint4x4(6, 0, 0, 0, 2, 0, 0, 1, 14, 0, 1, 25, 1, 2, 1, 0); + TestUtils.AreEqual(a0 / b0, r0); + + uint a1 = (1818363859); + uint4x4 b1 = uint4x4(1653451772, 270557729, 48974453, 1796936382, 1427856423, 981056957, 1955700573, 705450043, 1054404890, 351914083, 131970646, 1320586926, 366944102, 1575786200, 257204865, 1582754309); + uint4x4 r1 = uint4x4(1, 6, 37, 1, 1, 1, 0, 2, 1, 5, 13, 1, 4, 1, 7, 1); + TestUtils.AreEqual(a1 / b1, r1); + + uint a2 = (2114509003); + uint4x4 b2 = uint4x4(1266146708, 45105265, 2092444751, 407744534, 126616016, 1900058250, 523718813, 414718546, 1828540203, 860638950, 1827704212, 182494419, 669579562, 717750865, 560379939, 681272719); + uint4x4 r2 = uint4x4(1, 46, 1, 5, 16, 1, 4, 5, 1, 2, 1, 11, 3, 2, 3, 3); + TestUtils.AreEqual(a2 / b2, r2); + + uint a3 = (638134699); + uint4x4 b3 = uint4x4(297472499, 1196796276, 815483831, 1511819303, 906952957, 613050421, 60483276, 883893666, 1481847510, 1065163200, 1641516292, 1980940753, 1862370918, 2048575092, 396483978, 610486041); + uint4x4 r3 = uint4x4(2, 0, 0, 0, 0, 1, 10, 0, 0, 0, 0, 0, 0, 0, 1, 1); + TestUtils.AreEqual(a3 / b3, r3); + } + + [TestCompiler] + public static void uint4x4_operator_mod_wide_wide() + { + uint4x4 a0 = uint4x4(146150818, 1846543305, 1071447756, 308965362, 659881575, 1002365460, 861198439, 1510617532, 778525078, 1458458044, 101987897, 1249565173, 938026607, 1692541775, 1518877124, 1806965510); + uint4x4 b0 = uint4x4(983050390, 771341152, 942375212, 367361754, 749500619, 750718852, 2095151755, 88438806, 769227442, 647214624, 1026513788, 1544950956, 160166322, 1099108075, 1158422232, 1798905209); + uint4x4 r0 = uint4x4(146150818, 303861001, 129072544, 308965362, 659881575, 251646608, 861198439, 7157830, 9297636, 164028796, 101987897, 1249565173, 137194997, 593433700, 360454892, 8060301); + TestUtils.AreEqual(a0 % b0, r0); + + uint4x4 a1 = uint4x4(1325139851, 994457255, 1372400564, 1770508529, 100255877, 452674793, 1545968777, 629019189, 1402964707, 2138294579, 1641714420, 1782022072, 1880968864, 1980798192, 1397317084, 995968277); + uint4x4 b1 = uint4x4(164686701, 327889784, 1082162785, 1213537518, 608481038, 329133821, 1824387961, 1223426748, 798137669, 79717779, 1233582258, 1267120677, 301592349, 911281434, 1357340934, 1648942990); + uint4x4 r1 = uint4x4(7646243, 10787903, 290237779, 556971011, 100255877, 123540972, 1545968777, 629019189, 604827038, 65632325, 408132162, 514901395, 71414770, 158235324, 39976150, 995968277); + TestUtils.AreEqual(a1 % b1, r1); + + uint4x4 a2 = uint4x4(1090018756, 1573062648, 1100694500, 863521889, 1146202560, 546958747, 573838995, 2146465826, 1678630780, 1843627015, 1167611300, 157190789, 530148276, 594404567, 1248848240, 1963704081); + uint4x4 b2 = uint4x4(1350943898, 696511738, 1182727748, 1843845940, 244920526, 1640990506, 920431352, 1261122293, 469115027, 720739455, 1727247731, 91557593, 1874820225, 1070808215, 859227095, 890398590); + uint4x4 r2 = uint4x4(1090018756, 180039172, 1100694500, 863521889, 166520456, 546958747, 573838995, 885343533, 271285699, 402148105, 1167611300, 65633196, 530148276, 594404567, 389621145, 182906901); + TestUtils.AreEqual(a2 % b2, r2); + + uint4x4 a3 = uint4x4(1759996408, 1386598712, 251325313, 122732248, 2082099427, 1080998866, 686623511, 693281682, 302610170, 1380134301, 1661197566, 481331690, 1193753109, 166363462, 588323181, 594997700); + uint4x4 b3 = uint4x4(951215450, 195024879, 2079991098, 220236959, 294448639, 1396793894, 141031566, 960537512, 719675899, 928202057, 275228822, 1510254672, 1481505055, 1373357922, 1940197321, 286975465); + uint4x4 r3 = uint4x4(808780958, 21424559, 251325313, 122732248, 20958954, 1080998866, 122497247, 693281682, 302610170, 451932244, 9824634, 481331690, 1193753109, 166363462, 588323181, 21046770); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void uint4x4_operator_mod_wide_scalar() + { + uint4x4 a0 = uint4x4(164800505, 1062177828, 1898749675, 1701653318, 820393245, 19002208, 128329633, 1464010899, 896587769, 405208598, 1982762194, 959236935, 712321026, 172564850, 1540068445, 1085897743); + uint b0 = (883951171); + uint4x4 r0 = uint4x4(164800505, 178226657, 130847333, 817702147, 820393245, 19002208, 128329633, 580059728, 12636598, 405208598, 214859852, 75285764, 712321026, 172564850, 656117274, 201946572); + TestUtils.AreEqual(a0 % b0, r0); + + uint4x4 a1 = uint4x4(1607489717, 647846716, 915707999, 1602830401, 928191283, 1084934806, 488509689, 2087820912, 377501313, 1778384846, 1216011754, 812183417, 1153802502, 1642671870, 1924710742, 665297470); + uint b1 = (165478511); + uint4x4 r1 = uint4x4(118183118, 151411183, 88315444, 113523802, 100798728, 92063740, 157552667, 102078780, 46544291, 123599736, 57662177, 150269373, 160931436, 153365271, 104447121, 3383426); + TestUtils.AreEqual(a1 % b1, r1); + + uint4x4 a2 = uint4x4(1568090825, 435886407, 453990946, 1731665372, 586777590, 1475597526, 1585649515, 1414579860, 1891664981, 1262495021, 1400758118, 1529532008, 430295164, 1386414018, 2130346558, 666621411); + uint b2 = (2050982942); + uint4x4 r2 = uint4x4(1568090825, 435886407, 453990946, 1731665372, 586777590, 1475597526, 1585649515, 1414579860, 1891664981, 1262495021, 1400758118, 1529532008, 430295164, 1386414018, 79363616, 666621411); + TestUtils.AreEqual(a2 % b2, r2); + + uint4x4 a3 = uint4x4(1524342239, 1547690684, 857915601, 709453751, 2103243535, 2124726669, 1410239986, 1761316053, 442891932, 388101009, 1059801526, 651827482, 1890268914, 910020375, 58051452, 293939465); + uint b3 = (1490592900); + uint4x4 r3 = uint4x4(33749339, 57097784, 857915601, 709453751, 612650635, 634133769, 1410239986, 270723153, 442891932, 388101009, 1059801526, 651827482, 399676014, 910020375, 58051452, 293939465); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void uint4x4_operator_mod_scalar_wide() + { + uint a0 = (242383789); + uint4x4 b0 = uint4x4(740000543, 1556450291, 1104736385, 437976569, 1911837205, 1507212038, 1906405167, 247693265, 293460573, 1495295166, 873323603, 530681233, 1298102643, 2057984657, 1000742091, 1461372131); + uint4x4 r0 = uint4x4(242383789, 242383789, 242383789, 242383789, 242383789, 242383789, 242383789, 242383789, 242383789, 242383789, 242383789, 242383789, 242383789, 242383789, 242383789, 242383789); + TestUtils.AreEqual(a0 % b0, r0); + + uint a1 = (1859742342); + uint4x4 b1 = uint4x4(797184687, 821888842, 1083192997, 840114986, 1894865954, 615159964, 1485575122, 2028738, 2122220318, 164578061, 730088119, 1444946139, 1305792037, 1110829011, 872723581, 166847388); + uint4x4 r1 = uint4x4(265372968, 215964658, 776549345, 179512370, 1859742342, 14262450, 374167220, 1418334, 1859742342, 49383671, 399566104, 414796203, 553950305, 748913331, 114295180, 24421074); + TestUtils.AreEqual(a1 % b1, r1); + + uint a2 = (1477846418); + uint4x4 b2 = uint4x4(511428733, 1642227542, 1962310765, 207128894, 1342085447, 448361286, 334667519, 705465751, 753088773, 1146344010, 275140144, 1074480141, 2092749846, 1631900558, 2088387496, 1098441751); + uint4x4 r2 = uint4x4(454988952, 1477846418, 1477846418, 27944160, 135760971, 132762560, 139176342, 66914916, 724757645, 331502408, 102145698, 403366277, 1477846418, 1477846418, 1477846418, 379404667); + TestUtils.AreEqual(a2 % b2, r2); + + uint a3 = (1648646354); + uint4x4 b3 = uint4x4(1730303822, 859376331, 889118656, 1549752450, 992618236, 941290327, 1766644910, 435947831, 1937100534, 1342633977, 1176317048, 950230773, 1135152183, 384466155, 600022, 363833845); + uint4x4 r3 = uint4x4(1648646354, 789270023, 759527698, 98893904, 656028118, 707356027, 1648646354, 340802861, 1648646354, 306012377, 472329306, 698415581, 513494171, 110781734, 385920, 193310974); + TestUtils.AreEqual(a3 % b3, r3); + } + + [TestCompiler] + public static void uint4x4_operator_plus() + { + uint4x4 a0 = uint4x4(1643476803, 907898539, 379615839, 1140483021, 1735287433, 1743199272, 1472881565, 339091479, 401565897, 1287765427, 849339193, 174532915, 1864850812, 1566098441, 1145639744, 1615499926); + uint4x4 r0 = uint4x4(1643476803, 907898539, 379615839, 1140483021, 1735287433, 1743199272, 1472881565, 339091479, 401565897, 1287765427, 849339193, 174532915, 1864850812, 1566098441, 1145639744, 1615499926); + TestUtils.AreEqual(+a0, r0); + + uint4x4 a1 = uint4x4(2049663954, 409076474, 591286416, 1706631096, 1079164488, 1808261782, 1201290141, 82958939, 308695413, 1575280693, 2067379018, 1673126612, 500666137, 640289062, 836003812, 336058393); + uint4x4 r1 = uint4x4(2049663954, 409076474, 591286416, 1706631096, 1079164488, 1808261782, 1201290141, 82958939, 308695413, 1575280693, 2067379018, 1673126612, 500666137, 640289062, 836003812, 336058393); + TestUtils.AreEqual(+a1, r1); + + uint4x4 a2 = uint4x4(829347661, 381670450, 277507230, 361395485, 1012749225, 1204186973, 2092803800, 1459040742, 531853559, 2093894901, 1589622197, 1559976318, 619729461, 731886792, 1441425968, 1921783986); + uint4x4 r2 = uint4x4(829347661, 381670450, 277507230, 361395485, 1012749225, 1204186973, 2092803800, 1459040742, 531853559, 2093894901, 1589622197, 1559976318, 619729461, 731886792, 1441425968, 1921783986); + TestUtils.AreEqual(+a2, r2); + + uint4x4 a3 = uint4x4(1257555634, 578585280, 1087392044, 2084329354, 300198860, 1247120404, 1325809345, 1057524082, 1426592020, 167918579, 1552986194, 813448514, 2048383407, 647476365, 13335381, 1985958169); + uint4x4 r3 = uint4x4(1257555634, 578585280, 1087392044, 2084329354, 300198860, 1247120404, 1325809345, 1057524082, 1426592020, 167918579, 1552986194, 813448514, 2048383407, 647476365, 13335381, 1985958169); + TestUtils.AreEqual(+a3, r3); + } + + [TestCompiler] + public static void uint4x4_operator_neg() + { + uint4x4 a0 = uint4x4(1955022112, 662160019, 370300775, 2141283773, 1004505619, 28153593, 33894270, 505708349, 1115028238, 1636274969, 694995093, 1542206286, 213087293, 243937487, 341522275, 841085242); + uint4x4 r0 = uint4x4(2339945184, 3632807277, 3924666521, 2153683523, 3290461677, 4266813703, 4261073026, 3789258947, 3179939058, 2658692327, 3599972203, 2752761010, 4081880003, 4051029809, 3953445021, 3453882054); + TestUtils.AreEqual(-a0, r0); + + uint4x4 a1 = uint4x4(574159094, 2057919693, 1175014732, 1259809073, 1212465326, 1190569920, 2047955772, 2120729864, 1440774928, 1485596454, 431666091, 1387601718, 1745651998, 319115626, 1119959806, 739132284); + uint4x4 r1 = uint4x4(3720808202, 2237047603, 3119952564, 3035158223, 3082501970, 3104397376, 2247011524, 2174237432, 2854192368, 2809370842, 3863301205, 2907365578, 2549315298, 3975851670, 3175007490, 3555835012); + TestUtils.AreEqual(-a1, r1); + + uint4x4 a2 = uint4x4(1954173314, 1836511050, 1662806453, 506144868, 650922971, 1755382554, 1273997249, 1474445187, 1853826947, 1695573773, 729452512, 345069360, 575867536, 594119038, 1201840609, 1342872551); + uint4x4 r2 = uint4x4(2340793982, 2458456246, 2632160843, 3788822428, 3644044325, 2539584742, 3020970047, 2820522109, 2441140349, 2599393523, 3565514784, 3949897936, 3719099760, 3700848258, 3093126687, 2952094745); + TestUtils.AreEqual(-a2, r2); + + uint4x4 a3 = uint4x4(1768435578, 23008237, 1410502890, 695213039, 1342131852, 1619073746, 469828650, 20553909, 1711214338, 690040786, 1749711826, 1265590278, 1516859887, 1317159343, 1722518934, 803074002); + uint4x4 r3 = uint4x4(2526531718, 4271959059, 2884464406, 3599754257, 2952835444, 2675893550, 3825138646, 4274413387, 2583752958, 3604926510, 2545255470, 3029377018, 2778107409, 2977807953, 2572448362, 3491893294); + TestUtils.AreEqual(-a3, r3); + } + + [TestCompiler] + public static void uint4x4_operator_prefix_inc() + { + uint4x4 a0 = uint4x4(864455342, 2035793213, 1275443862, 971919915, 411610189, 446210725, 395072276, 115573442, 913293639, 432884105, 1208161871, 1385544935, 1835605516, 831396561, 388229350, 696475402); + uint4x4 r0 = uint4x4(864455343, 2035793214, 1275443863, 971919916, 411610190, 446210726, 395072277, 115573443, 913293640, 432884106, 1208161872, 1385544936, 1835605517, 831396562, 388229351, 696475403); + TestUtils.AreEqual(++a0, r0); + + uint4x4 a1 = uint4x4(1786514683, 752093909, 1622410417, 1398865015, 241906003, 1705625817, 609525897, 172599489, 504806865, 519296647, 281942776, 1541894135, 924683935, 259568871, 1349062584, 1120518661); + uint4x4 r1 = uint4x4(1786514684, 752093910, 1622410418, 1398865016, 241906004, 1705625818, 609525898, 172599490, 504806866, 519296648, 281942777, 1541894136, 924683936, 259568872, 1349062585, 1120518662); + TestUtils.AreEqual(++a1, r1); + + uint4x4 a2 = uint4x4(65514038, 1321109497, 1366348660, 1777734111, 1414867743, 536776365, 539531120, 886558347, 1733014170, 1586973907, 1145067277, 884064327, 82551838, 1001250037, 924273925, 242241802); + uint4x4 r2 = uint4x4(65514039, 1321109498, 1366348661, 1777734112, 1414867744, 536776366, 539531121, 886558348, 1733014171, 1586973908, 1145067278, 884064328, 82551839, 1001250038, 924273926, 242241803); + TestUtils.AreEqual(++a2, r2); + + uint4x4 a3 = uint4x4(413165245, 1206806909, 2069192976, 1613073974, 1342402025, 330167396, 665917965, 799320426, 2054286971, 2074397725, 113129500, 721162954, 2136093351, 173315234, 2006582934, 265026274); + uint4x4 r3 = uint4x4(413165246, 1206806910, 2069192977, 1613073975, 1342402026, 330167397, 665917966, 799320427, 2054286972, 2074397726, 113129501, 721162955, 2136093352, 173315235, 2006582935, 265026275); + TestUtils.AreEqual(++a3, r3); + } + + [TestCompiler] + public static void uint4x4_operator_postfix_inc() + { + uint4x4 a0 = uint4x4(1751003569, 2063707595, 1500486291, 969189211, 1007848192, 2028651936, 1643023524, 1190630527, 1396179607, 708474528, 177416855, 1524860667, 1408994706, 375284401, 1580130369, 1676086778); + uint4x4 r0 = uint4x4(1751003569, 2063707595, 1500486291, 969189211, 1007848192, 2028651936, 1643023524, 1190630527, 1396179607, 708474528, 177416855, 1524860667, 1408994706, 375284401, 1580130369, 1676086778); + TestUtils.AreEqual(a0++, r0); + + uint4x4 a1 = uint4x4(717006530, 732199129, 2026873940, 130175844, 1513142653, 420613464, 1219979307, 586574160, 357567451, 1468020171, 1949784665, 1127356901, 101238629, 2131648021, 423320704, 827539403); + uint4x4 r1 = uint4x4(717006530, 732199129, 2026873940, 130175844, 1513142653, 420613464, 1219979307, 586574160, 357567451, 1468020171, 1949784665, 1127356901, 101238629, 2131648021, 423320704, 827539403); + TestUtils.AreEqual(a1++, r1); + + uint4x4 a2 = uint4x4(1919960927, 2010345998, 1047836590, 586887730, 1209169651, 1051531454, 1479717664, 1874959449, 104723114, 817246348, 1972950889, 1784631804, 1550936382, 718649502, 872906800, 717529320); + uint4x4 r2 = uint4x4(1919960927, 2010345998, 1047836590, 586887730, 1209169651, 1051531454, 1479717664, 1874959449, 104723114, 817246348, 1972950889, 1784631804, 1550936382, 718649502, 872906800, 717529320); + TestUtils.AreEqual(a2++, r2); + + uint4x4 a3 = uint4x4(1995020676, 183815949, 1207670946, 1620827725, 1809811548, 1643094131, 280506984, 382615051, 650280741, 560631765, 1840722506, 63273626, 1294940978, 724310154, 1901579798, 697321264); + uint4x4 r3 = uint4x4(1995020676, 183815949, 1207670946, 1620827725, 1809811548, 1643094131, 280506984, 382615051, 650280741, 560631765, 1840722506, 63273626, 1294940978, 724310154, 1901579798, 697321264); + TestUtils.AreEqual(a3++, r3); + } + + [TestCompiler] + public static void uint4x4_operator_prefix_dec() + { + uint4x4 a0 = uint4x4(200904609, 871077500, 968578728, 638967721, 1995396216, 435367037, 1782514098, 1589827826, 1434377580, 596759698, 1699290403, 1758478358, 1914114460, 71237375, 389120307, 1022184392); + uint4x4 r0 = uint4x4(200904608, 871077499, 968578727, 638967720, 1995396215, 435367036, 1782514097, 1589827825, 1434377579, 596759697, 1699290402, 1758478357, 1914114459, 71237374, 389120306, 1022184391); + TestUtils.AreEqual(--a0, r0); + + uint4x4 a1 = uint4x4(1310293956, 18299409, 906734601, 799006218, 1383897383, 1040798388, 1469596990, 1719228297, 220897829, 1454322707, 678025545, 14227726, 293093918, 1065286595, 1249415499, 1009503100); + uint4x4 r1 = uint4x4(1310293955, 18299408, 906734600, 799006217, 1383897382, 1040798387, 1469596989, 1719228296, 220897828, 1454322706, 678025544, 14227725, 293093917, 1065286594, 1249415498, 1009503099); + TestUtils.AreEqual(--a1, r1); + + uint4x4 a2 = uint4x4(157482354, 1797304434, 1083672612, 929765380, 2083512379, 2045544045, 323646560, 1395297406, 583796119, 999841714, 1788073019, 1618852114, 1777032041, 1252764958, 1070818447, 219340317); + uint4x4 r2 = uint4x4(157482353, 1797304433, 1083672611, 929765379, 2083512378, 2045544044, 323646559, 1395297405, 583796118, 999841713, 1788073018, 1618852113, 1777032040, 1252764957, 1070818446, 219340316); + TestUtils.AreEqual(--a2, r2); + + uint4x4 a3 = uint4x4(767990877, 366067423, 99249400, 1549382038, 1105868582, 1977762759, 1646465385, 1067223071, 1774498387, 1128527977, 1104488553, 1575600100, 1141283662, 1678956750, 449874904, 748975258); + uint4x4 r3 = uint4x4(767990876, 366067422, 99249399, 1549382037, 1105868581, 1977762758, 1646465384, 1067223070, 1774498386, 1128527976, 1104488552, 1575600099, 1141283661, 1678956749, 449874903, 748975257); + TestUtils.AreEqual(--a3, r3); + } + + [TestCompiler] + public static void uint4x4_operator_postfix_dec() + { + uint4x4 a0 = uint4x4(283970262, 1109329936, 1073216143, 649439137, 1932646215, 1174104498, 484207852, 524156737, 691209285, 2017728859, 802721301, 377162390, 526366486, 1504625034, 590919177, 60677868); + uint4x4 r0 = uint4x4(283970262, 1109329936, 1073216143, 649439137, 1932646215, 1174104498, 484207852, 524156737, 691209285, 2017728859, 802721301, 377162390, 526366486, 1504625034, 590919177, 60677868); + TestUtils.AreEqual(a0--, r0); + + uint4x4 a1 = uint4x4(1867810045, 670715645, 324944916, 242636153, 1659736954, 1316734088, 1030072405, 1751972064, 1868889881, 1726583208, 1931943579, 175622377, 181847458, 665549439, 530897466, 635466911); + uint4x4 r1 = uint4x4(1867810045, 670715645, 324944916, 242636153, 1659736954, 1316734088, 1030072405, 1751972064, 1868889881, 1726583208, 1931943579, 175622377, 181847458, 665549439, 530897466, 635466911); + TestUtils.AreEqual(a1--, r1); + + uint4x4 a2 = uint4x4(416440036, 1444496274, 296146626, 1209855130, 2016700604, 838640502, 647102652, 1948542169, 659874422, 2009120584, 1577004911, 1809041177, 518526567, 1464738365, 1815629310, 1216839298); + uint4x4 r2 = uint4x4(416440036, 1444496274, 296146626, 1209855130, 2016700604, 838640502, 647102652, 1948542169, 659874422, 2009120584, 1577004911, 1809041177, 518526567, 1464738365, 1815629310, 1216839298); + TestUtils.AreEqual(a2--, r2); + + uint4x4 a3 = uint4x4(569144612, 509007463, 860240975, 41334109, 10321636, 1940079495, 43143738, 1044950720, 63756334, 1595004937, 699747920, 348534360, 509361827, 1352179420, 271823835, 1889179126); + uint4x4 r3 = uint4x4(569144612, 509007463, 860240975, 41334109, 10321636, 1940079495, 43143738, 1044950720, 63756334, 1595004937, 699747920, 348534360, 509361827, 1352179420, 271823835, 1889179126); + TestUtils.AreEqual(a3--, r3); + } + + [TestCompiler] + public static void uint4x4_operator_bitwise_and_wide_wide() + { + uint4x4 a0 = uint4x4(779935043, 1097962163, 1939593304, 800599247, 952140918, 782792558, 1608557706, 396446406, 2039894114, 1286974642, 442394124, 1759739564, 233435438, 665207770, 1942050241, 1022352952); + uint4x4 b0 = uint4x4(307705143, 1710882162, 866836769, 532490608, 679371720, 1794035877, 1439832202, 519529812, 23633139, 1209152681, 646737179, 1255867027, 1900854122, 413173763, 1409138251, 2087190272); + uint4x4 r0 = uint4x4(39064835, 1097961522, 864731136, 263727168, 675283008, 715673636, 1438646410, 379666500, 16781410, 1209017504, 34366472, 1220739712, 21541162, 10485762, 1405162561, 1013440000); + TestUtils.AreEqual(a0 & b0, r0); + + uint4x4 a1 = uint4x4(60340400, 329119345, 406517382, 1126764634, 343425836, 1957552749, 1624478957, 341972372, 181537307, 130347414, 1240828622, 526120460, 695449226, 1477446724, 201628999, 737924014); + uint4x4 b1 = uint4x4(563439483, 354579077, 642224854, 1650432515, 755290290, 902865191, 661389406, 2134212586, 1855189321, 185194029, 810374380, 133197864, 1989578783, 38739182, 387425484, 1690486314); + uint4x4 r1 = uint4x4(26222640, 285241857, 168582, 1107890178, 67125280, 880844837, 541065292, 337646976, 177340425, 50384900, 4522188, 122712072, 538087434, 3140, 67404868, 549634602); + TestUtils.AreEqual(a1 & b1, r1); + + uint4x4 a2 = uint4x4(1804502415, 1733695477, 1110712857, 113012430, 1044352152, 865726845, 836668077, 1778871717, 1558881750, 231636456, 1278790837, 846361650, 37319023, 1806613498, 1312261777, 1448803516); + uint4x4 b2 = uint4x4(843085933, 1045118223, 41867329, 1397669260, 1784025774, 1834587481, 856874373, 1719529679, 678478831, 86860920, 837158923, 1397449667, 195921481, 564422246, 1088025452, 2103483999); + uint4x4 r2 = uint4x4(570425357, 641864965, 36962305, 34352268, 706085000, 555323737, 823298181, 1644519557, 140542406, 84698216, 2099201, 306339842, 36241481, 564404834, 1074889216, 1413520412); + TestUtils.AreEqual(a2 & b2, r2); + + uint4x4 a3 = uint4x4(17366276, 1245846423, 1075177576, 1023499729, 1742176891, 1288325524, 2092131182, 1444013434, 210707066, 627341079, 155789028, 411695477, 2144207930, 1007799200, 382737478, 85407483); + uint4x4 b3 = uint4x4(267066435, 781393024, 1444337796, 139669978, 880161801, 1604286495, 839016626, 1986058500, 1905400692, 1670633815, 651063094, 967343492, 336245810, 914791376, 1696073831, 2103810347); + uint4x4 r3 = uint4x4(17308672, 167909504, 1075103744, 134287824, 609615881, 1284130836, 805462050, 1442889984, 8520304, 553668887, 4728356, 411597060, 336200754, 872450944, 68159558, 84217899); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void uint4x4_operator_bitwise_and_wide_scalar() + { + uint4x4 a0 = uint4x4(443615469, 490057985, 2042441263, 1524760558, 1405175110, 510212004, 1941875181, 1236735839, 1365509729, 428270198, 607982857, 650270920, 1249238550, 814629680, 1862276471, 143502472); + uint b0 = (93423598); + uint4x4 r0 = uint4x4(1114348, 85033216, 26281518, 8488942, 25232710, 67176356, 26247660, 26281806, 16778848, 25199206, 68224264, 75497672, 1148422, 8389408, 83887462, 8488072); + TestUtils.AreEqual(a0 & b0, r0); + + uint4x4 a1 = uint4x4(861733033, 957693145, 1567715668, 1102952410, 322053683, 1599352836, 208656708, 1272226025, 462670926, 1817145060, 1466722981, 1817277774, 818900583, 772681077, 1630437952, 546018772); + uint b1 = (1408932942); + uint4x4 r1 = uint4x4(324534280, 286268488, 1366298692, 1102615626, 322044930, 1397755908, 6985796, 1137737800, 328371278, 1078594628, 1399326724, 1078989902, 281676870, 34212932, 1093304384, 9081924); + TestUtils.AreEqual(a1 & b1, r1); + + uint4x4 a2 = uint4x4(872875431, 708719245, 1764446048, 1527981061, 398141788, 156911041, 554819377, 1683835293, 972562207, 393685571, 2118911919, 1503487659, 283854137, 1911282206, 312686024, 384581172); + uint b2 = (1143080525); + uint4x4 r2 = uint4x4(67240965, 2228749, 1075971648, 1073873925, 69337164, 132161, 1537, 1140850701, 2098701, 69337665, 1140852237, 1073743369, 2229257, 1075970572, 2229320, 69207556); + TestUtils.AreEqual(a2 & b2, r2); + + uint4x4 a3 = uint4x4(1826788967, 3292432, 225233484, 1488146706, 1918853562, 1038188796, 1833784555, 252534533, 942504184, 840550591, 475152200, 1566941712, 546609146, 1803072768, 1125028552, 104252148); + uint b3 = (150752148); + uint4x4 r3 = uint4x4(148898308, 3148048, 141314564, 145768720, 6046096, 148897940, 139214976, 135023364, 137119888, 1591444, 139463424, 140771856, 9700240, 142082304, 787072, 3424916); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void uint4x4_operator_bitwise_and_scalar_wide() + { + uint a0 = (1144543590); + uint4x4 b0 = uint4x4(420346723, 562416448, 1393127318, 1560699552, 851218057, 703880958, 1159378889, 2031211279, 1089518981, 270607307, 1349288930, 520199596, 1763483957, 1248975349, 236938635, 185023291); + uint4x4 r0 = uint4x4(547170, 18752, 1074284806, 1140867104, 3672064, 3168358, 1142427968, 1074811142, 1076893956, 2097474, 1076363618, 67115300, 1075314980, 1076910436, 68698370, 6434); + TestUtils.AreEqual(a0 & b0, r0); + + uint a1 = (1085233038); + uint4x4 b1 = uint4x4(1845693112, 946052961, 1436238522, 2042776519, 56356886, 1770159840, 1872339579, 1439201366, 1233066417, 1214109404, 2255485, 1814885263, 1711986588, 1286898282, 915476451, 1870138851); + uint4x4 r1 = uint4x4(1073939080, 2299648, 1082868362, 1082278790, 741382, 1082283648, 1082720778, 1082675206, 1076826496, 1074615948, 2245132, 1076646798, 1074419596, 1084490250, 8456066, 1076364674); + TestUtils.AreEqual(a1 & b1, r1); + + uint a2 = (372814411); + uint4x4 b2 = uint4x4(1623486506, 211665304, 1668985777, 348112007, 1808619374, 1516730209, 1647041932, 350465899, 1641369007, 1555310928, 857924828, 1980404095, 34923708, 1073528483, 742357726, 1244015681); + uint4x4 r2 = uint4x4(12298, 68714504, 37270017, 339247107, 34083402, 304099905, 36212744, 337683019, 1048587, 338698304, 304128072, 369659979, 34643976, 372814339, 70791754, 35659841); + TestUtils.AreEqual(a2 & b2, r2); + + uint a3 = (1980296380); + uint4x4 b3 = uint4x4(1295368015, 859181113, 1741688223, 1249250718, 363989837, 939740255, 1668271386, 121498186, 1765635287, 1637255201, 1157123404, 216326016, 1525016040, 1131192672, 433812479, 797544392); + uint4x4 r3 = uint4x4(1140894732, 838860856, 1711279260, 1107299484, 335546380, 805325852, 1644743704, 101246984, 1611162772, 1610647584, 1141394444, 67161216, 1375790248, 1107861536, 268984508, 638094472); + TestUtils.AreEqual(a3 & b3, r3); + } + + [TestCompiler] + public static void uint4x4_operator_bitwise_or_wide_wide() + { + uint4x4 a0 = uint4x4(1731159103, 659068416, 382702471, 1821032196, 1565773438, 1004000514, 948501377, 600951835, 669346222, 396691477, 2108560248, 2117522137, 330307355, 818676817, 1774459567, 1117506257); + uint4x4 b0 = uint4x4(1583847161, 692672727, 1161585489, 1756207130, 1321374429, 1287357212, 2075767170, 1273513430, 1610830169, 1316929125, 511625048, 573925879, 1502255628, 1841676448, 1682928938, 1115131952); + uint4x4 r0 = uint4x4(2138044159, 793370327, 1476391895, 1823457054, 1607720703, 2147473182, 2075786115, 1811533279, 1743223295, 1610595957, 2147407736, 2117598207, 1538957087, 2110637297, 1842315183, 1124063985); + TestUtils.AreEqual(a0 | b0, r0); + + uint4x4 a1 = uint4x4(1254511182, 1017865993, 1883021644, 1140203470, 759288967, 2122744307, 335621148, 715028074, 543305337, 662107399, 1934997335, 436754869, 1613808671, 362365372, 342908672, 2129231210); + uint4x4 b1 = uint4x4(1541423910, 1416096228, 188606371, 1041599540, 219545389, 560097663, 1087543661, 936383841, 108816721, 1694053551, 452638547, 1219534055, 85142537, 1027930490, 2126839395, 2030328147); + uint4x4 r1 = uint4x4(1541821294, 2096099309, 2067654639, 2146934782, 760610735, 2145839615, 1423162749, 1071544171, 645820281, 1744827823, 2080356183, 1522064887, 1697901599, 1037957630, 2129985379, 2146270587); + TestUtils.AreEqual(a1 | b1, r1); + + uint4x4 a2 = uint4x4(203868172, 32846030, 1057901177, 1537975433, 470626699, 557640158, 536364388, 238304731, 787227554, 1298371111, 1020821539, 1327618264, 1104669041, 1949771204, 1973724646, 698690868); + uint4x4 b2 = uint4x4(2036352209, 1554561114, 1332339254, 480739851, 1502575584, 1889014859, 1557424474, 1390247341, 2029776623, 1665642846, 1570936353, 801872635, 1945815585, 1797879107, 112272980, 779933219); + uint4x4 r2 = uint4x4(2103889117, 1576909022, 2138040959, 1605346955, 1569684459, 1908211167, 1610378622, 1593671167, 2130702319, 1869067135, 2113574435, 1877727995, 1946151793, 2134865351, 2008393718, 805175095); + TestUtils.AreEqual(a2 | b2, r2); + + uint4x4 a3 = uint4x4(237797826, 356229491, 1054697631, 2025966311, 718324935, 1223426852, 2042482036, 683169667, 1994321453, 240702936, 828468284, 1009506608, 708733945, 449892073, 1530051697, 654498852); + uint4x4 b3 = uint4x4(92416160, 446752586, 1307950607, 1358449730, 181367548, 432421751, 695223657, 56384197, 1119601678, 460615696, 463588364, 780415466, 1378457042, 1259569239, 1887579973, 358353719); + uint4x4 r3 = uint4x4(263104994, 532408187, 2147352223, 2029637351, 719320831, 1508785015, 2046676349, 737959879, 1996484143, 528283096, 1004661820, 1051720186, 2051014651, 1540607743, 2075311989, 928964407); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void uint4x4_operator_bitwise_or_wide_scalar() + { + uint4x4 a0 = uint4x4(961259683, 471103264, 1733389229, 1591585258, 386953869, 1148351449, 1048929715, 1814263250, 860336789, 1637162093, 1227888278, 774029856, 879300408, 1179087439, 797240690, 1977614655); + uint b0 = (1666102508); + uint4x4 r0 = uint4x4(2068823279, 2136930284, 1734344685, 2145369582, 2002712301, 1736374269, 2144335359, 1869608446, 1934604029, 1675607277, 1803466494, 1869543148, 2003812348, 1733293807, 1875836414, 2012132863); + TestUtils.AreEqual(a0 | b0, r0); + + uint4x4 a1 = uint4x4(46921989, 284225881, 64304104, 313591807, 1393862490, 1890090886, 521303722, 2021379070, 2055963359, 1511253082, 1775629833, 1142751163, 1767274359, 1421981808, 1501294791, 485944015); + uint b1 = (1980838747); + uint4x4 r1 = uint4x4(1994128223, 1995567963, 2010461179, 1991325695, 1997911899, 1991868383, 2131982331, 2122054655, 2124133343, 2115237723, 2144728923, 1981677563, 2136438655, 1993456507, 2138829791, 2130181087); + TestUtils.AreEqual(a1 | b1, r1); + + uint4x4 a2 = uint4x4(539526284, 1815369493, 529427586, 358352200, 1353013374, 1349149982, 1624839772, 1369983151, 666444298, 207757238, 257316089, 409252967, 1919967661, 1452040383, 2012115244, 1149949643); + uint b2 = (310877895); + uint4x4 r2 = uint4x4(850370255, 2125979607, 529530567, 400531407, 1386733311, 1391460319, 1927257823, 1404034799, 935313103, 518496247, 534241023, 451395303, 1928855535, 1452277503, 2012217327, 1452269263); + TestUtils.AreEqual(a2 | b2, r2); + + uint4x4 a3 = uint4x4(142082352, 1052987078, 1551897284, 647667876, 272240018, 728496025, 1212085507, 1717689835, 478474157, 1784582014, 1420783529, 671512087, 1240546077, 215180285, 1874077134, 288085841); + uint b3 = (1760023655); + uint4x4 r3 = uint4x4(1761596791, 2129125095, 2095568615, 1862268135, 2030034423, 1810888703, 1761604967, 1860689391, 2095579119, 1795153791, 2096103407, 1760032375, 1777860479, 1828190207, 1878521327, 2045761399); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void uint4x4_operator_bitwise_or_scalar_wide() + { + uint a0 = (1213433101); + uint4x4 b0 = uint4x4(1212928242, 1614462616, 936937728, 764766995, 306352095, 574719481, 1283571271, 2109131012, 979469710, 1348323481, 1407542578, 697517649, 1059093741, 627815046, 418822515, 83214352); + uint4x4 r0 = uint4x4(1213978111, 1752940445, 2145094925, 1842867999, 1515425759, 1783858685, 1288945487, 2113391885, 2054391183, 1482673565, 1542972735, 1775486813, 2138308077, 1836824463, 1492630911, 1291306269); + TestUtils.AreEqual(a0 | b0, r0); + + uint a1 = (424663473); + uint4x4 b1 = uint4x4(447949225, 527022375, 1947148461, 305251437, 1254601325, 1752329425, 1592402684, 1587055329, 1088734150, 298563808, 2052547661, 582843231, 656983670, 1944993640, 1081208038, 829763560); + uint4x4 r1 = uint4x4(469760441, 527432119, 2102393277, 461364733, 1540357117, 2038431217, 1609563133, 1608506353, 1508891639, 433060337, 2069888509, 1006631935, 1064296439, 2079326201, 1501560311, 964689913); + TestUtils.AreEqual(a1 | b1, r1); + + uint a2 = (990961386); + uint4x4 b2 = uint4x4(547309556, 1307122961, 263229121, 1518227598, 1098359242, 997941952, 1075751132, 996271847, 623986648, 1091787263, 1548400620, 2022447724, 433714471, 963197960, 1639565037, 1287986616); + uint4x4 r2 = uint4x4(1000333310, 2147082235, 1068556011, 2071912174, 2071461866, 997981930, 2065628926, 997326575, 1060233210, 2064900095, 2136670190, 2073878254, 1004142575, 997850858, 2075778799, 2144722938); + TestUtils.AreEqual(a2 | b2, r2); + + uint a3 = (1326199854); + uint4x4 b3 = uint4x4(1949398395, 2027606165, 1750615303, 908181664, 2105810564, 2009616838, 1492018691, 1325195313, 1365101592, 276155673, 1378507257, 1526287781, 322486040, 1550813488, 326334540, 2015237736); + uint4x4 r3 = uint4x4(2134734207, 2145318079, 1868330287, 2133718190, 2139897518, 2144105966, 1609463343, 1341977663, 1599994942, 1602092351, 1596882431, 1610448303, 1597816638, 1601158462, 1602190446, 2132686446); + TestUtils.AreEqual(a3 | b3, r3); + } + + [TestCompiler] + public static void uint4x4_operator_bitwise_xor_wide_wide() + { + uint4x4 a0 = uint4x4(1556324760, 207002929, 1843444873, 1632079131, 1460334334, 1607815585, 220623650, 38668553, 47193340, 643663548, 1371932564, 94957188, 700973621, 370621508, 2087573076, 351476570); + uint4x4 b0 = uint4x4(1054997548, 1523759632, 251164872, 110472397, 384031112, 1109163205, 535118981, 179106262, 1523031711, 1713313372, 1294118730, 520360641, 1040688781, 1020757245, 1143954843, 1281933464); + uint4x4 r0 = uint4x4(1646419380, 1451501345, 1662567489, 1741824470, 1105803126, 499723620, 314783655, 149092575, 1477935715, 1078104288, 484747486, 447544389, 399484088, 717273273, 943885263, 1486609346); + TestUtils.AreEqual(a0 ^ b0, r0); + + uint4x4 a1 = uint4x4(1340815927, 681577472, 314138777, 446857644, 1368661599, 1672499683, 1259759761, 2049102405, 1972524935, 91962333, 1960780785, 1303778459, 960040360, 822786011, 2028027011, 170382968); + uint4x4 b1 = uint4x4(175288469, 326874157, 1192052687, 1087083643, 1900865484, 1521193463, 569695524, 1622101483, 1340735463, 546583617, 1034420616, 262206030, 1834125935, 802756092, 611321886, 316379491); + uint4x4 r1 = uint4x4(1167690402, 1004255277, 1437869910, 1516836311, 551090579, 958119956, 1793242549, 445489070, 981182560, 636424092, 1232544377, 1108797141, 1416333255, 517186087, 1553020061, 419186459); + TestUtils.AreEqual(a1 ^ b1, r1); + + uint4x4 a2 = uint4x4(32554542, 1915830925, 2001025156, 2012451132, 1076174067, 344651773, 1769102694, 1408084527, 1139070023, 1195715957, 1051992510, 1468636326, 1018993657, 1514317444, 369266676, 1206540279); + uint4x4 b2 = uint4x4(325882121, 45335181, 1859278043, 1002624300, 1704063552, 1618550727, 721247372, 131278097, 896003672, 746837613, 1952376600, 306395311, 419371442, 627496489, 1791585199, 757339713); + uint4x4 r2 = uint4x4(312225575, 1887600640, 429354079, 1278297104, 632614579, 1962141754, 1133445610, 1413386046, 1988311583, 1808202520, 1256900262, 1170908169, 608404043, 2133094573, 2093737051, 1791902134); + TestUtils.AreEqual(a2 ^ b2, r2); + + uint4x4 a3 = uint4x4(1730482516, 1488638921, 801348246, 1768559974, 1475767978, 1617893197, 689768843, 640586983, 426041408, 1811169716, 1563089576, 1411870628, 1004729442, 1173825171, 344960599, 633357624); + uint4x4 b3 = uint4x4(1356120192, 933877640, 2003767224, 113246892, 1236821680, 256717233, 1832711379, 238792988, 691507914, 1132023339, 1571029002, 227661589, 1609435614, 1581653714, 1384954643, 1432072515); + uint4x4 r3 = uint4x4(938594772, 1863517249, 1487705390, 1873418186, 508430362, 1864509180, 1143078232, 672474619, 810775178, 680333215, 9362082, 1505147057, 1678572988, 464599105, 1174607172, 1889268859); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void uint4x4_operator_bitwise_xor_wide_scalar() + { + uint4x4 a0 = uint4x4(2124666952, 177397845, 574879617, 1937385541, 1136545648, 213863690, 535061373, 289301586, 1305234431, 353786540, 1308626970, 1267729267, 125659640, 1315625690, 1730088797, 116862046); + uint b0 = (493665894); + uint4x4 r0 = uint4x4(1674536494, 402546227, 1060063719, 1846973987, 1590882582, 299103084, 42523931, 206756404, 1352725913, 142271690, 1399631484, 1459404053, 437376926, 1392927932, 2054402363, 463180344); + TestUtils.AreEqual(a0 ^ b0, r0); + + uint4x4 a1 = uint4x4(375757978, 191750702, 187129429, 967051293, 549951551, 653124416, 788984, 1479174924, 1680011736, 447453839, 890841598, 293394300, 527727631, 529042816, 1382138962, 1206186973); + uint b1 = (491079274); + uint4x4 r1 = uint4x4(186702576, 371762244, 375527487, 618745463, 1031986773, 1000908074, 491343762, 1164914022, 2036840370, 133094629, 677146516, 205099286, 36780645, 47041514, 1327792696, 1520547255); + TestUtils.AreEqual(a1 ^ b1, r1); + + uint4x4 a2 = uint4x4(1059509471, 64097148, 1814786305, 716239, 476052372, 92561487, 2058208914, 41260658, 1316660543, 2113008061, 256229982, 111578612, 1207271814, 2099944258, 1913013312, 870798185); + uint b2 = (744733291); + uint4x4 r2 = uint4x4(323317428, 800174359, 1078512490, 745101220, 809255423, 703060516, 1456372985, 773205017, 1645813588, 1368542166, 589723701, 717567903, 1805007853, 1363747113, 1583742507, 528804098); + TestUtils.AreEqual(a2 ^ b2, r2); + + uint4x4 a3 = uint4x4(1771744425, 1026064492, 275465401, 1157615659, 2091197990, 1671757076, 574090633, 458210617, 1604017559, 1913893498, 1791703422, 2143390933, 777506800, 1972227371, 2073971655, 61542294); + uint b3 = (75727457); + uint4x4 r3 = uint4x4(1830366920, 967508493, 350799576, 1081889354, 2015798343, 1730641781, 649359336, 533479256, 1528356854, 1989160987, 1850260255, 2067926708, 718556561, 1896763210, 2132658598, 120098295); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void uint4x4_operator_bitwise_xor_scalar_wide() + { + uint a0 = (1288453276); + uint4x4 b0 = uint4x4(1077599928, 884741329, 212164516, 1585020328, 152985454, 1775851275, 1416249064, 1309317737, 1773918217, 1509843030, 1206045972, 1154916424, 1947871003, 1774252400, 1946113778, 1079717492); + uint4x4 r0 = uint4x4(217506340, 2020616269, 1080648504, 313868596, 1171416050, 622160791, 413532788, 46573301, 628614293, 355622090, 187625864, 135961812, 953555847, 621596140, 1060334190, 211227368); + TestUtils.AreEqual(a0 ^ b0, r0); + + uint a1 = (290620937); + uint4x4 b1 = uint4x4(1382343363, 939045099, 1309568053, 221134131, 885841718, 612068188, 194068085, 1396957881, 573581481, 1813817520, 86594349, 2006985393, 1431761813, 905646837, 1522414781, 192882943); + uint4x4 r1 = uint4x4(1127638218, 648689378, 1599924796, 477936442, 631134527, 891940181, 449034364, 1108436144, 862105248, 2102275769, 343659812, 1727179960, 1141142940, 615093500, 1273803444, 439201526); + TestUtils.AreEqual(a1 ^ b1, r1); + + uint a2 = (714832744); + uint4x4 b2 = uint4x4(374210759, 215701593, 1573378082, 779254615, 711527976, 710611783, 223429246, 593102399, 1444947259, 302938485, 684673240, 1417651941, 1426772271, 948720266, 177752267, 2005602645); + uint4x4 r2 = uint4x4(1020623791, 641737521, 2002559818, 82378815, 15889728, 12609583, 667564310, 163675479, 2092654163, 949289501, 39072688, 2128928141, 2140252743, 303507938, 537080739, 1561356861); + TestUtils.AreEqual(a2 ^ b2, r2); + + uint a3 = (896851285); + uint4x4 b3 = uint4x4(1187420887, 536338211, 874727301, 1067319145, 191758210, 272673141, 18096431, 188062447, 1726887620, 2109517402, 1329654715, 1449815991, 342156404, 604196193, 1831114838, 962033481); + uint4x4 r3 = uint4x4(1941063554, 713228918, 22518480, 183050812, 1041834711, 624194592, 878771322, 1044465594, 1402661777, 1221096207, 2050242286, 1662956258, 554711329, 293048372, 1481655555, 203663900); + TestUtils.AreEqual(a3 ^ b3, r3); + } + + [TestCompiler] + public static void uint4x4_operator_left_shift() + { + uint4x4 a0 = uint4x4(197771193, 622182602, 1283988958, 1327917304, 473415985, 432425717, 870301196, 2058433484, 1200694230, 1531607705, 1360008038, 1008296534, 1447702302, 1079614371, 35667343, 1664454606); + int b0 = (1321149625); + uint4x4 r0 = uint4x4(1912602624, 2483027968, 3154116608, 4026531840, 1644167168, 3925868544, 402653184, 2550136832, 2885681152, 838860800, 3422552064, 2885681152, 1006632960, 1174405120, 503316480, 2617245696); + TestUtils.AreEqual(a0 << b0, r0); + + uint4x4 a1 = uint4x4(2045594989, 592678686, 297755411, 1722762487, 1161625759, 37265945, 997793693, 1521705181, 263886278, 221147365, 2084190583, 230910816, 71403448, 481375728, 1176038816, 1382694875); + int b1 = (2077023268); + uint4x4 r1 = uint4x4(2664748752, 892924384, 469119280, 1794396016, 1406142960, 596255120, 3079797200, 2872446416, 4222180448, 3538357840, 3282278256, 3694573056, 1142455168, 3407044352, 1636751872, 648281520); + TestUtils.AreEqual(a1 << b1, r1); + + uint4x4 a2 = uint4x4(1824729613, 1581610518, 407677878, 1208958192, 740058147, 946058001, 880835937, 2063772405, 430594634, 281771991, 1130057990, 1127968177, 1628217625, 979935914, 17663275, 956738326); + int b2 = (1535276688); + uint4x4 r2 = uint4x4(705495040, 1981153280, 2880831488, 1022361600, 1680015360, 3004235776, 2103508992, 2868183040, 1514799104, 2144796672, 1359347712, 1840316416, 2702770176, 2729050112, 2234187776, 2870345728); + TestUtils.AreEqual(a2 << b2, r2); + + uint4x4 a3 = uint4x4(1996060114, 542942787, 65869628, 622492353, 159523866, 584916657, 286195265, 1953695770, 209529707, 211278352, 933594260, 1827522668, 1129290782, 1050231977, 183969222, 1773085306); + int b3 = (927390277); + uint4x4 r3 = uint4x4(3744381504, 194300000, 2107828096, 2739886112, 809796416, 1537463840, 568313888, 2388722496, 2409983328, 2465939968, 4105212544, 2646150528, 1777566656, 3542652192, 1592047808, 904154944); + TestUtils.AreEqual(a3 << b3, r3); + } + + [TestCompiler] + public static void uint4x4_operator_right_shift() + { + uint4x4 a0 = uint4x4(548167301, 1161338299, 1617625829, 1860731847, 713958715, 196552656, 770466193, 1265099998, 572763124, 506619530, 426807581, 2031319045, 701927980, 917785020, 569504877, 185593382); + int b0 = (1266801540); + uint4x4 r0 = uint4x4(34260456, 72583643, 101101614, 116295740, 44622419, 12284541, 48154137, 79068749, 35797695, 31663720, 26675473, 126957440, 43870498, 57361563, 35594054, 11599586); + TestUtils.AreEqual(a0 >> b0, r0); + + uint4x4 a1 = uint4x4(1102123711, 1624751550, 280138733, 1598620011, 1840564178, 736389149, 1279158873, 408822762, 763607760, 348013684, 1568185874, 774126687, 1587054000, 600069797, 29576474, 1880981389); + int b1 = (334005460); + uint4x4 r1 = uint4x4(1051, 1549, 267, 1524, 1755, 702, 1219, 389, 728, 331, 1495, 738, 1513, 572, 28, 1793); + TestUtils.AreEqual(a1 >> b1, r1); + + uint4x4 a2 = uint4x4(352174824, 425441430, 186542511, 1099859381, 1234295294, 1028666766, 761662151, 1254855819, 903402043, 1180315725, 182990778, 958706431, 1075621082, 1409488892, 1576738052, 700893981); + int b2 = (1164508476); + uint4x4 r2 = uint4x4(1, 1, 0, 4, 4, 3, 2, 4, 3, 4, 0, 3, 4, 5, 5, 2); + TestUtils.AreEqual(a2 >> b2, r2); + + uint4x4 a3 = uint4x4(1435331003, 1447204571, 494777716, 1097030937, 1573721009, 424949150, 338466956, 1451909085, 2097834602, 1996022619, 1349763966, 490973311, 1133192771, 2054033380, 397231107, 150337656); + int b3 = (1759616654); + uint4x4 r3 = uint4x4(87605, 88330, 30198, 66957, 96052, 25936, 20658, 88617, 128041, 121827, 82383, 29966, 69164, 125368, 24245, 9175); + TestUtils.AreEqual(a3 >> b3, r3); + } + + [TestCompiler] + public static void uint4x4_operator_bitwise_not() + { + uint4x4 a0 = uint4x4(1403358969, 831360921, 2088190243, 976721016, 878283189, 308994339, 1935567517, 1420884856, 472965491, 771711426, 627580960, 2061524024, 753208488, 2097179283, 1303022493, 664744603); + uint4x4 r0 = uint4x4(2891608326, 3463606374, 2206777052, 3318246279, 3416684106, 3985972956, 2359399778, 2874082439, 3822001804, 3523255869, 3667386335, 2233443271, 3541758807, 2197788012, 2991944802, 3630222692); + TestUtils.AreEqual(~a0, r0); + + uint4x4 a1 = uint4x4(1289372466, 1951018596, 1545651937, 717936457, 1284504687, 1342785385, 869629475, 2045854321, 1282546942, 1562433528, 1824824810, 1736570715, 508906058, 2060752880, 1867418756, 388530274); + uint4x4 r1 = uint4x4(3005594829, 2343948699, 2749315358, 3577030838, 3010462608, 2952181910, 3425337820, 2249112974, 3012420353, 2732533767, 2470142485, 2558396580, 3786061237, 2234214415, 2427548539, 3906437021); + TestUtils.AreEqual(~a1, r1); + + uint4x4 a2 = uint4x4(695179852, 897923626, 1816190464, 1362906829, 1227946838, 700158434, 189609278, 956441808, 2123488810, 1593014251, 19223061, 1722107954, 1636875694, 1914097392, 1382545027, 1285277010); + uint4x4 r2 = uint4x4(3599787443, 3397043669, 2478776831, 2932060466, 3067020457, 3594808861, 4105358017, 3338525487, 2171478485, 2701953044, 4275744234, 2572859341, 2658091601, 2380869903, 2912422268, 3009690285); + TestUtils.AreEqual(~a2, r2); + + uint4x4 a3 = uint4x4(722020848, 183545104, 2006881282, 685422512, 70717710, 1636059183, 1218560768, 1078350342, 1743219894, 894044458, 110742707, 1831797788, 2111543080, 858442193, 907645851, 1672993750); + uint4x4 r3 = uint4x4(3572946447, 4111422191, 2288086013, 3609544783, 4224249585, 2658908112, 3076406527, 3216616953, 2551747401, 3400922837, 4184224588, 2463169507, 2183424215, 3436525102, 3387321444, 2621973545); + TestUtils.AreEqual(~a3, r3); + } + + + } +} diff --git a/package/Tests/Tests/Shared/TestUint4x4.gen.cs.meta b/package/Tests/Tests/Shared/TestUint4x4.gen.cs.meta new file mode 100755 index 000000000..8c8d1fae0 --- /dev/null +++ b/package/Tests/Tests/Shared/TestUint4x4.gen.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 9c652e046dd97fc4aadae764262652ad +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/package/Tests/Tests/Shared/TestUtils.cs b/package/Tests/Tests/Shared/TestUtils.cs new file mode 100755 index 000000000..addf5dbbb --- /dev/null +++ b/package/Tests/Tests/Shared/TestUtils.cs @@ -0,0 +1,707 @@ +using NUnit.Framework; +using static Unity.Mathematics.math; + +namespace Unity.Mathematics.Tests +{ + class TestUtils + { + + public static void AreEqual(bool a, bool b) + { + Assert.AreEqual(a, b); + } + + public static void AreEqual(int a, int b) + { + Assert.AreEqual(a, b); + } + + public static void AreEqual(uint a, uint b) + { + Assert.AreEqual(a, b); + } + + public static void AreEqual(long a, long b) + { + Assert.AreEqual(a, b); + } + + public static void AreEqual(ulong a, ulong b) + { + Assert.AreEqual(a, b); + } + + public static void AreEqual(float a, float b, float delta = 0.0f) + { + Assert.AreEqual(a, b, delta); + } + + public static void AreEqual(float a, float b, int maxUlp, bool signedZeroEqual) + { + if (signedZeroEqual && a == b) + return; + + if(isfinite(a) && isfinite(b)) + { + int ia = asint(a); + int ib = asint(b); + if ((ia ^ ib) < 0) + Assert.AreEqual(true, false); + int ulps = abs(ia - ib); + Assert.AreEqual(true, ulps <= maxUlp); + } + else + { + if (a != b && (!isnan(a) || !isnan(b))) + Assert.AreEqual(true, false); + } + } + + public static void AreEqual(double a, double b, double delta = 0.0) + { + Assert.AreEqual(a, b, delta); + } + + public static void AreEqual(double a, double b, int maxUlp, bool signedZeroEqual) + { + if (signedZeroEqual && a == b) + return; + + if (isfinite(a) && isfinite(b)) + { + long la = aslong(a); + long lb = aslong(b); + if ((la ^ lb) < 0) + Assert.AreEqual(true, false); + long ulps = abs(la - lb); + Assert.AreEqual(true, ulps <= maxUlp); + } + else + { + if (a != b && (!isnan(a) || !isnan(b))) + Assert.AreEqual(true, false); + } + } + + + // bool + public static void AreEqual(bool2 a, bool2 b) + { + AreEqual(a.x, b.x); + AreEqual(a.y, b.y); + } + + public static void AreEqual(bool3 a, bool3 b) + { + AreEqual(a.x, b.x); + AreEqual(a.y, b.y); + AreEqual(a.z, b.z); + } + + public static void AreEqual(bool4 a, bool4 b) + { + AreEqual(a.x, b.x); + AreEqual(a.y, b.y); + AreEqual(a.z, b.z); + AreEqual(a.w, b.w); + } + + + public static void AreEqual(bool2x2 a, bool2x2 b) + { + AreEqual(a.c0, b.c0); + AreEqual(a.c1, b.c1); + } + + public static void AreEqual(bool3x2 a, bool3x2 b) + { + AreEqual(a.c0, b.c0); + AreEqual(a.c1, b.c1); + } + + public static void AreEqual(bool4x2 a, bool4x2 b) + { + AreEqual(a.c0, b.c0); + AreEqual(a.c1, b.c1); + } + + + public static void AreEqual(bool2x3 a, bool2x3 b) + { + AreEqual(a.c0, b.c0); + AreEqual(a.c1, b.c1); + AreEqual(a.c2, b.c2); + } + + public static void AreEqual(bool3x3 a, bool3x3 b) + { + AreEqual(a.c0, b.c0); + AreEqual(a.c1, b.c1); + AreEqual(a.c2, b.c2); + } + + public static void AreEqual(bool4x3 a, bool4x3 b) + { + AreEqual(a.c0, b.c0); + AreEqual(a.c1, b.c1); + AreEqual(a.c2, b.c2); + } + + + public static void AreEqual(bool2x4 a, bool2x4 b) + { + AreEqual(a.c0, b.c0); + AreEqual(a.c1, b.c1); + AreEqual(a.c2, b.c2); + AreEqual(a.c3, b.c3); + } + + public static void AreEqual(bool3x4 a, bool3x4 b) + { + AreEqual(a.c0, b.c0); + AreEqual(a.c1, b.c1); + AreEqual(a.c2, b.c2); + AreEqual(a.c3, b.c3); + } + + public static void AreEqual(bool4x4 a, bool4x4 b) + { + AreEqual(a.c0, b.c0); + AreEqual(a.c1, b.c1); + AreEqual(a.c2, b.c2); + AreEqual(a.c3, b.c3); + } + + // int + public static void AreEqual(int2 a, int2 b) + { + AreEqual(a.x, b.x); + AreEqual(a.y, b.y); + } + + public static void AreEqual(int3 a, int3 b) + { + AreEqual(a.x, b.x); + AreEqual(a.y, b.y); + AreEqual(a.z, b.z); + } + + public static void AreEqual(int4 a, int4 b) + { + AreEqual(a.x, b.x); + AreEqual(a.y, b.y); + AreEqual(a.z, b.z); + AreEqual(a.w, b.w); + } + + + public static void AreEqual(int2x2 a, int2x2 b) + { + AreEqual(a.c0, b.c0); + AreEqual(a.c1, b.c1); + } + + public static void AreEqual(int3x2 a, int3x2 b) + { + AreEqual(a.c0, b.c0); + AreEqual(a.c1, b.c1); + } + + public static void AreEqual(int4x2 a, int4x2 b) + { + AreEqual(a.c0, b.c0); + AreEqual(a.c1, b.c1); + } + + + public static void AreEqual(int2x3 a, int2x3 b) + { + AreEqual(a.c0, b.c0); + AreEqual(a.c1, b.c1); + AreEqual(a.c2, b.c2); + } + + public static void AreEqual(int3x3 a, int3x3 b) + { + AreEqual(a.c0, b.c0); + AreEqual(a.c1, b.c1); + AreEqual(a.c2, b.c2); + } + + public static void AreEqual(int4x3 a, int4x3 b) + { + AreEqual(a.c0, b.c0); + AreEqual(a.c1, b.c1); + AreEqual(a.c2, b.c2); + } + + + + public static void AreEqual(int2x4 a, int2x4 b) + { + AreEqual(a.c0, b.c0); + AreEqual(a.c1, b.c1); + AreEqual(a.c2, b.c2); + AreEqual(a.c3, b.c3); + } + + public static void AreEqual(int3x4 a, int3x4 b) + { + AreEqual(a.c0, b.c0); + AreEqual(a.c1, b.c1); + AreEqual(a.c2, b.c2); + AreEqual(a.c3, b.c3); + } + + public static void AreEqual(int4x4 a, int4x4 b) + { + AreEqual(a.c0, b.c0); + AreEqual(a.c1, b.c1); + AreEqual(a.c2, b.c2); + AreEqual(a.c3, b.c3); + } + + + // uint + public static void AreEqual(uint2 a, uint2 b) + { + AreEqual(a.x, b.x); + AreEqual(a.y, b.y); + } + + public static void AreEqual(uint3 a, uint3 b) + { + AreEqual(a.x, b.x); + AreEqual(a.y, b.y); + AreEqual(a.z, b.z); + } + + public static void AreEqual(uint4 a, uint4 b) + { + AreEqual(a.x, b.x); + AreEqual(a.y, b.y); + AreEqual(a.z, b.z); + AreEqual(a.w, b.w); + } + + + public static void AreEqual(uint2x2 a, uint2x2 b) + { + AreEqual(a.c0, b.c0); + AreEqual(a.c1, b.c1); + } + + public static void AreEqual(uint3x2 a, uint3x2 b) + { + AreEqual(a.c0, b.c0); + AreEqual(a.c1, b.c1); + } + + public static void AreEqual(uint4x2 a, uint4x2 b) + { + AreEqual(a.c0, b.c0); + AreEqual(a.c1, b.c1); + } + + + public static void AreEqual(uint2x3 a, uint2x3 b) + { + AreEqual(a.c0, b.c0); + AreEqual(a.c1, b.c1); + AreEqual(a.c2, b.c2); + } + + public static void AreEqual(uint3x3 a, uint3x3 b) + { + AreEqual(a.c0, b.c0); + AreEqual(a.c1, b.c1); + AreEqual(a.c2, b.c2); + } + + public static void AreEqual(uint4x3 a, uint4x3 b) + { + AreEqual(a.c0, b.c0); + AreEqual(a.c1, b.c1); + AreEqual(a.c2, b.c2); + } + + + public static void AreEqual(uint2x4 a, uint2x4 b) + { + AreEqual(a.c0, b.c0); + AreEqual(a.c1, b.c1); + AreEqual(a.c2, b.c2); + AreEqual(a.c3, b.c3); + } + + public static void AreEqual(uint3x4 a, uint3x4 b) + { + AreEqual(a.c0, b.c0); + AreEqual(a.c1, b.c1); + AreEqual(a.c2, b.c2); + AreEqual(a.c3, b.c3); + } + + public static void AreEqual(uint4x4 a, uint4x4 b) + { + AreEqual(a.c0, b.c0); + AreEqual(a.c1, b.c1); + AreEqual(a.c2, b.c2); + AreEqual(a.c3, b.c3); + } + + // float + public static void AreEqual(float2 a, float2 b, float delta = 0.0f) + { + AreEqual(a.x, b.x, delta); + AreEqual(a.y, b.y, delta); + } + + public static void AreEqual(float2 a, float2 b, int maxUlp, bool signedZeroEqual) + { + AreEqual(a.x, b.x, maxUlp, signedZeroEqual); + AreEqual(a.y, b.y, maxUlp, signedZeroEqual); + } + + public static void AreEqual(float3 a, float3 b, float delta = 0.0f) + { + AreEqual(a.x, b.x, delta); + AreEqual(a.y, b.y, delta); + AreEqual(a.z, b.z, delta); + } + + public static void AreEqual(float3 a, float3 b, int maxUlp, bool signedZeroEqual) + { + AreEqual(a.x, b.x, maxUlp, signedZeroEqual); + AreEqual(a.y, b.y, maxUlp, signedZeroEqual); + AreEqual(a.z, b.z, maxUlp, signedZeroEqual); + } + + public static void AreEqual(float4 a, float4 b, float delta = 0.0f) + { + AreEqual(a.x, b.x, delta); + AreEqual(a.y, b.y, delta); + AreEqual(a.z, b.z, delta); + AreEqual(a.w, b.w, delta); + } + + public static void AreEqual(float4 a, float4 b, int maxUlp, bool signedZeroEqual) + { + AreEqual(a.x, b.x, maxUlp, signedZeroEqual); + AreEqual(a.y, b.y, maxUlp, signedZeroEqual); + AreEqual(a.z, b.z, maxUlp, signedZeroEqual); + AreEqual(a.w, b.w, maxUlp, signedZeroEqual); + } + + + public static void AreEqual(float2x2 a, float2x2 b, float delta = 0.0f) + { + AreEqual(a.c0, b.c0, delta); + AreEqual(a.c1, b.c1, delta); + } + + public static void AreEqual(float2x2 a, float2x2 b, int maxUlp, bool signedZeroEqual) + { + AreEqual(a.c0, b.c0, maxUlp, signedZeroEqual); + AreEqual(a.c1, b.c1, maxUlp, signedZeroEqual); + } + + public static void AreEqual(float3x2 a, float3x2 b, float delta = 0.0f) + { + AreEqual(a.c0, b.c0, delta); + AreEqual(a.c1, b.c1, delta); + } + + public static void AreEqual(float3x2 a, float3x2 b, int maxUlp, bool signedZeroEqual) + { + AreEqual(a.c0, b.c0, maxUlp, signedZeroEqual); + AreEqual(a.c1, b.c1, maxUlp, signedZeroEqual); + } + + public static void AreEqual(float4x2 a, float4x2 b, float delta = 0.0f) + { + AreEqual(a.c0, b.c0, delta); + AreEqual(a.c1, b.c1, delta); + } + + public static void AreEqual(float4x2 a, float4x2 b, int maxUlp, bool signedZeroEqual) + { + AreEqual(a.c0, b.c0, maxUlp, signedZeroEqual); + AreEqual(a.c1, b.c1, maxUlp, signedZeroEqual); + } + + + public static void AreEqual(float2x3 a, float2x3 b, float delta = 0.0f) + { + AreEqual(a.c0, b.c0, delta); + AreEqual(a.c1, b.c1, delta); + AreEqual(a.c2, b.c2, delta); + } + + public static void AreEqual(float2x3 a, float2x3 b, int maxUlp, bool signedZeroEqual) + { + AreEqual(a.c0, b.c0, maxUlp, signedZeroEqual); + AreEqual(a.c1, b.c1, maxUlp, signedZeroEqual); + AreEqual(a.c2, b.c2, maxUlp, signedZeroEqual); + } + + public static void AreEqual(float3x3 a, float3x3 b, float delta = 0.0f) + { + AreEqual(a.c0, b.c0, delta); + AreEqual(a.c1, b.c1, delta); + AreEqual(a.c2, b.c2, delta); + } + + public static void AreEqual(float3x3 a, float3x3 b, int maxUlp, bool signedZeroEqual) + { + AreEqual(a.c0, b.c0, maxUlp, signedZeroEqual); + AreEqual(a.c1, b.c1, maxUlp, signedZeroEqual); + AreEqual(a.c2, b.c2, maxUlp, signedZeroEqual); + } + + public static void AreEqual(float4x3 a, float4x3 b, float delta = 0.0f) + { + AreEqual(a.c0, b.c0, delta); + AreEqual(a.c1, b.c1, delta); + AreEqual(a.c2, b.c2, delta); + } + + public static void AreEqual(float4x3 a, float4x3 b, int maxUlp, bool signedZeroEqual) + { + AreEqual(a.c0, b.c0, maxUlp, signedZeroEqual); + AreEqual(a.c1, b.c1, maxUlp, signedZeroEqual); + AreEqual(a.c2, b.c2, maxUlp, signedZeroEqual); + } + + + public static void AreEqual(float2x4 a, float2x4 b, float delta = 0.0f) + { + AreEqual(a.c0, b.c0, delta); + AreEqual(a.c1, b.c1, delta); + AreEqual(a.c2, b.c2, delta); + AreEqual(a.c3, b.c3, delta); + } + + public static void AreEqual(float2x4 a, float2x4 b, int maxUlp, bool signedZeroEqual) + { + AreEqual(a.c0, b.c0, maxUlp, signedZeroEqual); + AreEqual(a.c1, b.c1, maxUlp, signedZeroEqual); + AreEqual(a.c2, b.c2, maxUlp, signedZeroEqual); + AreEqual(a.c3, b.c3, maxUlp, signedZeroEqual); + } + + public static void AreEqual(float3x4 a, float3x4 b, float delta = 0.0f) + { + AreEqual(a.c0, b.c0, delta); + AreEqual(a.c1, b.c1, delta); + AreEqual(a.c2, b.c2, delta); + AreEqual(a.c3, b.c3, delta); + } + + public static void AreEqual(float3x4 a, float3x4 b, int maxUlp, bool signedZeroEqual) + { + AreEqual(a.c0, b.c0, maxUlp, signedZeroEqual); + AreEqual(a.c1, b.c1, maxUlp, signedZeroEqual); + AreEqual(a.c2, b.c2, maxUlp, signedZeroEqual); + AreEqual(a.c3, b.c3, maxUlp, signedZeroEqual); + } + + public static void AreEqual(float4x4 a, float4x4 b, float delta = 0.0f) + { + AreEqual(a.c0, b.c0, delta); + AreEqual(a.c1, b.c1, delta); + AreEqual(a.c2, b.c2, delta); + AreEqual(a.c3, b.c3, delta); + } + + public static void AreEqual(float4x4 a, float4x4 b, int maxUlp, bool signedZeroEqual) + { + AreEqual(a.c0, b.c0, maxUlp, signedZeroEqual); + AreEqual(a.c1, b.c1, maxUlp, signedZeroEqual); + AreEqual(a.c2, b.c2, maxUlp, signedZeroEqual); + AreEqual(a.c3, b.c3, maxUlp, signedZeroEqual); + } + + // double + public static void AreEqual(double2 a, double2 b, double delta = 0.0) + { + AreEqual(a.x, b.x, delta); + AreEqual(a.y, b.y, delta); + } + + public static void AreEqual(double2 a, double2 b, int maxUlp, bool signedZeroEqual) + { + AreEqual(a.x, b.x, maxUlp, signedZeroEqual); + AreEqual(a.y, b.y, maxUlp, signedZeroEqual); + } + + public static void AreEqual(double3 a, double3 b, double delta = 0.0) + { + AreEqual(a.x, b.x, delta); + AreEqual(a.y, b.y, delta); + AreEqual(a.z, b.z, delta); + } + + public static void AreEqual(double3 a, double3 b, int maxUlp, bool signedZeroEqual) + { + AreEqual(a.x, b.x, maxUlp, signedZeroEqual); + AreEqual(a.y, b.y, maxUlp, signedZeroEqual); + AreEqual(a.z, b.z, maxUlp, signedZeroEqual); + } + + public static void AreEqual(double4 a, double4 b, double delta = 0.0) + { + AreEqual(a.x, b.x, delta); + AreEqual(a.y, b.y, delta); + AreEqual(a.z, b.z, delta); + AreEqual(a.w, b.w, delta); + } + + public static void AreEqual(double4 a, double4 b, int maxUlp, bool signedZeroEqual) + { + AreEqual(a.x, b.x, maxUlp, signedZeroEqual); + AreEqual(a.y, b.y, maxUlp, signedZeroEqual); + AreEqual(a.z, b.z, maxUlp, signedZeroEqual); + AreEqual(a.w, b.w, maxUlp, signedZeroEqual); + } + + + public static void AreEqual(double2x2 a, double2x2 b, double delta = 0.0) + { + AreEqual(a.c0, b.c0, delta); + AreEqual(a.c1, b.c1, delta); + } + + public static void AreEqual(double2x2 a, double2x2 b, int maxUlp, bool signedZeroEqual) + { + AreEqual(a.c0, b.c0, maxUlp, signedZeroEqual); + AreEqual(a.c1, b.c1, maxUlp, signedZeroEqual); + } + + public static void AreEqual(double3x2 a, double3x2 b, double delta = 0.0) + { + AreEqual(a.c0, b.c0, delta); + AreEqual(a.c1, b.c1, delta); + } + + public static void AreEqual(double3x2 a, double3x2 b, int maxUlp, bool signedZeroEqual) + { + AreEqual(a.c0, b.c0, maxUlp, signedZeroEqual); + AreEqual(a.c1, b.c1, maxUlp, signedZeroEqual); + } + + public static void AreEqual(double4x2 a, double4x2 b, double delta = 0.0) + { + AreEqual(a.c0, b.c0, delta); + AreEqual(a.c1, b.c1, delta); + } + + public static void AreEqual(double4x2 a, double4x2 b, int maxUlp, bool signedZeroEqual) + { + AreEqual(a.c0, b.c0, maxUlp, signedZeroEqual); + AreEqual(a.c1, b.c1, maxUlp, signedZeroEqual); + } + + public static void AreEqual(double2x3 a, double2x3 b, double delta = 0.0) + { + AreEqual(a.c0, b.c0, delta); + AreEqual(a.c1, b.c1, delta); + AreEqual(a.c2, b.c2, delta); + } + + public static void AreEqual(double2x3 a, double2x3 b, int maxUlp, bool signedZeroEqual) + { + AreEqual(a.c0, b.c0, maxUlp, signedZeroEqual); + AreEqual(a.c1, b.c1, maxUlp, signedZeroEqual); + AreEqual(a.c2, b.c2, maxUlp, signedZeroEqual); + } + + public static void AreEqual(double3x3 a, double3x3 b, double delta = 0.0) + { + AreEqual(a.c0, b.c0, delta); + AreEqual(a.c1, b.c1, delta); + AreEqual(a.c2, b.c2, delta); + } + + public static void AreEqual(double3x3 a, double3x3 b, int maxUlp, bool signedZeroEqual) + { + AreEqual(a.c0, b.c0, maxUlp, signedZeroEqual); + AreEqual(a.c1, b.c1, maxUlp, signedZeroEqual); + AreEqual(a.c2, b.c2, maxUlp, signedZeroEqual); + } + + public static void AreEqual(double4x3 a, double4x3 b, double delta = 0.0) + { + AreEqual(a.c0, b.c0, delta); + AreEqual(a.c1, b.c1, delta); + AreEqual(a.c2, b.c2, delta); + } + + public static void AreEqual(double4x3 a, double4x3 b, int maxUlp, bool signedZeroEqual) + { + AreEqual(a.c0, b.c0, maxUlp, signedZeroEqual); + AreEqual(a.c1, b.c1, maxUlp, signedZeroEqual); + AreEqual(a.c2, b.c2, maxUlp, signedZeroEqual); + } + + + public static void AreEqual(double2x4 a, double2x4 b, double delta = 0.0) + { + AreEqual(a.c0, b.c0, delta); + AreEqual(a.c1, b.c1, delta); + AreEqual(a.c2, b.c2, delta); + AreEqual(a.c3, b.c3, delta); + } + + public static void AreEqual(double2x4 a, double2x4 b, int maxUlp, bool signedZeroEqual) + { + AreEqual(a.c0, b.c0, maxUlp, signedZeroEqual); + AreEqual(a.c1, b.c1, maxUlp, signedZeroEqual); + AreEqual(a.c2, b.c2, maxUlp, signedZeroEqual); + AreEqual(a.c3, b.c3, maxUlp, signedZeroEqual); + } + + public static void AreEqual(double3x4 a, double3x4 b, double delta = 0.0) + { + AreEqual(a.c0, b.c0, delta); + AreEqual(a.c1, b.c1, delta); + AreEqual(a.c2, b.c2, delta); + AreEqual(a.c3, b.c3, delta); + } + + public static void AreEqual(double3x4 a, double3x4 b, int maxUlp, bool signedZeroEqual) + { + AreEqual(a.c0, b.c0, maxUlp, signedZeroEqual); + AreEqual(a.c1, b.c1, maxUlp, signedZeroEqual); + AreEqual(a.c2, b.c2, maxUlp, signedZeroEqual); + AreEqual(a.c3, b.c3, maxUlp, signedZeroEqual); + } + + public static void AreEqual(double4x4 a, double4x4 b, double delta = 0.0) + { + AreEqual(a.c0, b.c0, delta); + AreEqual(a.c1, b.c1, delta); + AreEqual(a.c2, b.c2, delta); + AreEqual(a.c3, b.c3, delta); + } + + public static void AreEqual(double4x4 a, double4x4 b, int maxUlp, bool signedZeroEqual) + { + AreEqual(a.c0, b.c0, maxUlp, signedZeroEqual); + AreEqual(a.c1, b.c1, maxUlp, signedZeroEqual); + AreEqual(a.c2, b.c2, maxUlp, signedZeroEqual); + AreEqual(a.c3, b.c3, maxUlp, signedZeroEqual); + } + + public static void AreEqual(quaternion a, quaternion b, float delta = 0.0f) + { + AreEqual(a.value, b.value, delta); + } + + public static void AreEqual(RigidTransform a, RigidTransform b, float delta = 0.0f) + { + AreEqual(a.rot, b.rot, delta); + AreEqual(a.pos, b.pos, delta); + } + } +} diff --git a/package/Tests/Tests/Shared/TestUtils.cs.meta b/package/Tests/Tests/Shared/TestUtils.cs.meta new file mode 100755 index 000000000..5629e131e --- /dev/null +++ b/package/Tests/Tests/Shared/TestUtils.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: cff1594319560b44ba925eb76a273c80 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/package/Tests/Tests/TestMath2.cs b/package/Tests/Tests/TestMath2.cs new file mode 100755 index 000000000..e5867b6c5 --- /dev/null +++ b/package/Tests/Tests/TestMath2.cs @@ -0,0 +1,63 @@ +using NUnit.Framework; +using static Unity.Mathematics.math; +using Burst.Compiler.IL.Tests; + +namespace Unity.Mathematics.Tests +{ + [TestFixture] + public partial class TestMath + { + [TestCompiler] + public unsafe void hash_blob() + { + byte[] testData = { + 0x0d, 0x26, 0x1c, 0xeb, 0x56, 0x3a, 0x9c, 0x18, 0x93, 0xb6, + 0xc1, 0x99, 0x5e, 0x04, 0x92, 0x4f, 0x6e, 0xb7, 0x42, 0x53, + 0x23, 0xcf, 0xe3, 0xbf, 0x16, 0x64, 0x79, 0x08, 0xc1, 0x01, + 0x43, 0x89, 0x73, 0x8f, 0x76, 0x22, 0x0c, 0xee, 0x9b, 0x80, + 0x31, 0x83, 0xce, 0x33, 0x8b, 0xc7, 0x3f, 0x94, 0x33 + }; + + uint[] resultsWithZeroSeed = + { + 0x02cc5d05, 0x376a5b3f, 0x8ae13198, 0xf5b14d72, 0xcc7ddc84, + 0x763e5905, 0x58759392, 0x6bccbd00, 0x7d0f80c8, 0xef01ae48, + 0xe40aa3ad, 0x805e04ad, 0xf98a471c, 0xdd960ac1, 0x76a71750, + 0xd35e2baa, 0x0219f7da, 0xd5bd1fbd, 0x5f28c87e, 0xfe6f7995, + 0x69a43ac5, 0xec1a1a15, 0x7ae9f103, 0x8d04a688, 0xce3b35be, + 0x6b3f040c, 0xd5ea2e8c, 0x6989e79c, 0x8772f1fb, 0x0d7b7bf6, + 0x0796214b, 0x98ea65c4, 0x3884dd82, 0x59632484, 0x91c92822, + 0x72d28404, 0x167061b0, 0x32adc2ef, 0xbac3e672, 0xd39936b7, + 0x94e2c154, 0x8b4ff46c, 0x68976fd4, 0x04bee59a, 0x2ed62c69, + 0xabee69fd, 0xda11e266, 0xcebd9d38, 0x28eea5fd, 0x0210d6ee + }; + + + uint[] resultsWith_0xeb69cf40_seed = + { + 0x12c3b280, 0x9bc1f68d, 0x2f900b51, 0xdb77e20e, 0xf6e8f561, + 0x3f3f72f6, 0x15f9700f, 0x28beb671, 0xceece5e1, 0x7a9b5c81, + 0x62a84642, 0xf75666af, 0x8939f8ca, 0x6b84792b, 0x527ee836, + 0xa0782090, 0xce6b9926, 0xa608c73b, 0xa08ee6a3, 0xab77a6b2, + 0x4e174e68, 0x596f10d5, 0xa14c4d85, 0x509ab88d, 0xd14698a4, + 0xbaad2308, 0xbd04c3df, 0x5715fed1, 0x5cf23a74, 0xd4e844f9, + 0x166dcfba, 0xe3495e37, 0x1b18b2b3, 0x2e8c2aab, 0x40993321, + 0x4b84998a, 0xd062937d, 0x1b2c9f7b, 0x8a613ed3, 0x70d71291, + 0x1af38ea4, 0x460cb7e9, 0xf806e3a9, 0xec9b6b2e, 0x9972a843, + 0x1ff06d2a, 0xe8c5007b, 0x37d8fc40, 0x0dc4f639, 0x36edff4f + }; + fixed (byte* p = testData) + { + for (int i = 0; i < 50; ++i) + { + TestUtils.AreEqual(resultsWithZeroSeed[i], hash(p, i, 0)); + } + + for (int i = 0; i < 50; ++i) + { + TestUtils.AreEqual(resultsWith_0xeb69cf40_seed[i], hash(p, i, 0xeb69cf40)); + } + } + } + } +} diff --git a/package/Tests/Tests/TestMath2.cs.meta b/package/Tests/Tests/TestMath2.cs.meta new file mode 100755 index 000000000..d2cf65d60 --- /dev/null +++ b/package/Tests/Tests/TestMath2.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b0783b280ba38504faba05db473c408b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/package/Tests/Tests/TestRandom.cs b/package/Tests/Tests/TestRandom.cs new file mode 100755 index 000000000..a9c5895e3 --- /dev/null +++ b/package/Tests/Tests/TestRandom.cs @@ -0,0 +1,1186 @@ +using NUnit.Framework; +using System; +using static Unity.Mathematics.math; +using Burst.Compiler.IL.Tests; + +namespace Unity.Mathematics.Tests +{ + [TestFixture] + class TestRandom + { + // Kolmogorov–Smirnov test on lambda assuming the ideal distribution is uniform [0, 1] + private static void ks_test(Func func, int num_buckets = 256) + { + const int N = 8192; + var histogram = new int[num_buckets]; + + for (int i = 0; i < N; i++) + { + double x = func(); + Assert.GreaterOrEqual(x, 0.0); + Assert.LessOrEqual(x, 1.0); + int bucket = min((int)(x * num_buckets), num_buckets - 1); + + histogram[bucket]++; + } + + double largest_delta = 0.0f; + int accum = 0; + for (int i = 0; i < histogram.Length; i++) + { + accum += histogram[i]; + double current = accum / (double)N; + double target = (double)(i + 1) / histogram.Length; + largest_delta = math.max(largest_delta, math.abs(current - target)); + } + double d = 1.62762 / math.sqrt((double)N); // significance: 0.01 + Assert.Less(largest_delta, d); + } + + private static void ks_test(Func func) + { + ks_test(() => func().x); + ks_test(() => func().y); + } + + // Pearson's product-moment coefficient + private static void r_test(Func func) + { + const int N = 4096; + + double2 sum = 0.0; + var values = new double2[N]; + for(int i = 0; i < N; i++) + { + values[i] = func(); + sum += values[i]; + } + + double2 avg = sum / N; + double var_a = 0.0; + double var_b = 0.0; + double cov = 0.0; + for (int i = 0; i < N; i++) + { + double2 delta = values[i] - avg; + var_a += delta.x * delta.x; + var_b += delta.y * delta.y; + cov += delta.x * delta.y; + } + + double r = cov / sqrt(var_a * var_b); + Assert.Less(abs(r), 0.05); + } + + private static float range_check01(float x) + { + Assert.GreaterOrEqual(x, 0.0f); + Assert.Less(x, 1.0f); + return x; + } + + private static double range_check01(double x) + { + Assert.GreaterOrEqual(x, 0.0); + Assert.Less(x, 1.0); + return x; + } + + private static int range_check(int x, int min, int max) + { + Assert.GreaterOrEqual(x, min); + Assert.Less(x, max); + return x; + } + + private static uint range_check(uint x, uint min, uint max) + { + Assert.GreaterOrEqual(x, min); + Assert.Less(x, max); + return x; + } + + private static float range_check(float x, float min, float max) + { + Assert.GreaterOrEqual(x, min); + Assert.Less(x, max); + return x; + } + + private static double range_check(double x, double min, double max) + { + Assert.GreaterOrEqual(x, min); + Assert.Less(x, max); + return x; + } + + + [TestCompiler] + public static void bool_uniform() + { + var rnd = new Random(0x6E624EB7u); + ks_test((() => rnd.NextBool() ? 0.75 : 0.25), 2); + } + + [TestCompiler] + public static void bool2_uniform() + { + var rnd = new Random(0x6E624EB7u); + ks_test((() => rnd.NextBool2().x ? 0.75 : 0.25), 2); + ks_test((() => rnd.NextBool2().y ? 0.75 : 0.25), 2); + } + + [TestCompiler] + public static void bool2_independent() + { + var rnd = new Random(0x6E624EB7u); + r_test((() => select(double2(0.25), double2(0.75), rnd.NextBool2().xy))); + } + + [TestCompiler] + public static void bool3_uniform() + { + var rnd = new Random(0x6E624EB7u); + ks_test((() => rnd.NextBool3().x ? 0.75 : 0.25), 2); + ks_test((() => rnd.NextBool3().y ? 0.75 : 0.25), 2); + ks_test((() => rnd.NextBool3().z ? 0.75 : 0.25), 2); + } + + [TestCompiler] + public static void bool3_independent() + { + var rnd = new Random(0x6E624EB7u); + r_test((() => select(double2(0.25), double2(0.75), rnd.NextBool3().xy))); + r_test((() => select(double2(0.25), double2(0.75), rnd.NextBool3().xz))); + r_test((() => select(double2(0.25), double2(0.75), rnd.NextBool3().yz))); + } + + [TestCompiler] + public static void bool4_uniform() + { + var rnd = new Random(0x6E624EB7u); + ks_test((() => rnd.NextBool4().x ? 0.75 : 0.25), 2); + ks_test((() => rnd.NextBool4().y ? 0.75 : 0.25), 2); + ks_test((() => rnd.NextBool4().z ? 0.75 : 0.25), 2); + ks_test((() => rnd.NextBool4().w ? 0.75 : 0.25), 2); + } + + [TestCompiler] + public static void bool4_independent() + { + var rnd = new Random(0x6E624EB7u); + r_test((() => select(double2(0.25), double2(0.75), rnd.NextBool4().xy))); + r_test((() => select(double2(0.25), double2(0.75), rnd.NextBool4().xz))); + r_test((() => select(double2(0.25), double2(0.75), rnd.NextBool4().xw))); + r_test((() => select(double2(0.25), double2(0.75), rnd.NextBool4().yz))); + r_test((() => select(double2(0.25), double2(0.75), rnd.NextBool4().yw))); + r_test((() => select(double2(0.25), double2(0.75), rnd.NextBool4().zw))); + } + + [TestCompiler] + public static void int_uniform_low_bits() + { + var rnd = new Random(0x6E624EB7u); + ks_test((() => ((rnd.NextInt() & 255u) + 0.5) / 256.0), 256); + } + + [TestCompiler] + public static void int_uniform_high_bits() + { + var rnd = new Random(0x6E624EB7u); + ks_test((() => (((uint)rnd.NextInt() >> 24) + 0.5) / 256.0), 256); + } + + [TestCompiler] + public static void int_uniform_max() + { + var rnd = new Random(0x6E624EB7u); + int max = 17; + ks_test((() => (range_check(rnd.NextInt(max), 0, max) + 0.5) / max), max); + } + + [TestCompiler] + public static void int_uniform_max_limit() + { + var rnd = new Random(0x6E624EB7u); + int max = 2147483647; + ks_test((() => (range_check(rnd.NextInt(max), 0, max) + 0.5) / max), 256); + } + + [TestCompiler] + public static void int_uniform_min_max() + { + var rnd = new Random(0x6E624EB7u); + int min = -7; + int max = 17; + int range = max - min; + ks_test((() => (range_check(rnd.NextInt(min, max), min, max) + 0.5 - min) / range), range); + } + + [TestCompiler] + public static void int_uniform_min_max_limit() + { + var rnd = new Random(0x6E624EB7u); + int min = -2147483648; + int max = 2147483647; + long range = (long)max - (long)min; + ks_test((() => (range_check(rnd.NextInt(min, max), min, max) + 0.5 - min) / range), 256); + } + + [TestCompiler] + public static void int2_uniform_low_bits() + { + var rnd = new Random(0x6E624EB7u); + ks_test((() => ((rnd.NextInt2().x & 255u) + 0.5) / 256.0), 256); + ks_test((() => ((rnd.NextInt2().y & 255u) + 0.5) / 256.0), 256); + } + + [TestCompiler] + public static void int2_uniform_high_bits() + { + var rnd = new Random(0x6E624EB7u); + ks_test((() => (((uint)rnd.NextInt2().x >> 24) + 0.5) / 256.0), 256); + ks_test((() => (((uint)rnd.NextInt2().y >> 24) + 0.5) / 256.0), 256); + } + + [TestCompiler] + public static void int2_uniform_max() + { + var rnd = new Random(0x6E624EB7u); + int max = 2147483647; + ks_test((() => (range_check(rnd.NextInt2(max).x, 0, max) + 0.5) / max), 256); + ks_test((() => (range_check(rnd.NextInt2(max).y, 0, max) + 0.5) / max), 256); + } + + [TestCompiler] + public static void int2_uniform_min_max() + { + var rnd = new Random(0x6E624EB7u); + int2 min = int2(-7, 3); + int2 max = int2(17, 14); + int2 range = max - min; + ks_test((() => (range_check(rnd.NextInt2(min, max).x, min.x, max.x) + 0.5 - min.x) / range.x), range.x); + ks_test((() => (range_check(rnd.NextInt2(min, max).y, min.y, max.y) + 0.5 - min.y) / range.y), range.y); + } + + [TestCompiler] + public static void int2_uniform_min_max_limit() + { + var rnd = new Random(0x6E624EB7u); + int min = -2147483648; + int max = 2147483647; + long range = (long)max - (long)min; + ks_test((() => (range_check(rnd.NextInt2(min, max).x, min, max) + 0.5 - min) / range), 256); + ks_test((() => (range_check(rnd.NextInt2(min, max).y, min, max) + 0.5 - min) / range), 256); + } + + [TestCompiler] + public static void int2_independent_low_bits() + { + var rnd = new Random(0x6E624EB7u); + r_test(() => (rnd.NextInt2().xy & 255)); + } + + [TestCompiler] + public static void int2_independent_high_bits() + { + var rnd = new Random(0x6E624EB7u); + r_test(() => ((uint2)rnd.NextInt2().xy >> 24)); + } + + [TestCompiler] + public static void int3_uniform_low_bits() + { + var rnd = new Random(0x6E624EB7u); + ks_test((() => ((rnd.NextInt3().x & 255u) + 0.5) / 256.0), 256); + ks_test((() => ((rnd.NextInt3().y & 255u) + 0.5) / 256.0), 256); + ks_test((() => ((rnd.NextInt3().z & 255u) + 0.5) / 256.0), 256); + } + + [TestCompiler] + public static void int3_uniform_high_bits() + { + var rnd = new Random(0x6E624EB7u); + ks_test((() => (((uint)rnd.NextInt3().x >> 24) + 0.5) / 256.0), 256); + ks_test((() => (((uint)rnd.NextInt3().y >> 24) + 0.5) / 256.0), 256); + ks_test((() => (((uint)rnd.NextInt3().z >> 24) + 0.5) / 256.0), 256); + } + + [TestCompiler] + public static void int3_uniform_max() + { + var rnd = new Random(0x6E624EB7u); + int3 max = int3(13, 17, 19); + ks_test((() => ((uint)range_check(rnd.NextInt3(max).x, 0, max.x) + 0.5) / max.x), max.x); + ks_test((() => ((uint)range_check(rnd.NextInt3(max).y, 0, max.y) + 0.5) / max.y), max.y); + ks_test((() => ((uint)range_check(rnd.NextInt3(max).z, 0, max.z) + 0.5) / max.z), max.z); + } + + [TestCompiler] + public static void int3_uniform_max_limit() + { + var rnd = new Random(0x6E624EB7u); + int max = 2147483647; + ks_test((() => ((uint)range_check(rnd.NextInt3(max).x, 0, max) + 0.5) / max), 256); + ks_test((() => ((uint)range_check(rnd.NextInt3(max).y, 0, max) + 0.5) / max), 256); + ks_test((() => ((uint)range_check(rnd.NextInt3(max).z, 0, max) + 0.5) / max), 256); + } + + [TestCompiler] + public static void int3_uniform_min_max() + { + var rnd = new Random(0x6E624EB7u); + int3 min = int3(-7, 3, -10); + int3 max = int3(17, 14, -3); + int3 range = max - min; + ks_test((() => (range_check(rnd.NextInt3(min, max).x, min.x, max.x) + 0.5 - min.x) / range.x), range.x); + ks_test((() => (range_check(rnd.NextInt3(min, max).y, min.y, max.y) + 0.5 - min.y) / range.y), range.y); + ks_test((() => (range_check(rnd.NextInt3(min, max).z, min.z, max.z) + 0.5 - min.z) / range.z), range.z); + } + + [TestCompiler] + public static void int3_uniform_min_max_limit() + { + var rnd = new Random(0x6E624EB7u); + int min = -2147483648; + int max = 2147483647; + long range = (long)max - (long)min; + ks_test((() => (range_check(rnd.NextInt3(min, max).x, min, max) + 0.5 - min) / range), 256); + ks_test((() => (range_check(rnd.NextInt3(min, max).y, min, max) + 0.5 - min) / range), 256); + ks_test((() => (range_check(rnd.NextInt3(min, max).z, min, max) + 0.5 - min) / range), 256); + } + + [TestCompiler] + public static void int3_independent_low_bits() + { + var rnd = new Random(0x6E624EB7u); + r_test(() => (rnd.NextInt3().xy & 255)); + r_test(() => (rnd.NextInt3().xz & 255)); + r_test(() => (rnd.NextInt3().yz & 255)); + } + + [TestCompiler] + public static void int3_independent_high_bits() + { + var rnd = new Random(0x6E624EB7u); + r_test(() => ((uint2)rnd.NextInt3().xy >> 24)); + r_test(() => ((uint2)rnd.NextInt3().xz >> 24)); + r_test(() => ((uint2)rnd.NextInt3().yz >> 24)); + } + + [TestCompiler] + public static void int4_uniform_low_bits() + { + var rnd = new Random(0x6E624EB7u); + ks_test((() => ((rnd.NextInt4().x & 255u) + 0.5) / 256.0), 256); + ks_test((() => ((rnd.NextInt4().y & 255u) + 0.5) / 256.0), 256); + ks_test((() => ((rnd.NextInt4().z & 255u) + 0.5) / 256.0), 256); + ks_test((() => ((rnd.NextInt4().w & 255u) + 0.5) / 256.0), 256); + } + + [TestCompiler] + public static void int4_uniform_high_bits() + { + var rnd = new Random(0x6E624EB7u); + ks_test((() => (((uint)rnd.NextInt4().x >> 24) + 0.5) / 256.0), 256); + ks_test((() => (((uint)rnd.NextInt4().y >> 24) + 0.5) / 256.0), 256); + ks_test((() => (((uint)rnd.NextInt4().z >> 24) + 0.5) / 256.0), 256); + ks_test((() => (((uint)rnd.NextInt4().w >> 24) + 0.5) / 256.0), 256); + } + + [TestCompiler] + public static void int4_uniform_max() + { + var rnd = new Random(0x6E624EB7u); + int4 max = int4(13, 17, 19, 23); + ks_test((() => (range_check(rnd.NextInt4(max).x, 0, max.x) + 0.5) / max.x), max.x); + ks_test((() => (range_check(rnd.NextInt4(max).y, 0, max.y) + 0.5) / max.y), max.y); + ks_test((() => (range_check(rnd.NextInt4(max).z, 0, max.z) + 0.5) / max.z), max.z); + ks_test((() => (range_check(rnd.NextInt4(max).w, 0, max.w) + 0.5) / max.w), max.w); + } + + [TestCompiler] + public static void int4_uniform_max_limit() + { + var rnd = new Random(0x6E624EB7u); + int max = 2147483647; + ks_test((() => (range_check(rnd.NextInt4(max).x, 0, max) + 0.5) / max), 256); + ks_test((() => (range_check(rnd.NextInt4(max).y, 0, max) + 0.5) / max), 256); + ks_test((() => (range_check(rnd.NextInt4(max).z, 0, max) + 0.5) / max), 256); + ks_test((() => (range_check(rnd.NextInt4(max).w, 0, max) + 0.5) / max), 256); + } + + [TestCompiler] + public static void int4_uniform_min_max() + { + var rnd = new Random(0x6E624EB7u); + int4 min = int4(-7, 3, -10, 1); + int4 max = int4(17, 14, -3, 111); + int4 range = max - min; + ks_test((() => (range_check(rnd.NextInt4(min, max).x, min.x, max.x) + 0.5 - min.x) / range.x), range.x); + ks_test((() => (range_check(rnd.NextInt4(min, max).y, min.y, max.y) + 0.5 - min.y) / range.y), range.y); + ks_test((() => (range_check(rnd.NextInt4(min, max).z, min.z, max.z) + 0.5 - min.z) / range.z), range.z); + ks_test((() => (range_check(rnd.NextInt4(min, max).w, min.w, max.w) + 0.5 - min.w) / range.w), range.w); + } + + [TestCompiler] + public static void int4_uniform_min_max_limit() + { + var rnd = new Random(0x6E624EB7u); + int min = -2147483648; + int max = 2147483647; + long range = (long)max - (long)min; + ks_test((() => (range_check(rnd.NextInt4(min, max).x, min, max) + 0.5 - min) / range), 256); + ks_test((() => (range_check(rnd.NextInt4(min, max).y, min, max) + 0.5 - min) / range), 256); + ks_test((() => (range_check(rnd.NextInt4(min, max).z, min, max) + 0.5 - min) / range), 256); + ks_test((() => (range_check(rnd.NextInt4(min, max).w, min, max) + 0.5 - min) / range), 256); + } + + [TestCompiler] + public static void int4_independent_low_bits() + { + var rnd = new Random(0x6E624EB7u); + r_test(() => (rnd.NextUInt4().xy & 255)); + r_test(() => (rnd.NextUInt4().xz & 255)); + r_test(() => (rnd.NextUInt4().xw & 255)); + r_test(() => (rnd.NextUInt4().yz & 255)); + r_test(() => (rnd.NextUInt4().yw & 255)); + r_test(() => (rnd.NextUInt4().zw & 255)); + } + + [TestCompiler] + public static void int4_independent_high_bits() + { + var rnd = new Random(0x6E624EB7u); + r_test(() => ((uint2)rnd.NextUInt4().xy >> 24)); + r_test(() => ((uint2)rnd.NextUInt4().xz >> 24)); + r_test(() => ((uint2)rnd.NextUInt4().xw >> 24)); + r_test(() => ((uint2)rnd.NextUInt4().yz >> 24)); + r_test(() => ((uint2)rnd.NextUInt4().yw >> 24)); + r_test(() => ((uint2)rnd.NextUInt4().zw >> 24)); + } + + + [TestCompiler] + public static void uint_uniform_low_bits() + { + var rnd = new Random(0x6E624EB7u); + ks_test((() => ((rnd.NextUInt() & 255u) + 0.5) / 256.0), 256); + } + + [TestCompiler] + public static void uint_uniform_high_bits() + { + var rnd = new Random(0x6E624EB7u); + ks_test((() => ((rnd.NextUInt() >> 24) + 0.5) / 256.0), 256); + } + + [TestCompiler] + public static void uint_uniform_max() + { + var rnd = new Random(0x6E624EB7u); + uint max = 17; + ks_test((() => (rnd.NextUInt(max) + 0.5) / max), (int)max); + } + + [TestCompiler] + public static void uint_uniform_max_limit() + { + var rnd = new Random(0x6E624EB7u); + uint max = 0xFFFFFFFF; + ks_test((() => (rnd.NextUInt(max) + 0.5) / max), 256); + } + + [TestCompiler] + public static void uint_uniform_min_max() + { + var rnd = new Random(0x6E624EB7u); + uint min = 3; + uint max = 17; + uint range = max - min; + ks_test((() => (range_check(rnd.NextUInt(min, max), min, max) + 0.5 - min) / range), (int)range); + } + + [TestCompiler] + public static void uint_uniform_min_max_limit() + { + var rnd = new Random(0x6E624EB7u); + uint max = 0xFFFFFFFF; + ks_test((() => (range_check(rnd.NextUInt(0, max), 0, max) + 0.5) / max), 256); + } + + [TestCompiler] + public static void uint2_uniform_low_bits() + { + var rnd = new Random(0x6E624EB7u); + ks_test((() => ((rnd.NextUInt2().x & 255u) + 0.5) / 256.0), 256); + ks_test((() => ((rnd.NextUInt2().y & 255u) + 0.5) / 256.0), 256); + } + + [TestCompiler] + public static void uint2_uniform_high_bits() + { + var rnd = new Random(0x6E624EB7u); + ks_test((() => ((rnd.NextUInt2().x >> 24) + 0.5) / 256.0), 256); + ks_test((() => ((rnd.NextUInt2().y >> 24) + 0.5) / 256.0), 256); + } + + [TestCompiler] + public static void uint2_uniform_max() + { + var rnd = new Random(0x6E624EB7u); + uint2 max = uint2(13, 17); + ks_test((() => (rnd.NextUInt2(max).x + 0.5) / max.x), (int)max.x); + ks_test((() => (rnd.NextUInt2(max).y + 0.5) / max.y), (int)max.y); + } + + [TestCompiler] + public static void uint2_uniform_max_limit() + { + var rnd = new Random(0x6E624EB7u); + uint max = 0xFFFFFFFF; + ks_test((() => (rnd.NextUInt2(max).x + 0.5) / max), 256); + ks_test((() => (rnd.NextUInt2(max).y + 0.5) / max), 256); + } + + [TestCompiler] + public static void uint2_uniform_min_max() + { + var rnd = new Random(0x6E624EB7u); + uint2 min = uint2(3, 101); + uint2 max = uint2(17, 117); + uint2 range = max - min; + ks_test((() => (range_check(rnd.NextUInt2(min, max).x, min.x, max.x) + 0.5 - min.x) / range.x), (int)range.x); + ks_test((() => (range_check(rnd.NextUInt2(min, max).y, min.y, max.y) + 0.5 - min.y) / range.y), (int)range.y); + } + + [TestCompiler] + public static void uint2_uniform_min_max_limit() + { + var rnd = new Random(0x6E624EB7u); + uint max = 0xFFFFFFFF; + ks_test((() => (range_check(rnd.NextUInt2(0, max).x, 0, max) + 0.5) / max), 256); + ks_test((() => (range_check(rnd.NextUInt2(0, max).y, 0, max) + 0.5) / max), 256); + } + + [TestCompiler] + public static void uint2_independent_low_bits() + { + var rnd = new Random(0x6E624EB7u); + r_test(() => (rnd.NextUInt2().xy & 255)); + } + + [TestCompiler] + public static void uint2_independent_high_bits() + { + var rnd = new Random(0x6E624EB7u); + r_test(() => (rnd.NextUInt2().xy >> 24)); + } + + [TestCompiler] + public static void uint3_uniform_low_bits() + { + var rnd = new Random(0x6E624EB7u); + ks_test((() => ((rnd.NextUInt3().x & 255u) + 0.5) / 256.0), 256); + ks_test((() => ((rnd.NextUInt3().y & 255u) + 0.5) / 256.0), 256); + ks_test((() => ((rnd.NextUInt3().z & 255u) + 0.5) / 256.0), 256); + } + + [TestCompiler] + public static void uint3_uniform_high_bits() + { + var rnd = new Random(0x6E624EB7u); + ks_test((() => ((rnd.NextUInt3().x >> 24) + 0.5) / 256.0), 256); + ks_test((() => ((rnd.NextUInt3().y >> 24) + 0.5) / 256.0), 256); + ks_test((() => ((rnd.NextUInt3().z >> 24) + 0.5) / 256.0), 256); + } + + [TestCompiler] + public static void uint3_uniform_max() + { + var rnd = new Random(0x6E624EB7u); + uint3 max = uint3(13, 17, 19); + ks_test((() => (rnd.NextUInt3(max).x + 0.5) / max.x), (int)max.x); + ks_test((() => (rnd.NextUInt3(max).y + 0.5) / max.y), (int)max.y); + ks_test((() => (rnd.NextUInt3(max).z + 0.5) / max.z), (int)max.z); + } + + [TestCompiler] + public static void uint3_uniform_max_limit() + { + var rnd = new Random(0x6E624EB7u); + uint max = 0xFFFFFFFF; + ks_test((() => (rnd.NextUInt3(max).x + 0.5) / max), 256); + ks_test((() => (rnd.NextUInt3(max).y + 0.5) / max), 256); + ks_test((() => (rnd.NextUInt3(max).z + 0.5) / max), 256); + } + + [TestCompiler] + public static void uint3_uniform_min_max() + { + var rnd = new Random(0x6E624EB7u); + uint3 min = uint3(3, 101, 0xFFFFFFF0); + uint3 max = uint3(17, 117, 0xFFFFFFFF); + uint3 range = max - min; + ks_test((() => (range_check(rnd.NextUInt3(min, max).x, min.x, max.x) + 0.5 - min.x) / range.x), (int)range.x); + ks_test((() => (range_check(rnd.NextUInt3(min, max).y, min.y, max.y) + 0.5 - min.y) / range.y), (int)range.y); + ks_test((() => (range_check(rnd.NextUInt3(min, max).z, min.z, max.z) + 0.5 - min.z) / range.z), (int)range.z); + } + + [TestCompiler] + public static void uint3_uniform_min_max_limit() + { + var rnd = new Random(0x6E624EB7u); + uint max = 0xFFFFFFFF; + ks_test((() => (range_check(rnd.NextUInt3(0, max).x, 0, max) + 0.5) / max), 256); + ks_test((() => (range_check(rnd.NextUInt3(0, max).y, 0, max) + 0.5) / max), 256); + ks_test((() => (range_check(rnd.NextUInt3(0, max).z, 0, max) + 0.5) / max), 256); + } + + [TestCompiler] + public static void uint3_independent_low_bits() + { + var rnd = new Random(0x6E624EB7u); + r_test(() => (rnd.NextUInt3().xy & 255)); + r_test(() => (rnd.NextUInt3().xz & 255)); + r_test(() => (rnd.NextUInt3().yz & 255)); + } + + [TestCompiler] + public static void uint3_independent_high_bits() + { + var rnd = new Random(0x6E624EB7u); + r_test(() => (rnd.NextUInt3().xy >> 24)); + r_test(() => (rnd.NextUInt3().xz >> 24)); + r_test(() => (rnd.NextUInt3().yz >> 24)); + } + + [TestCompiler] + public static void uint4_uniform_low_bits() + { + var rnd = new Random(0x6E624EB7u); + ks_test((() => ((rnd.NextUInt4().x & 255u) + 0.5) / 256.0), 256); + ks_test((() => ((rnd.NextUInt4().y & 255u) + 0.5) / 256.0), 256); + ks_test((() => ((rnd.NextUInt4().z & 255u) + 0.5) / 256.0), 256); + ks_test((() => ((rnd.NextUInt4().w & 255u) + 0.5) / 256.0), 256); + } + + [TestCompiler] + public static void uint4_uniform_high_bits() + { + var rnd = new Random(0x6E624EB7u); + ks_test((() => ((rnd.NextUInt4().x >> 24) + 0.5) / 256.0), 256); + ks_test((() => ((rnd.NextUInt4().y >> 24) + 0.5) / 256.0), 256); + ks_test((() => ((rnd.NextUInt4().z >> 24) + 0.5) / 256.0), 256); + ks_test((() => ((rnd.NextUInt4().w >> 24) + 0.5) / 256.0), 256); + } + + [TestCompiler] + public static void uint4_uniform_max() + { + var rnd = new Random(0x6E624EB7u); + uint4 max = uint4(13, 17, 19, 23); + ks_test((() => (rnd.NextUInt4(max).x + 0.5) / max.x), (int)max.x); + ks_test((() => (rnd.NextUInt4(max).y + 0.5) / max.y), (int)max.y); + ks_test((() => (rnd.NextUInt4(max).z + 0.5) / max.z), (int)max.z); + ks_test((() => (rnd.NextUInt4(max).w + 0.5) / max.w), (int)max.w); + } + + [TestCompiler] + public static void uint4_uniform_max_limit() + { + var rnd = new Random(0x6E624EB7u); + uint max = 0xFFFFFFFF; + ks_test((() => (rnd.NextUInt4(max).x + 0.5) / max), 256); + ks_test((() => (rnd.NextUInt4(max).y + 0.5) / max), 256); + ks_test((() => (rnd.NextUInt4(max).z + 0.5) / max), 256); + ks_test((() => (rnd.NextUInt4(max).w + 0.5) / max), 256); + } + + [TestCompiler] + public static void uint4_uniform_min_max() + { + var rnd = new Random(0x6E624EB7u); + uint4 min = uint4(3, 101, 0xFFFFFFF0, 100); + uint4 max = uint4(17, 117, 0xFFFFFFFF, 1000); + uint4 range = max - min; + ks_test((() => (range_check(rnd.NextUInt4(min, max).x, min.x, max.x) + 0.5 - min.x) / range.x), (int)range.x); + ks_test((() => (range_check(rnd.NextUInt4(min, max).y, min.y, max.y) + 0.5 - min.y) / range.y), (int)range.y); + ks_test((() => (range_check(rnd.NextUInt4(min, max).z, min.z, max.z) + 0.5 - min.z) / range.z), (int)range.z); + ks_test((() => (range_check(rnd.NextUInt4(min, max).w, min.w, max.w) + 0.5 - min.w) / range.w), (int)range.w); + } + + [TestCompiler] + public static void uint4_uniform_min_max_limit() + { + var rnd = new Random(0x6E624EB7u); + uint max = 0xFFFFFFFF; + ks_test((() => (range_check(rnd.NextUInt4(0, max).x, 0, max) + 0.5) / max), 256); + ks_test((() => (range_check(rnd.NextUInt4(0, max).y, 0, max) + 0.5) / max), 256); + ks_test((() => (range_check(rnd.NextUInt4(0, max).z, 0, max) + 0.5) / max), 256); + ks_test((() => (range_check(rnd.NextUInt4(0, max).w, 0, max) + 0.5) / max), 256); + } + + [TestCompiler] + public static void uint4_independent_low_bits() + { + var rnd = new Random(0x6E624EB7u); + r_test(() => (rnd.NextUInt4().xy & 255)); + r_test(() => (rnd.NextUInt4().xz & 255)); + r_test(() => (rnd.NextUInt4().xw & 255)); + r_test(() => (rnd.NextUInt4().yz & 255)); + r_test(() => (rnd.NextUInt4().yw & 255)); + r_test(() => (rnd.NextUInt4().zw & 255)); + } + + [TestCompiler] + public static void uint4_independent_high_bits() + { + var rnd = new Random(0x6E624EB7u); + r_test(() => (rnd.NextUInt4().xy >> 24)); + r_test(() => (rnd.NextUInt4().xz >> 24)); + r_test(() => (rnd.NextUInt4().xw >> 24)); + r_test(() => (rnd.NextUInt4().yz >> 24)); + r_test(() => (rnd.NextUInt4().yw >> 24)); + r_test(() => (rnd.NextUInt4().zw >> 24)); + } + + [TestCompiler] + public static void float_uniform() + { + var rnd = new Random(0x6E624EB7u); + ks_test((() => range_check01(rnd.NextFloat()))); + } + + [TestCompiler] + public static void float_uniform_low_bits() + { + var rnd = new Random(0x6E624EB7u); + ks_test((() => frac(rnd.NextFloat() * 65536.0f))); + } + + [TestCompiler] + public static void float_uniform_max() + { + var rnd = new Random(0x6E624EB7u); + float max = 16.4f; + ks_test((() => range_check(rnd.NextFloat(max), 0.0f, max) / max)); + } + + [TestCompiler] + public static void float_uniform_min_max() + { + var rnd = new Random(0x6E624EB7u); + float min = -3.1f; + float max = 16.4f; + float range = max - min; + ks_test((() => (range_check(rnd.NextFloat(min, max), min, max) -min) / range)); + } + + [TestCompiler] + public static void float2_uniform() + { + var rnd = new Random(0x6E624EB7u); + ks_test((() => range_check01(rnd.NextFloat2().x))); + ks_test((() => range_check01(rnd.NextFloat2().y))); + } + + [TestCompiler] + public static void float2_uniform_low_bits() + { + var rnd = new Random(0x6E624EB7u); + ks_test((() => frac(rnd.NextFloat2().x * 65536.0f))); + ks_test((() => frac(rnd.NextFloat2().y * 65536.0f))); + } + + [TestCompiler] + public static void float2_uniform_max() + { + var rnd = new Random(0x6E624EB7u); + float2 max = float2(16.4f, 1001.33333333f); + ks_test((() => range_check(rnd.NextFloat2(max).x, 0.0f, max.x) / max.x)); + ks_test((() => range_check(rnd.NextFloat2(max).y, 0.0f, max.y) / max.y)); + } + + [TestCompiler] + public static void float2_uniform_min_max() + { + var rnd = new Random(0x6E624EB7u); + float2 min = float2(-3.1f, 17.1f); + float2 max = float2(16.4f, 1001.33333333f); + float2 range = max - min; + ks_test((() => (range_check(rnd.NextFloat2(min, max).x, min.x, max.x) - min.x) / range.x)); + ks_test((() => (range_check(rnd.NextFloat2(min, max).y, min.y, max.y) - min.y) / range.y)); + } + + [TestCompiler] + public static void float2_independent() + { + var rnd = new Random(0x6E624EB7u); + r_test((() => rnd.NextFloat2())); + } + + [TestCompiler] + public static void float3_uniform() + { + var rnd = new Random(0x6E624EB7u); + ks_test((() => range_check01(rnd.NextFloat3().x))); + ks_test((() => range_check01(rnd.NextFloat3().y))); + ks_test((() => range_check01(rnd.NextFloat3().z))); + } + + [TestCompiler] + public static void float3_uniform_low_bits() + { + var rnd = new Random(0x6E624EB7u); + ks_test((() => frac(rnd.NextFloat3().x * 65536.0f))); + ks_test((() => frac(rnd.NextFloat3().y * 65536.0f))); + ks_test((() => frac(rnd.NextFloat3().z * 65536.0f))); + } + + [TestCompiler] + public static void float3_uniform_max() + { + var rnd = new Random(0x6E624EB7u); + float3 max = float3(16.4f, 1001.33333333f, 3.121f); + ks_test((() => range_check(rnd.NextFloat3(max).x, 0.0f, max.x) / max.x)); + ks_test((() => range_check(rnd.NextFloat3(max).y, 0.0f, max.y) / max.y)); + ks_test((() => range_check(rnd.NextFloat3(max).z, 0.0f, max.z) / max.z)); + } + + [TestCompiler] + public static void float3_uniform_min_max() + { + var rnd = new Random(0x6E624EB7u); + float3 min = float3(-3.1f, 17.1f, -0.3f); + float3 max = float3(16.4f, 1001.33333333f, 3.121f); + float3 range = max - min; + ks_test((() => (range_check(rnd.NextFloat3(min, max).x, min.x, max.x) - min.x) / range.x)); + ks_test((() => (range_check(rnd.NextFloat3(min, max).y, min.y, max.y) - min.y) / range.y)); + ks_test((() => (range_check(rnd.NextFloat3(min, max).z, min.z, max.z) - min.z) / range.z)); + } + + [TestCompiler] + public static void float3_independent() + { + var rnd = new Random(0x6E624EB7u); + r_test((() => rnd.NextFloat3().xy)); + r_test((() => rnd.NextFloat3().xz)); + r_test((() => rnd.NextFloat3().yz)); + } + + [TestCompiler] + public static void float4_uniform() + { + var rnd = new Random(0x6E624EB7u); + ks_test((() => range_check01(rnd.NextFloat4().x))); + ks_test((() => range_check01(rnd.NextFloat4().y))); + ks_test((() => range_check01(rnd.NextFloat4().z))); + ks_test((() => range_check01(rnd.NextFloat4().w))); + } + + [TestCompiler] + public static void float4_uniform_low_bits() + { + var rnd = new Random(0x6E624EB7u); + ks_test((() => frac(rnd.NextFloat4().x * 65536.0f))); + ks_test((() => frac(rnd.NextFloat4().y * 65536.0f))); + ks_test((() => frac(rnd.NextFloat4().z * 65536.0f))); + ks_test((() => frac(rnd.NextFloat4().w * 65536.0f))); + } + + [TestCompiler] + public static void float4_uniform_max() + { + var rnd = new Random(0x6E624EB7u); + float4 max = float4(16.4f, 1001.33333333f, 3.121f, 1.3232e23f); + ks_test((() => range_check(rnd.NextFloat4(max).x, 0.0f, max.x) / max.x)); + ks_test((() => range_check(rnd.NextFloat4(max).y, 0.0f, max.y) / max.y)); + ks_test((() => range_check(rnd.NextFloat4(max).z, 0.0f, max.z) / max.z)); + ks_test((() => range_check(rnd.NextFloat4(max).w, 0.0f, max.w) / max.w)); + } + + [TestCompiler] + public static void float4_uniform_min_max() + { + var rnd = new Random(0x6E624EB7u); + float4 min = float4(-3.1f, 17.1f, -0.3f, -22.6f); + float4 max = float4(16.4f, 1001.33333333f, 3.121f, 1.3232e23f); + float4 range = max - min; + ks_test((() => (range_check(rnd.NextFloat4(min, max).x, min.x, max.x) - min.x) / range.x)); + ks_test((() => (range_check(rnd.NextFloat4(min, max).y, min.y, max.y) - min.y) / range.y)); + ks_test((() => (range_check(rnd.NextFloat4(min, max).z, min.z, max.z) - min.z) / range.z)); + ks_test((() => (range_check(rnd.NextFloat4(min, max).w, min.w, max.w) - min.w) / range.w)); + } + + [TestCompiler] + public static void float4_independent() + { + var rnd = new Random(0x6E624EB7u); + r_test((() => rnd.NextFloat4().xy)); + r_test((() => rnd.NextFloat4().xz)); + r_test((() => rnd.NextFloat4().xw)); + r_test((() => rnd.NextFloat4().yz)); + r_test((() => rnd.NextFloat4().yw)); + r_test((() => rnd.NextFloat4().zw)); + } + + [TestCompiler] + public static void double_uniform() + { + var rnd = new Random(0x6E624EB7u); + ks_test((() => range_check01(rnd.NextDouble()))); + } + + [TestCompiler] + public static void double_uniform_low_bits() + { + var rnd = new Random(0x6E624EB7u); + ks_test((() => frac(rnd.NextDouble() * 35184372088832.0))); + } + + [TestCompiler] + public static void double_uniform_max() + { + var rnd = new Random(0x6E624EB7u); + double max = 16.4; + ks_test((() => range_check(rnd.NextDouble(max), 0.0, max) / max)); + } + + [TestCompiler] + public static void double_uniform_min_max() + { + var rnd = new Random(0x6E624EB7u); + double min = -3.1; + double max = 16.4; + double range = max - min; + ks_test((() => (range_check(rnd.NextDouble(min, max), min, max) - min) / range)); + } + + [TestCompiler] + public static void double2_uniform() + { + var rnd = new Random(0x6E624EB7u); + ks_test((() => range_check01(rnd.NextDouble2().x))); + ks_test((() => range_check01(rnd.NextDouble2().y))); + } + + [TestCompiler] + public static void double2_uniform_low_bits() + { + var rnd = new Random(0x6E624EB7u); + ks_test((() => frac(rnd.NextDouble2().x * 35184372088832.0))); + ks_test((() => frac(rnd.NextDouble2().y * 35184372088832.0))); + } + + [TestCompiler] + public static void double2_uniform_max() + { + var rnd = new Random(0x6E624EB7u); + double2 max = double2(16.4, 1001.33333333); + ks_test((() => range_check(rnd.NextDouble2(max).x, 0.0, max.x) / max.x)); + ks_test((() => range_check(rnd.NextDouble2(max).y, 0.0, max.y) / max.y)); + } + + [TestCompiler] + public static void double2_uniform_min_max() + { + var rnd = new Random(0x6E624EB7u); + double2 min = double2(-3.1, 17.1); + double2 max = double2(16.4, 1001.33333333); + double2 range = max - min; + ks_test((() => (range_check(rnd.NextDouble2(min, max).x, min.x, max.x) - min.x) / range.x)); + ks_test((() => (range_check(rnd.NextDouble2(min, max).y, min.y, max.y) - min.y) / range.y)); + } + + [TestCompiler] + public static void double2_independent() + { + var rnd = new Random(0x6E624EB7u); + r_test((() => rnd.NextDouble2())); + } + + [TestCompiler] + public static void double3_uniform() + { + var rnd = new Random(0x6E624EB7u); + ks_test((() => range_check01(rnd.NextDouble3().x))); + ks_test((() => range_check01(rnd.NextDouble3().y))); + ks_test((() => range_check01(rnd.NextDouble3().z))); + } + + [TestCompiler] + public static void double3_uniform_low_bits() + { + var rnd = new Random(0x6E624EB7u); + ks_test((() => frac(rnd.NextDouble3().x * 35184372088832.0))); + ks_test((() => frac(rnd.NextDouble3().y * 35184372088832.0))); + ks_test((() => frac(rnd.NextDouble3().z * 35184372088832.0))); + } + + [TestCompiler] + public static void double3_uniform_max() + { + var rnd = new Random(0x6E624EB7u); + double3 max = double3(16.4, 1001.33333333, 3.121); + ks_test((() => range_check(rnd.NextDouble3(max).x, 0.0, max.x) / max.x)); + ks_test((() => range_check(rnd.NextDouble3(max).y, 0.0, max.y) / max.y)); + ks_test((() => range_check(rnd.NextDouble3(max).z, 0.0, max.z) / max.z)); + } + + [TestCompiler] + public static void double3_uniform_min_max() + { + var rnd = new Random(0x6E624EB7u); + double3 min = double3(-3.1, 17.1, -0.3); + double3 max = double3(16.4, 1001.33333333, 3.121); + double3 range = max - min; + ks_test((() => (range_check(rnd.NextDouble3(min, max).x, min.x, max.x) - min.x) / range.x)); + ks_test((() => (range_check(rnd.NextDouble3(min, max).y, min.y, max.y) - min.y) / range.y)); + ks_test((() => (range_check(rnd.NextDouble3(min, max).z, min.z, max.z) - min.z) / range.z)); + } + + + [TestCompiler] + public static void double3_independent() + { + var rnd = new Random(0x6E624EB7u); + r_test((() => rnd.NextDouble3().xy)); + r_test((() => rnd.NextDouble3().xz)); + r_test((() => rnd.NextDouble3().yz)); + } + + [TestCompiler] + public static void double4_uniform() + { + var rnd = new Random(0x6E624EB7u); + ks_test((() => range_check01(rnd.NextDouble4().x))); + ks_test((() => range_check01(rnd.NextDouble4().y))); + ks_test((() => range_check01(rnd.NextDouble4().z))); + ks_test((() => range_check01(rnd.NextDouble4().w))); + } + + [TestCompiler] + public static void double4_uniform_low_bits() + { + var rnd = new Random(0x6E624EB7u); + ks_test((() => frac(rnd.NextDouble4().x * 35184372088832.0))); + ks_test((() => frac(rnd.NextDouble4().y * 35184372088832.0))); + ks_test((() => frac(rnd.NextDouble4().z * 35184372088832.0))); + ks_test((() => frac(rnd.NextDouble4().w * 35184372088832.0))); + } + + [TestCompiler] + public static void double4_uniform_max() + { + var rnd = new Random(0x6E624EB7u); + double4 max = double4(16.4f, 1001.33333333f, 3.121f, 1.3232e23f); + ks_test((() => range_check(rnd.NextDouble4(max).x, 0.0, max.x) / max.x)); + ks_test((() => range_check(rnd.NextDouble4(max).y, 0.0, max.y) / max.y)); + ks_test((() => range_check(rnd.NextDouble4(max).z, 0.0, max.z) / max.z)); + ks_test((() => range_check(rnd.NextDouble4(max).w, 0.0, max.w) / max.w)); + } + + [TestCompiler] + public static void double4_uniform_min_max() + { + var rnd = new Random(0x6E624EB7u); + double4 min = double4(-3.1, 17.1, -0.3, -22.6); + double4 max = double4(16.4, 1001.33333333, 3.121, 1.3232e23); + double4 range = max - min; + ks_test((() => (range_check(rnd.NextDouble4(min, max).x, min.x, max.x) - min.x) / range.x)); + ks_test((() => (range_check(rnd.NextDouble4(min, max).y, min.y, max.y) - min.y) / range.y)); + ks_test((() => (range_check(rnd.NextDouble4(min, max).z, min.z, max.z) - min.z) / range.z)); + ks_test((() => (range_check(rnd.NextDouble4(min, max).w, min.w, max.w) - min.w) / range.w)); + } + + [TestCompiler] + public static void double4_independent() + { + var rnd = new Random(0x6E624EB7u); + r_test((() => rnd.NextDouble4().xy)); + r_test((() => rnd.NextDouble4().xz)); + r_test((() => rnd.NextDouble4().xw)); + r_test((() => rnd.NextDouble4().yz)); + r_test((() => rnd.NextDouble4().yw)); + r_test((() => rnd.NextDouble4().zw)); + } + + [TestCompiler] + public static void float2_direction() + { + var rnd = new Random(0x6E624EB7u); + ks_test(() => { + float2 dir = rnd.NextFloat2Direction(); + TestUtils.AreEqual(1.0f, length(dir), 0.001f); + return atan2(dir.x, dir.y) / (2.0f * (float)PI) + 0.5f; + }); + } + + [TestCompiler] + public static void double2_direction() + { + var rnd = new Random(0x6E624EB7u); + ks_test(() => { + double2 dir = rnd.NextFloat2Direction(); + TestUtils.AreEqual(1.0, length(dir), 0.000001); + return atan2(dir.y, dir.x) / (2.0 * PI) + 0.5; + }); + } + + + [TestCompiler] + public static void float3_direction() + { + var rnd = new Random(0x6E624EB7u); + ks_test(() => + { + float3 dir = rnd.NextFloat3Direction(); + float r = length(dir); + TestUtils.AreEqual(1.0f, r, 0.001f); + + float phi = atan2(dir.y, dir.x) / (2.0f * (float)PI) + 0.5f; + float z = saturate(dir.z / r * 0.5f + 0.5f); + return double2(phi, z); + }); + } + + [TestCompiler] + public static void double3_direction() + { + var rnd = new Random(0x6E624EB7u); + ks_test(() => + { + double3 dir = rnd.NextDouble3Direction(); + double r = length(dir); + TestUtils.AreEqual(1.0, r, 0.00001); + + double phi = atan2(dir.y, dir.x) / (2.0 * PI) + 0.5; + double z = saturate(dir.z / r * 0.5 + 0.5); + return double2(phi, z); + }); + } + + [TestCompiler] + public static void quaternion_rotation() + { + var rnd = new Random(0x6E624EB7u); + ks_test(() => + { + quaternion q = rnd.NextQuaternionRotation(); + TestUtils.AreEqual(1.0, dot(q, q), 0.00001f); + Assert.GreaterOrEqual(q.value.w, 0.0f); + float3 p = float3(1.0f, 2.0f, 3.0f); + + float3 qp = mul(q, p); + + TestUtils.AreEqual(length(p), length(qp), 0.0001f); + float r = length(qp); + + double phi = atan2(qp.y, qp.x) / (2.0 * PI) + 0.5; + double z = saturate(qp.z / r * 0.5 + 0.5); + return double2(phi, z); + }); + } + } +} diff --git a/package/Tests/Tests/TestRandom.cs.meta b/package/Tests/Tests/TestRandom.cs.meta new file mode 100755 index 000000000..6578db1a1 --- /dev/null +++ b/package/Tests/Tests/TestRandom.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ec2e0d8c659a52a45b0bd4f7a3d3981a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/package/Tests/Unity.Mathematics.Tests.asmdef b/package/Tests/Unity.Mathematics.Tests.asmdef index 04d87a346..6b374c8a9 100755 --- a/package/Tests/Unity.Mathematics.Tests.asmdef +++ b/package/Tests/Unity.Mathematics.Tests.asmdef @@ -8,5 +8,6 @@ ], "includePlatforms": [ "Editor" - ] + ], + "allowUnsafeCode": true } diff --git a/package/Unity.Mathematics.Editor/PrimitiveVectorDrawer.cs b/package/Unity.Mathematics.Editor/PrimitiveVectorDrawer.cs index b2e55c27a..57b1b89e2 100755 --- a/package/Unity.Mathematics.Editor/PrimitiveVectorDrawer.cs +++ b/package/Unity.Mathematics.Editor/PrimitiveVectorDrawer.cs @@ -69,7 +69,9 @@ public override void OnGUI(Rect position, SerializedProperty property, GUIConten if (attribute is DoNotNormalizeAttribute && string.IsNullOrEmpty(label.tooltip)) label.tooltip = Content.doNotNormalizeTooltip; + EditorGUI.BeginProperty(position, label, property); EditorGUI.MultiPropertyField(position, subLabels, property.FindPropertyRelative(startIter), label); + EditorGUI.EndProperty(); } } } \ No newline at end of file diff --git a/package/package.json b/package/package.json index bdbaa6c39..e223051d8 100755 --- a/package/package.json +++ b/package/package.json @@ -1,10 +1,16 @@ { - "category": "Unity", - "description": "Unity's C# SIMD math library providing vector types and math functions with a shader like syntax. This package is still in experimental phase.", - "keywords": [ - "unity" - ], - "name": "com.unity.mathematics", - "unity": "2018.1", - "version": "0.0.12-preview.21" + "name": "com.unity.mathematics", + "displayName": "Mathematics", + "version": "1.0.0-preview.1", + "unity": "2018.1", + "description": "Unity's C# SIMD math library providing vector types and math functions with a shader like syntax. This package is still in experimental phase.", + "keywords": [ + "unity" + ], + "dependencies": {}, + "repository": { + "type": "git", + "url": "https://github.com/Unity-Technologies/Unity.Mathematics", + "revision": "1f1199b706a78083299ad306a25877a4e030c63c" + } } diff --git a/versions.txt b/versions.txt index f6636517d..69f998728 100755 --- a/versions.txt +++ b/versions.txt @@ -29,3 +29,4 @@ 0.0.12-preview.19 0.0.12-preview.20 0.0.12-preview.21 +1.0.0-preview.1