ChebyshevSharp 0.13.0
See the version list below for details.
dotnet add package ChebyshevSharp --version 0.13.0
NuGet\Install-Package ChebyshevSharp -Version 0.13.0
<PackageReference Include="ChebyshevSharp" Version="0.13.0" />
<PackageVersion Include="ChebyshevSharp" Version="0.13.0" />
<PackageReference Include="ChebyshevSharp" />
paket add ChebyshevSharp --version 0.13.0
#r "nuget: ChebyshevSharp, 0.13.0"
#:package ChebyshevSharp@0.13.0
#addin nuget:?package=ChebyshevSharp&version=0.13.0
#tool nuget:?package=ChebyshevSharp&version=0.13.0
ChebyshevSharp
Multi-dimensional Chebyshev tensor interpolation with analytical derivatives for .NET.
ChebyshevSharp is a C# port of PyChebyshev, providing fast polynomial evaluation of smooth multi-dimensional functions via barycentric interpolation with pre-computed weights. On low-dimensional problems (1-3D), C# is 17-42x faster than the Python reference; see Performance.
Project Links
Features
| Feature | Description |
|---|---|
| Chebyshev interpolation | Multi-dimensional tensor interpolation with spectral convergence |
| Analytical derivatives | Spectral differentiation matrices — no finite differences |
| BLAS acceleration | N-D tensor contractions routed through OpenBLAS via BlasSharp.OpenBlas |
| Piecewise splines | ChebyshevSpline — place knots at singularities for spectral convergence on each piece |
| Sliding technique | ChebyshevSlider — partition dimensions into groups for high-dimensional approximation |
| Tensor Train interpolation | ChebyshevTT — approximate high-dimensional coupled functions without materializing the dense grid |
| Algebra | Combine interpolants via +, -, *, / |
| Extrusion & slicing | Add or fix dimensions for portfolio aggregation |
| Spectral calculus | Integration (Fejer-1), root-finding (colleague matrix), minimization, maximization |
| Serialization | Save/load interpolants as JSON, plus portable .pcb for dense approximations and compatible splines |
Installation
dotnet add package ChebyshevSharp
No system BLAS installation required — cross-platform OpenBLAS binaries are included.
Quick Start
using ChebyshevSharp;
// 1. Define a function
double MyFunc(double[] x, object? data)
=> Math.Sin(x[0]) * Math.Cos(x[1]);
// 2. Build the interpolant
var cheb = new ChebyshevApproximation(
function: MyFunc,
numDimensions: 2,
domain: new[] { new[] { -1.0, 1.0 }, new[] { -1.0, 1.0 } },
nNodes: new[] { 11, 11 }
);
cheb.Build();
// 3. Evaluate — function value and derivatives
double value = cheb.VectorizedEval(new[] { 0.5, 0.3 }, new[] { 0, 0 });
double dfdx = cheb.VectorizedEval(new[] { 0.5, 0.3 }, new[] { 1, 0 });
double d2fdy = cheb.VectorizedEval(new[] { 0.5, 0.3 }, new[] { 0, 2 });
// Query points must be inside the declared domain; out-of-domain points throw.
// 4. Check accuracy
double error = cheb.ErrorEstimate(); // ~1e-15 for this function
// 5. Save for deployment
cheb.Save("interpolant.json");
Runnable example projects are available in examples/:
dotnet run --project examples/QuickStart/QuickStart.csproj
dotnet run --project examples/TensorTrainHighDim/TensorTrainHighDim.csproj
Classes
| Class | Use case | Build cost |
|---|---|---|
ChebyshevApproximation |
Smooth functions on a single domain | $\prod_i n_i$ |
ChebyshevSpline |
Functions with discontinuities or singularities | pieces $\times \prod_i n_i$ |
ChebyshevSlider |
High-dimensional, additively separable functions | $\sum_g \prod_{i \in g} n_i$ |
ChebyshevTT |
High-dimensional functions with general coupling | $O(d \cdot n \cdot r^2)$ for TT-Cross |
Example: Option Pricing
Replace a slow Black-Scholes pricer with a fast Chebyshev interpolant that returns price in ~500 ns, or price plus delta and gamma in ~2 us:
var cheb = new ChebyshevApproximation(
function: BsPrice,
numDimensions: 3,
domain: new[] {
new[] { 80.0, 120.0 }, // spot
new[] { 0.1, 0.5 }, // volatility
new[] { 0.25, 2.0 } // maturity
},
nNodes: new[] { 15, 12, 10 }
);
cheb.Build(); // 1,800 function evaluations (one-time cost)
// Price, delta, and gamma in one call
double[] results = cheb.VectorizedEvalMulti(
new[] { 100.0, 0.2, 1.0 },
new[] {
new[] { 0, 0, 0 }, // price
new[] { 1, 0, 0 }, // delta
new[] { 2, 0, 0 }, // gamma
}
);
Status
| Area | Status |
|---|---|
ChebyshevApproximation |
Dense Chebyshev interpolation with analytical derivatives, algebra, calculus, serialization, and Sobol indices |
ChebyshevSpline |
Piecewise interpolation with knots, algebra, calculus, serialization, and automatic knot helpers |
ChebyshevSlider |
Partitioned high-dimensional approximation with parallel build, progress reporting, and sensitivity diagnostics |
ChebyshevTT |
Tensor Train build/eval, finite-difference derivatives, integration, roots, optimization, algebra, slicing/extrusion, reordering, and guarded dense materialization |
| Validation | xUnit regression suite, deterministic FsCheck properties, Codecov patch gate, package validation, DocFX build, and scheduled/manual mutation testing |
See the changelog for per-release feature parity with PyChebyshev.
Documentation
Full documentation is available at 0xc000005.github.io/ChebyshevSharp.
- Getting Started
- Which Class Should I Use?
- Mathematical Concepts
- Piecewise Chebyshev (Splines)
- Sliding Technique
- Tensor Train
- Computing Greeks
- Chebyshev Algebra
- Advanced Usage
- Calculus
- Error Estimation
- Serialization
- Performance
- Testing & Validation
- Support & Reporting
- Citations
- API Reference
Support and Reporting
- Questions and usage problems: start a GitHub Discussion with a small runnable example.
- Bugs: use the bug report template and include OS, .NET SDK version, ChebyshevSharp version, expected behavior, and actual behavior.
- Numerical accuracy concerns: use the numerical accuracy template and include the function, domain, node counts, construction method, tolerance, and a reference value or independent check.
- Security issues: do not open a public issue; follow the security policy.
Contributing
See CONTRIBUTING.md for the development workflow, required checks, Codecov policy, Stryker.NET mutation-testing expectations, and PR checklist. For a shorter site version, see Contributing.
This project follows CODE_OF_CONDUCT.md. Keep issue and PR discussions focused, reproducible, and respectful.
License
MIT
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- BlasSharp.OpenBlas (>= 0.3.0)
- MathNet.Numerics (>= 5.0.0)
-
net8.0
- BlasSharp.OpenBlas (>= 0.3.0)
- MathNet.Numerics (>= 5.0.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 0.13.1 | 38 | 5/8/2026 |
| 0.13.0 | 54 | 5/8/2026 |
| 0.12.0 | 246 | 5/2/2026 |
| 0.11.1 | 763 | 5/1/2026 |
| 0.11.0 | 93 | 4/30/2026 |
| 0.10.0 | 92 | 4/29/2026 |
| 0.9.0 | 100 | 4/29/2026 |
| 0.8.0 | 86 | 4/29/2026 |
| 0.7.0 | 100 | 4/28/2026 |
| 0.6.0 | 95 | 4/28/2026 |
| 0.5.0 | 91 | 4/28/2026 |
| 0.4.0 | 116 | 2/27/2026 |
| 0.3.0 | 104 | 2/27/2026 |
| 0.2.0 | 96 | 2/27/2026 |
| 0.1.0 | 107 | 2/27/2026 |