using System.Numerics; using Skeleton.Algebra.DimensionProviders; using Skeleton.Utils.Helpers; namespace Skeleton.Samples; using C22 = Algebra.CategoryOf.OnField.FMatrix; /// /// public static class C22Samples { /// /// /// /// public static IEnumerable C22AnySamples(this IEnumerable a) { (Complex, Complex)[] w = a .RISamples() .ShuffleZip() .ToArray(); foreach (((Complex, Complex), (Complex, Complex), (Complex, Complex)) info in w.ShuffleZip2()) yield return new C22( info.Item1.Item1, info.Item1.Item2, info.Item2.Item1, info.Item2.Item2 ); } /// /// /// /// public static IEnumerable C22InvertibleSamples(this IEnumerable a) { foreach (C22 m in a.C22AnySamples()) if (m.Det().Magnitude > 0.2d) yield return m; } }