A game about forced loneliness, made by TACStudios
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. To update the generation of this file, modify and re-run Unity.Mathematics.CodeGen. 7// </auto-generated> 8//------------------------------------------------------------------------------ 9using System; 10using System.Runtime.CompilerServices; 11 12namespace Unity.Mathematics 13{ 14 partial class math 15 { 16 /// <summary>Returns the float value result of a matrix multiplication between a float value and a float value.</summary> 17 /// <param name="a">Left hand side argument of the matrix multiply.</param> 18 /// <param name="b">Right hand side argument of the matrix multiply.</param> 19 /// <returns>The computed matrix multiplication.</returns> 20 [MethodImpl(MethodImplOptions.AggressiveInlining)] 21 public static float mul(float a, float b) 22 { 23 return a * b; 24 } 25 26 /// <summary>Returns the float value result of a matrix multiplication between a float2 row vector and a float2 column vector.</summary> 27 /// <param name="a">Left hand side argument of the matrix multiply.</param> 28 /// <param name="b">Right hand side argument of the matrix multiply.</param> 29 /// <returns>The computed matrix multiplication.</returns> 30 [MethodImpl(MethodImplOptions.AggressiveInlining)] 31 public static float mul(float2 a, float2 b) 32 { 33 return a.x * b.x + a.y * b.y; 34 } 35 36 /// <summary>Returns the float2 row vector result of a matrix multiplication between a float2 row vector and a float2x2 matrix.</summary> 37 /// <param name="a">Left hand side argument of the matrix multiply.</param> 38 /// <param name="b">Right hand side argument of the matrix multiply.</param> 39 /// <returns>The computed matrix multiplication.</returns> 40 [MethodImpl(MethodImplOptions.AggressiveInlining)] 41 public static float2 mul(float2 a, float2x2 b) 42 { 43 return float2( 44 a.x * b.c0.x + a.y * b.c0.y, 45 a.x * b.c1.x + a.y * b.c1.y); 46 } 47 48 /// <summary>Returns the float3 row vector result of a matrix multiplication between a float2 row vector and a float2x3 matrix.</summary> 49 /// <param name="a">Left hand side argument of the matrix multiply.</param> 50 /// <param name="b">Right hand side argument of the matrix multiply.</param> 51 /// <returns>The computed matrix multiplication.</returns> 52 [MethodImpl(MethodImplOptions.AggressiveInlining)] 53 public static float3 mul(float2 a, float2x3 b) 54 { 55 return float3( 56 a.x * b.c0.x + a.y * b.c0.y, 57 a.x * b.c1.x + a.y * b.c1.y, 58 a.x * b.c2.x + a.y * b.c2.y); 59 } 60 61 /// <summary>Returns the float4 row vector result of a matrix multiplication between a float2 row vector and a float2x4 matrix.</summary> 62 /// <param name="a">Left hand side argument of the matrix multiply.</param> 63 /// <param name="b">Right hand side argument of the matrix multiply.</param> 64 /// <returns>The computed matrix multiplication.</returns> 65 [MethodImpl(MethodImplOptions.AggressiveInlining)] 66 public static float4 mul(float2 a, float2x4 b) 67 { 68 return float4( 69 a.x * b.c0.x + a.y * b.c0.y, 70 a.x * b.c1.x + a.y * b.c1.y, 71 a.x * b.c2.x + a.y * b.c2.y, 72 a.x * b.c3.x + a.y * b.c3.y); 73 } 74 75 /// <summary>Returns the float value result of a matrix multiplication between a float3 row vector and a float3 column vector.</summary> 76 /// <param name="a">Left hand side argument of the matrix multiply.</param> 77 /// <param name="b">Right hand side argument of the matrix multiply.</param> 78 /// <returns>The computed matrix multiplication.</returns> 79 [MethodImpl(MethodImplOptions.AggressiveInlining)] 80 public static float mul(float3 a, float3 b) 81 { 82 return a.x * b.x + a.y * b.y + a.z * b.z; 83 } 84 85 /// <summary>Returns the float2 row vector result of a matrix multiplication between a float3 row vector and a float3x2 matrix.</summary> 86 /// <param name="a">Left hand side argument of the matrix multiply.</param> 87 /// <param name="b">Right hand side argument of the matrix multiply.</param> 88 /// <returns>The computed matrix multiplication.</returns> 89 [MethodImpl(MethodImplOptions.AggressiveInlining)] 90 public static float2 mul(float3 a, float3x2 b) 91 { 92 return float2( 93 a.x * b.c0.x + a.y * b.c0.y + a.z * b.c0.z, 94 a.x * b.c1.x + a.y * b.c1.y + a.z * b.c1.z); 95 } 96 97 /// <summary>Returns the float3 row vector result of a matrix multiplication between a float3 row vector and a float3x3 matrix.</summary> 98 /// <param name="a">Left hand side argument of the matrix multiply.</param> 99 /// <param name="b">Right hand side argument of the matrix multiply.</param> 100 /// <returns>The computed matrix multiplication.</returns> 101 [MethodImpl(MethodImplOptions.AggressiveInlining)] 102 public static float3 mul(float3 a, float3x3 b) 103 { 104 return float3( 105 a.x * b.c0.x + a.y * b.c0.y + a.z * b.c0.z, 106 a.x * b.c1.x + a.y * b.c1.y + a.z * b.c1.z, 107 a.x * b.c2.x + a.y * b.c2.y + a.z * b.c2.z); 108 } 109 110 /// <summary>Returns the float4 row vector result of a matrix multiplication between a float3 row vector and a float3x4 matrix.</summary> 111 /// <param name="a">Left hand side argument of the matrix multiply.</param> 112 /// <param name="b">Right hand side argument of the matrix multiply.</param> 113 /// <returns>The computed matrix multiplication.</returns> 114 [MethodImpl(MethodImplOptions.AggressiveInlining)] 115 public static float4 mul(float3 a, float3x4 b) 116 { 117 return float4( 118 a.x * b.c0.x + a.y * b.c0.y + a.z * b.c0.z, 119 a.x * b.c1.x + a.y * b.c1.y + a.z * b.c1.z, 120 a.x * b.c2.x + a.y * b.c2.y + a.z * b.c2.z, 121 a.x * b.c3.x + a.y * b.c3.y + a.z * b.c3.z); 122 } 123 124 /// <summary>Returns the float value result of a matrix multiplication between a float4 row vector and a float4 column vector.</summary> 125 /// <param name="a">Left hand side argument of the matrix multiply.</param> 126 /// <param name="b">Right hand side argument of the matrix multiply.</param> 127 /// <returns>The computed matrix multiplication.</returns> 128 [MethodImpl(MethodImplOptions.AggressiveInlining)] 129 public static float mul(float4 a, float4 b) 130 { 131 return a.x * b.x + a.y * b.y + a.z * b.z + a.w * b.w; 132 } 133 134 /// <summary>Returns the float2 row vector result of a matrix multiplication between a float4 row vector and a float4x2 matrix.</summary> 135 /// <param name="a">Left hand side argument of the matrix multiply.</param> 136 /// <param name="b">Right hand side argument of the matrix multiply.</param> 137 /// <returns>The computed matrix multiplication.</returns> 138 [MethodImpl(MethodImplOptions.AggressiveInlining)] 139 public static float2 mul(float4 a, float4x2 b) 140 { 141 return float2( 142 a.x * b.c0.x + a.y * b.c0.y + a.z * b.c0.z + a.w * b.c0.w, 143 a.x * b.c1.x + a.y * b.c1.y + a.z * b.c1.z + a.w * b.c1.w); 144 } 145 146 /// <summary>Returns the float3 row vector result of a matrix multiplication between a float4 row vector and a float4x3 matrix.</summary> 147 /// <param name="a">Left hand side argument of the matrix multiply.</param> 148 /// <param name="b">Right hand side argument of the matrix multiply.</param> 149 /// <returns>The computed matrix multiplication.</returns> 150 [MethodImpl(MethodImplOptions.AggressiveInlining)] 151 public static float3 mul(float4 a, float4x3 b) 152 { 153 return float3( 154 a.x * b.c0.x + a.y * b.c0.y + a.z * b.c0.z + a.w * b.c0.w, 155 a.x * b.c1.x + a.y * b.c1.y + a.z * b.c1.z + a.w * b.c1.w, 156 a.x * b.c2.x + a.y * b.c2.y + a.z * b.c2.z + a.w * b.c2.w); 157 } 158 159 /// <summary>Returns the float4 row vector result of a matrix multiplication between a float4 row vector and a float4x4 matrix.</summary> 160 /// <param name="a">Left hand side argument of the matrix multiply.</param> 161 /// <param name="b">Right hand side argument of the matrix multiply.</param> 162 /// <returns>The computed matrix multiplication.</returns> 163 [MethodImpl(MethodImplOptions.AggressiveInlining)] 164 public static float4 mul(float4 a, float4x4 b) 165 { 166 return float4( 167 a.x * b.c0.x + a.y * b.c0.y + a.z * b.c0.z + a.w * b.c0.w, 168 a.x * b.c1.x + a.y * b.c1.y + a.z * b.c1.z + a.w * b.c1.w, 169 a.x * b.c2.x + a.y * b.c2.y + a.z * b.c2.z + a.w * b.c2.w, 170 a.x * b.c3.x + a.y * b.c3.y + a.z * b.c3.z + a.w * b.c3.w); 171 } 172 173 /// <summary>Returns the float2 column vector result of a matrix multiplication between a float2x2 matrix and a float2 column vector.</summary> 174 /// <param name="a">Left hand side argument of the matrix multiply.</param> 175 /// <param name="b">Right hand side argument of the matrix multiply.</param> 176 /// <returns>The computed matrix multiplication.</returns> 177 [MethodImpl(MethodImplOptions.AggressiveInlining)] 178 public static float2 mul(float2x2 a, float2 b) 179 { 180 return a.c0 * b.x + a.c1 * b.y; 181 } 182 183 /// <summary>Returns the float2x2 matrix result of a matrix multiplication between a float2x2 matrix and a float2x2 matrix.</summary> 184 /// <param name="a">Left hand side argument of the matrix multiply.</param> 185 /// <param name="b">Right hand side argument of the matrix multiply.</param> 186 /// <returns>The computed matrix multiplication.</returns> 187 [MethodImpl(MethodImplOptions.AggressiveInlining)] 188 public static float2x2 mul(float2x2 a, float2x2 b) 189 { 190 return float2x2( 191 a.c0 * b.c0.x + a.c1 * b.c0.y, 192 a.c0 * b.c1.x + a.c1 * b.c1.y); 193 } 194 195 /// <summary>Returns the float2x3 matrix result of a matrix multiplication between a float2x2 matrix and a float2x3 matrix.</summary> 196 /// <param name="a">Left hand side argument of the matrix multiply.</param> 197 /// <param name="b">Right hand side argument of the matrix multiply.</param> 198 /// <returns>The computed matrix multiplication.</returns> 199 [MethodImpl(MethodImplOptions.AggressiveInlining)] 200 public static float2x3 mul(float2x2 a, float2x3 b) 201 { 202 return float2x3( 203 a.c0 * b.c0.x + a.c1 * b.c0.y, 204 a.c0 * b.c1.x + a.c1 * b.c1.y, 205 a.c0 * b.c2.x + a.c1 * b.c2.y); 206 } 207 208 /// <summary>Returns the float2x4 matrix result of a matrix multiplication between a float2x2 matrix and a float2x4 matrix.</summary> 209 /// <param name="a">Left hand side argument of the matrix multiply.</param> 210 /// <param name="b">Right hand side argument of the matrix multiply.</param> 211 /// <returns>The computed matrix multiplication.</returns> 212 [MethodImpl(MethodImplOptions.AggressiveInlining)] 213 public static float2x4 mul(float2x2 a, float2x4 b) 214 { 215 return float2x4( 216 a.c0 * b.c0.x + a.c1 * b.c0.y, 217 a.c0 * b.c1.x + a.c1 * b.c1.y, 218 a.c0 * b.c2.x + a.c1 * b.c2.y, 219 a.c0 * b.c3.x + a.c1 * b.c3.y); 220 } 221 222 /// <summary>Returns the float2 column vector result of a matrix multiplication between a float2x3 matrix and a float3 column vector.</summary> 223 /// <param name="a">Left hand side argument of the matrix multiply.</param> 224 /// <param name="b">Right hand side argument of the matrix multiply.</param> 225 /// <returns>The computed matrix multiplication.</returns> 226 [MethodImpl(MethodImplOptions.AggressiveInlining)] 227 public static float2 mul(float2x3 a, float3 b) 228 { 229 return a.c0 * b.x + a.c1 * b.y + a.c2 * b.z; 230 } 231 232 /// <summary>Returns the float2x2 matrix result of a matrix multiplication between a float2x3 matrix and a float3x2 matrix.</summary> 233 /// <param name="a">Left hand side argument of the matrix multiply.</param> 234 /// <param name="b">Right hand side argument of the matrix multiply.</param> 235 /// <returns>The computed matrix multiplication.</returns> 236 [MethodImpl(MethodImplOptions.AggressiveInlining)] 237 public static float2x2 mul(float2x3 a, float3x2 b) 238 { 239 return float2x2( 240 a.c0 * b.c0.x + a.c1 * b.c0.y + a.c2 * b.c0.z, 241 a.c0 * b.c1.x + a.c1 * b.c1.y + a.c2 * b.c1.z); 242 } 243 244 /// <summary>Returns the float2x3 matrix result of a matrix multiplication between a float2x3 matrix and a float3x3 matrix.</summary> 245 /// <param name="a">Left hand side argument of the matrix multiply.</param> 246 /// <param name="b">Right hand side argument of the matrix multiply.</param> 247 /// <returns>The computed matrix multiplication.</returns> 248 [MethodImpl(MethodImplOptions.AggressiveInlining)] 249 public static float2x3 mul(float2x3 a, float3x3 b) 250 { 251 return float2x3( 252 a.c0 * b.c0.x + a.c1 * b.c0.y + a.c2 * b.c0.z, 253 a.c0 * b.c1.x + a.c1 * b.c1.y + a.c2 * b.c1.z, 254 a.c0 * b.c2.x + a.c1 * b.c2.y + a.c2 * b.c2.z); 255 } 256 257 /// <summary>Returns the float2x4 matrix result of a matrix multiplication between a float2x3 matrix and a float3x4 matrix.</summary> 258 /// <param name="a">Left hand side argument of the matrix multiply.</param> 259 /// <param name="b">Right hand side argument of the matrix multiply.</param> 260 /// <returns>The computed matrix multiplication.</returns> 261 [MethodImpl(MethodImplOptions.AggressiveInlining)] 262 public static float2x4 mul(float2x3 a, float3x4 b) 263 { 264 return float2x4( 265 a.c0 * b.c0.x + a.c1 * b.c0.y + a.c2 * b.c0.z, 266 a.c0 * b.c1.x + a.c1 * b.c1.y + a.c2 * b.c1.z, 267 a.c0 * b.c2.x + a.c1 * b.c2.y + a.c2 * b.c2.z, 268 a.c0 * b.c3.x + a.c1 * b.c3.y + a.c2 * b.c3.z); 269 } 270 271 /// <summary>Returns the float2 column vector result of a matrix multiplication between a float2x4 matrix and a float4 column vector.</summary> 272 /// <param name="a">Left hand side argument of the matrix multiply.</param> 273 /// <param name="b">Right hand side argument of the matrix multiply.</param> 274 /// <returns>The computed matrix multiplication.</returns> 275 [MethodImpl(MethodImplOptions.AggressiveInlining)] 276 public static float2 mul(float2x4 a, float4 b) 277 { 278 return a.c0 * b.x + a.c1 * b.y + a.c2 * b.z + a.c3 * b.w; 279 } 280 281 /// <summary>Returns the float2x2 matrix result of a matrix multiplication between a float2x4 matrix and a float4x2 matrix.</summary> 282 /// <param name="a">Left hand side argument of the matrix multiply.</param> 283 /// <param name="b">Right hand side argument of the matrix multiply.</param> 284 /// <returns>The computed matrix multiplication.</returns> 285 [MethodImpl(MethodImplOptions.AggressiveInlining)] 286 public static float2x2 mul(float2x4 a, float4x2 b) 287 { 288 return float2x2( 289 a.c0 * b.c0.x + a.c1 * b.c0.y + a.c2 * b.c0.z + a.c3 * b.c0.w, 290 a.c0 * b.c1.x + a.c1 * b.c1.y + a.c2 * b.c1.z + a.c3 * b.c1.w); 291 } 292 293 /// <summary>Returns the float2x3 matrix result of a matrix multiplication between a float2x4 matrix and a float4x3 matrix.</summary> 294 /// <param name="a">Left hand side argument of the matrix multiply.</param> 295 /// <param name="b">Right hand side argument of the matrix multiply.</param> 296 /// <returns>The computed matrix multiplication.</returns> 297 [MethodImpl(MethodImplOptions.AggressiveInlining)] 298 public static float2x3 mul(float2x4 a, float4x3 b) 299 { 300 return float2x3( 301 a.c0 * b.c0.x + a.c1 * b.c0.y + a.c2 * b.c0.z + a.c3 * b.c0.w, 302 a.c0 * b.c1.x + a.c1 * b.c1.y + a.c2 * b.c1.z + a.c3 * b.c1.w, 303 a.c0 * b.c2.x + a.c1 * b.c2.y + a.c2 * b.c2.z + a.c3 * b.c2.w); 304 } 305 306 /// <summary>Returns the float2x4 matrix result of a matrix multiplication between a float2x4 matrix and a float4x4 matrix.</summary> 307 /// <param name="a">Left hand side argument of the matrix multiply.</param> 308 /// <param name="b">Right hand side argument of the matrix multiply.</param> 309 /// <returns>The computed matrix multiplication.</returns> 310 [MethodImpl(MethodImplOptions.AggressiveInlining)] 311 public static float2x4 mul(float2x4 a, float4x4 b) 312 { 313 return float2x4( 314 a.c0 * b.c0.x + a.c1 * b.c0.y + a.c2 * b.c0.z + a.c3 * b.c0.w, 315 a.c0 * b.c1.x + a.c1 * b.c1.y + a.c2 * b.c1.z + a.c3 * b.c1.w, 316 a.c0 * b.c2.x + a.c1 * b.c2.y + a.c2 * b.c2.z + a.c3 * b.c2.w, 317 a.c0 * b.c3.x + a.c1 * b.c3.y + a.c2 * b.c3.z + a.c3 * b.c3.w); 318 } 319 320 /// <summary>Returns the float3 column vector result of a matrix multiplication between a float3x2 matrix and a float2 column vector.</summary> 321 /// <param name="a">Left hand side argument of the matrix multiply.</param> 322 /// <param name="b">Right hand side argument of the matrix multiply.</param> 323 /// <returns>The computed matrix multiplication.</returns> 324 [MethodImpl(MethodImplOptions.AggressiveInlining)] 325 public static float3 mul(float3x2 a, float2 b) 326 { 327 return a.c0 * b.x + a.c1 * b.y; 328 } 329 330 /// <summary>Returns the float3x2 matrix result of a matrix multiplication between a float3x2 matrix and a float2x2 matrix.</summary> 331 /// <param name="a">Left hand side argument of the matrix multiply.</param> 332 /// <param name="b">Right hand side argument of the matrix multiply.</param> 333 /// <returns>The computed matrix multiplication.</returns> 334 [MethodImpl(MethodImplOptions.AggressiveInlining)] 335 public static float3x2 mul(float3x2 a, float2x2 b) 336 { 337 return float3x2( 338 a.c0 * b.c0.x + a.c1 * b.c0.y, 339 a.c0 * b.c1.x + a.c1 * b.c1.y); 340 } 341 342 /// <summary>Returns the float3x3 matrix result of a matrix multiplication between a float3x2 matrix and a float2x3 matrix.</summary> 343 /// <param name="a">Left hand side argument of the matrix multiply.</param> 344 /// <param name="b">Right hand side argument of the matrix multiply.</param> 345 /// <returns>The computed matrix multiplication.</returns> 346 [MethodImpl(MethodImplOptions.AggressiveInlining)] 347 public static float3x3 mul(float3x2 a, float2x3 b) 348 { 349 return float3x3( 350 a.c0 * b.c0.x + a.c1 * b.c0.y, 351 a.c0 * b.c1.x + a.c1 * b.c1.y, 352 a.c0 * b.c2.x + a.c1 * b.c2.y); 353 } 354 355 /// <summary>Returns the float3x4 matrix result of a matrix multiplication between a float3x2 matrix and a float2x4 matrix.</summary> 356 /// <param name="a">Left hand side argument of the matrix multiply.</param> 357 /// <param name="b">Right hand side argument of the matrix multiply.</param> 358 /// <returns>The computed matrix multiplication.</returns> 359 [MethodImpl(MethodImplOptions.AggressiveInlining)] 360 public static float3x4 mul(float3x2 a, float2x4 b) 361 { 362 return float3x4( 363 a.c0 * b.c0.x + a.c1 * b.c0.y, 364 a.c0 * b.c1.x + a.c1 * b.c1.y, 365 a.c0 * b.c2.x + a.c1 * b.c2.y, 366 a.c0 * b.c3.x + a.c1 * b.c3.y); 367 } 368 369 /// <summary>Returns the float3 column vector result of a matrix multiplication between a float3x3 matrix and a float3 column vector.</summary> 370 /// <param name="a">Left hand side argument of the matrix multiply.</param> 371 /// <param name="b">Right hand side argument of the matrix multiply.</param> 372 /// <returns>The computed matrix multiplication.</returns> 373 [MethodImpl(MethodImplOptions.AggressiveInlining)] 374 public static float3 mul(float3x3 a, float3 b) 375 { 376 return a.c0 * b.x + a.c1 * b.y + a.c2 * b.z; 377 } 378 379 /// <summary>Returns the float3x2 matrix result of a matrix multiplication between a float3x3 matrix and a float3x2 matrix.</summary> 380 /// <param name="a">Left hand side argument of the matrix multiply.</param> 381 /// <param name="b">Right hand side argument of the matrix multiply.</param> 382 /// <returns>The computed matrix multiplication.</returns> 383 [MethodImpl(MethodImplOptions.AggressiveInlining)] 384 public static float3x2 mul(float3x3 a, float3x2 b) 385 { 386 return float3x2( 387 a.c0 * b.c0.x + a.c1 * b.c0.y + a.c2 * b.c0.z, 388 a.c0 * b.c1.x + a.c1 * b.c1.y + a.c2 * b.c1.z); 389 } 390 391 /// <summary>Returns the float3x3 matrix result of a matrix multiplication between a float3x3 matrix and a float3x3 matrix.</summary> 392 /// <param name="a">Left hand side argument of the matrix multiply.</param> 393 /// <param name="b">Right hand side argument of the matrix multiply.</param> 394 /// <returns>The computed matrix multiplication.</returns> 395 [MethodImpl(MethodImplOptions.AggressiveInlining)] 396 public static float3x3 mul(float3x3 a, float3x3 b) 397 { 398 return float3x3( 399 a.c0 * b.c0.x + a.c1 * b.c0.y + a.c2 * b.c0.z, 400 a.c0 * b.c1.x + a.c1 * b.c1.y + a.c2 * b.c1.z, 401 a.c0 * b.c2.x + a.c1 * b.c2.y + a.c2 * b.c2.z); 402 } 403 404 /// <summary>Returns the float3x4 matrix result of a matrix multiplication between a float3x3 matrix and a float3x4 matrix.</summary> 405 /// <param name="a">Left hand side argument of the matrix multiply.</param> 406 /// <param name="b">Right hand side argument of the matrix multiply.</param> 407 /// <returns>The computed matrix multiplication.</returns> 408 [MethodImpl(MethodImplOptions.AggressiveInlining)] 409 public static float3x4 mul(float3x3 a, float3x4 b) 410 { 411 return float3x4( 412 a.c0 * b.c0.x + a.c1 * b.c0.y + a.c2 * b.c0.z, 413 a.c0 * b.c1.x + a.c1 * b.c1.y + a.c2 * b.c1.z, 414 a.c0 * b.c2.x + a.c1 * b.c2.y + a.c2 * b.c2.z, 415 a.c0 * b.c3.x + a.c1 * b.c3.y + a.c2 * b.c3.z); 416 } 417 418 /// <summary>Returns the float3 column vector result of a matrix multiplication between a float3x4 matrix and a float4 column vector.</summary> 419 /// <param name="a">Left hand side argument of the matrix multiply.</param> 420 /// <param name="b">Right hand side argument of the matrix multiply.</param> 421 /// <returns>The computed matrix multiplication.</returns> 422 [MethodImpl(MethodImplOptions.AggressiveInlining)] 423 public static float3 mul(float3x4 a, float4 b) 424 { 425 return a.c0 * b.x + a.c1 * b.y + a.c2 * b.z + a.c3 * b.w; 426 } 427 428 /// <summary>Returns the float3x2 matrix result of a matrix multiplication between a float3x4 matrix and a float4x2 matrix.</summary> 429 /// <param name="a">Left hand side argument of the matrix multiply.</param> 430 /// <param name="b">Right hand side argument of the matrix multiply.</param> 431 /// <returns>The computed matrix multiplication.</returns> 432 [MethodImpl(MethodImplOptions.AggressiveInlining)] 433 public static float3x2 mul(float3x4 a, float4x2 b) 434 { 435 return float3x2( 436 a.c0 * b.c0.x + a.c1 * b.c0.y + a.c2 * b.c0.z + a.c3 * b.c0.w, 437 a.c0 * b.c1.x + a.c1 * b.c1.y + a.c2 * b.c1.z + a.c3 * b.c1.w); 438 } 439 440 /// <summary>Returns the float3x3 matrix result of a matrix multiplication between a float3x4 matrix and a float4x3 matrix.</summary> 441 /// <param name="a">Left hand side argument of the matrix multiply.</param> 442 /// <param name="b">Right hand side argument of the matrix multiply.</param> 443 /// <returns>The computed matrix multiplication.</returns> 444 [MethodImpl(MethodImplOptions.AggressiveInlining)] 445 public static float3x3 mul(float3x4 a, float4x3 b) 446 { 447 return float3x3( 448 a.c0 * b.c0.x + a.c1 * b.c0.y + a.c2 * b.c0.z + a.c3 * b.c0.w, 449 a.c0 * b.c1.x + a.c1 * b.c1.y + a.c2 * b.c1.z + a.c3 * b.c1.w, 450 a.c0 * b.c2.x + a.c1 * b.c2.y + a.c2 * b.c2.z + a.c3 * b.c2.w); 451 } 452 453 /// <summary>Returns the float3x4 matrix result of a matrix multiplication between a float3x4 matrix and a float4x4 matrix.</summary> 454 /// <param name="a">Left hand side argument of the matrix multiply.</param> 455 /// <param name="b">Right hand side argument of the matrix multiply.</param> 456 /// <returns>The computed matrix multiplication.</returns> 457 [MethodImpl(MethodImplOptions.AggressiveInlining)] 458 public static float3x4 mul(float3x4 a, float4x4 b) 459 { 460 return float3x4( 461 a.c0 * b.c0.x + a.c1 * b.c0.y + a.c2 * b.c0.z + a.c3 * b.c0.w, 462 a.c0 * b.c1.x + a.c1 * b.c1.y + a.c2 * b.c1.z + a.c3 * b.c1.w, 463 a.c0 * b.c2.x + a.c1 * b.c2.y + a.c2 * b.c2.z + a.c3 * b.c2.w, 464 a.c0 * b.c3.x + a.c1 * b.c3.y + a.c2 * b.c3.z + a.c3 * b.c3.w); 465 } 466 467 /// <summary>Returns the float4 column vector result of a matrix multiplication between a float4x2 matrix and a float2 column vector.</summary> 468 /// <param name="a">Left hand side argument of the matrix multiply.</param> 469 /// <param name="b">Right hand side argument of the matrix multiply.</param> 470 /// <returns>The computed matrix multiplication.</returns> 471 [MethodImpl(MethodImplOptions.AggressiveInlining)] 472 public static float4 mul(float4x2 a, float2 b) 473 { 474 return a.c0 * b.x + a.c1 * b.y; 475 } 476 477 /// <summary>Returns the float4x2 matrix result of a matrix multiplication between a float4x2 matrix and a float2x2 matrix.</summary> 478 /// <param name="a">Left hand side argument of the matrix multiply.</param> 479 /// <param name="b">Right hand side argument of the matrix multiply.</param> 480 /// <returns>The computed matrix multiplication.</returns> 481 [MethodImpl(MethodImplOptions.AggressiveInlining)] 482 public static float4x2 mul(float4x2 a, float2x2 b) 483 { 484 return float4x2( 485 a.c0 * b.c0.x + a.c1 * b.c0.y, 486 a.c0 * b.c1.x + a.c1 * b.c1.y); 487 } 488 489 /// <summary>Returns the float4x3 matrix result of a matrix multiplication between a float4x2 matrix and a float2x3 matrix.</summary> 490 /// <param name="a">Left hand side argument of the matrix multiply.</param> 491 /// <param name="b">Right hand side argument of the matrix multiply.</param> 492 /// <returns>The computed matrix multiplication.</returns> 493 [MethodImpl(MethodImplOptions.AggressiveInlining)] 494 public static float4x3 mul(float4x2 a, float2x3 b) 495 { 496 return float4x3( 497 a.c0 * b.c0.x + a.c1 * b.c0.y, 498 a.c0 * b.c1.x + a.c1 * b.c1.y, 499 a.c0 * b.c2.x + a.c1 * b.c2.y); 500 } 501 502 /// <summary>Returns the float4x4 matrix result of a matrix multiplication between a float4x2 matrix and a float2x4 matrix.</summary> 503 /// <param name="a">Left hand side argument of the matrix multiply.</param> 504 /// <param name="b">Right hand side argument of the matrix multiply.</param> 505 /// <returns>The computed matrix multiplication.</returns> 506 [MethodImpl(MethodImplOptions.AggressiveInlining)] 507 public static float4x4 mul(float4x2 a, float2x4 b) 508 { 509 return float4x4( 510 a.c0 * b.c0.x + a.c1 * b.c0.y, 511 a.c0 * b.c1.x + a.c1 * b.c1.y, 512 a.c0 * b.c2.x + a.c1 * b.c2.y, 513 a.c0 * b.c3.x + a.c1 * b.c3.y); 514 } 515 516 /// <summary>Returns the float4 column vector result of a matrix multiplication between a float4x3 matrix and a float3 column vector.</summary> 517 /// <param name="a">Left hand side argument of the matrix multiply.</param> 518 /// <param name="b">Right hand side argument of the matrix multiply.</param> 519 /// <returns>The computed matrix multiplication.</returns> 520 [MethodImpl(MethodImplOptions.AggressiveInlining)] 521 public static float4 mul(float4x3 a, float3 b) 522 { 523 return a.c0 * b.x + a.c1 * b.y + a.c2 * b.z; 524 } 525 526 /// <summary>Returns the float4x2 matrix result of a matrix multiplication between a float4x3 matrix and a float3x2 matrix.</summary> 527 /// <param name="a">Left hand side argument of the matrix multiply.</param> 528 /// <param name="b">Right hand side argument of the matrix multiply.</param> 529 /// <returns>The computed matrix multiplication.</returns> 530 [MethodImpl(MethodImplOptions.AggressiveInlining)] 531 public static float4x2 mul(float4x3 a, float3x2 b) 532 { 533 return float4x2( 534 a.c0 * b.c0.x + a.c1 * b.c0.y + a.c2 * b.c0.z, 535 a.c0 * b.c1.x + a.c1 * b.c1.y + a.c2 * b.c1.z); 536 } 537 538 /// <summary>Returns the float4x3 matrix result of a matrix multiplication between a float4x3 matrix and a float3x3 matrix.</summary> 539 /// <param name="a">Left hand side argument of the matrix multiply.</param> 540 /// <param name="b">Right hand side argument of the matrix multiply.</param> 541 /// <returns>The computed matrix multiplication.</returns> 542 [MethodImpl(MethodImplOptions.AggressiveInlining)] 543 public static float4x3 mul(float4x3 a, float3x3 b) 544 { 545 return float4x3( 546 a.c0 * b.c0.x + a.c1 * b.c0.y + a.c2 * b.c0.z, 547 a.c0 * b.c1.x + a.c1 * b.c1.y + a.c2 * b.c1.z, 548 a.c0 * b.c2.x + a.c1 * b.c2.y + a.c2 * b.c2.z); 549 } 550 551 /// <summary>Returns the float4x4 matrix result of a matrix multiplication between a float4x3 matrix and a float3x4 matrix.</summary> 552 /// <param name="a">Left hand side argument of the matrix multiply.</param> 553 /// <param name="b">Right hand side argument of the matrix multiply.</param> 554 /// <returns>The computed matrix multiplication.</returns> 555 [MethodImpl(MethodImplOptions.AggressiveInlining)] 556 public static float4x4 mul(float4x3 a, float3x4 b) 557 { 558 return float4x4( 559 a.c0 * b.c0.x + a.c1 * b.c0.y + a.c2 * b.c0.z, 560 a.c0 * b.c1.x + a.c1 * b.c1.y + a.c2 * b.c1.z, 561 a.c0 * b.c2.x + a.c1 * b.c2.y + a.c2 * b.c2.z, 562 a.c0 * b.c3.x + a.c1 * b.c3.y + a.c2 * b.c3.z); 563 } 564 565 /// <summary>Returns the float4 column vector result of a matrix multiplication between a float4x4 matrix and a float4 column vector.</summary> 566 /// <param name="a">Left hand side argument of the matrix multiply.</param> 567 /// <param name="b">Right hand side argument of the matrix multiply.</param> 568 /// <returns>The computed matrix multiplication.</returns> 569 [MethodImpl(MethodImplOptions.AggressiveInlining)] 570 public static float4 mul(float4x4 a, float4 b) 571 { 572 return a.c0 * b.x + a.c1 * b.y + a.c2 * b.z + a.c3 * b.w; 573 } 574 575 /// <summary>Returns the float4x2 matrix result of a matrix multiplication between a float4x4 matrix and a float4x2 matrix.</summary> 576 /// <param name="a">Left hand side argument of the matrix multiply.</param> 577 /// <param name="b">Right hand side argument of the matrix multiply.</param> 578 /// <returns>The computed matrix multiplication.</returns> 579 [MethodImpl(MethodImplOptions.AggressiveInlining)] 580 public static float4x2 mul(float4x4 a, float4x2 b) 581 { 582 return float4x2( 583 a.c0 * b.c0.x + a.c1 * b.c0.y + a.c2 * b.c0.z + a.c3 * b.c0.w, 584 a.c0 * b.c1.x + a.c1 * b.c1.y + a.c2 * b.c1.z + a.c3 * b.c1.w); 585 } 586 587 /// <summary>Returns the float4x3 matrix result of a matrix multiplication between a float4x4 matrix and a float4x3 matrix.</summary> 588 /// <param name="a">Left hand side argument of the matrix multiply.</param> 589 /// <param name="b">Right hand side argument of the matrix multiply.</param> 590 /// <returns>The computed matrix multiplication.</returns> 591 [MethodImpl(MethodImplOptions.AggressiveInlining)] 592 public static float4x3 mul(float4x4 a, float4x3 b) 593 { 594 return float4x3( 595 a.c0 * b.c0.x + a.c1 * b.c0.y + a.c2 * b.c0.z + a.c3 * b.c0.w, 596 a.c0 * b.c1.x + a.c1 * b.c1.y + a.c2 * b.c1.z + a.c3 * b.c1.w, 597 a.c0 * b.c2.x + a.c1 * b.c2.y + a.c2 * b.c2.z + a.c3 * b.c2.w); 598 } 599 600 /// <summary>Returns the float4x4 matrix result of a matrix multiplication between a float4x4 matrix and a float4x4 matrix.</summary> 601 /// <param name="a">Left hand side argument of the matrix multiply.</param> 602 /// <param name="b">Right hand side argument of the matrix multiply.</param> 603 /// <returns>The computed matrix multiplication.</returns> 604 [MethodImpl(MethodImplOptions.AggressiveInlining)] 605 public static float4x4 mul(float4x4 a, float4x4 b) 606 { 607 return float4x4( 608 a.c0 * b.c0.x + a.c1 * b.c0.y + a.c2 * b.c0.z + a.c3 * b.c0.w, 609 a.c0 * b.c1.x + a.c1 * b.c1.y + a.c2 * b.c1.z + a.c3 * b.c1.w, 610 a.c0 * b.c2.x + a.c1 * b.c2.y + a.c2 * b.c2.z + a.c3 * b.c2.w, 611 a.c0 * b.c3.x + a.c1 * b.c3.y + a.c2 * b.c3.z + a.c3 * b.c3.w); 612 } 613 614 /// <summary>Returns the double value result of a matrix multiplication between a double value and a double value.</summary> 615 /// <param name="a">Left hand side argument of the matrix multiply.</param> 616 /// <param name="b">Right hand side argument of the matrix multiply.</param> 617 /// <returns>The computed matrix multiplication.</returns> 618 [MethodImpl(MethodImplOptions.AggressiveInlining)] 619 public static double mul(double a, double b) 620 { 621 return a * b; 622 } 623 624 /// <summary>Returns the double value result of a matrix multiplication between a double2 row vector and a double2 column vector.</summary> 625 /// <param name="a">Left hand side argument of the matrix multiply.</param> 626 /// <param name="b">Right hand side argument of the matrix multiply.</param> 627 /// <returns>The computed matrix multiplication.</returns> 628 [MethodImpl(MethodImplOptions.AggressiveInlining)] 629 public static double mul(double2 a, double2 b) 630 { 631 return a.x * b.x + a.y * b.y; 632 } 633 634 /// <summary>Returns the double2 row vector result of a matrix multiplication between a double2 row vector and a double2x2 matrix.</summary> 635 /// <param name="a">Left hand side argument of the matrix multiply.</param> 636 /// <param name="b">Right hand side argument of the matrix multiply.</param> 637 /// <returns>The computed matrix multiplication.</returns> 638 [MethodImpl(MethodImplOptions.AggressiveInlining)] 639 public static double2 mul(double2 a, double2x2 b) 640 { 641 return double2( 642 a.x * b.c0.x + a.y * b.c0.y, 643 a.x * b.c1.x + a.y * b.c1.y); 644 } 645 646 /// <summary>Returns the double3 row vector result of a matrix multiplication between a double2 row vector and a double2x3 matrix.</summary> 647 /// <param name="a">Left hand side argument of the matrix multiply.</param> 648 /// <param name="b">Right hand side argument of the matrix multiply.</param> 649 /// <returns>The computed matrix multiplication.</returns> 650 [MethodImpl(MethodImplOptions.AggressiveInlining)] 651 public static double3 mul(double2 a, double2x3 b) 652 { 653 return double3( 654 a.x * b.c0.x + a.y * b.c0.y, 655 a.x * b.c1.x + a.y * b.c1.y, 656 a.x * b.c2.x + a.y * b.c2.y); 657 } 658 659 /// <summary>Returns the double4 row vector result of a matrix multiplication between a double2 row vector and a double2x4 matrix.</summary> 660 /// <param name="a">Left hand side argument of the matrix multiply.</param> 661 /// <param name="b">Right hand side argument of the matrix multiply.</param> 662 /// <returns>The computed matrix multiplication.</returns> 663 [MethodImpl(MethodImplOptions.AggressiveInlining)] 664 public static double4 mul(double2 a, double2x4 b) 665 { 666 return double4( 667 a.x * b.c0.x + a.y * b.c0.y, 668 a.x * b.c1.x + a.y * b.c1.y, 669 a.x * b.c2.x + a.y * b.c2.y, 670 a.x * b.c3.x + a.y * b.c3.y); 671 } 672 673 /// <summary>Returns the double value result of a matrix multiplication between a double3 row vector and a double3 column vector.</summary> 674 /// <param name="a">Left hand side argument of the matrix multiply.</param> 675 /// <param name="b">Right hand side argument of the matrix multiply.</param> 676 /// <returns>The computed matrix multiplication.</returns> 677 [MethodImpl(MethodImplOptions.AggressiveInlining)] 678 public static double mul(double3 a, double3 b) 679 { 680 return a.x * b.x + a.y * b.y + a.z * b.z; 681 } 682 683 /// <summary>Returns the double2 row vector result of a matrix multiplication between a double3 row vector and a double3x2 matrix.</summary> 684 /// <param name="a">Left hand side argument of the matrix multiply.</param> 685 /// <param name="b">Right hand side argument of the matrix multiply.</param> 686 /// <returns>The computed matrix multiplication.</returns> 687 [MethodImpl(MethodImplOptions.AggressiveInlining)] 688 public static double2 mul(double3 a, double3x2 b) 689 { 690 return double2( 691 a.x * b.c0.x + a.y * b.c0.y + a.z * b.c0.z, 692 a.x * b.c1.x + a.y * b.c1.y + a.z * b.c1.z); 693 } 694 695 /// <summary>Returns the double3 row vector result of a matrix multiplication between a double3 row vector and a double3x3 matrix.</summary> 696 /// <param name="a">Left hand side argument of the matrix multiply.</param> 697 /// <param name="b">Right hand side argument of the matrix multiply.</param> 698 /// <returns>The computed matrix multiplication.</returns> 699 [MethodImpl(MethodImplOptions.AggressiveInlining)] 700 public static double3 mul(double3 a, double3x3 b) 701 { 702 return double3( 703 a.x * b.c0.x + a.y * b.c0.y + a.z * b.c0.z, 704 a.x * b.c1.x + a.y * b.c1.y + a.z * b.c1.z, 705 a.x * b.c2.x + a.y * b.c2.y + a.z * b.c2.z); 706 } 707 708 /// <summary>Returns the double4 row vector result of a matrix multiplication between a double3 row vector and a double3x4 matrix.</summary> 709 /// <param name="a">Left hand side argument of the matrix multiply.</param> 710 /// <param name="b">Right hand side argument of the matrix multiply.</param> 711 /// <returns>The computed matrix multiplication.</returns> 712 [MethodImpl(MethodImplOptions.AggressiveInlining)] 713 public static double4 mul(double3 a, double3x4 b) 714 { 715 return double4( 716 a.x * b.c0.x + a.y * b.c0.y + a.z * b.c0.z, 717 a.x * b.c1.x + a.y * b.c1.y + a.z * b.c1.z, 718 a.x * b.c2.x + a.y * b.c2.y + a.z * b.c2.z, 719 a.x * b.c3.x + a.y * b.c3.y + a.z * b.c3.z); 720 } 721 722 /// <summary>Returns the double value result of a matrix multiplication between a double4 row vector and a double4 column vector.</summary> 723 /// <param name="a">Left hand side argument of the matrix multiply.</param> 724 /// <param name="b">Right hand side argument of the matrix multiply.</param> 725 /// <returns>The computed matrix multiplication.</returns> 726 [MethodImpl(MethodImplOptions.AggressiveInlining)] 727 public static double mul(double4 a, double4 b) 728 { 729 return a.x * b.x + a.y * b.y + a.z * b.z + a.w * b.w; 730 } 731 732 /// <summary>Returns the double2 row vector result of a matrix multiplication between a double4 row vector and a double4x2 matrix.</summary> 733 /// <param name="a">Left hand side argument of the matrix multiply.</param> 734 /// <param name="b">Right hand side argument of the matrix multiply.</param> 735 /// <returns>The computed matrix multiplication.</returns> 736 [MethodImpl(MethodImplOptions.AggressiveInlining)] 737 public static double2 mul(double4 a, double4x2 b) 738 { 739 return double2( 740 a.x * b.c0.x + a.y * b.c0.y + a.z * b.c0.z + a.w * b.c0.w, 741 a.x * b.c1.x + a.y * b.c1.y + a.z * b.c1.z + a.w * b.c1.w); 742 } 743 744 /// <summary>Returns the double3 row vector result of a matrix multiplication between a double4 row vector and a double4x3 matrix.</summary> 745 /// <param name="a">Left hand side argument of the matrix multiply.</param> 746 /// <param name="b">Right hand side argument of the matrix multiply.</param> 747 /// <returns>The computed matrix multiplication.</returns> 748 [MethodImpl(MethodImplOptions.AggressiveInlining)] 749 public static double3 mul(double4 a, double4x3 b) 750 { 751 return double3( 752 a.x * b.c0.x + a.y * b.c0.y + a.z * b.c0.z + a.w * b.c0.w, 753 a.x * b.c1.x + a.y * b.c1.y + a.z * b.c1.z + a.w * b.c1.w, 754 a.x * b.c2.x + a.y * b.c2.y + a.z * b.c2.z + a.w * b.c2.w); 755 } 756 757 /// <summary>Returns the double4 row vector result of a matrix multiplication between a double4 row vector and a double4x4 matrix.</summary> 758 /// <param name="a">Left hand side argument of the matrix multiply.</param> 759 /// <param name="b">Right hand side argument of the matrix multiply.</param> 760 /// <returns>The computed matrix multiplication.</returns> 761 [MethodImpl(MethodImplOptions.AggressiveInlining)] 762 public static double4 mul(double4 a, double4x4 b) 763 { 764 return double4( 765 a.x * b.c0.x + a.y * b.c0.y + a.z * b.c0.z + a.w * b.c0.w, 766 a.x * b.c1.x + a.y * b.c1.y + a.z * b.c1.z + a.w * b.c1.w, 767 a.x * b.c2.x + a.y * b.c2.y + a.z * b.c2.z + a.w * b.c2.w, 768 a.x * b.c3.x + a.y * b.c3.y + a.z * b.c3.z + a.w * b.c3.w); 769 } 770 771 /// <summary>Returns the double2 column vector result of a matrix multiplication between a double2x2 matrix and a double2 column vector.</summary> 772 /// <param name="a">Left hand side argument of the matrix multiply.</param> 773 /// <param name="b">Right hand side argument of the matrix multiply.</param> 774 /// <returns>The computed matrix multiplication.</returns> 775 [MethodImpl(MethodImplOptions.AggressiveInlining)] 776 public static double2 mul(double2x2 a, double2 b) 777 { 778 return a.c0 * b.x + a.c1 * b.y; 779 } 780 781 /// <summary>Returns the double2x2 matrix result of a matrix multiplication between a double2x2 matrix and a double2x2 matrix.</summary> 782 /// <param name="a">Left hand side argument of the matrix multiply.</param> 783 /// <param name="b">Right hand side argument of the matrix multiply.</param> 784 /// <returns>The computed matrix multiplication.</returns> 785 [MethodImpl(MethodImplOptions.AggressiveInlining)] 786 public static double2x2 mul(double2x2 a, double2x2 b) 787 { 788 return double2x2( 789 a.c0 * b.c0.x + a.c1 * b.c0.y, 790 a.c0 * b.c1.x + a.c1 * b.c1.y); 791 } 792 793 /// <summary>Returns the double2x3 matrix result of a matrix multiplication between a double2x2 matrix and a double2x3 matrix.</summary> 794 /// <param name="a">Left hand side argument of the matrix multiply.</param> 795 /// <param name="b">Right hand side argument of the matrix multiply.</param> 796 /// <returns>The computed matrix multiplication.</returns> 797 [MethodImpl(MethodImplOptions.AggressiveInlining)] 798 public static double2x3 mul(double2x2 a, double2x3 b) 799 { 800 return double2x3( 801 a.c0 * b.c0.x + a.c1 * b.c0.y, 802 a.c0 * b.c1.x + a.c1 * b.c1.y, 803 a.c0 * b.c2.x + a.c1 * b.c2.y); 804 } 805 806 /// <summary>Returns the double2x4 matrix result of a matrix multiplication between a double2x2 matrix and a double2x4 matrix.</summary> 807 /// <param name="a">Left hand side argument of the matrix multiply.</param> 808 /// <param name="b">Right hand side argument of the matrix multiply.</param> 809 /// <returns>The computed matrix multiplication.</returns> 810 [MethodImpl(MethodImplOptions.AggressiveInlining)] 811 public static double2x4 mul(double2x2 a, double2x4 b) 812 { 813 return double2x4( 814 a.c0 * b.c0.x + a.c1 * b.c0.y, 815 a.c0 * b.c1.x + a.c1 * b.c1.y, 816 a.c0 * b.c2.x + a.c1 * b.c2.y, 817 a.c0 * b.c3.x + a.c1 * b.c3.y); 818 } 819 820 /// <summary>Returns the double2 column vector result of a matrix multiplication between a double2x3 matrix and a double3 column vector.</summary> 821 /// <param name="a">Left hand side argument of the matrix multiply.</param> 822 /// <param name="b">Right hand side argument of the matrix multiply.</param> 823 /// <returns>The computed matrix multiplication.</returns> 824 [MethodImpl(MethodImplOptions.AggressiveInlining)] 825 public static double2 mul(double2x3 a, double3 b) 826 { 827 return a.c0 * b.x + a.c1 * b.y + a.c2 * b.z; 828 } 829 830 /// <summary>Returns the double2x2 matrix result of a matrix multiplication between a double2x3 matrix and a double3x2 matrix.</summary> 831 /// <param name="a">Left hand side argument of the matrix multiply.</param> 832 /// <param name="b">Right hand side argument of the matrix multiply.</param> 833 /// <returns>The computed matrix multiplication.</returns> 834 [MethodImpl(MethodImplOptions.AggressiveInlining)] 835 public static double2x2 mul(double2x3 a, double3x2 b) 836 { 837 return double2x2( 838 a.c0 * b.c0.x + a.c1 * b.c0.y + a.c2 * b.c0.z, 839 a.c0 * b.c1.x + a.c1 * b.c1.y + a.c2 * b.c1.z); 840 } 841 842 /// <summary>Returns the double2x3 matrix result of a matrix multiplication between a double2x3 matrix and a double3x3 matrix.</summary> 843 /// <param name="a">Left hand side argument of the matrix multiply.</param> 844 /// <param name="b">Right hand side argument of the matrix multiply.</param> 845 /// <returns>The computed matrix multiplication.</returns> 846 [MethodImpl(MethodImplOptions.AggressiveInlining)] 847 public static double2x3 mul(double2x3 a, double3x3 b) 848 { 849 return double2x3( 850 a.c0 * b.c0.x + a.c1 * b.c0.y + a.c2 * b.c0.z, 851 a.c0 * b.c1.x + a.c1 * b.c1.y + a.c2 * b.c1.z, 852 a.c0 * b.c2.x + a.c1 * b.c2.y + a.c2 * b.c2.z); 853 } 854 855 /// <summary>Returns the double2x4 matrix result of a matrix multiplication between a double2x3 matrix and a double3x4 matrix.</summary> 856 /// <param name="a">Left hand side argument of the matrix multiply.</param> 857 /// <param name="b">Right hand side argument of the matrix multiply.</param> 858 /// <returns>The computed matrix multiplication.</returns> 859 [MethodImpl(MethodImplOptions.AggressiveInlining)] 860 public static double2x4 mul(double2x3 a, double3x4 b) 861 { 862 return double2x4( 863 a.c0 * b.c0.x + a.c1 * b.c0.y + a.c2 * b.c0.z, 864 a.c0 * b.c1.x + a.c1 * b.c1.y + a.c2 * b.c1.z, 865 a.c0 * b.c2.x + a.c1 * b.c2.y + a.c2 * b.c2.z, 866 a.c0 * b.c3.x + a.c1 * b.c3.y + a.c2 * b.c3.z); 867 } 868 869 /// <summary>Returns the double2 column vector result of a matrix multiplication between a double2x4 matrix and a double4 column vector.</summary> 870 /// <param name="a">Left hand side argument of the matrix multiply.</param> 871 /// <param name="b">Right hand side argument of the matrix multiply.</param> 872 /// <returns>The computed matrix multiplication.</returns> 873 [MethodImpl(MethodImplOptions.AggressiveInlining)] 874 public static double2 mul(double2x4 a, double4 b) 875 { 876 return a.c0 * b.x + a.c1 * b.y + a.c2 * b.z + a.c3 * b.w; 877 } 878 879 /// <summary>Returns the double2x2 matrix result of a matrix multiplication between a double2x4 matrix and a double4x2 matrix.</summary> 880 /// <param name="a">Left hand side argument of the matrix multiply.</param> 881 /// <param name="b">Right hand side argument of the matrix multiply.</param> 882 /// <returns>The computed matrix multiplication.</returns> 883 [MethodImpl(MethodImplOptions.AggressiveInlining)] 884 public static double2x2 mul(double2x4 a, double4x2 b) 885 { 886 return double2x2( 887 a.c0 * b.c0.x + a.c1 * b.c0.y + a.c2 * b.c0.z + a.c3 * b.c0.w, 888 a.c0 * b.c1.x + a.c1 * b.c1.y + a.c2 * b.c1.z + a.c3 * b.c1.w); 889 } 890 891 /// <summary>Returns the double2x3 matrix result of a matrix multiplication between a double2x4 matrix and a double4x3 matrix.</summary> 892 /// <param name="a">Left hand side argument of the matrix multiply.</param> 893 /// <param name="b">Right hand side argument of the matrix multiply.</param> 894 /// <returns>The computed matrix multiplication.</returns> 895 [MethodImpl(MethodImplOptions.AggressiveInlining)] 896 public static double2x3 mul(double2x4 a, double4x3 b) 897 { 898 return double2x3( 899 a.c0 * b.c0.x + a.c1 * b.c0.y + a.c2 * b.c0.z + a.c3 * b.c0.w, 900 a.c0 * b.c1.x + a.c1 * b.c1.y + a.c2 * b.c1.z + a.c3 * b.c1.w, 901 a.c0 * b.c2.x + a.c1 * b.c2.y + a.c2 * b.c2.z + a.c3 * b.c2.w); 902 } 903 904 /// <summary>Returns the double2x4 matrix result of a matrix multiplication between a double2x4 matrix and a double4x4 matrix.</summary> 905 /// <param name="a">Left hand side argument of the matrix multiply.</param> 906 /// <param name="b">Right hand side argument of the matrix multiply.</param> 907 /// <returns>The computed matrix multiplication.</returns> 908 [MethodImpl(MethodImplOptions.AggressiveInlining)] 909 public static double2x4 mul(double2x4 a, double4x4 b) 910 { 911 return double2x4( 912 a.c0 * b.c0.x + a.c1 * b.c0.y + a.c2 * b.c0.z + a.c3 * b.c0.w, 913 a.c0 * b.c1.x + a.c1 * b.c1.y + a.c2 * b.c1.z + a.c3 * b.c1.w, 914 a.c0 * b.c2.x + a.c1 * b.c2.y + a.c2 * b.c2.z + a.c3 * b.c2.w, 915 a.c0 * b.c3.x + a.c1 * b.c3.y + a.c2 * b.c3.z + a.c3 * b.c3.w); 916 } 917 918 /// <summary>Returns the double3 column vector result of a matrix multiplication between a double3x2 matrix and a double2 column vector.</summary> 919 /// <param name="a">Left hand side argument of the matrix multiply.</param> 920 /// <param name="b">Right hand side argument of the matrix multiply.</param> 921 /// <returns>The computed matrix multiplication.</returns> 922 [MethodImpl(MethodImplOptions.AggressiveInlining)] 923 public static double3 mul(double3x2 a, double2 b) 924 { 925 return a.c0 * b.x + a.c1 * b.y; 926 } 927 928 /// <summary>Returns the double3x2 matrix result of a matrix multiplication between a double3x2 matrix and a double2x2 matrix.</summary> 929 /// <param name="a">Left hand side argument of the matrix multiply.</param> 930 /// <param name="b">Right hand side argument of the matrix multiply.</param> 931 /// <returns>The computed matrix multiplication.</returns> 932 [MethodImpl(MethodImplOptions.AggressiveInlining)] 933 public static double3x2 mul(double3x2 a, double2x2 b) 934 { 935 return double3x2( 936 a.c0 * b.c0.x + a.c1 * b.c0.y, 937 a.c0 * b.c1.x + a.c1 * b.c1.y); 938 } 939 940 /// <summary>Returns the double3x3 matrix result of a matrix multiplication between a double3x2 matrix and a double2x3 matrix.</summary> 941 /// <param name="a">Left hand side argument of the matrix multiply.</param> 942 /// <param name="b">Right hand side argument of the matrix multiply.</param> 943 /// <returns>The computed matrix multiplication.</returns> 944 [MethodImpl(MethodImplOptions.AggressiveInlining)] 945 public static double3x3 mul(double3x2 a, double2x3 b) 946 { 947 return double3x3( 948 a.c0 * b.c0.x + a.c1 * b.c0.y, 949 a.c0 * b.c1.x + a.c1 * b.c1.y, 950 a.c0 * b.c2.x + a.c1 * b.c2.y); 951 } 952 953 /// <summary>Returns the double3x4 matrix result of a matrix multiplication between a double3x2 matrix and a double2x4 matrix.</summary> 954 /// <param name="a">Left hand side argument of the matrix multiply.</param> 955 /// <param name="b">Right hand side argument of the matrix multiply.</param> 956 /// <returns>The computed matrix multiplication.</returns> 957 [MethodImpl(MethodImplOptions.AggressiveInlining)] 958 public static double3x4 mul(double3x2 a, double2x4 b) 959 { 960 return double3x4( 961 a.c0 * b.c0.x + a.c1 * b.c0.y, 962 a.c0 * b.c1.x + a.c1 * b.c1.y, 963 a.c0 * b.c2.x + a.c1 * b.c2.y, 964 a.c0 * b.c3.x + a.c1 * b.c3.y); 965 } 966 967 /// <summary>Returns the double3 column vector result of a matrix multiplication between a double3x3 matrix and a double3 column vector.</summary> 968 /// <param name="a">Left hand side argument of the matrix multiply.</param> 969 /// <param name="b">Right hand side argument of the matrix multiply.</param> 970 /// <returns>The computed matrix multiplication.</returns> 971 [MethodImpl(MethodImplOptions.AggressiveInlining)] 972 public static double3 mul(double3x3 a, double3 b) 973 { 974 return a.c0 * b.x + a.c1 * b.y + a.c2 * b.z; 975 } 976 977 /// <summary>Returns the double3x2 matrix result of a matrix multiplication between a double3x3 matrix and a double3x2 matrix.</summary> 978 /// <param name="a">Left hand side argument of the matrix multiply.</param> 979 /// <param name="b">Right hand side argument of the matrix multiply.</param> 980 /// <returns>The computed matrix multiplication.</returns> 981 [MethodImpl(MethodImplOptions.AggressiveInlining)] 982 public static double3x2 mul(double3x3 a, double3x2 b) 983 { 984 return double3x2( 985 a.c0 * b.c0.x + a.c1 * b.c0.y + a.c2 * b.c0.z, 986 a.c0 * b.c1.x + a.c1 * b.c1.y + a.c2 * b.c1.z); 987 } 988 989 /// <summary>Returns the double3x3 matrix result of a matrix multiplication between a double3x3 matrix and a double3x3 matrix.</summary> 990 /// <param name="a">Left hand side argument of the matrix multiply.</param> 991 /// <param name="b">Right hand side argument of the matrix multiply.</param> 992 /// <returns>The computed matrix multiplication.</returns> 993 [MethodImpl(MethodImplOptions.AggressiveInlining)] 994 public static double3x3 mul(double3x3 a, double3x3 b) 995 { 996 return double3x3( 997 a.c0 * b.c0.x + a.c1 * b.c0.y + a.c2 * b.c0.z, 998 a.c0 * b.c1.x + a.c1 * b.c1.y + a.c2 * b.c1.z, 999 a.c0 * b.c2.x + a.c1 * b.c2.y + a.c2 * b.c2.z); 1000 } 1001 1002 /// <summary>Returns the double3x4 matrix result of a matrix multiplication between a double3x3 matrix and a double3x4 matrix.</summary> 1003 /// <param name="a">Left hand side argument of the matrix multiply.</param> 1004 /// <param name="b">Right hand side argument of the matrix multiply.</param> 1005 /// <returns>The computed matrix multiplication.</returns> 1006 [MethodImpl(MethodImplOptions.AggressiveInlining)] 1007 public static double3x4 mul(double3x3 a, double3x4 b) 1008 { 1009 return double3x4( 1010 a.c0 * b.c0.x + a.c1 * b.c0.y + a.c2 * b.c0.z, 1011 a.c0 * b.c1.x + a.c1 * b.c1.y + a.c2 * b.c1.z, 1012 a.c0 * b.c2.x + a.c1 * b.c2.y + a.c2 * b.c2.z, 1013 a.c0 * b.c3.x + a.c1 * b.c3.y + a.c2 * b.c3.z); 1014 } 1015 1016 /// <summary>Returns the double3 column vector result of a matrix multiplication between a double3x4 matrix and a double4 column vector.</summary> 1017 /// <param name="a">Left hand side argument of the matrix multiply.</param> 1018 /// <param name="b">Right hand side argument of the matrix multiply.</param> 1019 /// <returns>The computed matrix multiplication.</returns> 1020 [MethodImpl(MethodImplOptions.AggressiveInlining)] 1021 public static double3 mul(double3x4 a, double4 b) 1022 { 1023 return a.c0 * b.x + a.c1 * b.y + a.c2 * b.z + a.c3 * b.w; 1024 } 1025 1026 /// <summary>Returns the double3x2 matrix result of a matrix multiplication between a double3x4 matrix and a double4x2 matrix.</summary> 1027 /// <param name="a">Left hand side argument of the matrix multiply.</param> 1028 /// <param name="b">Right hand side argument of the matrix multiply.</param> 1029 /// <returns>The computed matrix multiplication.</returns> 1030 [MethodImpl(MethodImplOptions.AggressiveInlining)] 1031 public static double3x2 mul(double3x4 a, double4x2 b) 1032 { 1033 return double3x2( 1034 a.c0 * b.c0.x + a.c1 * b.c0.y + a.c2 * b.c0.z + a.c3 * b.c0.w, 1035 a.c0 * b.c1.x + a.c1 * b.c1.y + a.c2 * b.c1.z + a.c3 * b.c1.w); 1036 } 1037 1038 /// <summary>Returns the double3x3 matrix result of a matrix multiplication between a double3x4 matrix and a double4x3 matrix.</summary> 1039 /// <param name="a">Left hand side argument of the matrix multiply.</param> 1040 /// <param name="b">Right hand side argument of the matrix multiply.</param> 1041 /// <returns>The computed matrix multiplication.</returns> 1042 [MethodImpl(MethodImplOptions.AggressiveInlining)] 1043 public static double3x3 mul(double3x4 a, double4x3 b) 1044 { 1045 return double3x3( 1046 a.c0 * b.c0.x + a.c1 * b.c0.y + a.c2 * b.c0.z + a.c3 * b.c0.w, 1047 a.c0 * b.c1.x + a.c1 * b.c1.y + a.c2 * b.c1.z + a.c3 * b.c1.w, 1048 a.c0 * b.c2.x + a.c1 * b.c2.y + a.c2 * b.c2.z + a.c3 * b.c2.w); 1049 } 1050 1051 /// <summary>Returns the double3x4 matrix result of a matrix multiplication between a double3x4 matrix and a double4x4 matrix.</summary> 1052 /// <param name="a">Left hand side argument of the matrix multiply.</param> 1053 /// <param name="b">Right hand side argument of the matrix multiply.</param> 1054 /// <returns>The computed matrix multiplication.</returns> 1055 [MethodImpl(MethodImplOptions.AggressiveInlining)] 1056 public static double3x4 mul(double3x4 a, double4x4 b) 1057 { 1058 return double3x4( 1059 a.c0 * b.c0.x + a.c1 * b.c0.y + a.c2 * b.c0.z + a.c3 * b.c0.w, 1060 a.c0 * b.c1.x + a.c1 * b.c1.y + a.c2 * b.c1.z + a.c3 * b.c1.w, 1061 a.c0 * b.c2.x + a.c1 * b.c2.y + a.c2 * b.c2.z + a.c3 * b.c2.w, 1062 a.c0 * b.c3.x + a.c1 * b.c3.y + a.c2 * b.c3.z + a.c3 * b.c3.w); 1063 } 1064 1065 /// <summary>Returns the double4 column vector result of a matrix multiplication between a double4x2 matrix and a double2 column vector.</summary> 1066 /// <param name="a">Left hand side argument of the matrix multiply.</param> 1067 /// <param name="b">Right hand side argument of the matrix multiply.</param> 1068 /// <returns>The computed matrix multiplication.</returns> 1069 [MethodImpl(MethodImplOptions.AggressiveInlining)] 1070 public static double4 mul(double4x2 a, double2 b) 1071 { 1072 return a.c0 * b.x + a.c1 * b.y; 1073 } 1074 1075 /// <summary>Returns the double4x2 matrix result of a matrix multiplication between a double4x2 matrix and a double2x2 matrix.</summary> 1076 /// <param name="a">Left hand side argument of the matrix multiply.</param> 1077 /// <param name="b">Right hand side argument of the matrix multiply.</param> 1078 /// <returns>The computed matrix multiplication.</returns> 1079 [MethodImpl(MethodImplOptions.AggressiveInlining)] 1080 public static double4x2 mul(double4x2 a, double2x2 b) 1081 { 1082 return double4x2( 1083 a.c0 * b.c0.x + a.c1 * b.c0.y, 1084 a.c0 * b.c1.x + a.c1 * b.c1.y); 1085 } 1086 1087 /// <summary>Returns the double4x3 matrix result of a matrix multiplication between a double4x2 matrix and a double2x3 matrix.</summary> 1088 /// <param name="a">Left hand side argument of the matrix multiply.</param> 1089 /// <param name="b">Right hand side argument of the matrix multiply.</param> 1090 /// <returns>The computed matrix multiplication.</returns> 1091 [MethodImpl(MethodImplOptions.AggressiveInlining)] 1092 public static double4x3 mul(double4x2 a, double2x3 b) 1093 { 1094 return double4x3( 1095 a.c0 * b.c0.x + a.c1 * b.c0.y, 1096 a.c0 * b.c1.x + a.c1 * b.c1.y, 1097 a.c0 * b.c2.x + a.c1 * b.c2.y); 1098 } 1099 1100 /// <summary>Returns the double4x4 matrix result of a matrix multiplication between a double4x2 matrix and a double2x4 matrix.</summary> 1101 /// <param name="a">Left hand side argument of the matrix multiply.</param> 1102 /// <param name="b">Right hand side argument of the matrix multiply.</param> 1103 /// <returns>The computed matrix multiplication.</returns> 1104 [MethodImpl(MethodImplOptions.AggressiveInlining)] 1105 public static double4x4 mul(double4x2 a, double2x4 b) 1106 { 1107 return double4x4( 1108 a.c0 * b.c0.x + a.c1 * b.c0.y, 1109 a.c0 * b.c1.x + a.c1 * b.c1.y, 1110 a.c0 * b.c2.x + a.c1 * b.c2.y, 1111 a.c0 * b.c3.x + a.c1 * b.c3.y); 1112 } 1113 1114 /// <summary>Returns the double4 column vector result of a matrix multiplication between a double4x3 matrix and a double3 column vector.</summary> 1115 /// <param name="a">Left hand side argument of the matrix multiply.</param> 1116 /// <param name="b">Right hand side argument of the matrix multiply.</param> 1117 /// <returns>The computed matrix multiplication.</returns> 1118 [MethodImpl(MethodImplOptions.AggressiveInlining)] 1119 public static double4 mul(double4x3 a, double3 b) 1120 { 1121 return a.c0 * b.x + a.c1 * b.y + a.c2 * b.z; 1122 } 1123 1124 /// <summary>Returns the double4x2 matrix result of a matrix multiplication between a double4x3 matrix and a double3x2 matrix.</summary> 1125 /// <param name="a">Left hand side argument of the matrix multiply.</param> 1126 /// <param name="b">Right hand side argument of the matrix multiply.</param> 1127 /// <returns>The computed matrix multiplication.</returns> 1128 [MethodImpl(MethodImplOptions.AggressiveInlining)] 1129 public static double4x2 mul(double4x3 a, double3x2 b) 1130 { 1131 return double4x2( 1132 a.c0 * b.c0.x + a.c1 * b.c0.y + a.c2 * b.c0.z, 1133 a.c0 * b.c1.x + a.c1 * b.c1.y + a.c2 * b.c1.z); 1134 } 1135 1136 /// <summary>Returns the double4x3 matrix result of a matrix multiplication between a double4x3 matrix and a double3x3 matrix.</summary> 1137 /// <param name="a">Left hand side argument of the matrix multiply.</param> 1138 /// <param name="b">Right hand side argument of the matrix multiply.</param> 1139 /// <returns>The computed matrix multiplication.</returns> 1140 [MethodImpl(MethodImplOptions.AggressiveInlining)] 1141 public static double4x3 mul(double4x3 a, double3x3 b) 1142 { 1143 return double4x3( 1144 a.c0 * b.c0.x + a.c1 * b.c0.y + a.c2 * b.c0.z, 1145 a.c0 * b.c1.x + a.c1 * b.c1.y + a.c2 * b.c1.z, 1146 a.c0 * b.c2.x + a.c1 * b.c2.y + a.c2 * b.c2.z); 1147 } 1148 1149 /// <summary>Returns the double4x4 matrix result of a matrix multiplication between a double4x3 matrix and a double3x4 matrix.</summary> 1150 /// <param name="a">Left hand side argument of the matrix multiply.</param> 1151 /// <param name="b">Right hand side argument of the matrix multiply.</param> 1152 /// <returns>The computed matrix multiplication.</returns> 1153 [MethodImpl(MethodImplOptions.AggressiveInlining)] 1154 public static double4x4 mul(double4x3 a, double3x4 b) 1155 { 1156 return double4x4( 1157 a.c0 * b.c0.x + a.c1 * b.c0.y + a.c2 * b.c0.z, 1158 a.c0 * b.c1.x + a.c1 * b.c1.y + a.c2 * b.c1.z, 1159 a.c0 * b.c2.x + a.c1 * b.c2.y + a.c2 * b.c2.z, 1160 a.c0 * b.c3.x + a.c1 * b.c3.y + a.c2 * b.c3.z); 1161 } 1162 1163 /// <summary>Returns the double4 column vector result of a matrix multiplication between a double4x4 matrix and a double4 column vector.</summary> 1164 /// <param name="a">Left hand side argument of the matrix multiply.</param> 1165 /// <param name="b">Right hand side argument of the matrix multiply.</param> 1166 /// <returns>The computed matrix multiplication.</returns> 1167 [MethodImpl(MethodImplOptions.AggressiveInlining)] 1168 public static double4 mul(double4x4 a, double4 b) 1169 { 1170 return a.c0 * b.x + a.c1 * b.y + a.c2 * b.z + a.c3 * b.w; 1171 } 1172 1173 /// <summary>Returns the double4x2 matrix result of a matrix multiplication between a double4x4 matrix and a double4x2 matrix.</summary> 1174 /// <param name="a">Left hand side argument of the matrix multiply.</param> 1175 /// <param name="b">Right hand side argument of the matrix multiply.</param> 1176 /// <returns>The computed matrix multiplication.</returns> 1177 [MethodImpl(MethodImplOptions.AggressiveInlining)] 1178 public static double4x2 mul(double4x4 a, double4x2 b) 1179 { 1180 return double4x2( 1181 a.c0 * b.c0.x + a.c1 * b.c0.y + a.c2 * b.c0.z + a.c3 * b.c0.w, 1182 a.c0 * b.c1.x + a.c1 * b.c1.y + a.c2 * b.c1.z + a.c3 * b.c1.w); 1183 } 1184 1185 /// <summary>Returns the double4x3 matrix result of a matrix multiplication between a double4x4 matrix and a double4x3 matrix.</summary> 1186 /// <param name="a">Left hand side argument of the matrix multiply.</param> 1187 /// <param name="b">Right hand side argument of the matrix multiply.</param> 1188 /// <returns>The computed matrix multiplication.</returns> 1189 [MethodImpl(MethodImplOptions.AggressiveInlining)] 1190 public static double4x3 mul(double4x4 a, double4x3 b) 1191 { 1192 return double4x3( 1193 a.c0 * b.c0.x + a.c1 * b.c0.y + a.c2 * b.c0.z + a.c3 * b.c0.w, 1194 a.c0 * b.c1.x + a.c1 * b.c1.y + a.c2 * b.c1.z + a.c3 * b.c1.w, 1195 a.c0 * b.c2.x + a.c1 * b.c2.y + a.c2 * b.c2.z + a.c3 * b.c2.w); 1196 } 1197 1198 /// <summary>Returns the double4x4 matrix result of a matrix multiplication between a double4x4 matrix and a double4x4 matrix.</summary> 1199 /// <param name="a">Left hand side argument of the matrix multiply.</param> 1200 /// <param name="b">Right hand side argument of the matrix multiply.</param> 1201 /// <returns>The computed matrix multiplication.</returns> 1202 [MethodImpl(MethodImplOptions.AggressiveInlining)] 1203 public static double4x4 mul(double4x4 a, double4x4 b) 1204 { 1205 return double4x4( 1206 a.c0 * b.c0.x + a.c1 * b.c0.y + a.c2 * b.c0.z + a.c3 * b.c0.w, 1207 a.c0 * b.c1.x + a.c1 * b.c1.y + a.c2 * b.c1.z + a.c3 * b.c1.w, 1208 a.c0 * b.c2.x + a.c1 * b.c2.y + a.c2 * b.c2.z + a.c3 * b.c2.w, 1209 a.c0 * b.c3.x + a.c1 * b.c3.y + a.c2 * b.c3.z + a.c3 * b.c3.w); 1210 } 1211 1212 /// <summary>Returns the int value result of a matrix multiplication between an int value and an int value.</summary> 1213 /// <param name="a">Left hand side argument of the matrix multiply.</param> 1214 /// <param name="b">Right hand side argument of the matrix multiply.</param> 1215 /// <returns>The computed matrix multiplication.</returns> 1216 [MethodImpl(MethodImplOptions.AggressiveInlining)] 1217 public static int mul(int a, int b) 1218 { 1219 return a * b; 1220 } 1221 1222 /// <summary>Returns the int value result of a matrix multiplication between an int2 row vector and an int2 column vector.</summary> 1223 /// <param name="a">Left hand side argument of the matrix multiply.</param> 1224 /// <param name="b">Right hand side argument of the matrix multiply.</param> 1225 /// <returns>The computed matrix multiplication.</returns> 1226 [MethodImpl(MethodImplOptions.AggressiveInlining)] 1227 public static int mul(int2 a, int2 b) 1228 { 1229 return a.x * b.x + a.y * b.y; 1230 } 1231 1232 /// <summary>Returns the int2 row vector result of a matrix multiplication between an int2 row vector and an int2x2 matrix.</summary> 1233 /// <param name="a">Left hand side argument of the matrix multiply.</param> 1234 /// <param name="b">Right hand side argument of the matrix multiply.</param> 1235 /// <returns>The computed matrix multiplication.</returns> 1236 [MethodImpl(MethodImplOptions.AggressiveInlining)] 1237 public static int2 mul(int2 a, int2x2 b) 1238 { 1239 return int2( 1240 a.x * b.c0.x + a.y * b.c0.y, 1241 a.x * b.c1.x + a.y * b.c1.y); 1242 } 1243 1244 /// <summary>Returns the int3 row vector result of a matrix multiplication between an int2 row vector and an int2x3 matrix.</summary> 1245 /// <param name="a">Left hand side argument of the matrix multiply.</param> 1246 /// <param name="b">Right hand side argument of the matrix multiply.</param> 1247 /// <returns>The computed matrix multiplication.</returns> 1248 [MethodImpl(MethodImplOptions.AggressiveInlining)] 1249 public static int3 mul(int2 a, int2x3 b) 1250 { 1251 return int3( 1252 a.x * b.c0.x + a.y * b.c0.y, 1253 a.x * b.c1.x + a.y * b.c1.y, 1254 a.x * b.c2.x + a.y * b.c2.y); 1255 } 1256 1257 /// <summary>Returns the int4 row vector result of a matrix multiplication between an int2 row vector and an int2x4 matrix.</summary> 1258 /// <param name="a">Left hand side argument of the matrix multiply.</param> 1259 /// <param name="b">Right hand side argument of the matrix multiply.</param> 1260 /// <returns>The computed matrix multiplication.</returns> 1261 [MethodImpl(MethodImplOptions.AggressiveInlining)] 1262 public static int4 mul(int2 a, int2x4 b) 1263 { 1264 return int4( 1265 a.x * b.c0.x + a.y * b.c0.y, 1266 a.x * b.c1.x + a.y * b.c1.y, 1267 a.x * b.c2.x + a.y * b.c2.y, 1268 a.x * b.c3.x + a.y * b.c3.y); 1269 } 1270 1271 /// <summary>Returns the int value result of a matrix multiplication between an int3 row vector and an int3 column vector.</summary> 1272 /// <param name="a">Left hand side argument of the matrix multiply.</param> 1273 /// <param name="b">Right hand side argument of the matrix multiply.</param> 1274 /// <returns>The computed matrix multiplication.</returns> 1275 [MethodImpl(MethodImplOptions.AggressiveInlining)] 1276 public static int mul(int3 a, int3 b) 1277 { 1278 return a.x * b.x + a.y * b.y + a.z * b.z; 1279 } 1280 1281 /// <summary>Returns the int2 row vector result of a matrix multiplication between an int3 row vector and an int3x2 matrix.</summary> 1282 /// <param name="a">Left hand side argument of the matrix multiply.</param> 1283 /// <param name="b">Right hand side argument of the matrix multiply.</param> 1284 /// <returns>The computed matrix multiplication.</returns> 1285 [MethodImpl(MethodImplOptions.AggressiveInlining)] 1286 public static int2 mul(int3 a, int3x2 b) 1287 { 1288 return int2( 1289 a.x * b.c0.x + a.y * b.c0.y + a.z * b.c0.z, 1290 a.x * b.c1.x + a.y * b.c1.y + a.z * b.c1.z); 1291 } 1292 1293 /// <summary>Returns the int3 row vector result of a matrix multiplication between an int3 row vector and an int3x3 matrix.</summary> 1294 /// <param name="a">Left hand side argument of the matrix multiply.</param> 1295 /// <param name="b">Right hand side argument of the matrix multiply.</param> 1296 /// <returns>The computed matrix multiplication.</returns> 1297 [MethodImpl(MethodImplOptions.AggressiveInlining)] 1298 public static int3 mul(int3 a, int3x3 b) 1299 { 1300 return int3( 1301 a.x * b.c0.x + a.y * b.c0.y + a.z * b.c0.z, 1302 a.x * b.c1.x + a.y * b.c1.y + a.z * b.c1.z, 1303 a.x * b.c2.x + a.y * b.c2.y + a.z * b.c2.z); 1304 } 1305 1306 /// <summary>Returns the int4 row vector result of a matrix multiplication between an int3 row vector and an int3x4 matrix.</summary> 1307 /// <param name="a">Left hand side argument of the matrix multiply.</param> 1308 /// <param name="b">Right hand side argument of the matrix multiply.</param> 1309 /// <returns>The computed matrix multiplication.</returns> 1310 [MethodImpl(MethodImplOptions.AggressiveInlining)] 1311 public static int4 mul(int3 a, int3x4 b) 1312 { 1313 return int4( 1314 a.x * b.c0.x + a.y * b.c0.y + a.z * b.c0.z, 1315 a.x * b.c1.x + a.y * b.c1.y + a.z * b.c1.z, 1316 a.x * b.c2.x + a.y * b.c2.y + a.z * b.c2.z, 1317 a.x * b.c3.x + a.y * b.c3.y + a.z * b.c3.z); 1318 } 1319 1320 /// <summary>Returns the int value result of a matrix multiplication between an int4 row vector and an int4 column vector.</summary> 1321 /// <param name="a">Left hand side argument of the matrix multiply.</param> 1322 /// <param name="b">Right hand side argument of the matrix multiply.</param> 1323 /// <returns>The computed matrix multiplication.</returns> 1324 [MethodImpl(MethodImplOptions.AggressiveInlining)] 1325 public static int mul(int4 a, int4 b) 1326 { 1327 return a.x * b.x + a.y * b.y + a.z * b.z + a.w * b.w; 1328 } 1329 1330 /// <summary>Returns the int2 row vector result of a matrix multiplication between an int4 row vector and an int4x2 matrix.</summary> 1331 /// <param name="a">Left hand side argument of the matrix multiply.</param> 1332 /// <param name="b">Right hand side argument of the matrix multiply.</param> 1333 /// <returns>The computed matrix multiplication.</returns> 1334 [MethodImpl(MethodImplOptions.AggressiveInlining)] 1335 public static int2 mul(int4 a, int4x2 b) 1336 { 1337 return int2( 1338 a.x * b.c0.x + a.y * b.c0.y + a.z * b.c0.z + a.w * b.c0.w, 1339 a.x * b.c1.x + a.y * b.c1.y + a.z * b.c1.z + a.w * b.c1.w); 1340 } 1341 1342 /// <summary>Returns the int3 row vector result of a matrix multiplication between an int4 row vector and an int4x3 matrix.</summary> 1343 /// <param name="a">Left hand side argument of the matrix multiply.</param> 1344 /// <param name="b">Right hand side argument of the matrix multiply.</param> 1345 /// <returns>The computed matrix multiplication.</returns> 1346 [MethodImpl(MethodImplOptions.AggressiveInlining)] 1347 public static int3 mul(int4 a, int4x3 b) 1348 { 1349 return int3( 1350 a.x * b.c0.x + a.y * b.c0.y + a.z * b.c0.z + a.w * b.c0.w, 1351 a.x * b.c1.x + a.y * b.c1.y + a.z * b.c1.z + a.w * b.c1.w, 1352 a.x * b.c2.x + a.y * b.c2.y + a.z * b.c2.z + a.w * b.c2.w); 1353 } 1354 1355 /// <summary>Returns the int4 row vector result of a matrix multiplication between an int4 row vector and an int4x4 matrix.</summary> 1356 /// <param name="a">Left hand side argument of the matrix multiply.</param> 1357 /// <param name="b">Right hand side argument of the matrix multiply.</param> 1358 /// <returns>The computed matrix multiplication.</returns> 1359 [MethodImpl(MethodImplOptions.AggressiveInlining)] 1360 public static int4 mul(int4 a, int4x4 b) 1361 { 1362 return int4( 1363 a.x * b.c0.x + a.y * b.c0.y + a.z * b.c0.z + a.w * b.c0.w, 1364 a.x * b.c1.x + a.y * b.c1.y + a.z * b.c1.z + a.w * b.c1.w, 1365 a.x * b.c2.x + a.y * b.c2.y + a.z * b.c2.z + a.w * b.c2.w, 1366 a.x * b.c3.x + a.y * b.c3.y + a.z * b.c3.z + a.w * b.c3.w); 1367 } 1368 1369 /// <summary>Returns the int2 column vector result of a matrix multiplication between an int2x2 matrix and an int2 column vector.</summary> 1370 /// <param name="a">Left hand side argument of the matrix multiply.</param> 1371 /// <param name="b">Right hand side argument of the matrix multiply.</param> 1372 /// <returns>The computed matrix multiplication.</returns> 1373 [MethodImpl(MethodImplOptions.AggressiveInlining)] 1374 public static int2 mul(int2x2 a, int2 b) 1375 { 1376 return a.c0 * b.x + a.c1 * b.y; 1377 } 1378 1379 /// <summary>Returns the int2x2 matrix result of a matrix multiplication between an int2x2 matrix and an int2x2 matrix.</summary> 1380 /// <param name="a">Left hand side argument of the matrix multiply.</param> 1381 /// <param name="b">Right hand side argument of the matrix multiply.</param> 1382 /// <returns>The computed matrix multiplication.</returns> 1383 [MethodImpl(MethodImplOptions.AggressiveInlining)] 1384 public static int2x2 mul(int2x2 a, int2x2 b) 1385 { 1386 return int2x2( 1387 a.c0 * b.c0.x + a.c1 * b.c0.y, 1388 a.c0 * b.c1.x + a.c1 * b.c1.y); 1389 } 1390 1391 /// <summary>Returns the int2x3 matrix result of a matrix multiplication between an int2x2 matrix and an int2x3 matrix.</summary> 1392 /// <param name="a">Left hand side argument of the matrix multiply.</param> 1393 /// <param name="b">Right hand side argument of the matrix multiply.</param> 1394 /// <returns>The computed matrix multiplication.</returns> 1395 [MethodImpl(MethodImplOptions.AggressiveInlining)] 1396 public static int2x3 mul(int2x2 a, int2x3 b) 1397 { 1398 return int2x3( 1399 a.c0 * b.c0.x + a.c1 * b.c0.y, 1400 a.c0 * b.c1.x + a.c1 * b.c1.y, 1401 a.c0 * b.c2.x + a.c1 * b.c2.y); 1402 } 1403 1404 /// <summary>Returns the int2x4 matrix result of a matrix multiplication between an int2x2 matrix and an int2x4 matrix.</summary> 1405 /// <param name="a">Left hand side argument of the matrix multiply.</param> 1406 /// <param name="b">Right hand side argument of the matrix multiply.</param> 1407 /// <returns>The computed matrix multiplication.</returns> 1408 [MethodImpl(MethodImplOptions.AggressiveInlining)] 1409 public static int2x4 mul(int2x2 a, int2x4 b) 1410 { 1411 return int2x4( 1412 a.c0 * b.c0.x + a.c1 * b.c0.y, 1413 a.c0 * b.c1.x + a.c1 * b.c1.y, 1414 a.c0 * b.c2.x + a.c1 * b.c2.y, 1415 a.c0 * b.c3.x + a.c1 * b.c3.y); 1416 } 1417 1418 /// <summary>Returns the int2 column vector result of a matrix multiplication between an int2x3 matrix and an int3 column vector.</summary> 1419 /// <param name="a">Left hand side argument of the matrix multiply.</param> 1420 /// <param name="b">Right hand side argument of the matrix multiply.</param> 1421 /// <returns>The computed matrix multiplication.</returns> 1422 [MethodImpl(MethodImplOptions.AggressiveInlining)] 1423 public static int2 mul(int2x3 a, int3 b) 1424 { 1425 return a.c0 * b.x + a.c1 * b.y + a.c2 * b.z; 1426 } 1427 1428 /// <summary>Returns the int2x2 matrix result of a matrix multiplication between an int2x3 matrix and an int3x2 matrix.</summary> 1429 /// <param name="a">Left hand side argument of the matrix multiply.</param> 1430 /// <param name="b">Right hand side argument of the matrix multiply.</param> 1431 /// <returns>The computed matrix multiplication.</returns> 1432 [MethodImpl(MethodImplOptions.AggressiveInlining)] 1433 public static int2x2 mul(int2x3 a, int3x2 b) 1434 { 1435 return int2x2( 1436 a.c0 * b.c0.x + a.c1 * b.c0.y + a.c2 * b.c0.z, 1437 a.c0 * b.c1.x + a.c1 * b.c1.y + a.c2 * b.c1.z); 1438 } 1439 1440 /// <summary>Returns the int2x3 matrix result of a matrix multiplication between an int2x3 matrix and an int3x3 matrix.</summary> 1441 /// <param name="a">Left hand side argument of the matrix multiply.</param> 1442 /// <param name="b">Right hand side argument of the matrix multiply.</param> 1443 /// <returns>The computed matrix multiplication.</returns> 1444 [MethodImpl(MethodImplOptions.AggressiveInlining)] 1445 public static int2x3 mul(int2x3 a, int3x3 b) 1446 { 1447 return int2x3( 1448 a.c0 * b.c0.x + a.c1 * b.c0.y + a.c2 * b.c0.z, 1449 a.c0 * b.c1.x + a.c1 * b.c1.y + a.c2 * b.c1.z, 1450 a.c0 * b.c2.x + a.c1 * b.c2.y + a.c2 * b.c2.z); 1451 } 1452 1453 /// <summary>Returns the int2x4 matrix result of a matrix multiplication between an int2x3 matrix and an int3x4 matrix.</summary> 1454 /// <param name="a">Left hand side argument of the matrix multiply.</param> 1455 /// <param name="b">Right hand side argument of the matrix multiply.</param> 1456 /// <returns>The computed matrix multiplication.</returns> 1457 [MethodImpl(MethodImplOptions.AggressiveInlining)] 1458 public static int2x4 mul(int2x3 a, int3x4 b) 1459 { 1460 return int2x4( 1461 a.c0 * b.c0.x + a.c1 * b.c0.y + a.c2 * b.c0.z, 1462 a.c0 * b.c1.x + a.c1 * b.c1.y + a.c2 * b.c1.z, 1463 a.c0 * b.c2.x + a.c1 * b.c2.y + a.c2 * b.c2.z, 1464 a.c0 * b.c3.x + a.c1 * b.c3.y + a.c2 * b.c3.z); 1465 } 1466 1467 /// <summary>Returns the int2 column vector result of a matrix multiplication between an int2x4 matrix and an int4 column vector.</summary> 1468 /// <param name="a">Left hand side argument of the matrix multiply.</param> 1469 /// <param name="b">Right hand side argument of the matrix multiply.</param> 1470 /// <returns>The computed matrix multiplication.</returns> 1471 [MethodImpl(MethodImplOptions.AggressiveInlining)] 1472 public static int2 mul(int2x4 a, int4 b) 1473 { 1474 return a.c0 * b.x + a.c1 * b.y + a.c2 * b.z + a.c3 * b.w; 1475 } 1476 1477 /// <summary>Returns the int2x2 matrix result of a matrix multiplication between an int2x4 matrix and an int4x2 matrix.</summary> 1478 /// <param name="a">Left hand side argument of the matrix multiply.</param> 1479 /// <param name="b">Right hand side argument of the matrix multiply.</param> 1480 /// <returns>The computed matrix multiplication.</returns> 1481 [MethodImpl(MethodImplOptions.AggressiveInlining)] 1482 public static int2x2 mul(int2x4 a, int4x2 b) 1483 { 1484 return int2x2( 1485 a.c0 * b.c0.x + a.c1 * b.c0.y + a.c2 * b.c0.z + a.c3 * b.c0.w, 1486 a.c0 * b.c1.x + a.c1 * b.c1.y + a.c2 * b.c1.z + a.c3 * b.c1.w); 1487 } 1488 1489 /// <summary>Returns the int2x3 matrix result of a matrix multiplication between an int2x4 matrix and an int4x3 matrix.</summary> 1490 /// <param name="a">Left hand side argument of the matrix multiply.</param> 1491 /// <param name="b">Right hand side argument of the matrix multiply.</param> 1492 /// <returns>The computed matrix multiplication.</returns> 1493 [MethodImpl(MethodImplOptions.AggressiveInlining)] 1494 public static int2x3 mul(int2x4 a, int4x3 b) 1495 { 1496 return int2x3( 1497 a.c0 * b.c0.x + a.c1 * b.c0.y + a.c2 * b.c0.z + a.c3 * b.c0.w, 1498 a.c0 * b.c1.x + a.c1 * b.c1.y + a.c2 * b.c1.z + a.c3 * b.c1.w, 1499 a.c0 * b.c2.x + a.c1 * b.c2.y + a.c2 * b.c2.z + a.c3 * b.c2.w); 1500 } 1501 1502 /// <summary>Returns the int2x4 matrix result of a matrix multiplication between an int2x4 matrix and an int4x4 matrix.</summary> 1503 /// <param name="a">Left hand side argument of the matrix multiply.</param> 1504 /// <param name="b">Right hand side argument of the matrix multiply.</param> 1505 /// <returns>The computed matrix multiplication.</returns> 1506 [MethodImpl(MethodImplOptions.AggressiveInlining)] 1507 public static int2x4 mul(int2x4 a, int4x4 b) 1508 { 1509 return int2x4( 1510 a.c0 * b.c0.x + a.c1 * b.c0.y + a.c2 * b.c0.z + a.c3 * b.c0.w, 1511 a.c0 * b.c1.x + a.c1 * b.c1.y + a.c2 * b.c1.z + a.c3 * b.c1.w, 1512 a.c0 * b.c2.x + a.c1 * b.c2.y + a.c2 * b.c2.z + a.c3 * b.c2.w, 1513 a.c0 * b.c3.x + a.c1 * b.c3.y + a.c2 * b.c3.z + a.c3 * b.c3.w); 1514 } 1515 1516 /// <summary>Returns the int3 column vector result of a matrix multiplication between an int3x2 matrix and an int2 column vector.</summary> 1517 /// <param name="a">Left hand side argument of the matrix multiply.</param> 1518 /// <param name="b">Right hand side argument of the matrix multiply.</param> 1519 /// <returns>The computed matrix multiplication.</returns> 1520 [MethodImpl(MethodImplOptions.AggressiveInlining)] 1521 public static int3 mul(int3x2 a, int2 b) 1522 { 1523 return a.c0 * b.x + a.c1 * b.y; 1524 } 1525 1526 /// <summary>Returns the int3x2 matrix result of a matrix multiplication between an int3x2 matrix and an int2x2 matrix.</summary> 1527 /// <param name="a">Left hand side argument of the matrix multiply.</param> 1528 /// <param name="b">Right hand side argument of the matrix multiply.</param> 1529 /// <returns>The computed matrix multiplication.</returns> 1530 [MethodImpl(MethodImplOptions.AggressiveInlining)] 1531 public static int3x2 mul(int3x2 a, int2x2 b) 1532 { 1533 return int3x2( 1534 a.c0 * b.c0.x + a.c1 * b.c0.y, 1535 a.c0 * b.c1.x + a.c1 * b.c1.y); 1536 } 1537 1538 /// <summary>Returns the int3x3 matrix result of a matrix multiplication between an int3x2 matrix and an int2x3 matrix.</summary> 1539 /// <param name="a">Left hand side argument of the matrix multiply.</param> 1540 /// <param name="b">Right hand side argument of the matrix multiply.</param> 1541 /// <returns>The computed matrix multiplication.</returns> 1542 [MethodImpl(MethodImplOptions.AggressiveInlining)] 1543 public static int3x3 mul(int3x2 a, int2x3 b) 1544 { 1545 return int3x3( 1546 a.c0 * b.c0.x + a.c1 * b.c0.y, 1547 a.c0 * b.c1.x + a.c1 * b.c1.y, 1548 a.c0 * b.c2.x + a.c1 * b.c2.y); 1549 } 1550 1551 /// <summary>Returns the int3x4 matrix result of a matrix multiplication between an int3x2 matrix and an int2x4 matrix.</summary> 1552 /// <param name="a">Left hand side argument of the matrix multiply.</param> 1553 /// <param name="b">Right hand side argument of the matrix multiply.</param> 1554 /// <returns>The computed matrix multiplication.</returns> 1555 [MethodImpl(MethodImplOptions.AggressiveInlining)] 1556 public static int3x4 mul(int3x2 a, int2x4 b) 1557 { 1558 return int3x4( 1559 a.c0 * b.c0.x + a.c1 * b.c0.y, 1560 a.c0 * b.c1.x + a.c1 * b.c1.y, 1561 a.c0 * b.c2.x + a.c1 * b.c2.y, 1562 a.c0 * b.c3.x + a.c1 * b.c3.y); 1563 } 1564 1565 /// <summary>Returns the int3 column vector result of a matrix multiplication between an int3x3 matrix and an int3 column vector.</summary> 1566 /// <param name="a">Left hand side argument of the matrix multiply.</param> 1567 /// <param name="b">Right hand side argument of the matrix multiply.</param> 1568 /// <returns>The computed matrix multiplication.</returns> 1569 [MethodImpl(MethodImplOptions.AggressiveInlining)] 1570 public static int3 mul(int3x3 a, int3 b) 1571 { 1572 return a.c0 * b.x + a.c1 * b.y + a.c2 * b.z; 1573 } 1574 1575 /// <summary>Returns the int3x2 matrix result of a matrix multiplication between an int3x3 matrix and an int3x2 matrix.</summary> 1576 /// <param name="a">Left hand side argument of the matrix multiply.</param> 1577 /// <param name="b">Right hand side argument of the matrix multiply.</param> 1578 /// <returns>The computed matrix multiplication.</returns> 1579 [MethodImpl(MethodImplOptions.AggressiveInlining)] 1580 public static int3x2 mul(int3x3 a, int3x2 b) 1581 { 1582 return int3x2( 1583 a.c0 * b.c0.x + a.c1 * b.c0.y + a.c2 * b.c0.z, 1584 a.c0 * b.c1.x + a.c1 * b.c1.y + a.c2 * b.c1.z); 1585 } 1586 1587 /// <summary>Returns the int3x3 matrix result of a matrix multiplication between an int3x3 matrix and an int3x3 matrix.</summary> 1588 /// <param name="a">Left hand side argument of the matrix multiply.</param> 1589 /// <param name="b">Right hand side argument of the matrix multiply.</param> 1590 /// <returns>The computed matrix multiplication.</returns> 1591 [MethodImpl(MethodImplOptions.AggressiveInlining)] 1592 public static int3x3 mul(int3x3 a, int3x3 b) 1593 { 1594 return int3x3( 1595 a.c0 * b.c0.x + a.c1 * b.c0.y + a.c2 * b.c0.z, 1596 a.c0 * b.c1.x + a.c1 * b.c1.y + a.c2 * b.c1.z, 1597 a.c0 * b.c2.x + a.c1 * b.c2.y + a.c2 * b.c2.z); 1598 } 1599 1600 /// <summary>Returns the int3x4 matrix result of a matrix multiplication between an int3x3 matrix and an int3x4 matrix.</summary> 1601 /// <param name="a">Left hand side argument of the matrix multiply.</param> 1602 /// <param name="b">Right hand side argument of the matrix multiply.</param> 1603 /// <returns>The computed matrix multiplication.</returns> 1604 [MethodImpl(MethodImplOptions.AggressiveInlining)] 1605 public static int3x4 mul(int3x3 a, int3x4 b) 1606 { 1607 return int3x4( 1608 a.c0 * b.c0.x + a.c1 * b.c0.y + a.c2 * b.c0.z, 1609 a.c0 * b.c1.x + a.c1 * b.c1.y + a.c2 * b.c1.z, 1610 a.c0 * b.c2.x + a.c1 * b.c2.y + a.c2 * b.c2.z, 1611 a.c0 * b.c3.x + a.c1 * b.c3.y + a.c2 * b.c3.z); 1612 } 1613 1614 /// <summary>Returns the int3 column vector result of a matrix multiplication between an int3x4 matrix and an int4 column vector.</summary> 1615 /// <param name="a">Left hand side argument of the matrix multiply.</param> 1616 /// <param name="b">Right hand side argument of the matrix multiply.</param> 1617 /// <returns>The computed matrix multiplication.</returns> 1618 [MethodImpl(MethodImplOptions.AggressiveInlining)] 1619 public static int3 mul(int3x4 a, int4 b) 1620 { 1621 return a.c0 * b.x + a.c1 * b.y + a.c2 * b.z + a.c3 * b.w; 1622 } 1623 1624 /// <summary>Returns the int3x2 matrix result of a matrix multiplication between an int3x4 matrix and an int4x2 matrix.</summary> 1625 /// <param name="a">Left hand side argument of the matrix multiply.</param> 1626 /// <param name="b">Right hand side argument of the matrix multiply.</param> 1627 /// <returns>The computed matrix multiplication.</returns> 1628 [MethodImpl(MethodImplOptions.AggressiveInlining)] 1629 public static int3x2 mul(int3x4 a, int4x2 b) 1630 { 1631 return int3x2( 1632 a.c0 * b.c0.x + a.c1 * b.c0.y + a.c2 * b.c0.z + a.c3 * b.c0.w, 1633 a.c0 * b.c1.x + a.c1 * b.c1.y + a.c2 * b.c1.z + a.c3 * b.c1.w); 1634 } 1635 1636 /// <summary>Returns the int3x3 matrix result of a matrix multiplication between an int3x4 matrix and an int4x3 matrix.</summary> 1637 /// <param name="a">Left hand side argument of the matrix multiply.</param> 1638 /// <param name="b">Right hand side argument of the matrix multiply.</param> 1639 /// <returns>The computed matrix multiplication.</returns> 1640 [MethodImpl(MethodImplOptions.AggressiveInlining)] 1641 public static int3x3 mul(int3x4 a, int4x3 b) 1642 { 1643 return int3x3( 1644 a.c0 * b.c0.x + a.c1 * b.c0.y + a.c2 * b.c0.z + a.c3 * b.c0.w, 1645 a.c0 * b.c1.x + a.c1 * b.c1.y + a.c2 * b.c1.z + a.c3 * b.c1.w, 1646 a.c0 * b.c2.x + a.c1 * b.c2.y + a.c2 * b.c2.z + a.c3 * b.c2.w); 1647 } 1648 1649 /// <summary>Returns the int3x4 matrix result of a matrix multiplication between an int3x4 matrix and an int4x4 matrix.</summary> 1650 /// <param name="a">Left hand side argument of the matrix multiply.</param> 1651 /// <param name="b">Right hand side argument of the matrix multiply.</param> 1652 /// <returns>The computed matrix multiplication.</returns> 1653 [MethodImpl(MethodImplOptions.AggressiveInlining)] 1654 public static int3x4 mul(int3x4 a, int4x4 b) 1655 { 1656 return int3x4( 1657 a.c0 * b.c0.x + a.c1 * b.c0.y + a.c2 * b.c0.z + a.c3 * b.c0.w, 1658 a.c0 * b.c1.x + a.c1 * b.c1.y + a.c2 * b.c1.z + a.c3 * b.c1.w, 1659 a.c0 * b.c2.x + a.c1 * b.c2.y + a.c2 * b.c2.z + a.c3 * b.c2.w, 1660 a.c0 * b.c3.x + a.c1 * b.c3.y + a.c2 * b.c3.z + a.c3 * b.c3.w); 1661 } 1662 1663 /// <summary>Returns the int4 column vector result of a matrix multiplication between an int4x2 matrix and an int2 column vector.</summary> 1664 /// <param name="a">Left hand side argument of the matrix multiply.</param> 1665 /// <param name="b">Right hand side argument of the matrix multiply.</param> 1666 /// <returns>The computed matrix multiplication.</returns> 1667 [MethodImpl(MethodImplOptions.AggressiveInlining)] 1668 public static int4 mul(int4x2 a, int2 b) 1669 { 1670 return a.c0 * b.x + a.c1 * b.y; 1671 } 1672 1673 /// <summary>Returns the int4x2 matrix result of a matrix multiplication between an int4x2 matrix and an int2x2 matrix.</summary> 1674 /// <param name="a">Left hand side argument of the matrix multiply.</param> 1675 /// <param name="b">Right hand side argument of the matrix multiply.</param> 1676 /// <returns>The computed matrix multiplication.</returns> 1677 [MethodImpl(MethodImplOptions.AggressiveInlining)] 1678 public static int4x2 mul(int4x2 a, int2x2 b) 1679 { 1680 return int4x2( 1681 a.c0 * b.c0.x + a.c1 * b.c0.y, 1682 a.c0 * b.c1.x + a.c1 * b.c1.y); 1683 } 1684 1685 /// <summary>Returns the int4x3 matrix result of a matrix multiplication between an int4x2 matrix and an int2x3 matrix.</summary> 1686 /// <param name="a">Left hand side argument of the matrix multiply.</param> 1687 /// <param name="b">Right hand side argument of the matrix multiply.</param> 1688 /// <returns>The computed matrix multiplication.</returns> 1689 [MethodImpl(MethodImplOptions.AggressiveInlining)] 1690 public static int4x3 mul(int4x2 a, int2x3 b) 1691 { 1692 return int4x3( 1693 a.c0 * b.c0.x + a.c1 * b.c0.y, 1694 a.c0 * b.c1.x + a.c1 * b.c1.y, 1695 a.c0 * b.c2.x + a.c1 * b.c2.y); 1696 } 1697 1698 /// <summary>Returns the int4x4 matrix result of a matrix multiplication between an int4x2 matrix and an int2x4 matrix.</summary> 1699 /// <param name="a">Left hand side argument of the matrix multiply.</param> 1700 /// <param name="b">Right hand side argument of the matrix multiply.</param> 1701 /// <returns>The computed matrix multiplication.</returns> 1702 [MethodImpl(MethodImplOptions.AggressiveInlining)] 1703 public static int4x4 mul(int4x2 a, int2x4 b) 1704 { 1705 return int4x4( 1706 a.c0 * b.c0.x + a.c1 * b.c0.y, 1707 a.c0 * b.c1.x + a.c1 * b.c1.y, 1708 a.c0 * b.c2.x + a.c1 * b.c2.y, 1709 a.c0 * b.c3.x + a.c1 * b.c3.y); 1710 } 1711 1712 /// <summary>Returns the int4 column vector result of a matrix multiplication between an int4x3 matrix and an int3 column vector.</summary> 1713 /// <param name="a">Left hand side argument of the matrix multiply.</param> 1714 /// <param name="b">Right hand side argument of the matrix multiply.</param> 1715 /// <returns>The computed matrix multiplication.</returns> 1716 [MethodImpl(MethodImplOptions.AggressiveInlining)] 1717 public static int4 mul(int4x3 a, int3 b) 1718 { 1719 return a.c0 * b.x + a.c1 * b.y + a.c2 * b.z; 1720 } 1721 1722 /// <summary>Returns the int4x2 matrix result of a matrix multiplication between an int4x3 matrix and an int3x2 matrix.</summary> 1723 /// <param name="a">Left hand side argument of the matrix multiply.</param> 1724 /// <param name="b">Right hand side argument of the matrix multiply.</param> 1725 /// <returns>The computed matrix multiplication.</returns> 1726 [MethodImpl(MethodImplOptions.AggressiveInlining)] 1727 public static int4x2 mul(int4x3 a, int3x2 b) 1728 { 1729 return int4x2( 1730 a.c0 * b.c0.x + a.c1 * b.c0.y + a.c2 * b.c0.z, 1731 a.c0 * b.c1.x + a.c1 * b.c1.y + a.c2 * b.c1.z); 1732 } 1733 1734 /// <summary>Returns the int4x3 matrix result of a matrix multiplication between an int4x3 matrix and an int3x3 matrix.</summary> 1735 /// <param name="a">Left hand side argument of the matrix multiply.</param> 1736 /// <param name="b">Right hand side argument of the matrix multiply.</param> 1737 /// <returns>The computed matrix multiplication.</returns> 1738 [MethodImpl(MethodImplOptions.AggressiveInlining)] 1739 public static int4x3 mul(int4x3 a, int3x3 b) 1740 { 1741 return int4x3( 1742 a.c0 * b.c0.x + a.c1 * b.c0.y + a.c2 * b.c0.z, 1743 a.c0 * b.c1.x + a.c1 * b.c1.y + a.c2 * b.c1.z, 1744 a.c0 * b.c2.x + a.c1 * b.c2.y + a.c2 * b.c2.z); 1745 } 1746 1747 /// <summary>Returns the int4x4 matrix result of a matrix multiplication between an int4x3 matrix and an int3x4 matrix.</summary> 1748 /// <param name="a">Left hand side argument of the matrix multiply.</param> 1749 /// <param name="b">Right hand side argument of the matrix multiply.</param> 1750 /// <returns>The computed matrix multiplication.</returns> 1751 [MethodImpl(MethodImplOptions.AggressiveInlining)] 1752 public static int4x4 mul(int4x3 a, int3x4 b) 1753 { 1754 return int4x4( 1755 a.c0 * b.c0.x + a.c1 * b.c0.y + a.c2 * b.c0.z, 1756 a.c0 * b.c1.x + a.c1 * b.c1.y + a.c2 * b.c1.z, 1757 a.c0 * b.c2.x + a.c1 * b.c2.y + a.c2 * b.c2.z, 1758 a.c0 * b.c3.x + a.c1 * b.c3.y + a.c2 * b.c3.z); 1759 } 1760 1761 /// <summary>Returns the int4 column vector result of a matrix multiplication between an int4x4 matrix and an int4 column vector.</summary> 1762 /// <param name="a">Left hand side argument of the matrix multiply.</param> 1763 /// <param name="b">Right hand side argument of the matrix multiply.</param> 1764 /// <returns>The computed matrix multiplication.</returns> 1765 [MethodImpl(MethodImplOptions.AggressiveInlining)] 1766 public static int4 mul(int4x4 a, int4 b) 1767 { 1768 return a.c0 * b.x + a.c1 * b.y + a.c2 * b.z + a.c3 * b.w; 1769 } 1770 1771 /// <summary>Returns the int4x2 matrix result of a matrix multiplication between an int4x4 matrix and an int4x2 matrix.</summary> 1772 /// <param name="a">Left hand side argument of the matrix multiply.</param> 1773 /// <param name="b">Right hand side argument of the matrix multiply.</param> 1774 /// <returns>The computed matrix multiplication.</returns> 1775 [MethodImpl(MethodImplOptions.AggressiveInlining)] 1776 public static int4x2 mul(int4x4 a, int4x2 b) 1777 { 1778 return int4x2( 1779 a.c0 * b.c0.x + a.c1 * b.c0.y + a.c2 * b.c0.z + a.c3 * b.c0.w, 1780 a.c0 * b.c1.x + a.c1 * b.c1.y + a.c2 * b.c1.z + a.c3 * b.c1.w); 1781 } 1782 1783 /// <summary>Returns the int4x3 matrix result of a matrix multiplication between an int4x4 matrix and an int4x3 matrix.</summary> 1784 /// <param name="a">Left hand side argument of the matrix multiply.</param> 1785 /// <param name="b">Right hand side argument of the matrix multiply.</param> 1786 /// <returns>The computed matrix multiplication.</returns> 1787 [MethodImpl(MethodImplOptions.AggressiveInlining)] 1788 public static int4x3 mul(int4x4 a, int4x3 b) 1789 { 1790 return int4x3( 1791 a.c0 * b.c0.x + a.c1 * b.c0.y + a.c2 * b.c0.z + a.c3 * b.c0.w, 1792 a.c0 * b.c1.x + a.c1 * b.c1.y + a.c2 * b.c1.z + a.c3 * b.c1.w, 1793 a.c0 * b.c2.x + a.c1 * b.c2.y + a.c2 * b.c2.z + a.c3 * b.c2.w); 1794 } 1795 1796 /// <summary>Returns the int4x4 matrix result of a matrix multiplication between an int4x4 matrix and an int4x4 matrix.</summary> 1797 /// <param name="a">Left hand side argument of the matrix multiply.</param> 1798 /// <param name="b">Right hand side argument of the matrix multiply.</param> 1799 /// <returns>The computed matrix multiplication.</returns> 1800 [MethodImpl(MethodImplOptions.AggressiveInlining)] 1801 public static int4x4 mul(int4x4 a, int4x4 b) 1802 { 1803 return int4x4( 1804 a.c0 * b.c0.x + a.c1 * b.c0.y + a.c2 * b.c0.z + a.c3 * b.c0.w, 1805 a.c0 * b.c1.x + a.c1 * b.c1.y + a.c2 * b.c1.z + a.c3 * b.c1.w, 1806 a.c0 * b.c2.x + a.c1 * b.c2.y + a.c2 * b.c2.z + a.c3 * b.c2.w, 1807 a.c0 * b.c3.x + a.c1 * b.c3.y + a.c2 * b.c3.z + a.c3 * b.c3.w); 1808 } 1809 1810 /// <summary>Returns the uint value result of a matrix multiplication between a uint value and a uint value.</summary> 1811 /// <param name="a">Left hand side argument of the matrix multiply.</param> 1812 /// <param name="b">Right hand side argument of the matrix multiply.</param> 1813 /// <returns>The computed matrix multiplication.</returns> 1814 [MethodImpl(MethodImplOptions.AggressiveInlining)] 1815 public static uint mul(uint a, uint b) 1816 { 1817 return a * b; 1818 } 1819 1820 /// <summary>Returns the uint value result of a matrix multiplication between a uint2 row vector and a uint2 column vector.</summary> 1821 /// <param name="a">Left hand side argument of the matrix multiply.</param> 1822 /// <param name="b">Right hand side argument of the matrix multiply.</param> 1823 /// <returns>The computed matrix multiplication.</returns> 1824 [MethodImpl(MethodImplOptions.AggressiveInlining)] 1825 public static uint mul(uint2 a, uint2 b) 1826 { 1827 return a.x * b.x + a.y * b.y; 1828 } 1829 1830 /// <summary>Returns the uint2 row vector result of a matrix multiplication between a uint2 row vector and a uint2x2 matrix.</summary> 1831 /// <param name="a">Left hand side argument of the matrix multiply.</param> 1832 /// <param name="b">Right hand side argument of the matrix multiply.</param> 1833 /// <returns>The computed matrix multiplication.</returns> 1834 [MethodImpl(MethodImplOptions.AggressiveInlining)] 1835 public static uint2 mul(uint2 a, uint2x2 b) 1836 { 1837 return uint2( 1838 a.x * b.c0.x + a.y * b.c0.y, 1839 a.x * b.c1.x + a.y * b.c1.y); 1840 } 1841 1842 /// <summary>Returns the uint3 row vector result of a matrix multiplication between a uint2 row vector and a uint2x3 matrix.</summary> 1843 /// <param name="a">Left hand side argument of the matrix multiply.</param> 1844 /// <param name="b">Right hand side argument of the matrix multiply.</param> 1845 /// <returns>The computed matrix multiplication.</returns> 1846 [MethodImpl(MethodImplOptions.AggressiveInlining)] 1847 public static uint3 mul(uint2 a, uint2x3 b) 1848 { 1849 return uint3( 1850 a.x * b.c0.x + a.y * b.c0.y, 1851 a.x * b.c1.x + a.y * b.c1.y, 1852 a.x * b.c2.x + a.y * b.c2.y); 1853 } 1854 1855 /// <summary>Returns the uint4 row vector result of a matrix multiplication between a uint2 row vector and a uint2x4 matrix.</summary> 1856 /// <param name="a">Left hand side argument of the matrix multiply.</param> 1857 /// <param name="b">Right hand side argument of the matrix multiply.</param> 1858 /// <returns>The computed matrix multiplication.</returns> 1859 [MethodImpl(MethodImplOptions.AggressiveInlining)] 1860 public static uint4 mul(uint2 a, uint2x4 b) 1861 { 1862 return uint4( 1863 a.x * b.c0.x + a.y * b.c0.y, 1864 a.x * b.c1.x + a.y * b.c1.y, 1865 a.x * b.c2.x + a.y * b.c2.y, 1866 a.x * b.c3.x + a.y * b.c3.y); 1867 } 1868 1869 /// <summary>Returns the uint value result of a matrix multiplication between a uint3 row vector and a uint3 column vector.</summary> 1870 /// <param name="a">Left hand side argument of the matrix multiply.</param> 1871 /// <param name="b">Right hand side argument of the matrix multiply.</param> 1872 /// <returns>The computed matrix multiplication.</returns> 1873 [MethodImpl(MethodImplOptions.AggressiveInlining)] 1874 public static uint mul(uint3 a, uint3 b) 1875 { 1876 return a.x * b.x + a.y * b.y + a.z * b.z; 1877 } 1878 1879 /// <summary>Returns the uint2 row vector result of a matrix multiplication between a uint3 row vector and a uint3x2 matrix.</summary> 1880 /// <param name="a">Left hand side argument of the matrix multiply.</param> 1881 /// <param name="b">Right hand side argument of the matrix multiply.</param> 1882 /// <returns>The computed matrix multiplication.</returns> 1883 [MethodImpl(MethodImplOptions.AggressiveInlining)] 1884 public static uint2 mul(uint3 a, uint3x2 b) 1885 { 1886 return uint2( 1887 a.x * b.c0.x + a.y * b.c0.y + a.z * b.c0.z, 1888 a.x * b.c1.x + a.y * b.c1.y + a.z * b.c1.z); 1889 } 1890 1891 /// <summary>Returns the uint3 row vector result of a matrix multiplication between a uint3 row vector and a uint3x3 matrix.</summary> 1892 /// <param name="a">Left hand side argument of the matrix multiply.</param> 1893 /// <param name="b">Right hand side argument of the matrix multiply.</param> 1894 /// <returns>The computed matrix multiplication.</returns> 1895 [MethodImpl(MethodImplOptions.AggressiveInlining)] 1896 public static uint3 mul(uint3 a, uint3x3 b) 1897 { 1898 return uint3( 1899 a.x * b.c0.x + a.y * b.c0.y + a.z * b.c0.z, 1900 a.x * b.c1.x + a.y * b.c1.y + a.z * b.c1.z, 1901 a.x * b.c2.x + a.y * b.c2.y + a.z * b.c2.z); 1902 } 1903 1904 /// <summary>Returns the uint4 row vector result of a matrix multiplication between a uint3 row vector and a uint3x4 matrix.</summary> 1905 /// <param name="a">Left hand side argument of the matrix multiply.</param> 1906 /// <param name="b">Right hand side argument of the matrix multiply.</param> 1907 /// <returns>The computed matrix multiplication.</returns> 1908 [MethodImpl(MethodImplOptions.AggressiveInlining)] 1909 public static uint4 mul(uint3 a, uint3x4 b) 1910 { 1911 return uint4( 1912 a.x * b.c0.x + a.y * b.c0.y + a.z * b.c0.z, 1913 a.x * b.c1.x + a.y * b.c1.y + a.z * b.c1.z, 1914 a.x * b.c2.x + a.y * b.c2.y + a.z * b.c2.z, 1915 a.x * b.c3.x + a.y * b.c3.y + a.z * b.c3.z); 1916 } 1917 1918 /// <summary>Returns the uint value result of a matrix multiplication between a uint4 row vector and a uint4 column vector.</summary> 1919 /// <param name="a">Left hand side argument of the matrix multiply.</param> 1920 /// <param name="b">Right hand side argument of the matrix multiply.</param> 1921 /// <returns>The computed matrix multiplication.</returns> 1922 [MethodImpl(MethodImplOptions.AggressiveInlining)] 1923 public static uint mul(uint4 a, uint4 b) 1924 { 1925 return a.x * b.x + a.y * b.y + a.z * b.z + a.w * b.w; 1926 } 1927 1928 /// <summary>Returns the uint2 row vector result of a matrix multiplication between a uint4 row vector and a uint4x2 matrix.</summary> 1929 /// <param name="a">Left hand side argument of the matrix multiply.</param> 1930 /// <param name="b">Right hand side argument of the matrix multiply.</param> 1931 /// <returns>The computed matrix multiplication.</returns> 1932 [MethodImpl(MethodImplOptions.AggressiveInlining)] 1933 public static uint2 mul(uint4 a, uint4x2 b) 1934 { 1935 return uint2( 1936 a.x * b.c0.x + a.y * b.c0.y + a.z * b.c0.z + a.w * b.c0.w, 1937 a.x * b.c1.x + a.y * b.c1.y + a.z * b.c1.z + a.w * b.c1.w); 1938 } 1939 1940 /// <summary>Returns the uint3 row vector result of a matrix multiplication between a uint4 row vector and a uint4x3 matrix.</summary> 1941 /// <param name="a">Left hand side argument of the matrix multiply.</param> 1942 /// <param name="b">Right hand side argument of the matrix multiply.</param> 1943 /// <returns>The computed matrix multiplication.</returns> 1944 [MethodImpl(MethodImplOptions.AggressiveInlining)] 1945 public static uint3 mul(uint4 a, uint4x3 b) 1946 { 1947 return uint3( 1948 a.x * b.c0.x + a.y * b.c0.y + a.z * b.c0.z + a.w * b.c0.w, 1949 a.x * b.c1.x + a.y * b.c1.y + a.z * b.c1.z + a.w * b.c1.w, 1950 a.x * b.c2.x + a.y * b.c2.y + a.z * b.c2.z + a.w * b.c2.w); 1951 } 1952 1953 /// <summary>Returns the uint4 row vector result of a matrix multiplication between a uint4 row vector and a uint4x4 matrix.</summary> 1954 /// <param name="a">Left hand side argument of the matrix multiply.</param> 1955 /// <param name="b">Right hand side argument of the matrix multiply.</param> 1956 /// <returns>The computed matrix multiplication.</returns> 1957 [MethodImpl(MethodImplOptions.AggressiveInlining)] 1958 public static uint4 mul(uint4 a, uint4x4 b) 1959 { 1960 return uint4( 1961 a.x * b.c0.x + a.y * b.c0.y + a.z * b.c0.z + a.w * b.c0.w, 1962 a.x * b.c1.x + a.y * b.c1.y + a.z * b.c1.z + a.w * b.c1.w, 1963 a.x * b.c2.x + a.y * b.c2.y + a.z * b.c2.z + a.w * b.c2.w, 1964 a.x * b.c3.x + a.y * b.c3.y + a.z * b.c3.z + a.w * b.c3.w); 1965 } 1966 1967 /// <summary>Returns the uint2 column vector result of a matrix multiplication between a uint2x2 matrix and a uint2 column vector.</summary> 1968 /// <param name="a">Left hand side argument of the matrix multiply.</param> 1969 /// <param name="b">Right hand side argument of the matrix multiply.</param> 1970 /// <returns>The computed matrix multiplication.</returns> 1971 [MethodImpl(MethodImplOptions.AggressiveInlining)] 1972 public static uint2 mul(uint2x2 a, uint2 b) 1973 { 1974 return a.c0 * b.x + a.c1 * b.y; 1975 } 1976 1977 /// <summary>Returns the uint2x2 matrix result of a matrix multiplication between a uint2x2 matrix and a uint2x2 matrix.</summary> 1978 /// <param name="a">Left hand side argument of the matrix multiply.</param> 1979 /// <param name="b">Right hand side argument of the matrix multiply.</param> 1980 /// <returns>The computed matrix multiplication.</returns> 1981 [MethodImpl(MethodImplOptions.AggressiveInlining)] 1982 public static uint2x2 mul(uint2x2 a, uint2x2 b) 1983 { 1984 return uint2x2( 1985 a.c0 * b.c0.x + a.c1 * b.c0.y, 1986 a.c0 * b.c1.x + a.c1 * b.c1.y); 1987 } 1988 1989 /// <summary>Returns the uint2x3 matrix result of a matrix multiplication between a uint2x2 matrix and a uint2x3 matrix.</summary> 1990 /// <param name="a">Left hand side argument of the matrix multiply.</param> 1991 /// <param name="b">Right hand side argument of the matrix multiply.</param> 1992 /// <returns>The computed matrix multiplication.</returns> 1993 [MethodImpl(MethodImplOptions.AggressiveInlining)] 1994 public static uint2x3 mul(uint2x2 a, uint2x3 b) 1995 { 1996 return uint2x3( 1997 a.c0 * b.c0.x + a.c1 * b.c0.y, 1998 a.c0 * b.c1.x + a.c1 * b.c1.y, 1999 a.c0 * b.c2.x + a.c1 * b.c2.y); 2000 } 2001 2002 /// <summary>Returns the uint2x4 matrix result of a matrix multiplication between a uint2x2 matrix and a uint2x4 matrix.</summary> 2003 /// <param name="a">Left hand side argument of the matrix multiply.</param> 2004 /// <param name="b">Right hand side argument of the matrix multiply.</param> 2005 /// <returns>The computed matrix multiplication.</returns> 2006 [MethodImpl(MethodImplOptions.AggressiveInlining)] 2007 public static uint2x4 mul(uint2x2 a, uint2x4 b) 2008 { 2009 return uint2x4( 2010 a.c0 * b.c0.x + a.c1 * b.c0.y, 2011 a.c0 * b.c1.x + a.c1 * b.c1.y, 2012 a.c0 * b.c2.x + a.c1 * b.c2.y, 2013 a.c0 * b.c3.x + a.c1 * b.c3.y); 2014 } 2015 2016 /// <summary>Returns the uint2 column vector result of a matrix multiplication between a uint2x3 matrix and a uint3 column vector.</summary> 2017 /// <param name="a">Left hand side argument of the matrix multiply.</param> 2018 /// <param name="b">Right hand side argument of the matrix multiply.</param> 2019 /// <returns>The computed matrix multiplication.</returns> 2020 [MethodImpl(MethodImplOptions.AggressiveInlining)] 2021 public static uint2 mul(uint2x3 a, uint3 b) 2022 { 2023 return a.c0 * b.x + a.c1 * b.y + a.c2 * b.z; 2024 } 2025 2026 /// <summary>Returns the uint2x2 matrix result of a matrix multiplication between a uint2x3 matrix and a uint3x2 matrix.</summary> 2027 /// <param name="a">Left hand side argument of the matrix multiply.</param> 2028 /// <param name="b">Right hand side argument of the matrix multiply.</param> 2029 /// <returns>The computed matrix multiplication.</returns> 2030 [MethodImpl(MethodImplOptions.AggressiveInlining)] 2031 public static uint2x2 mul(uint2x3 a, uint3x2 b) 2032 { 2033 return uint2x2( 2034 a.c0 * b.c0.x + a.c1 * b.c0.y + a.c2 * b.c0.z, 2035 a.c0 * b.c1.x + a.c1 * b.c1.y + a.c2 * b.c1.z); 2036 } 2037 2038 /// <summary>Returns the uint2x3 matrix result of a matrix multiplication between a uint2x3 matrix and a uint3x3 matrix.</summary> 2039 /// <param name="a">Left hand side argument of the matrix multiply.</param> 2040 /// <param name="b">Right hand side argument of the matrix multiply.</param> 2041 /// <returns>The computed matrix multiplication.</returns> 2042 [MethodImpl(MethodImplOptions.AggressiveInlining)] 2043 public static uint2x3 mul(uint2x3 a, uint3x3 b) 2044 { 2045 return uint2x3( 2046 a.c0 * b.c0.x + a.c1 * b.c0.y + a.c2 * b.c0.z, 2047 a.c0 * b.c1.x + a.c1 * b.c1.y + a.c2 * b.c1.z, 2048 a.c0 * b.c2.x + a.c1 * b.c2.y + a.c2 * b.c2.z); 2049 } 2050 2051 /// <summary>Returns the uint2x4 matrix result of a matrix multiplication between a uint2x3 matrix and a uint3x4 matrix.</summary> 2052 /// <param name="a">Left hand side argument of the matrix multiply.</param> 2053 /// <param name="b">Right hand side argument of the matrix multiply.</param> 2054 /// <returns>The computed matrix multiplication.</returns> 2055 [MethodImpl(MethodImplOptions.AggressiveInlining)] 2056 public static uint2x4 mul(uint2x3 a, uint3x4 b) 2057 { 2058 return uint2x4( 2059 a.c0 * b.c0.x + a.c1 * b.c0.y + a.c2 * b.c0.z, 2060 a.c0 * b.c1.x + a.c1 * b.c1.y + a.c2 * b.c1.z, 2061 a.c0 * b.c2.x + a.c1 * b.c2.y + a.c2 * b.c2.z, 2062 a.c0 * b.c3.x + a.c1 * b.c3.y + a.c2 * b.c3.z); 2063 } 2064 2065 /// <summary>Returns the uint2 column vector result of a matrix multiplication between a uint2x4 matrix and a uint4 column vector.</summary> 2066 /// <param name="a">Left hand side argument of the matrix multiply.</param> 2067 /// <param name="b">Right hand side argument of the matrix multiply.</param> 2068 /// <returns>The computed matrix multiplication.</returns> 2069 [MethodImpl(MethodImplOptions.AggressiveInlining)] 2070 public static uint2 mul(uint2x4 a, uint4 b) 2071 { 2072 return a.c0 * b.x + a.c1 * b.y + a.c2 * b.z + a.c3 * b.w; 2073 } 2074 2075 /// <summary>Returns the uint2x2 matrix result of a matrix multiplication between a uint2x4 matrix and a uint4x2 matrix.</summary> 2076 /// <param name="a">Left hand side argument of the matrix multiply.</param> 2077 /// <param name="b">Right hand side argument of the matrix multiply.</param> 2078 /// <returns>The computed matrix multiplication.</returns> 2079 [MethodImpl(MethodImplOptions.AggressiveInlining)] 2080 public static uint2x2 mul(uint2x4 a, uint4x2 b) 2081 { 2082 return uint2x2( 2083 a.c0 * b.c0.x + a.c1 * b.c0.y + a.c2 * b.c0.z + a.c3 * b.c0.w, 2084 a.c0 * b.c1.x + a.c1 * b.c1.y + a.c2 * b.c1.z + a.c3 * b.c1.w); 2085 } 2086 2087 /// <summary>Returns the uint2x3 matrix result of a matrix multiplication between a uint2x4 matrix and a uint4x3 matrix.</summary> 2088 /// <param name="a">Left hand side argument of the matrix multiply.</param> 2089 /// <param name="b">Right hand side argument of the matrix multiply.</param> 2090 /// <returns>The computed matrix multiplication.</returns> 2091 [MethodImpl(MethodImplOptions.AggressiveInlining)] 2092 public static uint2x3 mul(uint2x4 a, uint4x3 b) 2093 { 2094 return uint2x3( 2095 a.c0 * b.c0.x + a.c1 * b.c0.y + a.c2 * b.c0.z + a.c3 * b.c0.w, 2096 a.c0 * b.c1.x + a.c1 * b.c1.y + a.c2 * b.c1.z + a.c3 * b.c1.w, 2097 a.c0 * b.c2.x + a.c1 * b.c2.y + a.c2 * b.c2.z + a.c3 * b.c2.w); 2098 } 2099 2100 /// <summary>Returns the uint2x4 matrix result of a matrix multiplication between a uint2x4 matrix and a uint4x4 matrix.</summary> 2101 /// <param name="a">Left hand side argument of the matrix multiply.</param> 2102 /// <param name="b">Right hand side argument of the matrix multiply.</param> 2103 /// <returns>The computed matrix multiplication.</returns> 2104 [MethodImpl(MethodImplOptions.AggressiveInlining)] 2105 public static uint2x4 mul(uint2x4 a, uint4x4 b) 2106 { 2107 return uint2x4( 2108 a.c0 * b.c0.x + a.c1 * b.c0.y + a.c2 * b.c0.z + a.c3 * b.c0.w, 2109 a.c0 * b.c1.x + a.c1 * b.c1.y + a.c2 * b.c1.z + a.c3 * b.c1.w, 2110 a.c0 * b.c2.x + a.c1 * b.c2.y + a.c2 * b.c2.z + a.c3 * b.c2.w, 2111 a.c0 * b.c3.x + a.c1 * b.c3.y + a.c2 * b.c3.z + a.c3 * b.c3.w); 2112 } 2113 2114 /// <summary>Returns the uint3 column vector result of a matrix multiplication between a uint3x2 matrix and a uint2 column vector.</summary> 2115 /// <param name="a">Left hand side argument of the matrix multiply.</param> 2116 /// <param name="b">Right hand side argument of the matrix multiply.</param> 2117 /// <returns>The computed matrix multiplication.</returns> 2118 [MethodImpl(MethodImplOptions.AggressiveInlining)] 2119 public static uint3 mul(uint3x2 a, uint2 b) 2120 { 2121 return a.c0 * b.x + a.c1 * b.y; 2122 } 2123 2124 /// <summary>Returns the uint3x2 matrix result of a matrix multiplication between a uint3x2 matrix and a uint2x2 matrix.</summary> 2125 /// <param name="a">Left hand side argument of the matrix multiply.</param> 2126 /// <param name="b">Right hand side argument of the matrix multiply.</param> 2127 /// <returns>The computed matrix multiplication.</returns> 2128 [MethodImpl(MethodImplOptions.AggressiveInlining)] 2129 public static uint3x2 mul(uint3x2 a, uint2x2 b) 2130 { 2131 return uint3x2( 2132 a.c0 * b.c0.x + a.c1 * b.c0.y, 2133 a.c0 * b.c1.x + a.c1 * b.c1.y); 2134 } 2135 2136 /// <summary>Returns the uint3x3 matrix result of a matrix multiplication between a uint3x2 matrix and a uint2x3 matrix.</summary> 2137 /// <param name="a">Left hand side argument of the matrix multiply.</param> 2138 /// <param name="b">Right hand side argument of the matrix multiply.</param> 2139 /// <returns>The computed matrix multiplication.</returns> 2140 [MethodImpl(MethodImplOptions.AggressiveInlining)] 2141 public static uint3x3 mul(uint3x2 a, uint2x3 b) 2142 { 2143 return uint3x3( 2144 a.c0 * b.c0.x + a.c1 * b.c0.y, 2145 a.c0 * b.c1.x + a.c1 * b.c1.y, 2146 a.c0 * b.c2.x + a.c1 * b.c2.y); 2147 } 2148 2149 /// <summary>Returns the uint3x4 matrix result of a matrix multiplication between a uint3x2 matrix and a uint2x4 matrix.</summary> 2150 /// <param name="a">Left hand side argument of the matrix multiply.</param> 2151 /// <param name="b">Right hand side argument of the matrix multiply.</param> 2152 /// <returns>The computed matrix multiplication.</returns> 2153 [MethodImpl(MethodImplOptions.AggressiveInlining)] 2154 public static uint3x4 mul(uint3x2 a, uint2x4 b) 2155 { 2156 return uint3x4( 2157 a.c0 * b.c0.x + a.c1 * b.c0.y, 2158 a.c0 * b.c1.x + a.c1 * b.c1.y, 2159 a.c0 * b.c2.x + a.c1 * b.c2.y, 2160 a.c0 * b.c3.x + a.c1 * b.c3.y); 2161 } 2162 2163 /// <summary>Returns the uint3 column vector result of a matrix multiplication between a uint3x3 matrix and a uint3 column vector.</summary> 2164 /// <param name="a">Left hand side argument of the matrix multiply.</param> 2165 /// <param name="b">Right hand side argument of the matrix multiply.</param> 2166 /// <returns>The computed matrix multiplication.</returns> 2167 [MethodImpl(MethodImplOptions.AggressiveInlining)] 2168 public static uint3 mul(uint3x3 a, uint3 b) 2169 { 2170 return a.c0 * b.x + a.c1 * b.y + a.c2 * b.z; 2171 } 2172 2173 /// <summary>Returns the uint3x2 matrix result of a matrix multiplication between a uint3x3 matrix and a uint3x2 matrix.</summary> 2174 /// <param name="a">Left hand side argument of the matrix multiply.</param> 2175 /// <param name="b">Right hand side argument of the matrix multiply.</param> 2176 /// <returns>The computed matrix multiplication.</returns> 2177 [MethodImpl(MethodImplOptions.AggressiveInlining)] 2178 public static uint3x2 mul(uint3x3 a, uint3x2 b) 2179 { 2180 return uint3x2( 2181 a.c0 * b.c0.x + a.c1 * b.c0.y + a.c2 * b.c0.z, 2182 a.c0 * b.c1.x + a.c1 * b.c1.y + a.c2 * b.c1.z); 2183 } 2184 2185 /// <summary>Returns the uint3x3 matrix result of a matrix multiplication between a uint3x3 matrix and a uint3x3 matrix.</summary> 2186 /// <param name="a">Left hand side argument of the matrix multiply.</param> 2187 /// <param name="b">Right hand side argument of the matrix multiply.</param> 2188 /// <returns>The computed matrix multiplication.</returns> 2189 [MethodImpl(MethodImplOptions.AggressiveInlining)] 2190 public static uint3x3 mul(uint3x3 a, uint3x3 b) 2191 { 2192 return uint3x3( 2193 a.c0 * b.c0.x + a.c1 * b.c0.y + a.c2 * b.c0.z, 2194 a.c0 * b.c1.x + a.c1 * b.c1.y + a.c2 * b.c1.z, 2195 a.c0 * b.c2.x + a.c1 * b.c2.y + a.c2 * b.c2.z); 2196 } 2197 2198 /// <summary>Returns the uint3x4 matrix result of a matrix multiplication between a uint3x3 matrix and a uint3x4 matrix.</summary> 2199 /// <param name="a">Left hand side argument of the matrix multiply.</param> 2200 /// <param name="b">Right hand side argument of the matrix multiply.</param> 2201 /// <returns>The computed matrix multiplication.</returns> 2202 [MethodImpl(MethodImplOptions.AggressiveInlining)] 2203 public static uint3x4 mul(uint3x3 a, uint3x4 b) 2204 { 2205 return uint3x4( 2206 a.c0 * b.c0.x + a.c1 * b.c0.y + a.c2 * b.c0.z, 2207 a.c0 * b.c1.x + a.c1 * b.c1.y + a.c2 * b.c1.z, 2208 a.c0 * b.c2.x + a.c1 * b.c2.y + a.c2 * b.c2.z, 2209 a.c0 * b.c3.x + a.c1 * b.c3.y + a.c2 * b.c3.z); 2210 } 2211 2212 /// <summary>Returns the uint3 column vector result of a matrix multiplication between a uint3x4 matrix and a uint4 column vector.</summary> 2213 /// <param name="a">Left hand side argument of the matrix multiply.</param> 2214 /// <param name="b">Right hand side argument of the matrix multiply.</param> 2215 /// <returns>The computed matrix multiplication.</returns> 2216 [MethodImpl(MethodImplOptions.AggressiveInlining)] 2217 public static uint3 mul(uint3x4 a, uint4 b) 2218 { 2219 return a.c0 * b.x + a.c1 * b.y + a.c2 * b.z + a.c3 * b.w; 2220 } 2221 2222 /// <summary>Returns the uint3x2 matrix result of a matrix multiplication between a uint3x4 matrix and a uint4x2 matrix.</summary> 2223 /// <param name="a">Left hand side argument of the matrix multiply.</param> 2224 /// <param name="b">Right hand side argument of the matrix multiply.</param> 2225 /// <returns>The computed matrix multiplication.</returns> 2226 [MethodImpl(MethodImplOptions.AggressiveInlining)] 2227 public static uint3x2 mul(uint3x4 a, uint4x2 b) 2228 { 2229 return uint3x2( 2230 a.c0 * b.c0.x + a.c1 * b.c0.y + a.c2 * b.c0.z + a.c3 * b.c0.w, 2231 a.c0 * b.c1.x + a.c1 * b.c1.y + a.c2 * b.c1.z + a.c3 * b.c1.w); 2232 } 2233 2234 /// <summary>Returns the uint3x3 matrix result of a matrix multiplication between a uint3x4 matrix and a uint4x3 matrix.</summary> 2235 /// <param name="a">Left hand side argument of the matrix multiply.</param> 2236 /// <param name="b">Right hand side argument of the matrix multiply.</param> 2237 /// <returns>The computed matrix multiplication.</returns> 2238 [MethodImpl(MethodImplOptions.AggressiveInlining)] 2239 public static uint3x3 mul(uint3x4 a, uint4x3 b) 2240 { 2241 return uint3x3( 2242 a.c0 * b.c0.x + a.c1 * b.c0.y + a.c2 * b.c0.z + a.c3 * b.c0.w, 2243 a.c0 * b.c1.x + a.c1 * b.c1.y + a.c2 * b.c1.z + a.c3 * b.c1.w, 2244 a.c0 * b.c2.x + a.c1 * b.c2.y + a.c2 * b.c2.z + a.c3 * b.c2.w); 2245 } 2246 2247 /// <summary>Returns the uint3x4 matrix result of a matrix multiplication between a uint3x4 matrix and a uint4x4 matrix.</summary> 2248 /// <param name="a">Left hand side argument of the matrix multiply.</param> 2249 /// <param name="b">Right hand side argument of the matrix multiply.</param> 2250 /// <returns>The computed matrix multiplication.</returns> 2251 [MethodImpl(MethodImplOptions.AggressiveInlining)] 2252 public static uint3x4 mul(uint3x4 a, uint4x4 b) 2253 { 2254 return uint3x4( 2255 a.c0 * b.c0.x + a.c1 * b.c0.y + a.c2 * b.c0.z + a.c3 * b.c0.w, 2256 a.c0 * b.c1.x + a.c1 * b.c1.y + a.c2 * b.c1.z + a.c3 * b.c1.w, 2257 a.c0 * b.c2.x + a.c1 * b.c2.y + a.c2 * b.c2.z + a.c3 * b.c2.w, 2258 a.c0 * b.c3.x + a.c1 * b.c3.y + a.c2 * b.c3.z + a.c3 * b.c3.w); 2259 } 2260 2261 /// <summary>Returns the uint4 column vector result of a matrix multiplication between a uint4x2 matrix and a uint2 column vector.</summary> 2262 /// <param name="a">Left hand side argument of the matrix multiply.</param> 2263 /// <param name="b">Right hand side argument of the matrix multiply.</param> 2264 /// <returns>The computed matrix multiplication.</returns> 2265 [MethodImpl(MethodImplOptions.AggressiveInlining)] 2266 public static uint4 mul(uint4x2 a, uint2 b) 2267 { 2268 return a.c0 * b.x + a.c1 * b.y; 2269 } 2270 2271 /// <summary>Returns the uint4x2 matrix result of a matrix multiplication between a uint4x2 matrix and a uint2x2 matrix.</summary> 2272 /// <param name="a">Left hand side argument of the matrix multiply.</param> 2273 /// <param name="b">Right hand side argument of the matrix multiply.</param> 2274 /// <returns>The computed matrix multiplication.</returns> 2275 [MethodImpl(MethodImplOptions.AggressiveInlining)] 2276 public static uint4x2 mul(uint4x2 a, uint2x2 b) 2277 { 2278 return uint4x2( 2279 a.c0 * b.c0.x + a.c1 * b.c0.y, 2280 a.c0 * b.c1.x + a.c1 * b.c1.y); 2281 } 2282 2283 /// <summary>Returns the uint4x3 matrix result of a matrix multiplication between a uint4x2 matrix and a uint2x3 matrix.</summary> 2284 /// <param name="a">Left hand side argument of the matrix multiply.</param> 2285 /// <param name="b">Right hand side argument of the matrix multiply.</param> 2286 /// <returns>The computed matrix multiplication.</returns> 2287 [MethodImpl(MethodImplOptions.AggressiveInlining)] 2288 public static uint4x3 mul(uint4x2 a, uint2x3 b) 2289 { 2290 return uint4x3( 2291 a.c0 * b.c0.x + a.c1 * b.c0.y, 2292 a.c0 * b.c1.x + a.c1 * b.c1.y, 2293 a.c0 * b.c2.x + a.c1 * b.c2.y); 2294 } 2295 2296 /// <summary>Returns the uint4x4 matrix result of a matrix multiplication between a uint4x2 matrix and a uint2x4 matrix.</summary> 2297 /// <param name="a">Left hand side argument of the matrix multiply.</param> 2298 /// <param name="b">Right hand side argument of the matrix multiply.</param> 2299 /// <returns>The computed matrix multiplication.</returns> 2300 [MethodImpl(MethodImplOptions.AggressiveInlining)] 2301 public static uint4x4 mul(uint4x2 a, uint2x4 b) 2302 { 2303 return uint4x4( 2304 a.c0 * b.c0.x + a.c1 * b.c0.y, 2305 a.c0 * b.c1.x + a.c1 * b.c1.y, 2306 a.c0 * b.c2.x + a.c1 * b.c2.y, 2307 a.c0 * b.c3.x + a.c1 * b.c3.y); 2308 } 2309 2310 /// <summary>Returns the uint4 column vector result of a matrix multiplication between a uint4x3 matrix and a uint3 column vector.</summary> 2311 /// <param name="a">Left hand side argument of the matrix multiply.</param> 2312 /// <param name="b">Right hand side argument of the matrix multiply.</param> 2313 /// <returns>The computed matrix multiplication.</returns> 2314 [MethodImpl(MethodImplOptions.AggressiveInlining)] 2315 public static uint4 mul(uint4x3 a, uint3 b) 2316 { 2317 return a.c0 * b.x + a.c1 * b.y + a.c2 * b.z; 2318 } 2319 2320 /// <summary>Returns the uint4x2 matrix result of a matrix multiplication between a uint4x3 matrix and a uint3x2 matrix.</summary> 2321 /// <param name="a">Left hand side argument of the matrix multiply.</param> 2322 /// <param name="b">Right hand side argument of the matrix multiply.</param> 2323 /// <returns>The computed matrix multiplication.</returns> 2324 [MethodImpl(MethodImplOptions.AggressiveInlining)] 2325 public static uint4x2 mul(uint4x3 a, uint3x2 b) 2326 { 2327 return uint4x2( 2328 a.c0 * b.c0.x + a.c1 * b.c0.y + a.c2 * b.c0.z, 2329 a.c0 * b.c1.x + a.c1 * b.c1.y + a.c2 * b.c1.z); 2330 } 2331 2332 /// <summary>Returns the uint4x3 matrix result of a matrix multiplication between a uint4x3 matrix and a uint3x3 matrix.</summary> 2333 /// <param name="a">Left hand side argument of the matrix multiply.</param> 2334 /// <param name="b">Right hand side argument of the matrix multiply.</param> 2335 /// <returns>The computed matrix multiplication.</returns> 2336 [MethodImpl(MethodImplOptions.AggressiveInlining)] 2337 public static uint4x3 mul(uint4x3 a, uint3x3 b) 2338 { 2339 return uint4x3( 2340 a.c0 * b.c0.x + a.c1 * b.c0.y + a.c2 * b.c0.z, 2341 a.c0 * b.c1.x + a.c1 * b.c1.y + a.c2 * b.c1.z, 2342 a.c0 * b.c2.x + a.c1 * b.c2.y + a.c2 * b.c2.z); 2343 } 2344 2345 /// <summary>Returns the uint4x4 matrix result of a matrix multiplication between a uint4x3 matrix and a uint3x4 matrix.</summary> 2346 /// <param name="a">Left hand side argument of the matrix multiply.</param> 2347 /// <param name="b">Right hand side argument of the matrix multiply.</param> 2348 /// <returns>The computed matrix multiplication.</returns> 2349 [MethodImpl(MethodImplOptions.AggressiveInlining)] 2350 public static uint4x4 mul(uint4x3 a, uint3x4 b) 2351 { 2352 return uint4x4( 2353 a.c0 * b.c0.x + a.c1 * b.c0.y + a.c2 * b.c0.z, 2354 a.c0 * b.c1.x + a.c1 * b.c1.y + a.c2 * b.c1.z, 2355 a.c0 * b.c2.x + a.c1 * b.c2.y + a.c2 * b.c2.z, 2356 a.c0 * b.c3.x + a.c1 * b.c3.y + a.c2 * b.c3.z); 2357 } 2358 2359 /// <summary>Returns the uint4 column vector result of a matrix multiplication between a uint4x4 matrix and a uint4 column vector.</summary> 2360 /// <param name="a">Left hand side argument of the matrix multiply.</param> 2361 /// <param name="b">Right hand side argument of the matrix multiply.</param> 2362 /// <returns>The computed matrix multiplication.</returns> 2363 [MethodImpl(MethodImplOptions.AggressiveInlining)] 2364 public static uint4 mul(uint4x4 a, uint4 b) 2365 { 2366 return a.c0 * b.x + a.c1 * b.y + a.c2 * b.z + a.c3 * b.w; 2367 } 2368 2369 /// <summary>Returns the uint4x2 matrix result of a matrix multiplication between a uint4x4 matrix and a uint4x2 matrix.</summary> 2370 /// <param name="a">Left hand side argument of the matrix multiply.</param> 2371 /// <param name="b">Right hand side argument of the matrix multiply.</param> 2372 /// <returns>The computed matrix multiplication.</returns> 2373 [MethodImpl(MethodImplOptions.AggressiveInlining)] 2374 public static uint4x2 mul(uint4x4 a, uint4x2 b) 2375 { 2376 return uint4x2( 2377 a.c0 * b.c0.x + a.c1 * b.c0.y + a.c2 * b.c0.z + a.c3 * b.c0.w, 2378 a.c0 * b.c1.x + a.c1 * b.c1.y + a.c2 * b.c1.z + a.c3 * b.c1.w); 2379 } 2380 2381 /// <summary>Returns the uint4x3 matrix result of a matrix multiplication between a uint4x4 matrix and a uint4x3 matrix.</summary> 2382 /// <param name="a">Left hand side argument of the matrix multiply.</param> 2383 /// <param name="b">Right hand side argument of the matrix multiply.</param> 2384 /// <returns>The computed matrix multiplication.</returns> 2385 [MethodImpl(MethodImplOptions.AggressiveInlining)] 2386 public static uint4x3 mul(uint4x4 a, uint4x3 b) 2387 { 2388 return uint4x3( 2389 a.c0 * b.c0.x + a.c1 * b.c0.y + a.c2 * b.c0.z + a.c3 * b.c0.w, 2390 a.c0 * b.c1.x + a.c1 * b.c1.y + a.c2 * b.c1.z + a.c3 * b.c1.w, 2391 a.c0 * b.c2.x + a.c1 * b.c2.y + a.c2 * b.c2.z + a.c3 * b.c2.w); 2392 } 2393 2394 /// <summary>Returns the uint4x4 matrix result of a matrix multiplication between a uint4x4 matrix and a uint4x4 matrix.</summary> 2395 /// <param name="a">Left hand side argument of the matrix multiply.</param> 2396 /// <param name="b">Right hand side argument of the matrix multiply.</param> 2397 /// <returns>The computed matrix multiplication.</returns> 2398 [MethodImpl(MethodImplOptions.AggressiveInlining)] 2399 public static uint4x4 mul(uint4x4 a, uint4x4 b) 2400 { 2401 return uint4x4( 2402 a.c0 * b.c0.x + a.c1 * b.c0.y + a.c2 * b.c0.z + a.c3 * b.c0.w, 2403 a.c0 * b.c1.x + a.c1 * b.c1.y + a.c2 * b.c1.z + a.c3 * b.c1.w, 2404 a.c0 * b.c2.x + a.c1 * b.c2.y + a.c2 * b.c2.z + a.c3 * b.c2.w, 2405 a.c0 * b.c3.x + a.c1 * b.c3.y + a.c2 * b.c3.z + a.c3 * b.c3.w); 2406 } 2407 2408 } 2409}