Skip to main content

πŸ“‹ Changelog

All notable changes to CSharpNumerics are documented here.
This format is based on Keep a Changelog and follows Semantic Versioning.

Legend:
πŸ”΄ Breaking Change β€” requires code changes when upgrading
🟒 Added β€” new features
πŸ”΅ Changed β€” changes in existing functionality
🟑 Deprecated β€” features that will be removed in a future version
πŸ”§ Fixed β€” bug fixes
πŸ—‘οΈ Removed β€” features that have been removed


[3.0.0] – 2026-04-12​

Major release: Exoplanet transit-detection engine, sequence ML models (CNN1D / LSTM / BiLSTM), geometric optics, time-series analysis, curve fitting, and physics model interfaces.

🟒 Added​

Exoplanet Engine (CSharpNumerics.Engines.Exoplanet)​

A complete analysis engine for exoplanet transit detection and ML-assisted classification β€” from raw light curve to transit prediction.

  • Data model – LightCurve, LightCurveMetadata, LightCurveSanitizer, TransitParameters, TransitCandidate, TransitFeatureSet, StellarProperties.
  • Enums – CadenceType, DetrendingMethod, PeriodSearchMethod, SpectralType, TransitDisposition.
  • Classical detection pipeline – TransitDetectionPipeline, LightCurvePreprocessor, PeriodSearcher (BLS / Lomb-Scargle wrapper), TransitFitter (non-linear transit model fitting), TransitValidator (SNR, odd/even, secondary eclipse checks).
  • Feature extraction – TransitFeatureExtractor (12 transit-specific features), WindowedFeatureExtractor (phase-folded windows + feature columns).
  • ML training & inference – TransitClassifierTrainer (grid-search + cross-validation), TrainedTransitModel, TransitInferencePipeline, ModelSerializer (binary serialization for deployment), TrainerConfig, TransitPrediction.
  • Engine integration – ExoplanetEngine implementing ISimulationEngine with event-driven batch processing, ExoplanetEngineConfig, TransitDetectedEvent.

Transit Physics (CSharpNumerics.Physics.Astro)​

  • TransitModel – Analytic transit light-curve model with limb darkening.
  • LimbDarkening – Quadratic, linear, and nonlinear limb-darkening laws.
  • TransitGeometry – Impact parameter, ingress/egress duration, transit depth from stellar/planetary radii.
  • KeplerOrbit – Keplerian orbital mechanics for transit timing.
  • LimbDarkeningModel enum.

Sequence ML Models (CSharpNumerics.ML.Sequence)​

Three sequence model architectures with classification and regression variants:

  • CNN1D – Conv1DLayer, MaxPool1DLayer, GlobalAvgPool1DLayer, FlattenLayer, CNN1DModelBase, CNN1DClassifier, CNN1DRegressor, ConvolutionPaddingMode enum.
  • LSTM – LSTMLayer, LSTMModelBase, LSTMClassifier, LSTMRegressor.
  • BiLSTM – BiLSTMLayer, BiLSTMModelBase, BiLSTMClassifier, BiLSTMRegressor.
  • Infrastructure – ISequenceModel interface, SequenceDataHelper, SequentialModel (composable layer pipeline).

Neural-network refactoring:

  • Extracted Activations, DenseLayer, ILayer, OptimizerFactory from the monolithic NeuralNetwork class.

Optics (CSharpNumerics.Physics.Optics)​

Geometric-optics ray tracing and optical components:

  • Core – Ray, RayHit, RayTracer, OpticalScene, OpticalMedium, IOpticalSurface.
  • Elements – ThinLens, PlaneMirror, SphericalMirror, Prism, CircularAperture, RectangularAperture.
  • Imaging – ImageSensor (projected image capture).
  • Materials – OpticalMaterialLibrary, OpticalLibrary (refractive indices for common media).
  • Extensions – OpticsExtensions (Snell's law, Brewster angle, critical angle, thin-lens equation, magnification).
  • Game engine – RaycastExtensions added to Engines.Game.
  • Enums: LensType, MirrorType.

Curve Fitting (CSharpNumerics.Statistics.Fitting)​

A comprehensive fitting toolkit:

  • LeastSquaresFitter, WeightedLeastSquaresFitter, NonlinearLeastSquaresFitter (Levenberg-Marquardt).
  • RobustFitter with RobustWeightFunction (Huber, Bisquare, etc.).
  • FittingSolver – unified solver faΓ§ade.
  • GoodnessOfFit – RΒ², adjusted RΒ², AIC, BIC.
  • ParameterEstimation, ResidualAnalysis, FittingResult.

Time-Series Analysis (CSharpNumerics.Statistics.TimeSeriesAnalysis)​

Signal-processing and period-detection tools:

  • BoxFittingLeastSquares – BLS period search with BLSResult.
  • LombScarglePeriodogram – for unevenly sampled data, with PeriodogramResult.
  • PhaseFolding – fold time-series on a detected period.
  • TimeSeriesDetrending – median filter, polynomial, Savitzky-Golay.
  • PeakFitting – Gaussian/Lorentzian peak detection, PeakResult, PeakShape enum.

Robust Statistics (CSharpNumerics.Statistics.Robust)​

  • SigmaClipping – iterative sigma-clipping for outlier rejection.
  • SlidingWindowStatistics – rolling mean/median/std with flexible windows.
  • FalseAlarmProbability – statistical significance for periodic signals.

Physics Model Interfaces​

Standardised interfaces for the Multiphysics engine:

  • IBeamModel / BeamModel (Physics.SolidMechanics)
  • IHeatTransferModel / HeatTransferModel (Physics.Thermodynamics)
  • IViscousFlowModel / ViscousFlowModel (Physics.FluidDynamics)
  • IElectrostaticModel / ElectrostaticModel (Physics.Electromagnetism)
  • BeamSupport enum moved to Physics.SolidMechanics.Enums.

πŸ”΅ Changed​

Multiphysics Engine Refactoring​

  • BeamStressSolver, HeatPlateSolver, PipeFlowSolver, ElectricFieldSolver refactored to use the new physics-model interfaces.
  • SimulationBuilder updated to work with new beam support enum location.

πŸ”΄ Breaking Changes​

  • BeamSupport enum moved from Physics.SolidMechanics to Physics.SolidMechanics.Enums β€” update using statements accordingly.
  • Multiphysics solvers now require physics-model interface instances instead of raw parameters.
  • NeuralNetwork internals (Activations, DenseLayer, ILayer, OptimizerFactory) extracted into separate types β€” direct references to the monolithic class may need updating.

[2.8.0] – 2026-04-03​

🟒 Added​

Multiphysics Engine (CSharpNumerics.Engines.Multiphysics)​

  • Introduced a new multiphysics engine with simulation builders, timeline snapshots, result objects, and solver abstractions.
  • Added multiphysics solvers for beam stress, electric fields, heat plates, and pipe flow.
  • Added multiphysics Monte Carlo tooling, including scenario results, parameter variation, clustering, and surrogate training.
  • Added new export options for multiphysics simulations in JSON and binary formats.

Finite Element (CSharpNumerics.Numerics.FiniteElement)​

  • Added a finite element module with Mesh1D, Assembler1D, BarElement, BeamElement, and IElement1D.

GIS Wildfire & Terrain (CSharpNumerics.Engines.GIS)​

  • Added wildfire and terrain spread simulation support in the GIS engine, including terrain grids, fuel maps, spread snapshots, scenario builders, simulation results, and Monte Carlo outputs.
  • Added wildfire export support for GeoJSON, Cesium, and Unity binary workflows.

Fire, Materials, and Solid Mechanics​

  • Added fire and engineering material models, including fuel libraries, fuel model types, and a Rothermel-based fire spread model.
  • Added new solid mechanics APIs for beam analysis, section properties, and stress-strain calculations.

Test Coverage​

  • Expanded automated test coverage for multiphysics, finite elements, terrain modeling, wildfire simulation, wildfire exports, and solid mechanics.

πŸ”΅ Changed​

  • Refactored the Physics section into clearer domain-specific areas such as Astro, Electromagnetism, Environmental, FluidDynamics, Mechanics, SolidMechanics, and Thermodynamics.
  • Split large monolithic physics extension files into smaller, focused modules for improved maintainability and discoverability.
  • Updated the Numerics, Physics, GIS, and Multiphysics documentation with new examples and architecture notes.
  • Extended finite-difference grid operators to support the new multiphysics and finite element workflows.
  • Refined several GIS simulation and scenario components to align with the new spread and wildfire model structure.

πŸ”΄ Breaking Changes​

  • Physics namespaces were reorganized, so existing consumers may need to update using statements and type references.
  • AstronomyExtensions was moved under CSharpNumerics.Physics.Astro.
  • Mechanics-related APIs such as dynamics, kinematics, rigid body, and oscillation types were moved into CSharpNumerics.Physics.Mechanics.
  • Previous consolidated solid mechanics functionality was restructured into more focused APIs such as BeamExtensions, SectionPropertiesExtensions, and StressStrainExtensions.
  • Environmental, fluid, and electromagnetic extension APIs were split into dedicated modules, which may require code updates in downstream projects.

[2.7.0] – 2026-03-28​

10,056 lines added across 63 files | Previous release: v2.6.5 (2026-03-21)

🟒 Added​

Quantum Computing Engine (CSharpNumerics.Engines.Quantum)​

  • Quantum Circuit Simulator β€” QuantumCircuit, QuantumState, QuantumSimulator, QuantumEnvironment for building and simulating multi-qubit quantum circuits.
  • Fluent Circuit Builder β€” QuantumCircuitBuilder with a chainable API for composing quantum circuits.
  • Algorithms β€” ShorAlgorithm (integer factorization), GroverSearch (unstructured search), QFT / InverseQFT (Quantum Fourier Transform), QPE (Quantum Phase Estimation).
  • Noisy Simulation β€” NoisyQuantumSimulator with pluggable noise channels: DepolarizingNoise, DephasingNoise, AmplitudeDampingNoise.
  • Quantum Error Correction β€” ErrorCorrectionSimulator, SyndromeDecoder, and four codes: BitFlipCode3, PhaseFlipCode3, SteaneCode7, ShorCode9.

Quantum Physics Primitives (CSharpNumerics.Physics.Quantum)​

  • Gates β€” HadamardGate, PauliX/Y/Z, PhaseGate, SGate, TGate, RxGate, RyGate, RzGate, SWAPGate, CNOTGate, CZGate, CPhaseGate, ControlledGate, ToffoliGate, FredkinGate, ModularMultiplyGate, PhaseOracle.
  • Bloch Sphere β€” BlochVector for single-qubit state visualisation.
  • Fidelity β€” QuantumFidelity for state comparison metrics.
  • Noise Interfaces β€” INoiseChannel abstraction for noise models.
  • Error Correction Interfaces β€” IQuantumErrorCorrectionCode and four code implementations (see above).

GIS Engine β€” Exposure Analysis (CSharpNumerics.Engines.GIS)​

  • Exposure Polygon Generator β€” ExposurePolygonGenerator and ExposurePolygon for computing peak-exposure contour polygons from plume simulations.
  • GeoJSON Export β€” GeoJsonExporter for exporting exposure polygons.
  • Scenario Enhancements β€” ScenarioResult output model; RiskScenarioBuilder and PlumeSimulator updates.

Chemical Materials (CSharpNumerics.Physics.Materials.Chemical)​

  • ChemicalSubstance β€” properties and behaviour modelling for chemical substances.
  • ChemicalLibrary β€” built-in library of common substances.
  • Updated Materials base infrastructure accordingly.

[2.6.5] – 2026-03-21​

🟒 Added​

Reinforcement Learning (CSharpNumerics.ML.ReinforcementLearning)​

A complete RL framework under ML/ReinforcementLearning/:

  • Tabular Agents – QLearning, SARSA, and MonteCarloControl with shared TabularAgent base class, Q-table access, and state-mapper support.
  • Value-Based (Deep) Agents – DQN with target network and experience replay, DoubleDQN to reduce overestimation bias, and DuelingDQN with separate value/advantage streams.
  • Policy Gradient Agents – REINFORCE (Monte Carlo policy gradient with optional baseline), ActorCritic (A2C with entropy bonus), and PPO (clipped surrogate + GAE).
  • Continuous Control – DDPG (deterministic actor-critic with Polyak-averaged target networks).
  • Environments – GridWorld, CartPole, MountainCar (discrete), and Pendulum (continuous torque).
  • Exploration Policies – EpsilonGreedy, SoftmaxPolicy, GaussianNoise, and OrnsteinUhlenbeck process, all with per-episode decay and Clone().
  • Replay Buffers – ReplayBuffer (uniform circular buffer) and PrioritizedReplayBuffer (TD-error prioritized sampling).
  • Experiment API – RLExperiment fluent builder with Run(), RunGrid(), and RunMonteCarlo() modes; RLPipelineGrid for hyperparameter grid search across agent types; EpisodeEvaluator for standalone agent evaluation with confidence intervals.
  • Diagnostics – QValueHeatmap (tabular Q-value / greedy-policy maps), PolicyVisualizer (action probabilities, entropy, dominant action), and ValueFunctionSurface (1D/2D value-function sampling for deep agents).
  • Interfaces – IAgent, IEnvironment, IPolicy, IReplayBuffer.
  • Core Types – Transition, Episode, TrainingResult (return/loss/exploration curves).

Neural Network (CSharpNumerics.ML.NeuralNetwork)​

  • Shared NeuralNetwork class used by all deep RL agents and MLP models β€” forward pass, backpropagation, and weight management.

GIS-RL Integration (CSharpNumerics.Engines.GIS.RL)​

Bridges the GIS simulation engine with the RL framework:

  • IGISEnvironment – interface extending IEnvironment with GeoGrid, TimeFrame, Threshold, ActionCost, MaxSteps, and GridSnapshot.
  • PlumeEnvironment – RL environment wrapping PlumeSimulator in transient mode (8-dim observation, 6 discrete actions: barriers + emission filter).
  • ScenarioRLAnalyzer – fluent API for training RL agents on GIS scenarios with For(emissionRate, position), For(IGISEnvironment), and For(IEnvironment) entry points; supports physics config, environment tuning, grid search, and replay buffers.

Optimization (CSharpNumerics.Numerics.Optimization)​

A numerical optimization module under Numerics/Optimization/:

  • Single-Objective – GradientDescent, Adam, CoordinateDescent, and Minimizer (high-level wrapper).
  • Multi-Objective – NSGA2 (Non-dominated Sorting Genetic Algorithm II) and ParetoFront for Pareto-optimal solution sets.
  • Convergence Strategies – EarlyStopping, LearningRateSchedule, and MaxIterationsOrTolerance.
  • Interfaces – IOptimizer, IObjectiveFunction, IConvergenceCriterion.

Dimensionality Reduction – PCA (CSharpNumerics.ML.DimensionalityReduction)​

  • Reworked PCA implementation with power iteration and deflation for eigendecomposition. Exposes Components, ExplainedVariance, ExplainedVarianceRatio, and Mean. Integrates into both supervised and clustering pipelines via AddReducer<PCA>() and WithReducer().

πŸ”§ Fixed​

  • Experiment bug – Fixed issue in ClusteringExperiment (and related experiment infrastructure).
  • Supervised model corrections – Fixes across Logistic, LinearSVC, KernelSVC, MLPClassifier, ElasticNet, Lasso, LinearSVR, KernelSVR, and MLPRegressor (numerical stability, hyperparameter handling, and NeuralNetwork integration for MLP models).

[2.6.3] – 2026-03-15​

🟒 Added​

GIS / Geo-Engine (CSharpNumerics.Engines.GIS)​

A full geospatial simulation engine under Engines/GIS/:

  • Coordinates & Projections – GeoCoordinate type and Projection class with coordinate-system transforms.
  • GeoGrid – GeoGrid, GeoCell, and GridSnapshot for spatial grid-based modelling.
  • Plume Simulation – PlumeSimulator for atmospheric plume dispersion on a geo-grid, and PlumeMonteCarloModel for stochastic ensemble runs with ScenarioVariation support.
  • Scenario Analysis – RiskScenario, RiskScenarioBuilder, ScenarioResult, and TimeFrame for building and evaluating risk scenarios.
  • Spatial Analysis – ProbabilityMap, ScenarioClusterAnalyzer, and TimeAnimator for post-processing simulation results.
  • Export – GeoJsonExporter, CesiumExporter, and UnityBinaryExporter for shipping results to web maps, Cesium 3D globe, or Unity.

Nuclear Physics (CSharpNumerics.Physics.Materials.Nuclear)​

A nuclear-physics module under Physics/Materials/Nuclear/:

  • Isotopes – Isotope data type and IsotopeLibrary with built-in entries (Cs-137, I-131, Sr-90, Co-60, etc.) and runtime registration of custom isotopes.
  • Radioactive Decay – Decay class for activity, remaining mass, and time-dependent calculations.
  • Decay Chains – DecayChain with Bateman-equation solver (e.g. Cs-137 β†’ Ba-137m β†’ Ba-137, I-131 β†’ Xe-131).
  • Radiation Dose – RadiationDose with point-source dose rate, ground-shine dose, and inhalation dose models.
  • Materials – Materials helper class for physical material properties.

Environmental Extensions​

  • Added GaussianPuff transient dispersion model to EnvironmentalExtensions (time-dependent puff advecting downwind with Briggs Οƒ).

[2.6.1] β€” 2026-03-07​

🟒 Added​

Complex Linear Algebra​

  • ComplexMatrix β€” full complex-valued matrix type
  • ComplexVector and ComplexVectorN β€” complex-valued vector types

Tensor & Scalar Fields​

  • ScalarField and TensorField objects
  • ElectroMagneticFieldExtensions for electromagnetic field computations

Environmental Physics​

  • EnvironmentalExtensions with atmospheric/environmental calculations
  • StabilityClass enum for atmospheric stability classification

Finite Difference Framework​

  • BoundaryCondition, Grid2D, and GridOperators for 2D finite difference methods

Time Stepping​

  • ITimeStepper interface and TimeStepResult model
  • EulerStepper, RK4Stepper, AdaptiveRK45Stepper, and VelocityVerletStepper implementations

Heat Physics​

  • HeatExtensions for heat transfer computations

Dimensionality Reduction (ML)​

  • IDimensionalityReducer interface
  • PCA (Principal Component Analysis) implementation
  • Updated ClusteringExperiment, ClusteringGrid, ClusteringPipeline, Pipeline, and PipelineGrid to support dimensionality reduction

πŸ”΅ Changed​

Game Physics Engine β€” Refactoring​

  • Moved physics world, collision detection/response, constraint solver, broad-phase algorithms, constraints (ball socket, distance, hinge, spring joints), and physics objects (AABB, bounding sphere, contact point) from Physics/Applied/ to Engines/Game/
  • Moved FileExtensions from Extensions/ to Engines/Common/Extensions/

[2.6.0] β€” 2026-03-12​

🟒 Added​

Fluid Dynamics (CSharpNumerics.Physics)​

  • Added FluidExtensions bridging VectorField/ScalarField to classical fluid dynamics:
    • Navier–Stokes: ConvectiveAcceleration(this VectorField, (double, double, double), double), ViscousTerm(this VectorField, double, (double, double, double), double), PressureGradientForce(this ScalarField, (double, double, double)), NavierStokesResidual(this VectorField, ScalarField, double, double, (double, double, double), Vector) (full and Euler inviscid forms), IncompressibilityResidual(this VectorField, (double, double, double))
    • Bernoulli's principle: BernoulliConstant(this double, double, double, double), BernoulliPressure(this double, double, double, double, double, double), DynamicPressure(this double, double), StagnationPressure(this double, double, double)
    • Continuity: MassFlux(this VectorField, double) (constant and variable density), ContinuityResidual(this VectorField, double, (double, double, double)), VolumeFlowRate(this double, double), ContinuitySpeed(this double, double, double)
    • Vorticity & topology: Vorticity(this VectorField, (double, double, double)), Enstrophy(this VectorField, (double, double, double)), HelicityDensity(this VectorField, (double, double, double)), VelocityFromStreamFunction(this ScalarField)
    • Drag & lift: DragForce(this double, double, double, Vector), LiftForce(this double, double, double, double), TerminalVelocity(this double, double, double, double), StokesDrag(this double, double, double)
    • Dimensionless numbers: ReynoldsNumber(this double, double, double, double), MachNumber(this double, double), FroudeNumber(this double, double), StrouhalNumber(this double, double, double), WeberNumber(this double, double, double, double)
    • Viscous flows: PoiseuilleFlowRate(this double, double, double, double), PoiseuilleVelocity(this double, double, double, double, double)
    • Hydrostatics: HydrostaticPressure(this double, double, double), BuoyantForce(this double, double), KineticEnergyDensity(this Vector, double), MomentumDensity(this Vector, double)

Wave Equations (CSharpNumerics.Physics.Waves)​

  • Added WaveEquation1D β€” finite-difference solver for the 1D wave equation with fixed or open boundaries. Includes Snapshot(), SpaceTimeField(double, double), EnergyDensity(this Vector, Vector), FrequencyContent(int, double, double), StandingWaveMode(int), and CFL stability check
  • Added WaveEquation2D β€” finite-difference solver for the 2D wave equation on a rectangular grid. Supports initial conditions, energy tracking, and 2D snapshot arrays
  • Added DampedDrivenWaveEquation1D β€” 1D wave equation with damping (Ξ±) and an external driving source term
  • Added WavePacket β€” Gaussian wave packet with dispersion. Computes PhaseVelocity(double, double), GroupVelocity(double, double), Width(t), SpreadRate(double, double), and Propagate(t)
  • Added WaveSuperposition β€” harmonic superposition engine with BeatFrequency(), InterferencePattern(double[], double), and FourierCoefficients(double[], double)
  • Added IWaveField interface and BoundaryType enum

Audio Engine (CSharpNumerics.Engines.Audio)​

  • Added SignalGenerator β€” waveform generation (Sine, Square, Sawtooth, Triangle, WhiteNoise)
  • Added AudioOscillator β€” stateful oscillator with continuous phase for click-free real-time synthesis
  • Added AudioBuffer β€” sample container with Mix, Normalize, Trim, Fade, Reverse, Resample, and WAV export
  • Added Envelope(double) β€” ADSR (Attack-Decay-Sustain-Release) amplitude shaping
  • Added Synthesizer β€” additive synthesis combining multiple oscillators with ADSR envelope
  • Added AudioFilter β€” frequency-domain filtering (LowPass, HighPass, BandPass) via FFT
  • Added Reverb β€” Schroeder-model reverb with parallel comb filters and series all-pass filters
  • Added Delay β€” circular-buffer delay line with feedback
  • Added Compressor β€” dynamic range compression with attack/release envelope
  • Added SpatialAudio β€” stereo panning (constant-power) and inverse-distance attenuation
  • Added SpectrumAnalyzer β€” windowed FFT analysis (Hann, Hamming, Blackman, Rectangular)
  • Added PitchDetector β€” fundamental frequency detection via autocorrelation or Harmonic Product Spectrum
  • Added BeatDetector β€” onset detection via spectral flux with tempo (BPM) estimation

Fourier Series (CSharpNumerics.Numerics.SignalProcessing)​

  • Added FourierSeries β€” real Fourier coefficient analysis and synthesis with PowerSpectrum(), ParsevalEnergy(), TimeDomainEnergy(Func<double, double>, int), and partial-sum reconstruction (SynthesizeRange(double[], int)) for Gibbs phenomenon demonstration

Hypothesis Testing (CSharpNumerics.Statistics)​

  • Added HypothesisTestsExtensions with full test infrastructure:
    • Parametric: TTest(this IEnumerable<double>, double, Alternative, double) (one-sample, two-sample with Welch correction), PairedTTest<T>(this IEnumerable<T>, Func<T, (double before, double after)>, double), ZTest<T>(this IEnumerable<T>, Func<T, double>, double, double, double), FTest(this IEnumerable<double>, IEnumerable<double>, Alternative, double), Anova(this IEnumerable<IEnumerable<double>>, double)
    • Non-parametric: MannWhitneyUTest(this IEnumerable<double>, IEnumerable<double>, Alternative, double), WilcoxonSignedRankTest(this IEnumerable<double>, Alternative, double), ChiSquaredTest<T>(this IEnumerable<T>, Func<T, (double observed, double expected)>, double)
    • All tests return HypothesisTestResult with test statistic, p-value, reject/accept decision, confidence interval, effect size, and degrees of freedom
  • Added Alternative enum (TwoSided, Less, Greater)

Engine Infrastructure (CSharpNumerics.Engines.Common)​

  • Added ISimulationEngine interface, SimulationClock, EventBus, FieldSerializer, and PlatformAdapter as shared infrastructure for simulation engines

[2.5.0] β€” 2026-03-01​

🟒 Added​

Statistics β€” Extended Descriptive & Inferential Statistics​

  • New distributions: StudentTDistribution, ChiSquaredDistribution, FDistribution (with InverseCdf, TwoTailedPValue, UpperTailPValue)
  • New descriptive functions: Median, Percentile, InterquartileRange, Skewness, Kurtosis, SampleVariance, Mode, Range, CumulativeSum, ConfidenceIntervals
  • New inferential tests: OneSampleTTest, TwoSampleTTest, PairedTTest, ZTest, ChiSquaredTest, OneWayAnova
  • New correlations: PearsonCorrelation (with p-value), SpearmanCorrelation
  • New regressions: ExponentialRegression, LogarithmicRegression, PowerRegression, PolynomialRegression

Physics β€” Oscillation Framework​

  • SimpleHarmonicOscillator β€” position, velocity, acceleration, phase, energy (kinetic/potential/total), period, frequency
  • DampedOscillator β€” underdamped/critically damped/overdamped, DampingRegime enum, envelope functions, energy decay, Q-factor
  • DrivenOscillator β€” forced oscillation with resonance frequency, amplitude response, phase response, steady-state, transient response
  • CoupledOscillators β€” N coupled oscillators, normal modes, mode frequencies, energy per oscillator, energy transfer
  • IOscillator interface for common signature
  • 2 300+ lines of tests (328 + 677 + 556 + 742)

ML β€” Supervised Experiment API​

  • SupervisedExperiment β€” fluent API mirroring ClusteringExperiment for supervised models
  • CrossValidatorConfig β€” lazy factory with KFold(), StratifiedKFold(), ShuffleSplit(), LeaveOneOut(), MonteCarlo(), Custom()
  • SupervisedExperimentResult β€” Rankings, Best, BestBy(cvName), BestConfusionMatrix, BestR2, CVResults
  • ScoreDistributionSummary β€” descriptive statistics (mean, median, std, IQR, skewness, kurtosis, CI) for pipeline scores
  • New methods on ClusteringExperimentResult: ScoreSummary(), ScorePercentile()
  • New methods on SupervisedExperimentResult: ScoreSummary(), ScorePercentile(), RankCorrelation(), ScoreConsistency()
  • 818 lines of tests (721 supervised + 97 clustering)

πŸ”΅ Changed​

  • Refactored StandardDeviation to support both sample and population variants

[2.4.0] β€” 2026-02-24​

75 files changed β€” 9,464 insertions, 1,342 deletions

🟒 Added​

Clustering (Machine Learning)​

  • Full clustering module with KMeans, DBSCAN, and Agglomerative Clustering
  • ClusteringPipeline and ClusteringGrid for automated hyperparameter tuning
  • ClusteringExperiment for running and comparing clustering configurations
  • Four cluster evaluation metrics: Silhouette Score, Calinski-Harabasz Index, Davies-Bouldin Index, Inertia
  • MonteCarloClustering for stochastic clustering analysis
  • IClusteringModel and IClusteringEvaluator interfaces
  • Result types: ClusteringResult, ClusteringExperimentResult, MonteCarloClusteringResult
  • KMeansInit and LinkageType enums

Monte Carlo Cross-Validation (Machine Learning)​

  • MonteCarloCrossValidator for randomized train/test split validation
  • MonteCarloValidationResult result type

Statistical Distributions​

  • Full distributions framework with IDistribution interface
  • Six distributions: NormalDistribution, BernoulliDistribution, BinomialDistribution, PoissonDistribution, ExponentialDistribution, UniformDistribution

Monte Carlo Simulation (Statistics)​

  • MonteCarloSimulator with IMonteCarloModel interface
  • MonteCarloResult for simulation output analysis

Random Number Generation​

  • RandomGenerator utility class with extended random sampling capabilities

Advanced Interpolation​

  • Five new interpolation methods: CubicSplineInterpolation, PolynomialInterpolation (Lagrange/Newton), RationalInterpolation, TrigonometricInterpolation, MultivariateInterpolation

Inferential Statistics​

  • InferentialStatisticsExtensions for hypothesis testing

πŸ”΅ Changed​

  • Renamed StatisticsExtensions β†’ DescriptiveStatisticsExtensions for clarity
  • Changed namespace for DifferentialEquationExtensions to CsharpNumerics.Numerics
  • Changed namespace forTransformExtensions to CsharpNumerics.Numerics
  • Changed namespace for VectorFieldExtensions to CsharpNumerics.Numerics
  • Updated InterpolationExtensions with support for new interpolation types
  • Moved InterpolationType enum from Statistics namespace to CsharpNumerics.Numerics.Enums
  • Changed namespace for DerivativeExtensions, IntegrationExtensions, LimitExtensions, and TrigonometryExtensions to CsharpNumerics.Numerics

πŸ—‘οΈ Removed​

  • Deprecated Statistics.cs methods class

This changelog is maintained manually. For the full commit history, see the GitHub commit log.