Files
Skeleton/src/Samples/C22Samples.cs
2024-06-21 21:48:07 +08:00

39 lines
1.1 KiB
C#

using System.Numerics;
using Skeleton.Algebra.DimensionProviders;
using Skeleton.Utils.Helpers;
namespace Skeleton.Samples;
using C22 = Algebra.CategoryOf<IDim2>.OnField<Complex>.FMatrix;
/// <summary>
/// </summary>
public static class C22Samples
{
/// <summary>
/// </summary>
/// <param name="a"></param>
/// <returns></returns>
public static IEnumerable<C22> C22AnySamples(this IEnumerable<double> 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
);
}
/// <summary>
/// </summary>
/// <param name="a"></param>
/// <returns></returns>
public static IEnumerable<C22> C22InvertibleSamples(this IEnumerable<double> a)
{
foreach (C22 m in a.C22AnySamples())
if (m.Det().Magnitude > 0.2d)
yield return m;
}
}