1use core::fmt;
2use core::ops;
3
4use super::Float2;
5use super::Float3;
6
7#[derive(Copy, Clone, Debug)]
9pub struct Float4 {
10 pub x: f32,
12 pub y: f32,
14 pub z: f32,
16 pub w: f32,
18}
19
20impl fmt::Display for Float4 {
21 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
22 write!(f, "Float4 ({}, {}, {}, {})", self.x, self.y, self.z, self.w)
23 }
24}
25
26impl ops::Add<Self> for Float4 {
27 type Output = Self;
28
29 fn add(self, rhs: Self) -> Self {
30 Self {
31 x: self.x + rhs.x,
32 y: self.y + rhs.y,
33 z: self.z + rhs.z,
34 w: self.w + rhs.w,
35 }
36 }
37}
38
39impl ops::Add<f32> for Float4 {
40 type Output = Self;
41
42 fn add(self, rhs: f32) -> Self {
43 Self {
44 x: self.x + rhs,
45 y: self.y + rhs,
46 z: self.z + rhs,
47 w: self.w + rhs,
48 }
49 }
50}
51
52impl ops::AddAssign<Self> for Float4 {
53 fn add_assign(&mut self, rhs: Self) {
54 self.x += rhs.x;
55 self.y += rhs.y;
56 self.z += rhs.z;
57 self.w += rhs.w;
58 }
59}
60
61impl ops::AddAssign<f32> for Float4 {
62 fn add_assign(&mut self, rhs: f32) {
63 self.x += rhs;
64 self.y += rhs;
65 self.z += rhs;
66 self.w += rhs;
67 }
68}
69
70impl ops::Sub<Self> for Float4 {
71 type Output = Self;
72
73 fn sub(self, rhs: Self) -> Self {
74 Self {
75 x: self.x - rhs.x,
76 y: self.y - rhs.y,
77 z: self.z - rhs.z,
78 w: self.w - rhs.w,
79 }
80 }
81}
82
83impl ops::Sub<f32> for Float4 {
84 type Output = Self;
85
86 fn sub(self, rhs: f32) -> Self {
87 Self {
88 x: self.x - rhs,
89 y: self.y - rhs,
90 z: self.z - rhs,
91 w: self.w - rhs,
92 }
93 }
94}
95
96impl ops::SubAssign<Self> for Float4 {
97 fn sub_assign(&mut self, rhs: Self) {
98 self.x -= rhs.x;
99 self.y -= rhs.y;
100 self.z -= rhs.z;
101 self.w -= rhs.w;
102 }
103}
104
105impl ops::SubAssign<f32> for Float4 {
106 fn sub_assign(&mut self, rhs: f32) {
107 self.x -= rhs;
108 self.y -= rhs;
109 self.z -= rhs;
110 self.w -= rhs;
111 }
112}
113
114impl ops::Mul<Self> for Float4 {
115 type Output = Self;
116
117 fn mul(self, rhs: Self) -> Self {
118 Self {
119 x: self.x * rhs.x,
120 y: self.y * rhs.y,
121 z: self.z * rhs.z,
122 w: self.w * rhs.w,
123 }
124 }
125}
126
127impl ops::Mul<f32> for Float4 {
128 type Output = Self;
129
130 fn mul(self, rhs: f32) -> Self {
131 Self {
132 x: self.x * rhs,
133 y: self.y * rhs,
134 z: self.z * rhs,
135 w: self.w * rhs,
136 }
137 }
138}
139
140impl ops::MulAssign<Self> for Float4 {
141 fn mul_assign(&mut self, rhs: Self) {
142 self.x *= rhs.x;
143 self.y *= rhs.y;
144 self.z *= rhs.z;
145 self.w *= rhs.w;
146 }
147}
148
149impl ops::MulAssign<f32> for Float4 {
150 fn mul_assign(&mut self, rhs: f32) {
151 self.x *= rhs;
152 self.y *= rhs;
153 self.z *= rhs;
154 self.w *= rhs;
155 }
156}
157
158impl ops::Div<Self> for Float4 {
159 type Output = Self;
160
161 fn div(self, rhs: Self) -> Self {
162 Self {
163 x: self.x / rhs.x,
164 y: self.y / rhs.y,
165 z: self.z / rhs.z,
166 w: self.w / rhs.w,
167 }
168 }
169}
170
171impl ops::Div<f32> for Float4 {
172 type Output = Self;
173
174 fn div(self, rhs: f32) -> Self {
175 Self {
176 x: self.x / rhs,
177 y: self.y / rhs,
178 z: self.z / rhs,
179 w: self.w / rhs,
180 }
181 }
182}
183
184impl ops::DivAssign<Self> for Float4 {
185 fn div_assign(&mut self, rhs: Self) {
186 self.x /= rhs.x;
187 self.y /= rhs.y;
188 self.z /= rhs.z;
189 self.w /= rhs.w;
190 }
191}
192
193impl ops::DivAssign<f32> for Float4 {
194 fn div_assign(&mut self, rhs: f32) {
195 self.x /= rhs;
196 self.y /= rhs;
197 self.z /= rhs;
198 self.w /= rhs;
199 }
200}
201
202impl ops::Neg for Float4 {
203 type Output = Self;
204
205 fn neg(self) -> Self {
206 Self {
207 x: -self.x,
208 y: -self.y,
209 z: -self.z,
210 w: -self.w,
211 }
212 }
213}
214
215impl PartialEq for Float4 {
216 fn eq(&self, rhs: &Self) -> bool {
217 self.x == rhs.x && self.y == rhs.y && self.z == rhs.z && self.w == rhs.w
218 }
219}
220
221impl From<f32> for Float4 {
222 fn from(lhs: f32) -> Self {
223 Self {
224 x: lhs,
225 y: lhs,
226 z: lhs,
227 w: lhs,
228 }
229 }
230}
231
232impl From<(f32, f32, f32, f32)> for Float4 {
233 fn from(lhs: (f32, f32, f32, f32)) -> Self {
234 Self {
235 x: lhs.0,
236 y: lhs.1,
237 z: lhs.2,
238 w: lhs.3,
239 }
240 }
241}
242
243impl Float4 {
244 pub fn new(x: f32, y: f32, z: f32, w: f32) -> Self {
246 Self { x, y, z, w }
247 }
248
249 pub fn abs(&self) -> Self {
251 Self {
252 x: self.x.abs(),
253 y: self.y.abs(),
254 z: self.z.abs(),
255 w: self.w.abs(),
256 }
257 }
258
259 pub fn acos(&self) -> Self {
263 Self {
264 x: self.x.acos(),
265 y: self.y.acos(),
266 z: self.z.acos(),
267 w: self.w.acos(),
268 }
269 }
270
271 pub fn all(&self) -> bool {
273 self.x != 0.0 && self.y != 0.0 && self.z != 0.0 && self.w != 0.0
274 }
275
276 pub fn any(&self) -> bool {
278 self.x != 0.0 || self.y != 0.0 || self.z != 0.0 || self.w != 0.0
279 }
280
281 pub fn asin(&self) -> Self {
284 Self {
285 x: self.x.asin(),
286 y: self.y.asin(),
287 z: self.z.asin(),
288 w: self.w.asin(),
289 }
290 }
291
292 pub fn atan(&self) -> Self {
295 Self {
296 x: self.x.atan(),
297 y: self.y.atan(),
298 z: self.z.atan(),
299 w: self.w.atan(),
300 }
301 }
302
303 pub fn ceil(&self) -> Self {
305 Self {
306 x: self.x.ceil(),
307 y: self.y.ceil(),
308 z: self.z.ceil(),
309 w: self.w.ceil(),
310 }
311 }
312
313 pub fn clamp(&self, min: f32, max: f32) -> Self {
315 Self {
316 x: self.x.clamp(min, max),
317 y: self.y.clamp(min, max),
318 z: self.z.clamp(min, max),
319 w: self.w.clamp(min, max),
320 }
321 }
322
323 pub fn cos(&self) -> Self {
325 Self {
326 x: self.x.cos(),
327 y: self.y.cos(),
328 z: self.z.cos(),
329 w: self.w.cos(),
330 }
331 }
332
333 pub fn cosh(&self) -> Self {
335 Self {
336 x: self.x.cosh(),
337 y: self.y.cosh(),
338 z: self.z.cosh(),
339 w: self.w.cosh(),
340 }
341 }
342
343 pub fn degrees(&self) -> Self {
345 Self {
346 x: self.x.to_degrees(),
347 y: self.y.to_degrees(),
348 z: self.z.to_degrees(),
349 w: self.w.to_degrees(),
350 }
351 }
352
353 pub fn distance(&self, rhs: &Self) -> f32 {
355 let dx = self.x - rhs.x;
356 let dy = self.y - rhs.y;
357 let dz = self.z - rhs.z;
358 let dw = self.w - rhs.w;
359 (dx * dx + dy * dy + dz * dz + dw * dw).sqrt()
360 }
361
362 pub fn dot(&self, rhs: &Self) -> f32 {
364 self.x * rhs.x + self.y * rhs.y + self.z * rhs.z + self.w * rhs.w
365 }
366
367 pub fn exp(&self) -> Self {
369 Self {
370 x: self.x.exp(),
371 y: self.y.exp(),
372 z: self.z.exp(),
373 w: self.w.exp(),
374 }
375 }
376
377 pub fn exp2(&self) -> Self {
379 Self {
380 x: self.x.exp2(),
381 y: self.y.exp2(),
382 z: self.z.exp2(),
383 w: self.w.exp2(),
384 }
385 }
386
387 pub fn floor(&self) -> Self {
389 Self {
390 x: self.x.floor(),
391 y: self.y.floor(),
392 z: self.z.floor(),
393 w: self.w.floor(),
394 }
395 }
396
397 pub fn fmod(&self, rhs: &Self) -> Self {
399 Self {
400 x: self.x % rhs.x,
401 y: self.y % rhs.y,
402 z: self.z % rhs.z,
403 w: self.w % rhs.w,
404 }
405 }
406
407 pub fn frac(&self) -> Self {
409 Self {
410 x: self.x.fract(),
411 y: self.y.fract(),
412 z: self.z.fract(),
413 w: self.w.fract(),
414 }
415 }
416
417 pub fn ldexp(&self, exponent: &Self) -> Self {
419 Self {
420 x: self.x * (2.0f32).powi(exponent.x as i32),
421 y: self.y * (2.0f32).powi(exponent.y as i32),
422 z: self.z * (2.0f32).powi(exponent.z as i32),
423 w: self.w * (2.0f32).powi(exponent.w as i32),
424 }
425 }
426
427 pub fn length(&self) -> f32 {
429 (self.x * self.x + self.y * self.y + self.z * self.z + self.w * self.w).sqrt()
430 }
431
432 pub fn lerp(&self, rhs: &Self, t: f32) -> Self {
434 Self {
435 x: self.x + t * (rhs.x - self.x),
436 y: self.y + t * (rhs.y - self.y),
437 z: self.z + t * (rhs.z - self.z),
438 w: self.w + t * (rhs.w - self.w),
439 }
440 }
441
442 pub fn log(&self) -> Self {
444 Self {
445 x: self.x.ln(),
446 y: self.y.ln(),
447 z: self.z.ln(),
448 w: self.w.ln(),
449 }
450 }
451
452 pub fn log10(&self) -> Self {
454 Self {
455 x: self.x.log10(),
456 y: self.y.log10(),
457 z: self.z.log10(),
458 w: self.w.log10(),
459 }
460 }
461
462 pub fn log2(&self) -> Self {
464 Self {
465 x: self.x.log2(),
466 y: self.y.log2(),
467 z: self.z.log2(),
468 w: self.w.log2(),
469 }
470 }
471
472 pub fn mad(&self, b: &Self, c: &Self) -> Self {
474 Self {
475 x: self.x * b.x + c.x,
476 y: self.y * b.y + c.y,
477 z: self.z * b.z + c.z,
478 w: self.w * b.w + c.w,
479 }
480 }
481
482 pub fn max(&self, rhs: &Self) -> Self {
484 Self {
485 x: self.x.max(rhs.x),
486 y: self.y.max(rhs.y),
487 z: self.z.max(rhs.z),
488 w: self.w.max(rhs.w),
489 }
490 }
491
492 pub fn min(&self, rhs: &Self) -> Self {
494 Self {
495 x: self.x.min(rhs.x),
496 y: self.y.min(rhs.y),
497 z: self.z.min(rhs.z),
498 w: self.w.min(rhs.w),
499 }
500 }
501
502 pub fn normalize(&self) -> Self {
504 let length = self.length();
505 if length != 0.0 {
506 Self {
507 x: self.x / length,
508 y: self.y / length,
509 z: self.z / length,
510 w: self.w / length,
511 }
512 } else {
513 Self {
515 x: 0.0,
516 y: 0.0,
517 z: 0.0,
518 w: 0.0,
519 }
520 }
521 }
522
523 pub fn pow(&self, exponent: f32) -> Self {
525 Self {
526 x: self.x.powf(exponent),
527 y: self.y.powf(exponent),
528 z: self.z.powf(exponent),
529 w: self.w.powf(exponent),
530 }
531 }
532
533 pub fn radians(&self) -> Self {
535 Self {
536 x: self.x.to_radians(),
537 y: self.y.to_radians(),
538 z: self.z.to_radians(),
539 w: self.w.to_radians(),
540 }
541 }
542
543 pub fn rcp(&self) -> Self {
546 Self {
547 x: 1.0 / self.x,
548 y: 1.0 / self.y,
549 z: 1.0 / self.z,
550 w: 1.0 / self.w,
551 }
552 }
553
554 pub fn rcp_safe(&self) -> Self {
557 Self {
558 x: if self.x != 0.0 { 1.0 / self.x } else { 0.0 },
559 y: if self.y != 0.0 { 1.0 / self.y } else { 0.0 },
560 z: if self.z != 0.0 { 1.0 / self.z } else { 0.0 },
561 w: if self.w != 0.0 { 1.0 / self.w } else { 0.0 },
562 }
563 }
564
565 pub fn reflect(&self, normal: &Self) -> Self {
567 let dot = self.dot(normal);
568 Self {
569 x: self.x - 2.0 * dot * normal.x,
570 y: self.y - 2.0 * dot * normal.y,
571 z: self.z - 2.0 * dot * normal.z,
572 w: self.w - 2.0 * dot * normal.w,
573 }
574 }
575
576 pub fn refract(&self, normal: &Self, eta: f32) -> Self {
578 let dot_n_i = self.dot(normal);
579 let k = 1.0 - eta * eta * (1.0 - dot_n_i * dot_n_i);
580 if k < 0.0 {
581 Self {
582 x: 0.0,
583 y: 0.0,
584 z: 0.0,
585 w: 0.0,
586 }
587 } else {
588 let scale_i = eta;
589 let scale_n = eta * dot_n_i + k.sqrt();
590 Self {
591 x: scale_i * self.x - scale_n * normal.x,
592 y: scale_i * self.y - scale_n * normal.y,
593 z: scale_i * self.z - scale_n * normal.z,
594 w: scale_i * self.w - scale_n * normal.w,
595 }
596 }
597 }
598
599 pub fn round(&self) -> Self {
601 Self {
602 x: self.x.round(),
603 y: self.y.round(),
604 z: self.z.round(),
605 w: self.w.round(),
606 }
607 }
608
609 pub fn rsqrt(&self) -> Self {
611 Self {
612 x: if self.x != 0.0 {
613 1.0 / self.x.sqrt()
614 } else {
615 f32::INFINITY
616 },
617 y: if self.y != 0.0 {
618 1.0 / self.y.sqrt()
619 } else {
620 f32::INFINITY
621 },
622 z: if self.z != 0.0 {
623 1.0 / self.z.sqrt()
624 } else {
625 f32::INFINITY
626 },
627 w: if self.w != 0.0 {
628 1.0 / self.w.sqrt()
629 } else {
630 f32::INFINITY
631 },
632 }
633 }
634
635 pub fn saturate(&self) -> Self {
637 Self {
638 x: self.x.clamp(0.0, 1.0),
639 y: self.y.clamp(0.0, 1.0),
640 z: self.z.clamp(0.0, 1.0),
641 w: self.w.clamp(0.0, 1.0),
642 }
643 }
644
645 pub fn sign(&self) -> Self {
647 Self {
648 x: self.x.signum(),
649 y: self.y.signum(),
650 z: self.z.signum(),
651 w: self.w.signum(),
652 }
653 }
654
655 pub fn sin(&self) -> Self {
657 Self {
658 x: self.x.sin(),
659 y: self.y.sin(),
660 z: self.z.sin(),
661 w: self.w.sin(),
662 }
663 }
664
665 pub fn sinh(&self) -> Self {
667 Self {
668 x: self.x.sinh(),
669 y: self.y.sinh(),
670 z: self.z.sinh(),
671 w: self.w.sinh(),
672 }
673 }
674
675 pub fn smoothstep(&self, min: &Self, max: &Self) -> Self {
677 fn smoothstep_component(min: f32, max: f32, value: f32) -> f32 {
678 if value <= min {
679 0.0
680 } else if value >= max {
681 1.0
682 } else {
683 let t = (value - min) / (max - min);
684 t * t * (3.0 - 2.0 * t)
685 }
686 }
687
688 Self {
689 x: smoothstep_component(min.x, max.x, self.x),
690 y: smoothstep_component(min.y, max.y, self.y),
691 z: smoothstep_component(min.z, max.z, self.z),
692 w: smoothstep_component(min.w, max.w, self.w),
693 }
694 }
695
696 pub fn sqrt(&self) -> Self {
698 Self {
699 x: self.x.sqrt(),
700 y: self.y.sqrt(),
701 z: self.z.sqrt(),
702 w: self.w.sqrt(),
703 }
704 }
705
706 pub fn step(&self, edge: &Self) -> Self {
709 Self {
710 x: if self.x < edge.x { 0.0 } else { 1.0 },
711 y: if self.y < edge.y { 0.0 } else { 1.0 },
712 z: if self.z < edge.z { 0.0 } else { 1.0 },
713 w: if self.w < edge.w { 0.0 } else { 1.0 },
714 }
715 }
716
717 pub fn tan(&self) -> Self {
719 Self {
720 x: self.x.tan(),
721 y: self.y.tan(),
722 z: self.z.tan(),
723 w: self.w.tan(),
724 }
725 }
726
727 pub fn tanh(&self) -> Self {
729 Self {
730 x: self.x.tanh(),
731 y: self.y.tanh(),
732 z: self.z.tanh(),
733 w: self.w.tanh(),
734 }
735 }
736
737 pub fn trunc(&self) -> Self {
739 Self {
740 x: self.x.trunc(),
741 y: self.y.trunc(),
742 z: self.z.trunc(),
743 w: self.w.trunc(),
744 }
745 }
746
747 pub fn xx(&self) -> Float2 {
749 Float2 {
750 x: self.x,
751 y: self.x,
752 }
753 }
754
755 pub fn xy(&self) -> Float2 {
757 Float2 {
758 x: self.x,
759 y: self.y,
760 }
761 }
762
763 pub fn xz(&self) -> Float2 {
765 Float2 {
766 x: self.x,
767 y: self.z,
768 }
769 }
770
771 pub fn xw(&self) -> Float2 {
773 Float2 {
774 x: self.x,
775 y: self.w,
776 }
777 }
778
779 pub fn yx(&self) -> Float2 {
781 Float2 {
782 x: self.y,
783 y: self.x,
784 }
785 }
786
787 pub fn yy(&self) -> Float2 {
789 Float2 {
790 x: self.y,
791 y: self.y,
792 }
793 }
794
795 pub fn yz(&self) -> Float2 {
797 Float2 {
798 x: self.y,
799 y: self.z,
800 }
801 }
802
803 pub fn yw(&self) -> Float2 {
805 Float2 {
806 x: self.y,
807 y: self.w,
808 }
809 }
810
811 pub fn zx(&self) -> Float2 {
813 Float2 {
814 x: self.z,
815 y: self.x,
816 }
817 }
818
819 pub fn zy(&self) -> Float2 {
821 Float2 {
822 x: self.z,
823 y: self.y,
824 }
825 }
826
827 pub fn zz(&self) -> Float2 {
829 Float2 {
830 x: self.z,
831 y: self.z,
832 }
833 }
834
835 pub fn zw(&self) -> Float2 {
837 Float2 {
838 x: self.z,
839 y: self.w,
840 }
841 }
842
843 pub fn wx(&self) -> Float2 {
845 Float2 {
846 x: self.w,
847 y: self.x,
848 }
849 }
850
851 pub fn wy(&self) -> Float2 {
853 Float2 {
854 x: self.w,
855 y: self.y,
856 }
857 }
858
859 pub fn wz(&self) -> Float2 {
861 Float2 {
862 x: self.w,
863 y: self.z,
864 }
865 }
866
867 pub fn ww(&self) -> Float2 {
869 Float2 {
870 x: self.w,
871 y: self.w,
872 }
873 }
874
875 pub fn xxx(&self) -> Float3 {
877 Float3 {
878 x: self.x,
879 y: self.x,
880 z: self.x,
881 }
882 }
883
884 pub fn xxy(&self) -> Float3 {
886 Float3 {
887 x: self.x,
888 y: self.x,
889 z: self.y,
890 }
891 }
892
893 pub fn xxz(&self) -> Float3 {
895 Float3 {
896 x: self.x,
897 y: self.x,
898 z: self.z,
899 }
900 }
901
902 pub fn xxw(&self) -> Float3 {
904 Float3 {
905 x: self.x,
906 y: self.x,
907 z: self.w,
908 }
909 }
910
911 pub fn xyx(&self) -> Float3 {
913 Float3 {
914 x: self.x,
915 y: self.y,
916 z: self.x,
917 }
918 }
919
920 pub fn xyy(&self) -> Float3 {
922 Float3 {
923 x: self.x,
924 y: self.y,
925 z: self.y,
926 }
927 }
928
929 pub fn xyz(&self) -> Float3 {
931 Float3 {
932 x: self.x,
933 y: self.y,
934 z: self.z,
935 }
936 }
937
938 pub fn xyw(&self) -> Float3 {
940 Float3 {
941 x: self.x,
942 y: self.y,
943 z: self.w,
944 }
945 }
946
947 pub fn xzx(&self) -> Float3 {
949 Float3 {
950 x: self.x,
951 y: self.z,
952 z: self.x,
953 }
954 }
955
956 pub fn xzy(&self) -> Float3 {
958 Float3 {
959 x: self.x,
960 y: self.z,
961 z: self.y,
962 }
963 }
964
965 pub fn xzz(&self) -> Float3 {
967 Float3 {
968 x: self.x,
969 y: self.z,
970 z: self.z,
971 }
972 }
973
974 pub fn xzw(&self) -> Float3 {
976 Float3 {
977 x: self.x,
978 y: self.z,
979 z: self.w,
980 }
981 }
982
983 pub fn xwx(&self) -> Float3 {
985 Float3 {
986 x: self.x,
987 y: self.w,
988 z: self.x,
989 }
990 }
991
992 pub fn xwy(&self) -> Float3 {
994 Float3 {
995 x: self.x,
996 y: self.w,
997 z: self.y,
998 }
999 }
1000
1001 pub fn xwz(&self) -> Float3 {
1003 Float3 {
1004 x: self.x,
1005 y: self.w,
1006 z: self.z,
1007 }
1008 }
1009
1010 pub fn xww(&self) -> Float3 {
1012 Float3 {
1013 x: self.x,
1014 y: self.w,
1015 z: self.w,
1016 }
1017 }
1018
1019 pub fn yxx(&self) -> Float3 {
1021 Float3 {
1022 x: self.y,
1023 y: self.x,
1024 z: self.x,
1025 }
1026 }
1027
1028 pub fn yxy(&self) -> Float3 {
1030 Float3 {
1031 x: self.y,
1032 y: self.x,
1033 z: self.y,
1034 }
1035 }
1036
1037 pub fn yxz(&self) -> Float3 {
1039 Float3 {
1040 x: self.y,
1041 y: self.x,
1042 z: self.z,
1043 }
1044 }
1045
1046 pub fn yxw(&self) -> Float3 {
1048 Float3 {
1049 x: self.y,
1050 y: self.x,
1051 z: self.w,
1052 }
1053 }
1054
1055 pub fn yyx(&self) -> Float3 {
1057 Float3 {
1058 x: self.y,
1059 y: self.y,
1060 z: self.x,
1061 }
1062 }
1063
1064 pub fn yyy(&self) -> Float3 {
1066 Float3 {
1067 x: self.y,
1068 y: self.y,
1069 z: self.y,
1070 }
1071 }
1072
1073 pub fn yyz(&self) -> Float3 {
1075 Float3 {
1076 x: self.y,
1077 y: self.y,
1078 z: self.z,
1079 }
1080 }
1081
1082 pub fn yyw(&self) -> Float3 {
1084 Float3 {
1085 x: self.y,
1086 y: self.y,
1087 z: self.w,
1088 }
1089 }
1090
1091 pub fn yzx(&self) -> Float3 {
1093 Float3 {
1094 x: self.y,
1095 y: self.z,
1096 z: self.x,
1097 }
1098 }
1099
1100 pub fn yzy(&self) -> Float3 {
1102 Float3 {
1103 x: self.y,
1104 y: self.z,
1105 z: self.y,
1106 }
1107 }
1108
1109 pub fn yzz(&self) -> Float3 {
1111 Float3 {
1112 x: self.y,
1113 y: self.z,
1114 z: self.z,
1115 }
1116 }
1117
1118 pub fn yzw(&self) -> Float3 {
1120 Float3 {
1121 x: self.y,
1122 y: self.z,
1123 z: self.w,
1124 }
1125 }
1126
1127 pub fn ywx(&self) -> Float3 {
1129 Float3 {
1130 x: self.y,
1131 y: self.w,
1132 z: self.x,
1133 }
1134 }
1135
1136 pub fn ywy(&self) -> Float3 {
1138 Float3 {
1139 x: self.y,
1140 y: self.w,
1141 z: self.y,
1142 }
1143 }
1144
1145 pub fn ywz(&self) -> Float3 {
1147 Float3 {
1148 x: self.y,
1149 y: self.w,
1150 z: self.z,
1151 }
1152 }
1153
1154 pub fn yww(&self) -> Float3 {
1156 Float3 {
1157 x: self.y,
1158 y: self.w,
1159 z: self.w,
1160 }
1161 }
1162
1163 pub fn zxx(&self) -> Float3 {
1165 Float3 {
1166 x: self.z,
1167 y: self.x,
1168 z: self.x,
1169 }
1170 }
1171
1172 pub fn zxy(&self) -> Float3 {
1174 Float3 {
1175 x: self.z,
1176 y: self.x,
1177 z: self.y,
1178 }
1179 }
1180
1181 pub fn zxz(&self) -> Float3 {
1183 Float3 {
1184 x: self.z,
1185 y: self.x,
1186 z: self.z,
1187 }
1188 }
1189
1190 pub fn zxw(&self) -> Float3 {
1192 Float3 {
1193 x: self.z,
1194 y: self.x,
1195 z: self.w,
1196 }
1197 }
1198
1199 pub fn zyx(&self) -> Float3 {
1201 Float3 {
1202 x: self.z,
1203 y: self.y,
1204 z: self.x,
1205 }
1206 }
1207
1208 pub fn zyy(&self) -> Float3 {
1210 Float3 {
1211 x: self.z,
1212 y: self.y,
1213 z: self.y,
1214 }
1215 }
1216
1217 pub fn zyz(&self) -> Float3 {
1219 Float3 {
1220 x: self.z,
1221 y: self.y,
1222 z: self.z,
1223 }
1224 }
1225
1226 pub fn zyw(&self) -> Float3 {
1228 Float3 {
1229 x: self.z,
1230 y: self.y,
1231 z: self.w,
1232 }
1233 }
1234
1235 pub fn zzx(&self) -> Float3 {
1237 Float3 {
1238 x: self.z,
1239 y: self.z,
1240 z: self.x,
1241 }
1242 }
1243
1244 pub fn zzy(&self) -> Float3 {
1246 Float3 {
1247 x: self.z,
1248 y: self.z,
1249 z: self.y,
1250 }
1251 }
1252
1253 pub fn zzz(&self) -> Float3 {
1255 Float3 {
1256 x: self.z,
1257 y: self.z,
1258 z: self.z,
1259 }
1260 }
1261
1262 pub fn zzw(&self) -> Float3 {
1264 Float3 {
1265 x: self.z,
1266 y: self.z,
1267 z: self.w,
1268 }
1269 }
1270
1271 pub fn zwx(&self) -> Float3 {
1273 Float3 {
1274 x: self.z,
1275 y: self.w,
1276 z: self.x,
1277 }
1278 }
1279
1280 pub fn zwy(&self) -> Float3 {
1282 Float3 {
1283 x: self.z,
1284 y: self.w,
1285 z: self.y,
1286 }
1287 }
1288
1289 pub fn zwz(&self) -> Float3 {
1291 Float3 {
1292 x: self.z,
1293 y: self.w,
1294 z: self.z,
1295 }
1296 }
1297
1298 pub fn zww(&self) -> Float3 {
1300 Float3 {
1301 x: self.z,
1302 y: self.w,
1303 z: self.w,
1304 }
1305 }
1306
1307 pub fn wxx(&self) -> Float3 {
1309 Float3 {
1310 x: self.w,
1311 y: self.x,
1312 z: self.x,
1313 }
1314 }
1315
1316 pub fn wxy(&self) -> Float3 {
1318 Float3 {
1319 x: self.w,
1320 y: self.x,
1321 z: self.y,
1322 }
1323 }
1324
1325 pub fn wxz(&self) -> Float3 {
1327 Float3 {
1328 x: self.w,
1329 y: self.x,
1330 z: self.z,
1331 }
1332 }
1333
1334 pub fn wxw(&self) -> Float3 {
1336 Float3 {
1337 x: self.w,
1338 y: self.x,
1339 z: self.w,
1340 }
1341 }
1342
1343 pub fn wyx(&self) -> Float3 {
1345 Float3 {
1346 x: self.w,
1347 y: self.y,
1348 z: self.x,
1349 }
1350 }
1351
1352 pub fn wyy(&self) -> Float3 {
1354 Float3 {
1355 x: self.w,
1356 y: self.y,
1357 z: self.y,
1358 }
1359 }
1360
1361 pub fn wyz(&self) -> Float3 {
1363 Float3 {
1364 x: self.w,
1365 y: self.y,
1366 z: self.z,
1367 }
1368 }
1369
1370 pub fn wyw(&self) -> Float3 {
1372 Float3 {
1373 x: self.w,
1374 y: self.y,
1375 z: self.w,
1376 }
1377 }
1378
1379 pub fn wzx(&self) -> Float3 {
1381 Float3 {
1382 x: self.w,
1383 y: self.z,
1384 z: self.x,
1385 }
1386 }
1387
1388 pub fn wzy(&self) -> Float3 {
1390 Float3 {
1391 x: self.w,
1392 y: self.z,
1393 z: self.y,
1394 }
1395 }
1396
1397 pub fn wzz(&self) -> Float3 {
1399 Float3 {
1400 x: self.w,
1401 y: self.z,
1402 z: self.z,
1403 }
1404 }
1405
1406 pub fn wzw(&self) -> Float3 {
1408 Float3 {
1409 x: self.w,
1410 y: self.z,
1411 z: self.w,
1412 }
1413 }
1414
1415 pub fn wwx(&self) -> Float3 {
1417 Float3 {
1418 x: self.w,
1419 y: self.w,
1420 z: self.x,
1421 }
1422 }
1423
1424 pub fn wwy(&self) -> Float3 {
1426 Float3 {
1427 x: self.w,
1428 y: self.w,
1429 z: self.y,
1430 }
1431 }
1432
1433 pub fn wwz(&self) -> Float3 {
1435 Float3 {
1436 x: self.w,
1437 y: self.w,
1438 z: self.z,
1439 }
1440 }
1441
1442 pub fn www(&self) -> Float3 {
1444 Float3 {
1445 x: self.w,
1446 y: self.w,
1447 z: self.w,
1448 }
1449 }
1450
1451 pub fn xxxx(&self) -> Float4 {
1453 Float4 {
1454 x: self.x,
1455 y: self.x,
1456 z: self.x,
1457 w: self.x,
1458 }
1459 }
1460
1461 pub fn xxxy(&self) -> Float4 {
1463 Float4 {
1464 x: self.x,
1465 y: self.x,
1466 z: self.x,
1467 w: self.y,
1468 }
1469 }
1470
1471 pub fn xxxz(&self) -> Float4 {
1473 Float4 {
1474 x: self.x,
1475 y: self.x,
1476 z: self.x,
1477 w: self.z,
1478 }
1479 }
1480
1481 pub fn xxxw(&self) -> Float4 {
1483 Float4 {
1484 x: self.x,
1485 y: self.x,
1486 z: self.x,
1487 w: self.w,
1488 }
1489 }
1490
1491 pub fn xxyx(&self) -> Float4 {
1493 Float4 {
1494 x: self.x,
1495 y: self.x,
1496 z: self.y,
1497 w: self.x,
1498 }
1499 }
1500
1501 pub fn xxyy(&self) -> Float4 {
1503 Float4 {
1504 x: self.x,
1505 y: self.x,
1506 z: self.y,
1507 w: self.y,
1508 }
1509 }
1510
1511 pub fn xxyz(&self) -> Float4 {
1513 Float4 {
1514 x: self.x,
1515 y: self.x,
1516 z: self.y,
1517 w: self.z,
1518 }
1519 }
1520
1521 pub fn xxyw(&self) -> Float4 {
1523 Float4 {
1524 x: self.x,
1525 y: self.x,
1526 z: self.y,
1527 w: self.w,
1528 }
1529 }
1530
1531 pub fn xxzx(&self) -> Float4 {
1533 Float4 {
1534 x: self.x,
1535 y: self.x,
1536 z: self.z,
1537 w: self.x,
1538 }
1539 }
1540
1541 pub fn xxzy(&self) -> Float4 {
1543 Float4 {
1544 x: self.x,
1545 y: self.x,
1546 z: self.z,
1547 w: self.y,
1548 }
1549 }
1550
1551 pub fn xxzz(&self) -> Float4 {
1553 Float4 {
1554 x: self.x,
1555 y: self.x,
1556 z: self.z,
1557 w: self.z,
1558 }
1559 }
1560
1561 pub fn xxzw(&self) -> Float4 {
1563 Float4 {
1564 x: self.x,
1565 y: self.x,
1566 z: self.z,
1567 w: self.w,
1568 }
1569 }
1570
1571 pub fn xxwx(&self) -> Float4 {
1573 Float4 {
1574 x: self.x,
1575 y: self.x,
1576 z: self.w,
1577 w: self.x,
1578 }
1579 }
1580
1581 pub fn xxwy(&self) -> Float4 {
1583 Float4 {
1584 x: self.x,
1585 y: self.x,
1586 z: self.w,
1587 w: self.y,
1588 }
1589 }
1590
1591 pub fn xxwz(&self) -> Float4 {
1593 Float4 {
1594 x: self.x,
1595 y: self.x,
1596 z: self.w,
1597 w: self.z,
1598 }
1599 }
1600
1601 pub fn xxww(&self) -> Float4 {
1603 Float4 {
1604 x: self.x,
1605 y: self.x,
1606 z: self.w,
1607 w: self.w,
1608 }
1609 }
1610
1611 pub fn xyxx(&self) -> Float4 {
1613 Float4 {
1614 x: self.x,
1615 y: self.y,
1616 z: self.x,
1617 w: self.x,
1618 }
1619 }
1620
1621 pub fn xyxy(&self) -> Float4 {
1623 Float4 {
1624 x: self.x,
1625 y: self.y,
1626 z: self.x,
1627 w: self.y,
1628 }
1629 }
1630
1631 pub fn xyxz(&self) -> Float4 {
1633 Float4 {
1634 x: self.x,
1635 y: self.y,
1636 z: self.x,
1637 w: self.z,
1638 }
1639 }
1640
1641 pub fn xyxw(&self) -> Float4 {
1643 Float4 {
1644 x: self.x,
1645 y: self.y,
1646 z: self.x,
1647 w: self.w,
1648 }
1649 }
1650
1651 pub fn xyyx(&self) -> Float4 {
1653 Float4 {
1654 x: self.x,
1655 y: self.y,
1656 z: self.y,
1657 w: self.x,
1658 }
1659 }
1660
1661 pub fn xyyy(&self) -> Float4 {
1663 Float4 {
1664 x: self.x,
1665 y: self.y,
1666 z: self.y,
1667 w: self.y,
1668 }
1669 }
1670
1671 pub fn xyyz(&self) -> Float4 {
1673 Float4 {
1674 x: self.x,
1675 y: self.y,
1676 z: self.y,
1677 w: self.z,
1678 }
1679 }
1680
1681 pub fn xyyw(&self) -> Float4 {
1683 Float4 {
1684 x: self.x,
1685 y: self.y,
1686 z: self.y,
1687 w: self.w,
1688 }
1689 }
1690
1691 pub fn xyzx(&self) -> Float4 {
1693 Float4 {
1694 x: self.x,
1695 y: self.y,
1696 z: self.z,
1697 w: self.x,
1698 }
1699 }
1700
1701 pub fn xyzy(&self) -> Float4 {
1703 Float4 {
1704 x: self.x,
1705 y: self.y,
1706 z: self.z,
1707 w: self.y,
1708 }
1709 }
1710
1711 pub fn xyzz(&self) -> Float4 {
1713 Float4 {
1714 x: self.x,
1715 y: self.y,
1716 z: self.z,
1717 w: self.z,
1718 }
1719 }
1720
1721 pub fn xyzw(&self) -> Float4 {
1723 Float4 {
1724 x: self.x,
1725 y: self.y,
1726 z: self.z,
1727 w: self.w,
1728 }
1729 }
1730
1731 pub fn xywx(&self) -> Float4 {
1733 Float4 {
1734 x: self.x,
1735 y: self.y,
1736 z: self.w,
1737 w: self.x,
1738 }
1739 }
1740
1741 pub fn xywy(&self) -> Float4 {
1743 Float4 {
1744 x: self.x,
1745 y: self.y,
1746 z: self.w,
1747 w: self.y,
1748 }
1749 }
1750
1751 pub fn xywz(&self) -> Float4 {
1753 Float4 {
1754 x: self.x,
1755 y: self.y,
1756 z: self.w,
1757 w: self.z,
1758 }
1759 }
1760
1761 pub fn xyww(&self) -> Float4 {
1763 Float4 {
1764 x: self.x,
1765 y: self.y,
1766 z: self.w,
1767 w: self.w,
1768 }
1769 }
1770
1771 pub fn xzxx(&self) -> Float4 {
1773 Float4 {
1774 x: self.x,
1775 y: self.z,
1776 z: self.x,
1777 w: self.x,
1778 }
1779 }
1780
1781 pub fn xzxy(&self) -> Float4 {
1783 Float4 {
1784 x: self.x,
1785 y: self.z,
1786 z: self.x,
1787 w: self.y,
1788 }
1789 }
1790
1791 pub fn xzxz(&self) -> Float4 {
1793 Float4 {
1794 x: self.x,
1795 y: self.z,
1796 z: self.x,
1797 w: self.z,
1798 }
1799 }
1800
1801 pub fn xzxw(&self) -> Float4 {
1803 Float4 {
1804 x: self.x,
1805 y: self.z,
1806 z: self.x,
1807 w: self.w,
1808 }
1809 }
1810
1811 pub fn xzyx(&self) -> Float4 {
1813 Float4 {
1814 x: self.x,
1815 y: self.z,
1816 z: self.y,
1817 w: self.x,
1818 }
1819 }
1820
1821 pub fn xzyy(&self) -> Float4 {
1823 Float4 {
1824 x: self.x,
1825 y: self.z,
1826 z: self.y,
1827 w: self.y,
1828 }
1829 }
1830
1831 pub fn xzyz(&self) -> Float4 {
1833 Float4 {
1834 x: self.x,
1835 y: self.z,
1836 z: self.y,
1837 w: self.z,
1838 }
1839 }
1840
1841 pub fn xzyw(&self) -> Float4 {
1843 Float4 {
1844 x: self.x,
1845 y: self.z,
1846 z: self.y,
1847 w: self.w,
1848 }
1849 }
1850
1851 pub fn xzzx(&self) -> Float4 {
1853 Float4 {
1854 x: self.x,
1855 y: self.z,
1856 z: self.z,
1857 w: self.x,
1858 }
1859 }
1860
1861 pub fn xzzy(&self) -> Float4 {
1863 Float4 {
1864 x: self.x,
1865 y: self.z,
1866 z: self.z,
1867 w: self.y,
1868 }
1869 }
1870
1871 pub fn xzzz(&self) -> Float4 {
1873 Float4 {
1874 x: self.x,
1875 y: self.z,
1876 z: self.z,
1877 w: self.z,
1878 }
1879 }
1880
1881 pub fn xzzw(&self) -> Float4 {
1883 Float4 {
1884 x: self.x,
1885 y: self.z,
1886 z: self.z,
1887 w: self.w,
1888 }
1889 }
1890
1891 pub fn xzwx(&self) -> Float4 {
1893 Float4 {
1894 x: self.x,
1895 y: self.z,
1896 z: self.w,
1897 w: self.x,
1898 }
1899 }
1900
1901 pub fn xzwy(&self) -> Float4 {
1903 Float4 {
1904 x: self.x,
1905 y: self.z,
1906 z: self.w,
1907 w: self.y,
1908 }
1909 }
1910
1911 pub fn xzwz(&self) -> Float4 {
1913 Float4 {
1914 x: self.x,
1915 y: self.z,
1916 z: self.w,
1917 w: self.z,
1918 }
1919 }
1920
1921 pub fn xzww(&self) -> Float4 {
1923 Float4 {
1924 x: self.x,
1925 y: self.z,
1926 z: self.w,
1927 w: self.w,
1928 }
1929 }
1930
1931 pub fn xwxx(&self) -> Float4 {
1933 Float4 {
1934 x: self.x,
1935 y: self.w,
1936 z: self.x,
1937 w: self.x,
1938 }
1939 }
1940
1941 pub fn xwxy(&self) -> Float4 {
1943 Float4 {
1944 x: self.x,
1945 y: self.w,
1946 z: self.x,
1947 w: self.y,
1948 }
1949 }
1950
1951 pub fn xwxz(&self) -> Float4 {
1953 Float4 {
1954 x: self.x,
1955 y: self.w,
1956 z: self.x,
1957 w: self.z,
1958 }
1959 }
1960
1961 pub fn xwxw(&self) -> Float4 {
1963 Float4 {
1964 x: self.x,
1965 y: self.w,
1966 z: self.x,
1967 w: self.w,
1968 }
1969 }
1970
1971 pub fn xwyx(&self) -> Float4 {
1973 Float4 {
1974 x: self.x,
1975 y: self.w,
1976 z: self.y,
1977 w: self.x,
1978 }
1979 }
1980
1981 pub fn xwyy(&self) -> Float4 {
1983 Float4 {
1984 x: self.x,
1985 y: self.w,
1986 z: self.y,
1987 w: self.y,
1988 }
1989 }
1990
1991 pub fn xwyz(&self) -> Float4 {
1993 Float4 {
1994 x: self.x,
1995 y: self.w,
1996 z: self.y,
1997 w: self.z,
1998 }
1999 }
2000
2001 pub fn xwyw(&self) -> Float4 {
2003 Float4 {
2004 x: self.x,
2005 y: self.w,
2006 z: self.y,
2007 w: self.w,
2008 }
2009 }
2010
2011 pub fn xwzx(&self) -> Float4 {
2013 Float4 {
2014 x: self.x,
2015 y: self.w,
2016 z: self.z,
2017 w: self.x,
2018 }
2019 }
2020
2021 pub fn xwzy(&self) -> Float4 {
2023 Float4 {
2024 x: self.x,
2025 y: self.w,
2026 z: self.z,
2027 w: self.y,
2028 }
2029 }
2030
2031 pub fn xwzz(&self) -> Float4 {
2033 Float4 {
2034 x: self.x,
2035 y: self.w,
2036 z: self.z,
2037 w: self.z,
2038 }
2039 }
2040
2041 pub fn xwzw(&self) -> Float4 {
2043 Float4 {
2044 x: self.x,
2045 y: self.w,
2046 z: self.z,
2047 w: self.w,
2048 }
2049 }
2050
2051 pub fn xwwx(&self) -> Float4 {
2053 Float4 {
2054 x: self.x,
2055 y: self.w,
2056 z: self.w,
2057 w: self.x,
2058 }
2059 }
2060
2061 pub fn xwwy(&self) -> Float4 {
2063 Float4 {
2064 x: self.x,
2065 y: self.w,
2066 z: self.w,
2067 w: self.y,
2068 }
2069 }
2070
2071 pub fn xwwz(&self) -> Float4 {
2073 Float4 {
2074 x: self.x,
2075 y: self.w,
2076 z: self.w,
2077 w: self.z,
2078 }
2079 }
2080
2081 pub fn xwww(&self) -> Float4 {
2083 Float4 {
2084 x: self.x,
2085 y: self.w,
2086 z: self.w,
2087 w: self.w,
2088 }
2089 }
2090
2091 pub fn yxxx(&self) -> Float4 {
2093 Float4 {
2094 x: self.y,
2095 y: self.x,
2096 z: self.x,
2097 w: self.x,
2098 }
2099 }
2100
2101 pub fn yxxy(&self) -> Float4 {
2103 Float4 {
2104 x: self.y,
2105 y: self.x,
2106 z: self.x,
2107 w: self.y,
2108 }
2109 }
2110
2111 pub fn yxxz(&self) -> Float4 {
2113 Float4 {
2114 x: self.y,
2115 y: self.x,
2116 z: self.x,
2117 w: self.z,
2118 }
2119 }
2120
2121 pub fn yxxw(&self) -> Float4 {
2123 Float4 {
2124 x: self.y,
2125 y: self.x,
2126 z: self.x,
2127 w: self.w,
2128 }
2129 }
2130
2131 pub fn yxyx(&self) -> Float4 {
2133 Float4 {
2134 x: self.y,
2135 y: self.x,
2136 z: self.y,
2137 w: self.x,
2138 }
2139 }
2140
2141 pub fn yxyy(&self) -> Float4 {
2143 Float4 {
2144 x: self.y,
2145 y: self.x,
2146 z: self.y,
2147 w: self.y,
2148 }
2149 }
2150
2151 pub fn yxyz(&self) -> Float4 {
2153 Float4 {
2154 x: self.y,
2155 y: self.x,
2156 z: self.y,
2157 w: self.z,
2158 }
2159 }
2160
2161 pub fn yxyw(&self) -> Float4 {
2163 Float4 {
2164 x: self.y,
2165 y: self.x,
2166 z: self.y,
2167 w: self.w,
2168 }
2169 }
2170
2171 pub fn yxzx(&self) -> Float4 {
2173 Float4 {
2174 x: self.y,
2175 y: self.x,
2176 z: self.z,
2177 w: self.x,
2178 }
2179 }
2180
2181 pub fn yxzy(&self) -> Float4 {
2183 Float4 {
2184 x: self.y,
2185 y: self.x,
2186 z: self.z,
2187 w: self.y,
2188 }
2189 }
2190
2191 pub fn yxzz(&self) -> Float4 {
2193 Float4 {
2194 x: self.y,
2195 y: self.x,
2196 z: self.z,
2197 w: self.z,
2198 }
2199 }
2200
2201 pub fn yxzw(&self) -> Float4 {
2203 Float4 {
2204 x: self.y,
2205 y: self.x,
2206 z: self.z,
2207 w: self.w,
2208 }
2209 }
2210
2211 pub fn yxwx(&self) -> Float4 {
2213 Float4 {
2214 x: self.y,
2215 y: self.x,
2216 z: self.w,
2217 w: self.x,
2218 }
2219 }
2220
2221 pub fn yxwy(&self) -> Float4 {
2223 Float4 {
2224 x: self.y,
2225 y: self.x,
2226 z: self.w,
2227 w: self.y,
2228 }
2229 }
2230
2231 pub fn yxwz(&self) -> Float4 {
2233 Float4 {
2234 x: self.y,
2235 y: self.x,
2236 z: self.w,
2237 w: self.z,
2238 }
2239 }
2240
2241 pub fn yxww(&self) -> Float4 {
2243 Float4 {
2244 x: self.y,
2245 y: self.x,
2246 z: self.w,
2247 w: self.w,
2248 }
2249 }
2250
2251 pub fn yyxx(&self) -> Float4 {
2253 Float4 {
2254 x: self.y,
2255 y: self.y,
2256 z: self.x,
2257 w: self.x,
2258 }
2259 }
2260
2261 pub fn yyxy(&self) -> Float4 {
2263 Float4 {
2264 x: self.y,
2265 y: self.y,
2266 z: self.x,
2267 w: self.y,
2268 }
2269 }
2270
2271 pub fn yyxz(&self) -> Float4 {
2273 Float4 {
2274 x: self.y,
2275 y: self.y,
2276 z: self.x,
2277 w: self.z,
2278 }
2279 }
2280
2281 pub fn yyxw(&self) -> Float4 {
2283 Float4 {
2284 x: self.y,
2285 y: self.y,
2286 z: self.x,
2287 w: self.w,
2288 }
2289 }
2290
2291 pub fn yyyx(&self) -> Float4 {
2293 Float4 {
2294 x: self.y,
2295 y: self.y,
2296 z: self.y,
2297 w: self.x,
2298 }
2299 }
2300
2301 pub fn yyyy(&self) -> Float4 {
2303 Float4 {
2304 x: self.y,
2305 y: self.y,
2306 z: self.y,
2307 w: self.y,
2308 }
2309 }
2310
2311 pub fn yyyz(&self) -> Float4 {
2313 Float4 {
2314 x: self.y,
2315 y: self.y,
2316 z: self.y,
2317 w: self.z,
2318 }
2319 }
2320
2321 pub fn yyyw(&self) -> Float4 {
2323 Float4 {
2324 x: self.y,
2325 y: self.y,
2326 z: self.y,
2327 w: self.w,
2328 }
2329 }
2330
2331 pub fn yyzx(&self) -> Float4 {
2333 Float4 {
2334 x: self.y,
2335 y: self.y,
2336 z: self.z,
2337 w: self.x,
2338 }
2339 }
2340
2341 pub fn yyzy(&self) -> Float4 {
2343 Float4 {
2344 x: self.y,
2345 y: self.y,
2346 z: self.z,
2347 w: self.y,
2348 }
2349 }
2350
2351 pub fn yyzz(&self) -> Float4 {
2353 Float4 {
2354 x: self.y,
2355 y: self.y,
2356 z: self.z,
2357 w: self.z,
2358 }
2359 }
2360
2361 pub fn yyzw(&self) -> Float4 {
2363 Float4 {
2364 x: self.y,
2365 y: self.y,
2366 z: self.z,
2367 w: self.w,
2368 }
2369 }
2370
2371 pub fn yywx(&self) -> Float4 {
2373 Float4 {
2374 x: self.y,
2375 y: self.y,
2376 z: self.w,
2377 w: self.x,
2378 }
2379 }
2380
2381 pub fn yywy(&self) -> Float4 {
2383 Float4 {
2384 x: self.y,
2385 y: self.y,
2386 z: self.w,
2387 w: self.y,
2388 }
2389 }
2390
2391 pub fn yywz(&self) -> Float4 {
2393 Float4 {
2394 x: self.y,
2395 y: self.y,
2396 z: self.w,
2397 w: self.z,
2398 }
2399 }
2400
2401 pub fn yyww(&self) -> Float4 {
2403 Float4 {
2404 x: self.y,
2405 y: self.y,
2406 z: self.w,
2407 w: self.w,
2408 }
2409 }
2410
2411 pub fn yzxx(&self) -> Float4 {
2413 Float4 {
2414 x: self.y,
2415 y: self.z,
2416 z: self.x,
2417 w: self.x,
2418 }
2419 }
2420
2421 pub fn yzxy(&self) -> Float4 {
2423 Float4 {
2424 x: self.y,
2425 y: self.z,
2426 z: self.x,
2427 w: self.y,
2428 }
2429 }
2430
2431 pub fn yzxz(&self) -> Float4 {
2433 Float4 {
2434 x: self.y,
2435 y: self.z,
2436 z: self.x,
2437 w: self.z,
2438 }
2439 }
2440
2441 pub fn yzxw(&self) -> Float4 {
2443 Float4 {
2444 x: self.y,
2445 y: self.z,
2446 z: self.x,
2447 w: self.w,
2448 }
2449 }
2450
2451 pub fn yzyx(&self) -> Float4 {
2453 Float4 {
2454 x: self.y,
2455 y: self.z,
2456 z: self.y,
2457 w: self.x,
2458 }
2459 }
2460
2461 pub fn yzyy(&self) -> Float4 {
2463 Float4 {
2464 x: self.y,
2465 y: self.z,
2466 z: self.y,
2467 w: self.y,
2468 }
2469 }
2470
2471 pub fn yzyz(&self) -> Float4 {
2473 Float4 {
2474 x: self.y,
2475 y: self.z,
2476 z: self.y,
2477 w: self.z,
2478 }
2479 }
2480
2481 pub fn yzyw(&self) -> Float4 {
2483 Float4 {
2484 x: self.y,
2485 y: self.z,
2486 z: self.y,
2487 w: self.w,
2488 }
2489 }
2490
2491 pub fn yzzx(&self) -> Float4 {
2493 Float4 {
2494 x: self.y,
2495 y: self.z,
2496 z: self.z,
2497 w: self.x,
2498 }
2499 }
2500
2501 pub fn yzzy(&self) -> Float4 {
2503 Float4 {
2504 x: self.y,
2505 y: self.z,
2506 z: self.z,
2507 w: self.y,
2508 }
2509 }
2510
2511 pub fn yzzz(&self) -> Float4 {
2513 Float4 {
2514 x: self.y,
2515 y: self.z,
2516 z: self.z,
2517 w: self.z,
2518 }
2519 }
2520
2521 pub fn yzzw(&self) -> Float4 {
2523 Float4 {
2524 x: self.y,
2525 y: self.z,
2526 z: self.z,
2527 w: self.w,
2528 }
2529 }
2530
2531 pub fn yzwx(&self) -> Float4 {
2533 Float4 {
2534 x: self.y,
2535 y: self.z,
2536 z: self.w,
2537 w: self.x,
2538 }
2539 }
2540
2541 pub fn yzwy(&self) -> Float4 {
2543 Float4 {
2544 x: self.y,
2545 y: self.z,
2546 z: self.w,
2547 w: self.y,
2548 }
2549 }
2550
2551 pub fn yzwz(&self) -> Float4 {
2553 Float4 {
2554 x: self.y,
2555 y: self.z,
2556 z: self.w,
2557 w: self.z,
2558 }
2559 }
2560
2561 pub fn yzww(&self) -> Float4 {
2563 Float4 {
2564 x: self.y,
2565 y: self.z,
2566 z: self.w,
2567 w: self.w,
2568 }
2569 }
2570
2571 pub fn ywxx(&self) -> Float4 {
2573 Float4 {
2574 x: self.y,
2575 y: self.w,
2576 z: self.x,
2577 w: self.x,
2578 }
2579 }
2580
2581 pub fn ywxy(&self) -> Float4 {
2583 Float4 {
2584 x: self.y,
2585 y: self.w,
2586 z: self.x,
2587 w: self.y,
2588 }
2589 }
2590
2591 pub fn ywxz(&self) -> Float4 {
2593 Float4 {
2594 x: self.y,
2595 y: self.w,
2596 z: self.x,
2597 w: self.z,
2598 }
2599 }
2600
2601 pub fn ywxw(&self) -> Float4 {
2603 Float4 {
2604 x: self.y,
2605 y: self.w,
2606 z: self.x,
2607 w: self.w,
2608 }
2609 }
2610
2611 pub fn ywyx(&self) -> Float4 {
2613 Float4 {
2614 x: self.y,
2615 y: self.w,
2616 z: self.y,
2617 w: self.x,
2618 }
2619 }
2620
2621 pub fn ywyy(&self) -> Float4 {
2623 Float4 {
2624 x: self.y,
2625 y: self.w,
2626 z: self.y,
2627 w: self.y,
2628 }
2629 }
2630
2631 pub fn ywyz(&self) -> Float4 {
2633 Float4 {
2634 x: self.y,
2635 y: self.w,
2636 z: self.y,
2637 w: self.z,
2638 }
2639 }
2640
2641 pub fn ywyw(&self) -> Float4 {
2643 Float4 {
2644 x: self.y,
2645 y: self.w,
2646 z: self.y,
2647 w: self.w,
2648 }
2649 }
2650
2651 pub fn ywzx(&self) -> Float4 {
2653 Float4 {
2654 x: self.y,
2655 y: self.w,
2656 z: self.z,
2657 w: self.x,
2658 }
2659 }
2660
2661 pub fn ywzy(&self) -> Float4 {
2663 Float4 {
2664 x: self.y,
2665 y: self.w,
2666 z: self.z,
2667 w: self.y,
2668 }
2669 }
2670
2671 pub fn ywzz(&self) -> Float4 {
2673 Float4 {
2674 x: self.y,
2675 y: self.w,
2676 z: self.z,
2677 w: self.z,
2678 }
2679 }
2680
2681 pub fn ywzw(&self) -> Float4 {
2683 Float4 {
2684 x: self.y,
2685 y: self.w,
2686 z: self.z,
2687 w: self.w,
2688 }
2689 }
2690
2691 pub fn ywwx(&self) -> Float4 {
2693 Float4 {
2694 x: self.y,
2695 y: self.w,
2696 z: self.w,
2697 w: self.x,
2698 }
2699 }
2700
2701 pub fn ywwy(&self) -> Float4 {
2703 Float4 {
2704 x: self.y,
2705 y: self.w,
2706 z: self.w,
2707 w: self.y,
2708 }
2709 }
2710
2711 pub fn ywwz(&self) -> Float4 {
2713 Float4 {
2714 x: self.y,
2715 y: self.w,
2716 z: self.w,
2717 w: self.z,
2718 }
2719 }
2720
2721 pub fn ywww(&self) -> Float4 {
2723 Float4 {
2724 x: self.y,
2725 y: self.w,
2726 z: self.w,
2727 w: self.w,
2728 }
2729 }
2730
2731 pub fn zxxx(&self) -> Float4 {
2733 Float4 {
2734 x: self.z,
2735 y: self.x,
2736 z: self.x,
2737 w: self.x,
2738 }
2739 }
2740
2741 pub fn zxxy(&self) -> Float4 {
2743 Float4 {
2744 x: self.z,
2745 y: self.x,
2746 z: self.x,
2747 w: self.y,
2748 }
2749 }
2750
2751 pub fn zxxz(&self) -> Float4 {
2753 Float4 {
2754 x: self.z,
2755 y: self.x,
2756 z: self.x,
2757 w: self.z,
2758 }
2759 }
2760
2761 pub fn zxxw(&self) -> Float4 {
2763 Float4 {
2764 x: self.z,
2765 y: self.x,
2766 z: self.x,
2767 w: self.w,
2768 }
2769 }
2770
2771 pub fn zxyx(&self) -> Float4 {
2773 Float4 {
2774 x: self.z,
2775 y: self.x,
2776 z: self.y,
2777 w: self.x,
2778 }
2779 }
2780
2781 pub fn zxyy(&self) -> Float4 {
2783 Float4 {
2784 x: self.z,
2785 y: self.x,
2786 z: self.y,
2787 w: self.y,
2788 }
2789 }
2790
2791 pub fn zxyz(&self) -> Float4 {
2793 Float4 {
2794 x: self.z,
2795 y: self.x,
2796 z: self.y,
2797 w: self.z,
2798 }
2799 }
2800
2801 pub fn zxyw(&self) -> Float4 {
2803 Float4 {
2804 x: self.z,
2805 y: self.x,
2806 z: self.y,
2807 w: self.w,
2808 }
2809 }
2810
2811 pub fn zxzx(&self) -> Float4 {
2813 Float4 {
2814 x: self.z,
2815 y: self.x,
2816 z: self.z,
2817 w: self.x,
2818 }
2819 }
2820
2821 pub fn zxzy(&self) -> Float4 {
2823 Float4 {
2824 x: self.z,
2825 y: self.x,
2826 z: self.z,
2827 w: self.y,
2828 }
2829 }
2830
2831 pub fn zxzz(&self) -> Float4 {
2833 Float4 {
2834 x: self.z,
2835 y: self.x,
2836 z: self.z,
2837 w: self.z,
2838 }
2839 }
2840
2841 pub fn zxzw(&self) -> Float4 {
2843 Float4 {
2844 x: self.z,
2845 y: self.x,
2846 z: self.z,
2847 w: self.w,
2848 }
2849 }
2850
2851 pub fn zxwx(&self) -> Float4 {
2853 Float4 {
2854 x: self.z,
2855 y: self.x,
2856 z: self.w,
2857 w: self.x,
2858 }
2859 }
2860
2861 pub fn zxwy(&self) -> Float4 {
2863 Float4 {
2864 x: self.z,
2865 y: self.x,
2866 z: self.w,
2867 w: self.y,
2868 }
2869 }
2870
2871 pub fn zxwz(&self) -> Float4 {
2873 Float4 {
2874 x: self.z,
2875 y: self.x,
2876 z: self.w,
2877 w: self.z,
2878 }
2879 }
2880
2881 pub fn zxww(&self) -> Float4 {
2883 Float4 {
2884 x: self.z,
2885 y: self.x,
2886 z: self.w,
2887 w: self.w,
2888 }
2889 }
2890
2891 pub fn zyxx(&self) -> Float4 {
2893 Float4 {
2894 x: self.z,
2895 y: self.y,
2896 z: self.x,
2897 w: self.x,
2898 }
2899 }
2900
2901 pub fn zyxy(&self) -> Float4 {
2903 Float4 {
2904 x: self.z,
2905 y: self.y,
2906 z: self.x,
2907 w: self.y,
2908 }
2909 }
2910
2911 pub fn zyxz(&self) -> Float4 {
2913 Float4 {
2914 x: self.z,
2915 y: self.y,
2916 z: self.x,
2917 w: self.z,
2918 }
2919 }
2920
2921 pub fn zyxw(&self) -> Float4 {
2923 Float4 {
2924 x: self.z,
2925 y: self.y,
2926 z: self.x,
2927 w: self.w,
2928 }
2929 }
2930
2931 pub fn zyyx(&self) -> Float4 {
2933 Float4 {
2934 x: self.z,
2935 y: self.y,
2936 z: self.y,
2937 w: self.x,
2938 }
2939 }
2940
2941 pub fn zyyy(&self) -> Float4 {
2943 Float4 {
2944 x: self.z,
2945 y: self.y,
2946 z: self.y,
2947 w: self.y,
2948 }
2949 }
2950
2951 pub fn zyyz(&self) -> Float4 {
2953 Float4 {
2954 x: self.z,
2955 y: self.y,
2956 z: self.y,
2957 w: self.z,
2958 }
2959 }
2960
2961 pub fn zyyw(&self) -> Float4 {
2963 Float4 {
2964 x: self.z,
2965 y: self.y,
2966 z: self.y,
2967 w: self.w,
2968 }
2969 }
2970
2971 pub fn zyzx(&self) -> Float4 {
2973 Float4 {
2974 x: self.z,
2975 y: self.y,
2976 z: self.z,
2977 w: self.x,
2978 }
2979 }
2980
2981 pub fn zyzy(&self) -> Float4 {
2983 Float4 {
2984 x: self.z,
2985 y: self.y,
2986 z: self.z,
2987 w: self.y,
2988 }
2989 }
2990
2991 pub fn zyzz(&self) -> Float4 {
2993 Float4 {
2994 x: self.z,
2995 y: self.y,
2996 z: self.z,
2997 w: self.z,
2998 }
2999 }
3000
3001 pub fn zyzw(&self) -> Float4 {
3003 Float4 {
3004 x: self.z,
3005 y: self.y,
3006 z: self.z,
3007 w: self.w,
3008 }
3009 }
3010
3011 pub fn zywx(&self) -> Float4 {
3013 Float4 {
3014 x: self.z,
3015 y: self.y,
3016 z: self.w,
3017 w: self.x,
3018 }
3019 }
3020
3021 pub fn zywy(&self) -> Float4 {
3023 Float4 {
3024 x: self.z,
3025 y: self.y,
3026 z: self.w,
3027 w: self.y,
3028 }
3029 }
3030
3031 pub fn zywz(&self) -> Float4 {
3033 Float4 {
3034 x: self.z,
3035 y: self.y,
3036 z: self.w,
3037 w: self.z,
3038 }
3039 }
3040
3041 pub fn zyww(&self) -> Float4 {
3043 Float4 {
3044 x: self.z,
3045 y: self.y,
3046 z: self.w,
3047 w: self.w,
3048 }
3049 }
3050
3051 pub fn zzxx(&self) -> Float4 {
3053 Float4 {
3054 x: self.z,
3055 y: self.z,
3056 z: self.x,
3057 w: self.x,
3058 }
3059 }
3060
3061 pub fn zzxy(&self) -> Float4 {
3063 Float4 {
3064 x: self.z,
3065 y: self.z,
3066 z: self.x,
3067 w: self.y,
3068 }
3069 }
3070
3071 pub fn zzxz(&self) -> Float4 {
3073 Float4 {
3074 x: self.z,
3075 y: self.z,
3076 z: self.x,
3077 w: self.z,
3078 }
3079 }
3080
3081 pub fn zzxw(&self) -> Float4 {
3083 Float4 {
3084 x: self.z,
3085 y: self.z,
3086 z: self.x,
3087 w: self.w,
3088 }
3089 }
3090
3091 pub fn zzyx(&self) -> Float4 {
3093 Float4 {
3094 x: self.z,
3095 y: self.z,
3096 z: self.y,
3097 w: self.x,
3098 }
3099 }
3100
3101 pub fn zzyy(&self) -> Float4 {
3103 Float4 {
3104 x: self.z,
3105 y: self.z,
3106 z: self.y,
3107 w: self.y,
3108 }
3109 }
3110
3111 pub fn zzyz(&self) -> Float4 {
3113 Float4 {
3114 x: self.z,
3115 y: self.z,
3116 z: self.y,
3117 w: self.z,
3118 }
3119 }
3120
3121 pub fn zzyw(&self) -> Float4 {
3123 Float4 {
3124 x: self.z,
3125 y: self.z,
3126 z: self.y,
3127 w: self.w,
3128 }
3129 }
3130
3131 pub fn zzzx(&self) -> Float4 {
3133 Float4 {
3134 x: self.z,
3135 y: self.z,
3136 z: self.z,
3137 w: self.x,
3138 }
3139 }
3140
3141 pub fn zzzy(&self) -> Float4 {
3143 Float4 {
3144 x: self.z,
3145 y: self.z,
3146 z: self.z,
3147 w: self.y,
3148 }
3149 }
3150
3151 pub fn zzzz(&self) -> Float4 {
3153 Float4 {
3154 x: self.z,
3155 y: self.z,
3156 z: self.z,
3157 w: self.z,
3158 }
3159 }
3160
3161 pub fn zzzw(&self) -> Float4 {
3163 Float4 {
3164 x: self.z,
3165 y: self.z,
3166 z: self.z,
3167 w: self.w,
3168 }
3169 }
3170
3171 pub fn zzwx(&self) -> Float4 {
3173 Float4 {
3174 x: self.z,
3175 y: self.z,
3176 z: self.w,
3177 w: self.x,
3178 }
3179 }
3180
3181 pub fn zzwy(&self) -> Float4 {
3183 Float4 {
3184 x: self.z,
3185 y: self.z,
3186 z: self.w,
3187 w: self.y,
3188 }
3189 }
3190
3191 pub fn zzwz(&self) -> Float4 {
3193 Float4 {
3194 x: self.z,
3195 y: self.z,
3196 z: self.w,
3197 w: self.z,
3198 }
3199 }
3200
3201 pub fn zzww(&self) -> Float4 {
3203 Float4 {
3204 x: self.z,
3205 y: self.z,
3206 z: self.w,
3207 w: self.w,
3208 }
3209 }
3210
3211 pub fn zwxx(&self) -> Float4 {
3213 Float4 {
3214 x: self.z,
3215 y: self.w,
3216 z: self.x,
3217 w: self.x,
3218 }
3219 }
3220
3221 pub fn zwxy(&self) -> Float4 {
3223 Float4 {
3224 x: self.z,
3225 y: self.w,
3226 z: self.x,
3227 w: self.y,
3228 }
3229 }
3230
3231 pub fn zwxz(&self) -> Float4 {
3233 Float4 {
3234 x: self.z,
3235 y: self.w,
3236 z: self.x,
3237 w: self.z,
3238 }
3239 }
3240
3241 pub fn zwxw(&self) -> Float4 {
3243 Float4 {
3244 x: self.z,
3245 y: self.w,
3246 z: self.x,
3247 w: self.w,
3248 }
3249 }
3250
3251 pub fn zwyx(&self) -> Float4 {
3253 Float4 {
3254 x: self.z,
3255 y: self.w,
3256 z: self.y,
3257 w: self.x,
3258 }
3259 }
3260
3261 pub fn zwyy(&self) -> Float4 {
3263 Float4 {
3264 x: self.z,
3265 y: self.w,
3266 z: self.y,
3267 w: self.y,
3268 }
3269 }
3270
3271 pub fn zwyz(&self) -> Float4 {
3273 Float4 {
3274 x: self.z,
3275 y: self.w,
3276 z: self.y,
3277 w: self.z,
3278 }
3279 }
3280
3281 pub fn zwyw(&self) -> Float4 {
3283 Float4 {
3284 x: self.z,
3285 y: self.w,
3286 z: self.y,
3287 w: self.w,
3288 }
3289 }
3290
3291 pub fn zwzx(&self) -> Float4 {
3293 Float4 {
3294 x: self.z,
3295 y: self.w,
3296 z: self.z,
3297 w: self.x,
3298 }
3299 }
3300
3301 pub fn zwzy(&self) -> Float4 {
3303 Float4 {
3304 x: self.z,
3305 y: self.w,
3306 z: self.z,
3307 w: self.y,
3308 }
3309 }
3310
3311 pub fn zwzz(&self) -> Float4 {
3313 Float4 {
3314 x: self.z,
3315 y: self.w,
3316 z: self.z,
3317 w: self.z,
3318 }
3319 }
3320
3321 pub fn zwzw(&self) -> Float4 {
3323 Float4 {
3324 x: self.z,
3325 y: self.w,
3326 z: self.z,
3327 w: self.w,
3328 }
3329 }
3330
3331 pub fn zwwx(&self) -> Float4 {
3333 Float4 {
3334 x: self.z,
3335 y: self.w,
3336 z: self.w,
3337 w: self.x,
3338 }
3339 }
3340
3341 pub fn zwwy(&self) -> Float4 {
3343 Float4 {
3344 x: self.z,
3345 y: self.w,
3346 z: self.w,
3347 w: self.y,
3348 }
3349 }
3350
3351 pub fn zwwz(&self) -> Float4 {
3353 Float4 {
3354 x: self.z,
3355 y: self.w,
3356 z: self.w,
3357 w: self.z,
3358 }
3359 }
3360
3361 pub fn zwww(&self) -> Float4 {
3363 Float4 {
3364 x: self.z,
3365 y: self.w,
3366 z: self.w,
3367 w: self.w,
3368 }
3369 }
3370
3371 pub fn wxxx(&self) -> Float4 {
3373 Float4 {
3374 x: self.w,
3375 y: self.x,
3376 z: self.x,
3377 w: self.x,
3378 }
3379 }
3380
3381 pub fn wxxy(&self) -> Float4 {
3383 Float4 {
3384 x: self.w,
3385 y: self.x,
3386 z: self.x,
3387 w: self.y,
3388 }
3389 }
3390
3391 pub fn wxxz(&self) -> Float4 {
3393 Float4 {
3394 x: self.w,
3395 y: self.x,
3396 z: self.x,
3397 w: self.z,
3398 }
3399 }
3400
3401 pub fn wxxw(&self) -> Float4 {
3403 Float4 {
3404 x: self.w,
3405 y: self.x,
3406 z: self.x,
3407 w: self.w,
3408 }
3409 }
3410
3411 pub fn wxyx(&self) -> Float4 {
3413 Float4 {
3414 x: self.w,
3415 y: self.x,
3416 z: self.y,
3417 w: self.x,
3418 }
3419 }
3420
3421 pub fn wxyy(&self) -> Float4 {
3423 Float4 {
3424 x: self.w,
3425 y: self.x,
3426 z: self.y,
3427 w: self.y,
3428 }
3429 }
3430
3431 pub fn wxyz(&self) -> Float4 {
3433 Float4 {
3434 x: self.w,
3435 y: self.x,
3436 z: self.y,
3437 w: self.z,
3438 }
3439 }
3440
3441 pub fn wxyw(&self) -> Float4 {
3443 Float4 {
3444 x: self.w,
3445 y: self.x,
3446 z: self.y,
3447 w: self.w,
3448 }
3449 }
3450
3451 pub fn wxzx(&self) -> Float4 {
3453 Float4 {
3454 x: self.w,
3455 y: self.x,
3456 z: self.z,
3457 w: self.x,
3458 }
3459 }
3460
3461 pub fn wxzy(&self) -> Float4 {
3463 Float4 {
3464 x: self.w,
3465 y: self.x,
3466 z: self.z,
3467 w: self.y,
3468 }
3469 }
3470
3471 pub fn wxzz(&self) -> Float4 {
3473 Float4 {
3474 x: self.w,
3475 y: self.x,
3476 z: self.z,
3477 w: self.z,
3478 }
3479 }
3480
3481 pub fn wxzw(&self) -> Float4 {
3483 Float4 {
3484 x: self.w,
3485 y: self.x,
3486 z: self.z,
3487 w: self.w,
3488 }
3489 }
3490
3491 pub fn wxwx(&self) -> Float4 {
3493 Float4 {
3494 x: self.w,
3495 y: self.x,
3496 z: self.w,
3497 w: self.x,
3498 }
3499 }
3500
3501 pub fn wxwy(&self) -> Float4 {
3503 Float4 {
3504 x: self.w,
3505 y: self.x,
3506 z: self.w,
3507 w: self.y,
3508 }
3509 }
3510
3511 pub fn wxwz(&self) -> Float4 {
3513 Float4 {
3514 x: self.w,
3515 y: self.x,
3516 z: self.w,
3517 w: self.z,
3518 }
3519 }
3520
3521 pub fn wxww(&self) -> Float4 {
3523 Float4 {
3524 x: self.w,
3525 y: self.x,
3526 z: self.w,
3527 w: self.w,
3528 }
3529 }
3530
3531 pub fn wyxx(&self) -> Float4 {
3533 Float4 {
3534 x: self.w,
3535 y: self.y,
3536 z: self.x,
3537 w: self.x,
3538 }
3539 }
3540
3541 pub fn wyxy(&self) -> Float4 {
3543 Float4 {
3544 x: self.w,
3545 y: self.y,
3546 z: self.x,
3547 w: self.y,
3548 }
3549 }
3550
3551 pub fn wyxz(&self) -> Float4 {
3553 Float4 {
3554 x: self.w,
3555 y: self.y,
3556 z: self.x,
3557 w: self.z,
3558 }
3559 }
3560
3561 pub fn wyxw(&self) -> Float4 {
3563 Float4 {
3564 x: self.w,
3565 y: self.y,
3566 z: self.x,
3567 w: self.w,
3568 }
3569 }
3570
3571 pub fn wyyx(&self) -> Float4 {
3573 Float4 {
3574 x: self.w,
3575 y: self.y,
3576 z: self.y,
3577 w: self.x,
3578 }
3579 }
3580
3581 pub fn wyyy(&self) -> Float4 {
3583 Float4 {
3584 x: self.w,
3585 y: self.y,
3586 z: self.y,
3587 w: self.y,
3588 }
3589 }
3590
3591 pub fn wyyz(&self) -> Float4 {
3593 Float4 {
3594 x: self.w,
3595 y: self.y,
3596 z: self.y,
3597 w: self.z,
3598 }
3599 }
3600
3601 pub fn wyyw(&self) -> Float4 {
3603 Float4 {
3604 x: self.w,
3605 y: self.y,
3606 z: self.y,
3607 w: self.w,
3608 }
3609 }
3610
3611 pub fn wyzx(&self) -> Float4 {
3613 Float4 {
3614 x: self.w,
3615 y: self.y,
3616 z: self.z,
3617 w: self.x,
3618 }
3619 }
3620
3621 pub fn wyzy(&self) -> Float4 {
3623 Float4 {
3624 x: self.w,
3625 y: self.y,
3626 z: self.z,
3627 w: self.y,
3628 }
3629 }
3630
3631 pub fn wyzz(&self) -> Float4 {
3633 Float4 {
3634 x: self.w,
3635 y: self.y,
3636 z: self.z,
3637 w: self.z,
3638 }
3639 }
3640
3641 pub fn wyzw(&self) -> Float4 {
3643 Float4 {
3644 x: self.w,
3645 y: self.y,
3646 z: self.z,
3647 w: self.w,
3648 }
3649 }
3650
3651 pub fn wywx(&self) -> Float4 {
3653 Float4 {
3654 x: self.w,
3655 y: self.y,
3656 z: self.w,
3657 w: self.x,
3658 }
3659 }
3660
3661 pub fn wywy(&self) -> Float4 {
3663 Float4 {
3664 x: self.w,
3665 y: self.y,
3666 z: self.w,
3667 w: self.y,
3668 }
3669 }
3670
3671 pub fn wywz(&self) -> Float4 {
3673 Float4 {
3674 x: self.w,
3675 y: self.y,
3676 z: self.w,
3677 w: self.z,
3678 }
3679 }
3680
3681 pub fn wyww(&self) -> Float4 {
3683 Float4 {
3684 x: self.w,
3685 y: self.y,
3686 z: self.w,
3687 w: self.w,
3688 }
3689 }
3690
3691 pub fn wzxx(&self) -> Float4 {
3693 Float4 {
3694 x: self.w,
3695 y: self.z,
3696 z: self.x,
3697 w: self.x,
3698 }
3699 }
3700
3701 pub fn wzxy(&self) -> Float4 {
3703 Float4 {
3704 x: self.w,
3705 y: self.z,
3706 z: self.x,
3707 w: self.y,
3708 }
3709 }
3710
3711 pub fn wzxz(&self) -> Float4 {
3713 Float4 {
3714 x: self.w,
3715 y: self.z,
3716 z: self.x,
3717 w: self.z,
3718 }
3719 }
3720
3721 pub fn wzxw(&self) -> Float4 {
3723 Float4 {
3724 x: self.w,
3725 y: self.z,
3726 z: self.x,
3727 w: self.w,
3728 }
3729 }
3730
3731 pub fn wzyx(&self) -> Float4 {
3733 Float4 {
3734 x: self.w,
3735 y: self.z,
3736 z: self.y,
3737 w: self.x,
3738 }
3739 }
3740
3741 pub fn wzyy(&self) -> Float4 {
3743 Float4 {
3744 x: self.w,
3745 y: self.z,
3746 z: self.y,
3747 w: self.y,
3748 }
3749 }
3750
3751 pub fn wzyz(&self) -> Float4 {
3753 Float4 {
3754 x: self.w,
3755 y: self.z,
3756 z: self.y,
3757 w: self.z,
3758 }
3759 }
3760
3761 pub fn wzyw(&self) -> Float4 {
3763 Float4 {
3764 x: self.w,
3765 y: self.z,
3766 z: self.y,
3767 w: self.w,
3768 }
3769 }
3770
3771 pub fn wzzx(&self) -> Float4 {
3773 Float4 {
3774 x: self.w,
3775 y: self.z,
3776 z: self.z,
3777 w: self.x,
3778 }
3779 }
3780
3781 pub fn wzzy(&self) -> Float4 {
3783 Float4 {
3784 x: self.w,
3785 y: self.z,
3786 z: self.z,
3787 w: self.y,
3788 }
3789 }
3790
3791 pub fn wzzz(&self) -> Float4 {
3793 Float4 {
3794 x: self.w,
3795 y: self.z,
3796 z: self.z,
3797 w: self.z,
3798 }
3799 }
3800
3801 pub fn wzzw(&self) -> Float4 {
3803 Float4 {
3804 x: self.w,
3805 y: self.z,
3806 z: self.z,
3807 w: self.w,
3808 }
3809 }
3810
3811 pub fn wzwx(&self) -> Float4 {
3813 Float4 {
3814 x: self.w,
3815 y: self.z,
3816 z: self.w,
3817 w: self.x,
3818 }
3819 }
3820
3821 pub fn wzwy(&self) -> Float4 {
3823 Float4 {
3824 x: self.w,
3825 y: self.z,
3826 z: self.w,
3827 w: self.y,
3828 }
3829 }
3830
3831 pub fn wzwz(&self) -> Float4 {
3833 Float4 {
3834 x: self.w,
3835 y: self.z,
3836 z: self.w,
3837 w: self.z,
3838 }
3839 }
3840
3841 pub fn wzww(&self) -> Float4 {
3843 Float4 {
3844 x: self.w,
3845 y: self.z,
3846 z: self.w,
3847 w: self.w,
3848 }
3849 }
3850
3851 pub fn wwxx(&self) -> Float4 {
3853 Float4 {
3854 x: self.w,
3855 y: self.w,
3856 z: self.x,
3857 w: self.x,
3858 }
3859 }
3860
3861 pub fn wwxy(&self) -> Float4 {
3863 Float4 {
3864 x: self.w,
3865 y: self.w,
3866 z: self.x,
3867 w: self.y,
3868 }
3869 }
3870
3871 pub fn wwxz(&self) -> Float4 {
3873 Float4 {
3874 x: self.w,
3875 y: self.w,
3876 z: self.x,
3877 w: self.z,
3878 }
3879 }
3880
3881 pub fn wwxw(&self) -> Float4 {
3883 Float4 {
3884 x: self.w,
3885 y: self.w,
3886 z: self.x,
3887 w: self.w,
3888 }
3889 }
3890
3891 pub fn wwyx(&self) -> Float4 {
3893 Float4 {
3894 x: self.w,
3895 y: self.w,
3896 z: self.y,
3897 w: self.x,
3898 }
3899 }
3900
3901 pub fn wwyy(&self) -> Float4 {
3903 Float4 {
3904 x: self.w,
3905 y: self.w,
3906 z: self.y,
3907 w: self.y,
3908 }
3909 }
3910
3911 pub fn wwyz(&self) -> Float4 {
3913 Float4 {
3914 x: self.w,
3915 y: self.w,
3916 z: self.y,
3917 w: self.z,
3918 }
3919 }
3920
3921 pub fn wwyw(&self) -> Float4 {
3923 Float4 {
3924 x: self.w,
3925 y: self.w,
3926 z: self.y,
3927 w: self.w,
3928 }
3929 }
3930
3931 pub fn wwzx(&self) -> Float4 {
3933 Float4 {
3934 x: self.w,
3935 y: self.w,
3936 z: self.z,
3937 w: self.x,
3938 }
3939 }
3940
3941 pub fn wwzy(&self) -> Float4 {
3943 Float4 {
3944 x: self.w,
3945 y: self.w,
3946 z: self.z,
3947 w: self.y,
3948 }
3949 }
3950
3951 pub fn wwzz(&self) -> Float4 {
3953 Float4 {
3954 x: self.w,
3955 y: self.w,
3956 z: self.z,
3957 w: self.z,
3958 }
3959 }
3960
3961 pub fn wwzw(&self) -> Float4 {
3963 Float4 {
3964 x: self.w,
3965 y: self.w,
3966 z: self.z,
3967 w: self.w,
3968 }
3969 }
3970
3971 pub fn wwwx(&self) -> Float4 {
3973 Float4 {
3974 x: self.w,
3975 y: self.w,
3976 z: self.w,
3977 w: self.x,
3978 }
3979 }
3980
3981 pub fn wwwy(&self) -> Float4 {
3983 Float4 {
3984 x: self.w,
3985 y: self.w,
3986 z: self.w,
3987 w: self.y,
3988 }
3989 }
3990
3991 pub fn wwwz(&self) -> Float4 {
3993 Float4 {
3994 x: self.w,
3995 y: self.w,
3996 z: self.w,
3997 w: self.z,
3998 }
3999 }
4000
4001 pub fn wwww(&self) -> Float4 {
4003 Float4 {
4004 x: self.w,
4005 y: self.w,
4006 z: self.w,
4007 w: self.w,
4008 }
4009 }
4010}