using System.Numerics; using Skeleton.Algebra.DimensionProviders; using Skeleton.Utils.Helpers; namespace Skeleton.Samples; using C44 = Algebra.CategoryOf.OnField.FMatrix; /// /// public static class C44Samples { /// /// /// /// public static IEnumerable C44AnySamples(this IEnumerable a) { (Complex, Complex, Complex, Complex)[] w = a .RISamples() .ShuffleZip3() .ToArray(); foreach (((Complex, Complex, Complex, Complex), (Complex, Complex, Complex, Complex), (Complex, Complex, Complex , Complex), (Complex, Complex, Complex, Complex)) info in w.ShuffleZip3()) yield return new C44( info.Item1.Item1, info.Item1.Item2, info.Item1.Item3, info.Item1.Item4, info.Item2.Item1, info.Item2.Item2, info.Item2.Item3, info.Item2.Item4, info.Item3.Item1, info.Item3.Item2, info.Item3.Item3, info.Item3.Item4, info.Item4.Item1, info.Item4.Item2, info.Item4.Item3, info.Item4.Item4 ); } /// /// /// /// public static IEnumerable C44InvertibleSamples(this IEnumerable a) { foreach (C44 m in a.C44AnySamples()) if (m.Det().Magnitude > 0.2d) yield return m; } }