double4x3.gen.cs 27 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460
  1. //------------------------------------------------------------------------------
  2. // <auto-generated>
  3. // This code was generated by a tool.
  4. //
  5. // Changes to this file may cause incorrect behavior and will be lost if
  6. // the code is regenerated.
  7. // </auto-generated>
  8. //------------------------------------------------------------------------------
  9. using System;
  10. using System.Runtime.CompilerServices;
  11. #pragma warning disable 0660, 0661
  12. namespace Unity.Mathematics
  13. {
  14. [System.Serializable]
  15. public partial struct double4x3 : System.IEquatable<double4x3>, IFormattable
  16. {
  17. public double4 c0;
  18. public double4 c1;
  19. public double4 c2;
  20. /// <summary>double4x3 zero value.</summary>
  21. public static readonly double4x3 zero;
  22. /// <summary>Constructs a double4x3 matrix from three double4 vectors.</summary>
  23. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  24. public double4x3(double4 c0, double4 c1, double4 c2)
  25. {
  26. this.c0 = c0;
  27. this.c1 = c1;
  28. this.c2 = c2;
  29. }
  30. /// <summary>Constructs a double4x3 matrix from 12 double values given in row-major order.</summary>
  31. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  32. public double4x3(double m00, double m01, double m02,
  33. double m10, double m11, double m12,
  34. double m20, double m21, double m22,
  35. double m30, double m31, double m32)
  36. {
  37. this.c0 = new double4(m00, m10, m20, m30);
  38. this.c1 = new double4(m01, m11, m21, m31);
  39. this.c2 = new double4(m02, m12, m22, m32);
  40. }
  41. /// <summary>Constructs a double4x3 matrix from a single double value by assigning it to every component.</summary>
  42. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  43. public double4x3(double v)
  44. {
  45. this.c0 = v;
  46. this.c1 = v;
  47. this.c2 = v;
  48. }
  49. /// <summary>Constructs a double4x3 matrix from a single bool value by converting it to double and assigning it to every component.</summary>
  50. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  51. public double4x3(bool v)
  52. {
  53. this.c0 = math.select(new double4(0.0), new double4(1.0), v);
  54. this.c1 = math.select(new double4(0.0), new double4(1.0), v);
  55. this.c2 = math.select(new double4(0.0), new double4(1.0), v);
  56. }
  57. /// <summary>Constructs a double4x3 matrix from a bool4x3 matrix by componentwise conversion.</summary>
  58. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  59. public double4x3(bool4x3 v)
  60. {
  61. this.c0 = math.select(new double4(0.0), new double4(1.0), v.c0);
  62. this.c1 = math.select(new double4(0.0), new double4(1.0), v.c1);
  63. this.c2 = math.select(new double4(0.0), new double4(1.0), v.c2);
  64. }
  65. /// <summary>Constructs a double4x3 matrix from a single int value by converting it to double and assigning it to every component.</summary>
  66. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  67. public double4x3(int v)
  68. {
  69. this.c0 = v;
  70. this.c1 = v;
  71. this.c2 = v;
  72. }
  73. /// <summary>Constructs a double4x3 matrix from a int4x3 matrix by componentwise conversion.</summary>
  74. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  75. public double4x3(int4x3 v)
  76. {
  77. this.c0 = v.c0;
  78. this.c1 = v.c1;
  79. this.c2 = v.c2;
  80. }
  81. /// <summary>Constructs a double4x3 matrix from a single uint value by converting it to double and assigning it to every component.</summary>
  82. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  83. public double4x3(uint v)
  84. {
  85. this.c0 = v;
  86. this.c1 = v;
  87. this.c2 = v;
  88. }
  89. /// <summary>Constructs a double4x3 matrix from a uint4x3 matrix by componentwise conversion.</summary>
  90. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  91. public double4x3(uint4x3 v)
  92. {
  93. this.c0 = v.c0;
  94. this.c1 = v.c1;
  95. this.c2 = v.c2;
  96. }
  97. /// <summary>Constructs a double4x3 matrix from a single float value by converting it to double and assigning it to every component.</summary>
  98. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  99. public double4x3(float v)
  100. {
  101. this.c0 = v;
  102. this.c1 = v;
  103. this.c2 = v;
  104. }
  105. /// <summary>Constructs a double4x3 matrix from a float4x3 matrix by componentwise conversion.</summary>
  106. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  107. public double4x3(float4x3 v)
  108. {
  109. this.c0 = v.c0;
  110. this.c1 = v.c1;
  111. this.c2 = v.c2;
  112. }
  113. /// <summary>Implicitly converts a single double value to a double4x3 matrix by assigning it to every component.</summary>
  114. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  115. public static implicit operator double4x3(double v) { return new double4x3(v); }
  116. /// <summary>Explicitly converts a single bool value to a double4x3 matrix by converting it to double and assigning it to every component.</summary>
  117. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  118. public static explicit operator double4x3(bool v) { return new double4x3(v); }
  119. /// <summary>Explicitly converts a bool4x3 matrix to a double4x3 matrix by componentwise conversion.</summary>
  120. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  121. public static explicit operator double4x3(bool4x3 v) { return new double4x3(v); }
  122. /// <summary>Implicitly converts a single int value to a double4x3 matrix by converting it to double and assigning it to every component.</summary>
  123. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  124. public static implicit operator double4x3(int v) { return new double4x3(v); }
  125. /// <summary>Implicitly converts a int4x3 matrix to a double4x3 matrix by componentwise conversion.</summary>
  126. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  127. public static implicit operator double4x3(int4x3 v) { return new double4x3(v); }
  128. /// <summary>Implicitly converts a single uint value to a double4x3 matrix by converting it to double and assigning it to every component.</summary>
  129. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  130. public static implicit operator double4x3(uint v) { return new double4x3(v); }
  131. /// <summary>Implicitly converts a uint4x3 matrix to a double4x3 matrix by componentwise conversion.</summary>
  132. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  133. public static implicit operator double4x3(uint4x3 v) { return new double4x3(v); }
  134. /// <summary>Implicitly converts a single float value to a double4x3 matrix by converting it to double and assigning it to every component.</summary>
  135. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  136. public static implicit operator double4x3(float v) { return new double4x3(v); }
  137. /// <summary>Implicitly converts a float4x3 matrix to a double4x3 matrix by componentwise conversion.</summary>
  138. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  139. public static implicit operator double4x3(float4x3 v) { return new double4x3(v); }
  140. /// <summary>Returns the result of a componentwise multiplication operation on two double4x3 matrices.</summary>
  141. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  142. public static double4x3 operator * (double4x3 lhs, double4x3 rhs) { return new double4x3 (lhs.c0 * rhs.c0, lhs.c1 * rhs.c1, lhs.c2 * rhs.c2); }
  143. /// <summary>Returns the result of a componentwise multiplication operation on a double4x3 matrix and a double value.</summary>
  144. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  145. public static double4x3 operator * (double4x3 lhs, double rhs) { return new double4x3 (lhs.c0 * rhs, lhs.c1 * rhs, lhs.c2 * rhs); }
  146. /// <summary>Returns the result of a componentwise multiplication operation on a double value and a double4x3 matrix.</summary>
  147. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  148. public static double4x3 operator * (double lhs, double4x3 rhs) { return new double4x3 (lhs * rhs.c0, lhs * rhs.c1, lhs * rhs.c2); }
  149. /// <summary>Returns the result of a componentwise addition operation on two double4x3 matrices.</summary>
  150. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  151. public static double4x3 operator + (double4x3 lhs, double4x3 rhs) { return new double4x3 (lhs.c0 + rhs.c0, lhs.c1 + rhs.c1, lhs.c2 + rhs.c2); }
  152. /// <summary>Returns the result of a componentwise addition operation on a double4x3 matrix and a double value.</summary>
  153. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  154. public static double4x3 operator + (double4x3 lhs, double rhs) { return new double4x3 (lhs.c0 + rhs, lhs.c1 + rhs, lhs.c2 + rhs); }
  155. /// <summary>Returns the result of a componentwise addition operation on a double value and a double4x3 matrix.</summary>
  156. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  157. public static double4x3 operator + (double lhs, double4x3 rhs) { return new double4x3 (lhs + rhs.c0, lhs + rhs.c1, lhs + rhs.c2); }
  158. /// <summary>Returns the result of a componentwise subtraction operation on two double4x3 matrices.</summary>
  159. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  160. public static double4x3 operator - (double4x3 lhs, double4x3 rhs) { return new double4x3 (lhs.c0 - rhs.c0, lhs.c1 - rhs.c1, lhs.c2 - rhs.c2); }
  161. /// <summary>Returns the result of a componentwise subtraction operation on a double4x3 matrix and a double value.</summary>
  162. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  163. public static double4x3 operator - (double4x3 lhs, double rhs) { return new double4x3 (lhs.c0 - rhs, lhs.c1 - rhs, lhs.c2 - rhs); }
  164. /// <summary>Returns the result of a componentwise subtraction operation on a double value and a double4x3 matrix.</summary>
  165. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  166. public static double4x3 operator - (double lhs, double4x3 rhs) { return new double4x3 (lhs - rhs.c0, lhs - rhs.c1, lhs - rhs.c2); }
  167. /// <summary>Returns the result of a componentwise division operation on two double4x3 matrices.</summary>
  168. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  169. public static double4x3 operator / (double4x3 lhs, double4x3 rhs) { return new double4x3 (lhs.c0 / rhs.c0, lhs.c1 / rhs.c1, lhs.c2 / rhs.c2); }
  170. /// <summary>Returns the result of a componentwise division operation on a double4x3 matrix and a double value.</summary>
  171. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  172. public static double4x3 operator / (double4x3 lhs, double rhs) { return new double4x3 (lhs.c0 / rhs, lhs.c1 / rhs, lhs.c2 / rhs); }
  173. /// <summary>Returns the result of a componentwise division operation on a double value and a double4x3 matrix.</summary>
  174. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  175. public static double4x3 operator / (double lhs, double4x3 rhs) { return new double4x3 (lhs / rhs.c0, lhs / rhs.c1, lhs / rhs.c2); }
  176. /// <summary>Returns the result of a componentwise modulus operation on two double4x3 matrices.</summary>
  177. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  178. public static double4x3 operator % (double4x3 lhs, double4x3 rhs) { return new double4x3 (lhs.c0 % rhs.c0, lhs.c1 % rhs.c1, lhs.c2 % rhs.c2); }
  179. /// <summary>Returns the result of a componentwise modulus operation on a double4x3 matrix and a double value.</summary>
  180. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  181. public static double4x3 operator % (double4x3 lhs, double rhs) { return new double4x3 (lhs.c0 % rhs, lhs.c1 % rhs, lhs.c2 % rhs); }
  182. /// <summary>Returns the result of a componentwise modulus operation on a double value and a double4x3 matrix.</summary>
  183. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  184. public static double4x3 operator % (double lhs, double4x3 rhs) { return new double4x3 (lhs % rhs.c0, lhs % rhs.c1, lhs % rhs.c2); }
  185. /// <summary>Returns the result of a componentwise increment operation on a double4x3 matrix.</summary>
  186. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  187. public static double4x3 operator ++ (double4x3 val) { return new double4x3 (++val.c0, ++val.c1, ++val.c2); }
  188. /// <summary>Returns the result of a componentwise decrement operation on a double4x3 matrix.</summary>
  189. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  190. public static double4x3 operator -- (double4x3 val) { return new double4x3 (--val.c0, --val.c1, --val.c2); }
  191. /// <summary>Returns the result of a componentwise less than operation on two double4x3 matrices.</summary>
  192. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  193. public static bool4x3 operator < (double4x3 lhs, double4x3 rhs) { return new bool4x3 (lhs.c0 < rhs.c0, lhs.c1 < rhs.c1, lhs.c2 < rhs.c2); }
  194. /// <summary>Returns the result of a componentwise less than operation on a double4x3 matrix and a double value.</summary>
  195. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  196. public static bool4x3 operator < (double4x3 lhs, double rhs) { return new bool4x3 (lhs.c0 < rhs, lhs.c1 < rhs, lhs.c2 < rhs); }
  197. /// <summary>Returns the result of a componentwise less than operation on a double value and a double4x3 matrix.</summary>
  198. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  199. public static bool4x3 operator < (double lhs, double4x3 rhs) { return new bool4x3 (lhs < rhs.c0, lhs < rhs.c1, lhs < rhs.c2); }
  200. /// <summary>Returns the result of a componentwise less or equal operation on two double4x3 matrices.</summary>
  201. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  202. public static bool4x3 operator <= (double4x3 lhs, double4x3 rhs) { return new bool4x3 (lhs.c0 <= rhs.c0, lhs.c1 <= rhs.c1, lhs.c2 <= rhs.c2); }
  203. /// <summary>Returns the result of a componentwise less or equal operation on a double4x3 matrix and a double value.</summary>
  204. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  205. public static bool4x3 operator <= (double4x3 lhs, double rhs) { return new bool4x3 (lhs.c0 <= rhs, lhs.c1 <= rhs, lhs.c2 <= rhs); }
  206. /// <summary>Returns the result of a componentwise less or equal operation on a double value and a double4x3 matrix.</summary>
  207. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  208. public static bool4x3 operator <= (double lhs, double4x3 rhs) { return new bool4x3 (lhs <= rhs.c0, lhs <= rhs.c1, lhs <= rhs.c2); }
  209. /// <summary>Returns the result of a componentwise greater than operation on two double4x3 matrices.</summary>
  210. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  211. public static bool4x3 operator > (double4x3 lhs, double4x3 rhs) { return new bool4x3 (lhs.c0 > rhs.c0, lhs.c1 > rhs.c1, lhs.c2 > rhs.c2); }
  212. /// <summary>Returns the result of a componentwise greater than operation on a double4x3 matrix and a double value.</summary>
  213. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  214. public static bool4x3 operator > (double4x3 lhs, double rhs) { return new bool4x3 (lhs.c0 > rhs, lhs.c1 > rhs, lhs.c2 > rhs); }
  215. /// <summary>Returns the result of a componentwise greater than operation on a double value and a double4x3 matrix.</summary>
  216. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  217. public static bool4x3 operator > (double lhs, double4x3 rhs) { return new bool4x3 (lhs > rhs.c0, lhs > rhs.c1, lhs > rhs.c2); }
  218. /// <summary>Returns the result of a componentwise greater or equal operation on two double4x3 matrices.</summary>
  219. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  220. public static bool4x3 operator >= (double4x3 lhs, double4x3 rhs) { return new bool4x3 (lhs.c0 >= rhs.c0, lhs.c1 >= rhs.c1, lhs.c2 >= rhs.c2); }
  221. /// <summary>Returns the result of a componentwise greater or equal operation on a double4x3 matrix and a double value.</summary>
  222. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  223. public static bool4x3 operator >= (double4x3 lhs, double rhs) { return new bool4x3 (lhs.c0 >= rhs, lhs.c1 >= rhs, lhs.c2 >= rhs); }
  224. /// <summary>Returns the result of a componentwise greater or equal operation on a double value and a double4x3 matrix.</summary>
  225. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  226. public static bool4x3 operator >= (double lhs, double4x3 rhs) { return new bool4x3 (lhs >= rhs.c0, lhs >= rhs.c1, lhs >= rhs.c2); }
  227. /// <summary>Returns the result of a componentwise unary minus operation on a double4x3 matrix.</summary>
  228. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  229. public static double4x3 operator - (double4x3 val) { return new double4x3 (-val.c0, -val.c1, -val.c2); }
  230. /// <summary>Returns the result of a componentwise unary plus operation on a double4x3 matrix.</summary>
  231. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  232. public static double4x3 operator + (double4x3 val) { return new double4x3 (+val.c0, +val.c1, +val.c2); }
  233. /// <summary>Returns the result of a componentwise equality operation on two double4x3 matrices.</summary>
  234. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  235. public static bool4x3 operator == (double4x3 lhs, double4x3 rhs) { return new bool4x3 (lhs.c0 == rhs.c0, lhs.c1 == rhs.c1, lhs.c2 == rhs.c2); }
  236. /// <summary>Returns the result of a componentwise equality operation on a double4x3 matrix and a double value.</summary>
  237. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  238. public static bool4x3 operator == (double4x3 lhs, double rhs) { return new bool4x3 (lhs.c0 == rhs, lhs.c1 == rhs, lhs.c2 == rhs); }
  239. /// <summary>Returns the result of a componentwise equality operation on a double value and a double4x3 matrix.</summary>
  240. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  241. public static bool4x3 operator == (double lhs, double4x3 rhs) { return new bool4x3 (lhs == rhs.c0, lhs == rhs.c1, lhs == rhs.c2); }
  242. /// <summary>Returns the result of a componentwise not equal operation on two double4x3 matrices.</summary>
  243. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  244. public static bool4x3 operator != (double4x3 lhs, double4x3 rhs) { return new bool4x3 (lhs.c0 != rhs.c0, lhs.c1 != rhs.c1, lhs.c2 != rhs.c2); }
  245. /// <summary>Returns the result of a componentwise not equal operation on a double4x3 matrix and a double value.</summary>
  246. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  247. public static bool4x3 operator != (double4x3 lhs, double rhs) { return new bool4x3 (lhs.c0 != rhs, lhs.c1 != rhs, lhs.c2 != rhs); }
  248. /// <summary>Returns the result of a componentwise not equal operation on a double value and a double4x3 matrix.</summary>
  249. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  250. public static bool4x3 operator != (double lhs, double4x3 rhs) { return new bool4x3 (lhs != rhs.c0, lhs != rhs.c1, lhs != rhs.c2); }
  251. /// <summary>Returns the double4 element at a specified index.</summary>
  252. unsafe public ref double4 this[int index]
  253. {
  254. get
  255. {
  256. #if ENABLE_UNITY_COLLECTIONS_CHECKS
  257. if ((uint)index >= 3)
  258. throw new System.ArgumentException("index must be between[0...2]");
  259. #endif
  260. fixed (double4x3* array = &this) { return ref ((double4*)array)[index]; }
  261. }
  262. }
  263. /// <summary>Returns true if the double4x3 is equal to a given double4x3, false otherwise.</summary>
  264. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  265. public bool Equals(double4x3 rhs) { return c0.Equals(rhs.c0) && c1.Equals(rhs.c1) && c2.Equals(rhs.c2); }
  266. /// <summary>Returns true if the double4x3 is equal to a given double4x3, false otherwise.</summary>
  267. public override bool Equals(object o) { return Equals((double4x3)o); }
  268. /// <summary>Returns a hash code for the double4x3.</summary>
  269. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  270. public override int GetHashCode() { return (int)math.hash(this); }
  271. /// <summary>Returns a string representation of the double4x3.</summary>
  272. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  273. public override string ToString()
  274. {
  275. return string.Format("double4x3({0}, {1}, {2}, {3}, {4}, {5}, {6}, {7}, {8}, {9}, {10}, {11})", c0.x, c1.x, c2.x, c0.y, c1.y, c2.y, c0.z, c1.z, c2.z, c0.w, c1.w, c2.w);
  276. }
  277. /// <summary>Returns a string representation of the double4x3 using a specified format and culture-specific format information.</summary>
  278. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  279. public string ToString(string format, IFormatProvider formatProvider)
  280. {
  281. return string.Format("double4x3({0}, {1}, {2}, {3}, {4}, {5}, {6}, {7}, {8}, {9}, {10}, {11})", c0.x.ToString(format, formatProvider), c1.x.ToString(format, formatProvider), c2.x.ToString(format, formatProvider), c0.y.ToString(format, formatProvider), c1.y.ToString(format, formatProvider), c2.y.ToString(format, formatProvider), c0.z.ToString(format, formatProvider), c1.z.ToString(format, formatProvider), c2.z.ToString(format, formatProvider), c0.w.ToString(format, formatProvider), c1.w.ToString(format, formatProvider), c2.w.ToString(format, formatProvider));
  282. }
  283. }
  284. public static partial class math
  285. {
  286. /// <summary>Returns a double4x3 matrix constructed from three double4 vectors.</summary>
  287. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  288. public static double4x3 double4x3(double4 c0, double4 c1, double4 c2) { return new double4x3(c0, c1, c2); }
  289. /// <summary>Returns a double4x3 matrix constructed from from 12 double values given in row-major order.</summary>
  290. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  291. public static double4x3 double4x3(double m00, double m01, double m02,
  292. double m10, double m11, double m12,
  293. double m20, double m21, double m22,
  294. double m30, double m31, double m32)
  295. {
  296. return new double4x3(m00, m01, m02,
  297. m10, m11, m12,
  298. m20, m21, m22,
  299. m30, m31, m32);
  300. }
  301. /// <summary>Returns a double4x3 matrix constructed from a single double value by assigning it to every component.</summary>
  302. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  303. public static double4x3 double4x3(double v) { return new double4x3(v); }
  304. /// <summary>Returns a double4x3 matrix constructed from a single bool value by converting it to double and assigning it to every component.</summary>
  305. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  306. public static double4x3 double4x3(bool v) { return new double4x3(v); }
  307. /// <summary>Return a double4x3 matrix constructed from a bool4x3 matrix by componentwise conversion.</summary>
  308. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  309. public static double4x3 double4x3(bool4x3 v) { return new double4x3(v); }
  310. /// <summary>Returns a double4x3 matrix constructed from a single int value by converting it to double and assigning it to every component.</summary>
  311. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  312. public static double4x3 double4x3(int v) { return new double4x3(v); }
  313. /// <summary>Return a double4x3 matrix constructed from a int4x3 matrix by componentwise conversion.</summary>
  314. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  315. public static double4x3 double4x3(int4x3 v) { return new double4x3(v); }
  316. /// <summary>Returns a double4x3 matrix constructed from a single uint value by converting it to double and assigning it to every component.</summary>
  317. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  318. public static double4x3 double4x3(uint v) { return new double4x3(v); }
  319. /// <summary>Return a double4x3 matrix constructed from a uint4x3 matrix by componentwise conversion.</summary>
  320. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  321. public static double4x3 double4x3(uint4x3 v) { return new double4x3(v); }
  322. /// <summary>Returns a double4x3 matrix constructed from a single float value by converting it to double and assigning it to every component.</summary>
  323. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  324. public static double4x3 double4x3(float v) { return new double4x3(v); }
  325. /// <summary>Return a double4x3 matrix constructed from a float4x3 matrix by componentwise conversion.</summary>
  326. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  327. public static double4x3 double4x3(float4x3 v) { return new double4x3(v); }
  328. /// <summary>Return the double3x4 transpose of a double4x3 matrix.</summary>
  329. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  330. public static double3x4 transpose(double4x3 v)
  331. {
  332. return double3x4(
  333. v.c0.x, v.c0.y, v.c0.z, v.c0.w,
  334. v.c1.x, v.c1.y, v.c1.z, v.c1.w,
  335. v.c2.x, v.c2.y, v.c2.z, v.c2.w);
  336. }
  337. /// <summary>Returns a uint hash code of a double4x3 vector.</summary>
  338. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  339. public static uint hash(double4x3 v)
  340. {
  341. return csum(fold_to_uint(v.c0) * uint4(0x7AA07CD3u, 0xAF642BA9u, 0xA8F2213Bu, 0x9F3FDC37u) +
  342. fold_to_uint(v.c1) * uint4(0xAC60D0C3u, 0x9263662Fu, 0xE69626FFu, 0xBD010EEBu) +
  343. fold_to_uint(v.c2) * uint4(0x9CEDE1D1u, 0x43BE0B51u, 0xAF836EE1u, 0xB130C137u)) + 0x54834775u;
  344. }
  345. /// <summary>
  346. /// Returns a uint4 vector hash code of a double4x3 vector.
  347. /// When multiple elements are to be hashes together, it can more efficient to calculate and combine wide hash
  348. /// that are only reduced to a narrow uint hash at the very end instead of at every step.
  349. /// </summary>
  350. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  351. public static uint4 hashwide(double4x3 v)
  352. {
  353. return (fold_to_uint(v.c0) * uint4(0x7C022221u, 0xA2D00EDFu, 0xA8977779u, 0x9F1C739Bu) +
  354. fold_to_uint(v.c1) * uint4(0x4B1BD187u, 0x9DF50593u, 0xF18EEB85u, 0x9E19BFC3u) +
  355. fold_to_uint(v.c2) * uint4(0x8196B06Fu, 0xD24EFA19u, 0x7D8048BBu, 0x713BD06Fu)) + 0x753AD6ADu;
  356. }
  357. }
  358. }