Skip to content

MultiPrecision Curve Fitting - linear, polynomial, pade, arbitrary function

License

Notifications You must be signed in to change notification settings

tk-yoshimura/MultiPrecisionCurveFitting

Repository files navigation

MultiPrecisionCurveFitting

MultiPrecision Curve Fitting - linear, polynomial, pade, arbitrary function

Requirement

.NET 8.0 AVX2 suppoted CPU. (Intel:Haswell(2013)-, AMD:Excavator(2015)-)
MultiPrecision
MultiPrecisionAlgebra

Install

Download DLL
Download Nuget

Usage

MultiPrecision<Pow2.N8>[] xs = Vector<Pow2.N8>.Arange(1024) / 1024;
MultiPrecision<Pow2.N8>[] ys = Vector<Pow2.N8>.Func(x => MultiPrecision<Pow2.N8>.Cos(x) - 0.25, xs);

PadeFitter<Pow2.N8> fitter = new(xs, ys, intercept: 0.75, numer: 4, denom: 3);

Vector<Pow2.N8> parameters = fitter.ExecuteFitting();

Console.WriteLine($"Numer : {parameters[..fitter.Numer]}");
Console.WriteLine($"Denom : {parameters[fitter.Numer..]}");

Assert.AreEqual(0.75, fitter.FittingValue(0, parameters));

for (int i = 0; i < xs.Length; i++) {
    Assert.IsTrue(MultiPrecision<Pow2.N8>.Abs(ys[i] - fitter.FittingValue(xs[i], parameters)) < 1e-5,
        $"\nexpected : {ys[i]}\n actual  : {fitter.FittingValue(xs[i], parameters)}"
    );
}

See also: Tests

Licence

MIT

Author

T.Yoshimura