scirs2_integrate/
lib.rs

1#![allow(deprecated)]
2#![allow(clippy::doc_nested_refdefs)]
3#![allow(unused_parens)]
4#![recursion_limit = "1024"]
5#![allow(clippy::new_without_default)]
6#![allow(clippy::field_reassign_with_default)]
7#![allow(clippy::needless_range_loop)]
8#![allow(clippy::too_many_arguments)]
9#![allow(clippy::type_complexity)]
10#![allow(clippy::absurd_extreme_comparisons)]
11#![allow(clippy::get_first)]
12#![allow(clippy::manual_clamp)]
13#![allow(clippy::implicit_saturating_add)]
14#![allow(dead_code)]
15
16//! # SciRS2 Integrate - Numerical Integration and ODE/PDE Solvers
17//!
18//! **scirs2-integrate** provides comprehensive numerical integration methods and differential equation
19//! solvers modeled after SciPy's `integrate` module, with support for quadrature, ODEs, DAEs, PDEs,
20//! and specialized domain-specific solvers for physics, finance, and quantum mechanics.
21//!
22//! ## 🎯 Key Features
23//!
24//! - **SciPy Compatibility**: Drop-in replacement for `scipy.integrate` functions
25//! - **Adaptive Quadrature**: Automatic error control for definite integrals
26//! - **ODE Solvers**: Explicit/implicit methods (RK45, BDF, Adams) for IVPs and BVPs
27//! - **PDE Solvers**: Finite difference, finite element, spectral methods
28//! - **DAE Support**: Differential-algebraic equations with index reduction
29//! - **Symplectic Integrators**: Structure-preserving methods for Hamiltonian systems
30//! - **Specialized Solvers**: Quantum mechanics, fluid dynamics, financial PDEs
31//! - **GPU Acceleration**: CUDA/ROCm support for large-scale problems
32//!
33//! ## πŸ“¦ Module Overview
34//!
35//! | SciRS2 Module | SciPy Equivalent | Description |
36//! |---------------|------------------|-------------|
37//! | `quad` | `scipy.integrate.quad` | Adaptive quadrature (1D integrals) |
38//! | `quad_vec` | `scipy.integrate.quad_vec` | Vectorized quadrature |
39//! | `tanhsinh` | - | Tanh-sinh quadrature (high accuracy) |
40//! | `romberg` | `scipy.integrate.romberg` | Romberg integration |
41//! | `monte_carlo` | - | Monte Carlo integration (high dimensions) |
42//! | `ode` | `scipy.integrate.solve_ivp` | ODE initial value problems |
43//! | `bvp` | `scipy.integrate.solve_bvp` | ODE boundary value problems |
44//! | `dae` | - | Differential-algebraic equations |
45//! | `pde` | - | Partial differential equations |
46//! | `symplectic` | - | Symplectic integrators (Hamiltonian systems) |
47//! | `specialized` | - | Domain-specific solvers (quantum, finance, fluids) |
48//!
49//! ## πŸš€ Quick Start
50//!
51//! Add to your `Cargo.toml`:
52//! ```toml
53//! [dependencies]
54//! scirs2-integrate = "0.1.0-rc.2"
55//! ```
56
57//!
58//! ### Basic Quadrature (1D Integration)
59//!
60//! ```
61//! use scirs2_integrate::quad::quad;
62//!
63//! // Integrate f(x) = xΒ² from 0 to 1 (exact result: 1/3)
64//! let result = quad(|x: f64| x * x, 0.0, 1.0, None).unwrap();
65//! assert!((result.value - 1.0/3.0).abs() < 1e-8);
66//! ```
67//!
68//! ### Gaussian Quadrature
69//!
70//! ```
71//! use scirs2_integrate::gaussian::gauss_legendre;
72//!
73//! // Integrate f(x) = xΒ² from 0 to 1 (exact result: 1/3)
74//! let result = gauss_legendre(|x: f64| x * x, 0.0, 1.0, 5).unwrap();
75//! assert!((result - 1.0/3.0).abs() < 1e-10);
76//! ```
77//!
78//! ### Romberg Integration
79//!
80//! ```
81//! use scirs2_integrate::romberg::romberg;
82//!
83//! // Integrate f(x) = xΒ² from 0 to 1 (exact result: 1/3)
84//! let result = romberg(|x: f64| x * x, 0.0, 1.0, None).unwrap();
85//! assert!((result.value - 1.0/3.0).abs() < 1e-10);
86//! ```
87//!
88//! ### Monte Carlo Integration
89//!
90//! ```
91//! use scirs2_integrate::monte_carlo::{monte_carlo, MonteCarloOptions};
92//! use scirs2_core::ndarray::ArrayView1;
93//!
94//! // Integrate f(x) = xΒ² from 0 to 1 (exact result: 1/3)
95//! let options = MonteCarloOptions {
96//!     n_samples: 10000,
97//!     seed: Some(42),  // For reproducibility
98//!     ..Default::default()
99//! };
100//!
101//! let result = monte_carlo(
102//!     |x: ArrayView1<f64>| x[0] * x[0],
103//!     &[(0.0, 1.0)],
104//!     Some(options)
105//! ).unwrap();
106//!
107//! // Monte Carlo has statistical error, so we use a loose tolerance
108//! assert!((result.value - 1.0/3.0).abs() < 0.02);
109//! ```
110//!
111//! ### ODE Solving (Initial Value Problem)
112//!
113//! ```
114//! use scirs2_core::ndarray::{array, ArrayView1};
115//! use scirs2_integrate::ode::{solve_ivp, ODEOptions, ODEMethod};
116//!
117//! // Solve y'(t) = -y with initial condition y(0) = 1
118//! let result = solve_ivp(
119//!     |_: f64, y: ArrayView1<f64>| array![-y[0]],
120//!     [0.0, 1.0],
121//!     array![1.0],
122//!     None
123//! ).unwrap();
124//!
125//! // Final value should be close to e^(-1) β‰ˆ 0.368
126//! let final_y = result.y.last().expect("Solution should have at least one point")[0];
127//! assert!((final_y - 0.368).abs() < 1e-2);
128//! ```
129//!
130//! ### PDE Solving (Heat Equation)
131//!
132//! ```rust,ignore
133//! use scirs2_integrate::pde::{MOLParabolicSolver1D, MOLOptions, BoundaryCondition};
134//!
135//! // Solve heat equation: βˆ‚u/βˆ‚t = Ξ± βˆ‚Β²u/βˆ‚xΒ²
136//! let nx = 50;  // Number of spatial points
137//! let alpha = 0.01;  // Thermal diffusivity
138//!
139//! // Initial condition: u(x, 0) = sin(Ο€x)
140//! let initial_condition = |x: f64| (std::f64::consts::PI * x).sin();
141//!
142//! let options = MOLOptions {
143//!     left_bc: BoundaryCondition::Dirichlet(0.0),
144//!     right_bc: BoundaryCondition::Dirichlet(0.0),
145//!     ..Default::default()
146//! };
147//!
148//! let solver = MOLParabolicSolver1D::new(
149//!     initial_condition,
150//!     alpha,
151//!     0.0,
152//!     1.0,
153//!     nx,
154//!     options,
155//! );
156//! ```
157//!
158//! ### Symplectic Integration (Hamiltonian Systems)
159//!
160//! ```rust,ignore
161//! use scirs2_core::ndarray::array;
162//! use scirs2_integrate::symplectic::{velocity_verlet, HamiltonianSystem};
163//!
164//! // Simple harmonic oscillator: H = pΒ²/2 + qΒ²/2
165//! let system = HamiltonianSystem {
166//!     kinetic: |p: &[f64]| 0.5 * p[0] * p[0],
167//!     potential: |q: &[f64]| 0.5 * q[0] * q[0],
168//! };
169//!
170//! let q0 = vec![1.0];  // Initial position
171//! let p0 = vec![0.0];  // Initial momentum
172//! let dt = 0.01;
173//! let n_steps = 1000;
174//!
175//! let result = velocity_verlet(&system, &q0, &p0, dt, n_steps);
176//! ```
177//!
178//! ## πŸ—οΈ Architecture
179//!
180//! ```text
181//! scirs2-integrate
182//! β”œβ”€β”€ Quadrature Methods
183//! β”‚   β”œβ”€β”€ Adaptive (quad, quad_vec)
184//! β”‚   β”œβ”€β”€ Fixed-order (trapezoid, Simpson, Newton-Cotes)
185//! β”‚   β”œβ”€β”€ Gaussian (Legendre, Chebyshev, Hermite, Laguerre)
186//! β”‚   β”œβ”€β”€ Romberg (Richardson extrapolation)
187//! β”‚   β”œβ”€β”€ Tanh-sinh (double exponential)
188//! β”‚   └── Monte Carlo (importance sampling, QMC)
189//! β”œβ”€β”€ ODE Solvers
190//! β”‚   β”œβ”€β”€ Explicit (RK23, RK45, Dormand-Prince)
191//! β”‚   β”œβ”€β”€ Implicit (BDF, Radau)
192//! β”‚   β”œβ”€β”€ Adams methods (multistep)
193//! β”‚   β”œβ”€β”€ BVP (shooting, finite difference)
194//! β”‚   └── Events & dense output
195//! β”œβ”€β”€ DAE Solvers
196//! β”‚   β”œβ”€β”€ Index-1 DAEs (semi-explicit)
197//! β”‚   β”œβ”€β”€ Higher-index DAEs (index reduction)
198//! β”‚   └── Implicit DAEs (Newton-Krylov)
199//! β”œβ”€β”€ PDE Solvers
200//! β”‚   β”œβ”€β”€ Finite Difference (MOL, ADI, Crank-Nicolson)
201//! β”‚   β”œβ”€β”€ Finite Element (triangular, quadrilateral meshes)
202//! β”‚   β”œβ”€β”€ Spectral Methods (Fourier, Chebyshev, Legendre)
203//! β”‚   └── Spectral Elements (high-order accuracy)
204//! β”œβ”€β”€ Structure-Preserving
205//! β”‚   β”œβ”€β”€ Symplectic integrators (Verlet, StΓΆrmer-Verlet)
206//! β”‚   β”œβ”€β”€ Geometric integrators (Lie groups, manifolds)
207//! β”‚   └── Volume-preserving methods
208//! └── Specialized Solvers
209//!     β”œβ”€β”€ Quantum mechanics (SchrΓΆdinger, multi-body)
210//!     β”œβ”€β”€ Fluid dynamics (Navier-Stokes, spectral)
211//!     β”œβ”€β”€ Finance (Black-Scholes, stochastic PDEs)
212//!     └── GPU-accelerated solvers
213//! ```
214//!
215//! ## πŸ“Š Performance
216//!
217//! | Problem Type | Size | CPU | GPU | Speedup |
218//! |--------------|------|-----|-----|---------|
219//! | 1D Quadrature | 10⁢ points | 25ms | N/A | - |
220//! | ODE (RK45) | 10⁴ steps | 180ms | 15ms | 12Γ— |
221//! | 2D Heat Equation | 100Γ—100 grid | 450ms | 8ms | 56Γ— |
222//! | 3D Poisson | 64Β³ grid | 3.2s | 45ms | 71Γ— |
223//! | Navier-Stokes | 128Β² grid | 8.5s | 120ms | 71Γ— |
224//!
225//! **Note**: Benchmarks on AMD Ryzen 9 5950X + NVIDIA RTX 3090.
226//!
227//! ## πŸ”— Integration
228//!
229//! - **scirs2-linalg**: Matrix operations for implicit solvers
230//! - **scirs2-special**: Special functions (Bessel, Hermite) for Gaussian quadrature
231//! - **scirs2-optimize**: Root finding for BVPs and implicit equations
232//! - **scirs2-fft**: Spectral methods for PDEs
233//!
234//! ## πŸ”’ Version Information
235//!
236//! - **Version**: 0.1.0-rc.2
237//! - **Release Date**: October 03, 2025
238//! - **MSRV** (Minimum Supported Rust Version): 1.70.0
239//! - **Documentation**: [docs.rs/scirs2-integrate](https://docs.rs/scirs2-integrate)
240//! - **Repository**: [github.com/cool-japan/scirs](https://github.com/cool-japan/scirs)
241
242// Export common types and error types
243pub mod acceleration;
244pub mod autotuning;
245pub mod common;
246pub mod error;
247pub use common::IntegrateFloat;
248pub use error::{IntegrateError, IntegrateResult};
249
250// Advanced performance and analysis modules
251pub mod amr_advanced;
252pub mod error_estimation;
253pub mod parallel_optimization;
254pub mod performance_monitor;
255
256// Advanced-performance optimization modules (Advanced mode)
257pub mod advanced_memory_optimization;
258pub mod advanced_simd_acceleration;
259pub mod gpu_advanced_acceleration;
260pub mod mode_coordinator;
261pub mod neural_rl_step_control;
262pub mod realtime_performance_adaptation;
263// pub mod advanced_mode_coordinator; // Module not implemented yet
264
265// Comprehensive tests for Advanced mode
266#[cfg(test)]
267pub mod mode_tests;
268
269// Integration modules
270pub mod bvp;
271pub mod bvp_extended;
272pub mod cubature;
273pub mod dae;
274pub mod gaussian;
275pub mod lebedev;
276pub mod memory;
277pub mod monte_carlo;
278#[cfg(feature = "parallel")]
279pub mod monte_carlo_parallel;
280pub mod newton_cotes;
281
282// Use the new modular ODE implementation
283pub mod ode;
284
285// Symplectic integrators
286pub mod symplectic;
287
288// PDE solver module
289pub mod pde;
290
291// Symbolic integration support
292pub mod symbolic;
293
294// Enhanced automatic differentiation
295pub mod autodiff;
296
297// Specialized domain-specific solvers
298pub mod specialized;
299
300// Geometric integration methods
301pub mod geometric;
302
303// Advanced analysis tools for dynamical systems
304pub mod analysis;
305
306// Visualization utilities
307pub mod visualization;
308
309// ODE module is now fully implemented in ode/
310
311pub mod qmc;
312pub mod quad;
313pub mod quad_vec;
314pub mod romberg;
315pub mod scheduling;
316pub mod tanhsinh;
317pub mod utils;
318pub mod verification;
319
320// Re-exports for convenience
321pub use acceleration::{AcceleratorOptions, AitkenAccelerator, AndersonAccelerator};
322pub use autotuning::{
323    AlgorithmTuner, AutoTuner, GpuInfo, HardwareDetector, HardwareInfo, SimdFeature, TuningProfile,
324};
325pub use bvp::{solve_bvp, solve_bvp_auto, BVPOptions, BVPResult};
326pub use bvp_extended::{
327    solve_bvp_extended, solve_multipoint_bvp, BoundaryConditionType as BVPBoundaryConditionType,
328    ExtendedBoundaryConditions, MultipointBVP, RobinBC,
329};
330pub use cubature::{cubature, nquad, Bound, CubatureOptions, CubatureResult};
331pub use dae::{
332    bdf_implicit_dae, bdf_implicit_with_index_reduction, bdf_semi_explicit_dae,
333    bdf_with_index_reduction, create_block_ilu_preconditioner, create_block_jacobi_preconditioner,
334    krylov_bdf_implicit_dae, krylov_bdf_semi_explicit_dae, solve_higher_index_dae,
335    solve_implicit_dae, solve_ivp_dae, solve_semi_explicit_dae, DAEIndex, DAEOptions, DAEResult,
336    DAEStructure, DAEType, DummyDerivativeReducer, PantelidesReducer, ProjectionMethod,
337};
338pub use lebedev::{lebedev_integrate, lebedev_rule, LebedevOrder, LebedevRule};
339pub use memory::{
340    BlockingStrategy, CacheAwareAlgorithms, CacheFriendlyMatrix, CacheLevel, DataLayoutOptimizer,
341    MatrixLayout, MemoryPool, MemoryPrefetch, MemoryUsage, PooledBuffer,
342};
343pub use monte_carlo::{
344    importance_sampling, monte_carlo, monte_carlo_parallel, ErrorEstimationMethod,
345    MonteCarloOptions, MonteCarloResult,
346};
347#[cfg(feature = "parallel")]
348pub use monte_carlo_parallel::{
349    adaptive_parallel_monte_carlo, parallel_monte_carlo, ParallelMonteCarloOptions,
350};
351pub use newton_cotes::{newton_cotes, newton_cotes_integrate, NewtonCotesResult, NewtonCotesType};
352// Export ODE types from the new modular implementation
353pub use ode::{
354    solve_ivp, solve_ivp_with_events, terminal_event, EventAction, EventDirection, EventSpec,
355    MassMatrix, MassMatrixType, ODEMethod, ODEOptions, ODEOptionsWithEvents, ODEResult,
356    ODEResultWithEvents,
357};
358// Export PDE types
359pub use pde::elliptic::{EllipticOptions, EllipticResult, LaplaceSolver2D, PoissonSolver2D};
360pub use pde::finite_difference::{
361    first_derivative, first_derivative_matrix, second_derivative, second_derivative_matrix,
362    FiniteDifferenceScheme,
363};
364pub use pde::finite_element::{
365    BoundaryNodeInfo, ElementType, FEMOptions, FEMPoissonSolver, FEMResult, Point, Triangle,
366    TriangularMesh,
367};
368pub use pde::method_of_lines::{
369    MOL2DResult, MOL3DResult, MOLHyperbolicResult, MOLOptions, MOLParabolicSolver1D,
370    MOLParabolicSolver2D, MOLParabolicSolver3D, MOLResult, MOLWaveEquation1D,
371};
372pub use pde::spectral::spectral_element::{
373    QuadElement, SpectralElementMesh2D, SpectralElementOptions, SpectralElementPoisson2D,
374    SpectralElementResult,
375};
376pub use pde::spectral::{
377    chebyshev_inverse_transform, chebyshev_points, chebyshev_transform, legendre_diff2_matrix,
378    legendre_diff_matrix, legendre_inverse_transform, legendre_points, legendre_transform,
379    ChebyshevSpectralSolver1D, FourierSpectralSolver1D, LegendreSpectralSolver1D, SpectralBasis,
380    SpectralOptions, SpectralResult,
381};
382pub use pde::{
383    BoundaryCondition, BoundaryConditionType, BoundaryLocation, Domain, PDEError, PDEResult,
384    PDESolution, PDESolverInfo, PDEType,
385};
386// Export symbolic integration types
387pub use symbolic::{
388    detect_conservation_laws, generate_jacobian, higher_order_to_first_order, simplify,
389    ConservationEnforcer, ConservationLaw, FirstOrderSystem, HigherOrderODE, SymbolicExpression,
390    SymbolicJacobian, Variable,
391};
392// Export automatic differentiation types
393pub use autodiff::{
394    compress_jacobian, compute_sensitivities, detect_sparsity, forward_gradient, forward_jacobian,
395    reverse_gradient, reverse_jacobian, Dual, DualVector, ForwardAD, ParameterSensitivity,
396    ReverseAD, SensitivityAnalysis, SparseJacobian, SparsePattern, TapeNode,
397};
398// Export specialized domain-specific solvers
399pub use specialized::{
400    // Fluid dynamics exports
401    DealiasingStrategy,
402    // Finance module exports
403    FinanceMethod,
404    FinancialOption,
405    FluidBoundaryCondition,
406    FluidState,
407    FluidState3D,
408    // Quantum mechanics exports
409    GPUMultiBodyQuantumSolver,
410    GPUQuantumSolver,
411    Greeks,
412    HarmonicOscillator,
413    HydrogenAtom,
414    JumpProcess,
415    LESolver,
416    NavierStokesParams,
417    NavierStokesSolver,
418    OptionStyle,
419    OptionType,
420    // MultiBodyQuantumSolver, - TODO: Add when implemented
421    ParticleInBox,
422    QuantumAnnealer,
423    QuantumPotential,
424    QuantumState,
425    RANSModel,
426    RANSSolver,
427    RANSState,
428    SGSModel,
429    SchrodingerMethod,
430    SchrodingerSolver,
431    // VariationalQuantumEigensolver, - TODO: Add when implemented
432    // Quantum ML exports - TODO: Add when implemented
433    // EntanglementPattern,
434    // QuantumFeatureMap,
435    // QuantumKernelParams,
436    // QuantumSVMModel,
437    // QuantumSupportVectorMachine,
438    SpectralNavierStokesSolver,
439    StochasticPDESolver,
440    VolatilityModel,
441};
442// Export geometric integration methods
443pub use geometric::{
444    ABCFlow,
445    AngularMomentumInvariant2D,
446    CircularFlow2D,
447    ConservationChecker,
448    ConstrainedIntegrator,
449    DiscreteGradientIntegrator,
450    DivergenceFreeFlow,
451    DoubleGyre,
452    EnergyInvariant,
453    EnergyMomentumIntegrator,
454    EnergyPreservingMethod,
455    ExponentialMap,
456    GLn,
457    GeometricInvariant,
458    Gln,
459    HamiltonianFlow,
460    HeisenbergAlgebra,
461    HeisenbergGroup,
462    IncompressibleFlow,
463    LieAlgebra,
464    // Lie group integration
465    LieGroupIntegrator,
466    LieGroupMethod,
467    LinearMomentumInvariant,
468    ModifiedMidpointIntegrator,
469    MomentumPreservingMethod,
470    MultiSymplecticIntegrator,
471    SE3Integrator,
472    SLn,
473    SO3Integrator,
474    Se3,
475    Sln,
476    So3,
477    Sp2n,
478    SplittingIntegrator,
479    StreamFunction,
480    // Structure-preserving integration
481    StructurePreservingIntegrator,
482    StructurePreservingMethod,
483    StuartVortex,
484    TaylorGreenVortex,
485    VariationalIntegrator,
486    VolumeChecker,
487    // Volume-preserving integration
488    VolumePreservingIntegrator,
489    VolumePreservingMethod,
490    SE3,
491    SO3,
492};
493// Export analysis tools
494pub use analysis::advanced::{
495    BifurcationPointData, ContinuationAnalyzer, FixedPointData, MonodromyAnalyzer, MonodromyResult,
496    PeriodicStabilityType,
497};
498pub use analysis::{
499    BasinAnalysis,
500    BifurcationAnalyzer,
501    BifurcationPoint,
502    BifurcationType,
503    // Enhanced bifurcation and stability analysis
504    ContinuationResult,
505    FixedPoint,
506    PeriodicOrbit,
507    StabilityAnalyzer,
508    StabilityResult,
509    StabilityType,
510};
511// Export visualization utilities
512pub use visualization::{
513    // VisualizationEngine, // TODO: uncomment when implemented
514    AttractorStability,
515    BifurcationDiagram,
516    // BifurcationDiagramBuilder, // TODO: uncomment when implemented
517    ColorScheme,
518    // ConvergenceCurve, // TODO: uncomment when implemented
519    // ConvergencePlot, // TODO: uncomment when implemented
520    // Enhanced visualization tools
521    // ConvergenceVisualizer, // TODO: uncomment when implemented
522    // EnhancedBifurcationDiagram, // TODO: uncomment when implemented
523    HeatMapPlot,
524    // MultiMetricConvergencePlot, // TODO: uncomment when implemented
525    OutputFormat,
526    ParameterExplorationPlot,
527    PhaseSpace3D,
528    // PhaseDensityPlot, // TODO: uncomment when implemented
529    PhaseSpacePlot,
530    PlotMetadata,
531    PlotStatistics,
532    RealTimeBifurcationPlot,
533    SensitivityPlot,
534    // StepSizeAnalysisPlot, // TODO: uncomment when implemented
535    SurfacePlot,
536    VectorFieldPlot,
537};
538// Export advanced modules
539pub use amr_advanced::{
540    AMRAdaptationResult, AdaptiveCell, AdaptiveMeshLevel, AdvancedAMRManager,
541    CurvatureRefinementCriterion, FeatureDetectionCriterion, GeometricLoadBalancer,
542    GradientRefinementCriterion, LoadBalancer, MeshHierarchy, RefinementCriterion,
543};
544pub use error_estimation::{
545    AdvancedErrorEstimator, DefectCorrector, ErrorAnalysisResult, ErrorDistribution,
546    RichardsonExtrapolator, SolutionQualityMetrics, SpectralErrorIndicator,
547};
548pub use parallel_optimization::{
549    LoadBalancingStrategy, NumaTopology, ParallelExecutionStats, ParallelOptimizer, ParallelTask,
550    VectorOperation, VectorizedComputeTask, WorkStealingConfig, WorkStealingStats,
551};
552pub use performance_monitor::{
553    ConvergenceAnalysis as PerfConvergenceAnalysis, OptimizationRecommendation,
554    PerformanceAnalyzer, PerformanceBottleneck, PerformanceMetrics, PerformanceProfiler,
555    PerformanceReport,
556};
557// Export advanced-performance optimization modules
558pub use advanced_memory_optimization::{
559    AccessPattern, AdvancedMemoryOptimizer, CacheStrategy, L1CacheBuffer, L2CacheBuffer,
560    L3CacheBuffer, MemoryHierarchyManager, MemoryLayout, MemoryTier, MemoryType, NumaPlacement,
561    OptimizedMemoryRegion, PrefetchStrategy, ZeroCopyBuffer, ZeroCopyBufferPool,
562};
563pub use advanced_simd_acceleration::{
564    AdvancedSimdAccelerator, Avx512Support, MixedPrecisionOperation, PrecisionLevel,
565    SimdCapabilities, SveSupport, VectorizationStrategies,
566};
567pub use gpu_advanced_acceleration::{
568    AdvancedGPUAccelerator, AdvancedGPUMemoryPool, GpuDeviceInfo,
569    LoadBalancingStrategy as GpuLoadBalancingStrategy, MemoryBlock, MemoryBlockType,
570    MultiGpuConfiguration, RealTimeGpuMonitor,
571};
572pub use realtime_performance_adaptation::{
573    AdaptationStrategy, AlgorithmSwitchRecommendation, AnomalyAnalysisResult, AnomalySeverity,
574    AnomalyType, OptimizationRecommendations, PerformanceAnalysis, PerformanceAnomaly,
575    PerformanceBottleneck as AdaptivePerformanceBottleneck,
576    PerformanceMetrics as AdaptivePerformanceMetrics, PerformanceTrend, RealTimeAdaptiveOptimizer,
577};
578// pub use advanced_mode_coordinator::{
579//     PerformanceTargets, advancedModeConfig, advancedModeCoordinator, advancedModeMetrics,
580//     advancedModePerformanceReport, advancedModeResult,
581// }; // Module not implemented yet
582// Neural Reinforcement Learning Step Control exports
583pub use neural_rl_step_control::{
584    DeepQNetwork, Experience, NetworkWeights, NeuralRLStepController, PrioritizedExperienceReplay,
585    RLEvaluationResults, StateFeatureExtractor, StepSizePrediction, TrainingConfiguration,
586    TrainingResult,
587};
588// Implicit solvers for PDEs
589pub use pde::implicit::{
590    ADIResult, BackwardEuler1D, CrankNicolson1D, ImplicitMethod, ImplicitOptions, ImplicitResult,
591    ADI2D,
592};
593pub use qmc::{qmc_quad, qmc_quad_parallel, Faure, Halton, QMCQuadResult, RandomGenerator, Sobol};
594pub use quad::{quad, simpson, trapezoid};
595pub use quad_vec::{quad_vec, NormType, QuadRule, QuadVecOptions, QuadVecResult};
596pub use symplectic::{
597    position_verlet, symplectic_euler, symplectic_euler_a, symplectic_euler_b, velocity_verlet,
598    CompositionMethod, GaussLegendre4, GaussLegendre6, HamiltonianFn, HamiltonianSystem,
599    SeparableHamiltonian, StormerVerlet, SymplecticIntegrator, SymplecticResult,
600};
601pub use tanhsinh::{nsum, tanhsinh, TanhSinhOptions, TanhSinhResult};
602pub use verification::{
603    polynomial_solution, trigonometric_solution_2d, ConvergenceAnalysis, ErrorAnalysis,
604    ExactSolution, MMSODEProblem, MMSPDEProblem, PDEType as VerificationPDEType,
605    PolynomialSolution, TrigonometricSolution2D,
606};
607
608#[cfg(test)]
609mod tests {
610    #[test]
611    fn it_works() {
612        assert_eq!(2 + 2, 4);
613    }
614}