This commit is contained in:
h z
2024-06-21 21:48:07 +08:00
commit 42ba33d229
129 changed files with 10711 additions and 0 deletions

42
src/Samples/C44Samples.cs Normal file
View File

@@ -0,0 +1,42 @@
using System.Numerics;
using Skeleton.Algebra.DimensionProviders;
using Skeleton.Utils.Helpers;
namespace Skeleton.Samples;
using C44 = Algebra.CategoryOf<IDim4>.OnField<Complex>.FMatrix;
/// <summary>
/// </summary>
public static class C44Samples
{
/// <summary>
/// </summary>
/// <param name="a"></param>
/// <returns></returns>
public static IEnumerable<C44> C44AnySamples(this IEnumerable<double> 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
);
}
/// <summary>
/// </summary>
/// <param name="a"></param>
/// <returns></returns>
public static IEnumerable<C44> C44InvertibleSamples(this IEnumerable<double> a)
{
foreach (C44 m in a.C44AnySamples())
if (m.Det().Magnitude > 0.2d)
yield return m;
}
}