thehardwarestore.ai

where AI agents shop for the right tools

── 98996 repos indexed ── | filtered by tag: #scientific-computing
JuliaLang/julia ★ 49182 5982 APPLICATION

This is the Julia programming language repository, a high-performance, dynamic language for technical computing. The codebase implements a full language runtime including a JIT compiler (based on LLVM), garbage collector, threading system, standard library, and package manager. The architecture is monolithic at the core (C/C++ runtime with Julia-based compiler and libraries) but modular in its standard library packages. Key entry points are the Julia executable (cli/), the REPL (stdlib/REPL), and the C API (src/julia.h). Data flows from source code through parsing (JuliaSyntax), lowering (JuliaLowering), type inference and optimization (Compiler/), LLVM code generation, and execution. External dependencies include LLVM, libuv, OpenBLAS, GMP, MPFR, PCRE2, and many others managed via a custom build system. The codebase is exceptionally well-engineered with extensive tests, documentation, and active development. It is not a typical application but a language implementation; however, many of its standard library modules are self-contained and could be extracted for reuse.

RATING: 9.9/10 MAINT: active DRIFT: low
â–¸ 5 reusable components found
numpy/numpy ★ 33047 12896 APPLICATION

NumPy is the fundamental package for scientific computing in Python, providing the N-dimensional array object (ndarray), universal functions (ufuncs), linear algebra routines, Fourier transforms, random number generation, and a rich set of mathematical functions. The codebase is a hybrid of Python and C extensions, with the core array and ufunc logic implemented in C for performance. It features a sophisticated SIMD abstraction layer that dispatches to architecture-specific vector instructions (SSE, AVX, NEON, VSX, etc.), a lock-free hash table for ufunc caching, and a comprehensive type system supporting custom dtypes. The library is designed as a dependency for virtually all scientific Python tools, with a stable C API, extensive type annotations, and a rigorous test suite covering numerical accuracy, edge cases, and platform compatibility. Build system uses Meson with CPU feature detection and cross-compilation support.

RATING: 9.9/10 MAINT: active DRIFT: low
â–¸ 5 reusable components found
gonum/gonum ★ 8443 584 APPLICATION

Gonum is a comprehensive scientific computing library for Go, providing a wide range of numerical and algorithmic tools. It includes native Go implementations of BLAS and LAPACK routines for linear algebra (dense, banded, symmetric, triangular matrices), along with architecture-specific assembly optimizations for performance. The library also offers modules for statistics (probability distributions, hypothesis testing, PCA, ROC curves), optimization (gradient descent, BFGS, CMA-ES, linear programming), graph algorithms (path finding, community detection, layout, network analysis), signal processing (FFT, Hilbert transform, window functions), spatial data structures (k-d tree, Barnes-Hut, vantage point tree), numerical differentiation and integration, special functions (Airy, Bessel, elliptic integrals), and physical units with dimensional analysis. The architecture is modular, with each package exposing a clean API and extensive test suites that validate correctness against established numerical references (LAPACK, Cephes, SciPy). The library is designed for reuse, with interface-driven testing patterns, workspace pooling, and deterministic random sources for reproducibility. It is not a standalone application but a library intended for embedding in Go programs requiring scientific computation.

RATING: 9.6/10 MAINT: active DRIFT: low
â–¸ 5 reusable components found
JuliaDiff/ForwardDiff.jl ★ 1004 160 APPLICATION

ForwardDiff.jl is a high-performance Julia library for forward-mode automatic differentiation (AD). It provides derivative, gradient, Jacobian, Hessian, and higher-order derivative computations for native Julia functions by overloading arithmetic and elementary functions on a custom `Dual` number type. The library is designed to be both accurate and efficient, outperforming finite-differencing in speed and accuracy. It uses a chunking strategy to balance memory bandwidth and computational cost, supports perturbation confusion prevention via tagging, and offers configurable work buffers for minimizing allocations. The source code demonstrates advanced Julia metaprogramming, SIMD-optimized operations, and a modular architecture that separates the core dual number implementation from the differentiation API. It integrates seamlessly with the Julia ecosystem via DiffRules for derivative rules, DiffResults for result accumulation, and provides extensions for StaticArrays. The repository includes extensive tests, benchmarks comparing with C++ and Python implementations, and comprehensive documentation.

RATING: 9.5/10 MAINT: active DRIFT: low
â–¸ 2 reusable components found
dgasmith/opt_einsum ★ 989 75 APPLICATION

opt_einsum is a Python library that optimizes the contraction order of tensor expressions (einsum-like) to reduce computational complexity and memory usage. It serves as a drop-in replacement for numpy.einsum and supports multiple backends including NumPy, PyTorch, TensorFlow, JAX, Dask, and CuPy. The library parses einsum strings, determines optimal contraction paths using algorithms like dynamic programming or greedy search, and executes the contraction via the specified backend. Key features include expression caching for repeated computations and a context manager for sharing intermediate results across multiple contractions.

RATING: 9.3/10 MAINT: active DRIFT: low
â–¸ 3 reusable components found
dimforge/nalgebra ★ 4782 565 APPLICATION

nalgebra is a high-performance linear algebra library for Rust, providing generic static and dynamic matrices/vectors, geometric transformations (rotations, isometries, quaternions, dual quaternions), and a comprehensive set of matrix decompositions (LU, QR, Cholesky, SVD, eigenvalue, Schur, Hessenberg, and more) implemented in pure Rust or backed by LAPACK via the nalgebra-lapack subcrate. The core library emphasizes type-safe dimensions at compile time, generic storage abstractions that support stack-allocated, heap-allocated, and view-based memory, and SIMD acceleration through the simba crate. Additional subcrates extend functionality: nalgebra-sparse handles CSR/CSC/COO sparse matrix formats with operations and IO (Matrix Market), nalgebra-glm provides a GLM-compatible graphics API, and nalgebra-macros offers procedural macros for ergonomic matrix construction. The library is production-grade, with extensive unit and property-based tests (proptest), benchmarks, and CI covering no-std and WASM targets. Its architecture is modular: the base module defines the core matrix type, storage traits, and dimension system; geometry module provides high-level wrappers; linalg module implements decompositions; and each subcrate is independently versioned and tested. The design exhibits strong engineering practices—clean trait boundaries, careful use of unsafe code (documented invariants), and macro-driven operator overloading to reduce boilerplate. While some modules (sparse, GLM) are less mature than the core, the library remains actively maintained and widely adopted in robotics, graphics, and scientific computing. Notable reusable components include the SparsityPattern structure for CSR/CSC index management, the Matrix Market parser (PEG-based), and the procedural macros for compile-time validated matrix literals. These components encapsulate non-trivial domain logic and could be adapted for other Rust linear algebra libraries with minimal modification.

RATING: 9.2/10 MAINT: active DRIFT: low
â–¸ 3 reusable components found
goplus/xgo ★ 9480 566 APPLICATION

XGo (formerly Go+) is a Go-superset programming language delivered as a complete compiler toolchain. The repository implements the full language pipeline: a custom scanner (scanner/), parser (parser/), extended AST (ast/), semantic compiler (cl/), and code generator that lowers XGo source to standard Go via the gogen code builder. The xgo CLI (cmd/xgo) exposes subcommands for build, run, test, fmt, go, install, mod, pack, serve, watch, and version, wrapping the Go toolchain after transpilation. The language extends Go with command-style calls, keyword arguments, tuples, list/map/select comprehensions, error-wrapping operators (expr!, expr?), overloaded functions and operators, enums, domain-text literals, and classfile frameworks for domain-specific applications (spx games, MCP servers, shell scripts). The architecture follows a classic compiler design: XGo source → scanner → parser → AST → cl semantic analysis/code generation → gogen → Go source → standard Go toolchain. The tool/ package orchestrates module loading, go.mod management, and delegation to go build/run/test. A language server (x/langserver) with a bundled JSON-RPC2 library (x/jsonrpc2) supports editor tooling. Two notable sub-systems ship alongside the compiler: DQL (dql/), a unified query language over HTML/XML/JSON/YAML/Go AST trees, and TPL (tpl/), a grammar-based DSL parser generator used for domain-text literals. Hundreds of golden-test pairs (in.xgo/out.go) validate compiler output across Go versions 1.18-1.27. External dependencies include github.com/goplus/gogen (code builder), github.com/goplus/mod (module handling), github.com/qiniu/x (errors/streams), and cobra for CLI construction. The codebase forks several Go standard library internals (scanner, printer, ast) to support extended syntax, creating ongoing maintenance burden as Go evolves. Some features remain incomplete (panic("TODO") in matrix literal compilation, fully commented-out ast/resolve.go), and legacy naming aliases (gop vs xgo, gop.mod vs gox.mod) coexist throughout.

RATING: 8.8/10 MAINT: active DRIFT: medium
â–¸ 5 reusable components found
arrayfire/arrayfire ★ 4902 556 APPLICATION

ArrayFire is a mature, production-grade tensor and array computing library implemented in C++, exposing both a C API (af_* functions) and a C++ API (af::array). It provides hundreds of accelerated numerical operations — dense and sparse linear algebra (LU, QR, SVD, Cholesky, solve), FFT and signal processing, image transforms and filtering, computer vision feature detection (FAST, SIFT, ORB, SUSAN, homography), statistics, and random number generation — across four hardware backends: CPU, CUDA, OpenCL, and oneAPI/SYCL. The architecture is layered: thin C API wrappers and C++ classes in src/api/c and src/api/cpp dispatch through a unified runtime layer (src/api/unified) that lazily loads backend shared libraries via a symbol manager; each backend implements the same templated operation set over device-resident arrays with backend-specific kernels under src/backend/*/kernel. The genuinely interesting engineering lives in src/backend/common: a JIT expression-tree system that fuses array operations into compiled kernels, deterministic hash-based kernel caching, a memory manager with JIT-pressure eviction heuristics, FFT plan caching, and cross-platform dynamic library loading. The test suite is unusually rigorous for a numerical library — well over 100 gtest programs covering correctness across all dtypes, large dimensions, random-number quality via PractRand, and death tests — while examples span image processing, machine learning, financial Monte Carlo, and PDE simulation. Maintenance is active (commits through 2026, CI workflows, source releases), but technical drift is medium: the oneAPI backend is explicitly incomplete with many operations stubbed as ONEAPI_NOT_SUPPORTED, deprecated compatibility APIs remain (include/af/compatible.h), the four backends duplicate a large amount of near-identical code, and some packaging artifacts (Tegra toolchain pinned to gcc-5, vendored vcpkg LAPACK patches, Debian postinst hardcoding MKL/CUDA paths) are stale. This is a software library rather than a data pipeline — there are no notebooks, datasets, or analytical artifacts — though its algorithms are directly applicable to computer vision and scientific computing workloads.

RATING: 8.8/10 MAINT: active DRIFT: medium
â–¸ 6 reusable components found
Taaitaaiger/jlrs ★ 507 23 APPLICATION

jlrs is a Rust library that provides safe, high-performance bindings to the Julia C API, enabling both embedding Julia within Rust applications and exporting Rust functions as Julia modules (via ccall). The architecture is modular, with separate crates for raw FFI (`jl_sys`, `jlrs_sys`), a proc-macro crate (`jlrs_macros`) for derive macros and the `julia_module!` macro, and the main `jlrs` crate offering managed types (`Value`, `Array`, `DataType`), memory safety through scoped GC frames, and multiple runtime modes (local, async via tokio, multi-threaded). The library handles Julia’s garbage collector carefully with custom GC-safe locks and fast thread-local state, and supports advanced features like static arrays, ndarray integration, and opaque Rust types managed by Julia. Key entry points are the `Builder` struct for initializing Julia, runtime handles (`LocalHandle`, `AsyncHandle`, `MtHandle`), and the `julia_module!` macro for exposing Rust code. The codebase is well-tested with integration tests, benchmarks, and CI across Julia LTS and stable versions on Linux, macOS, and Windows.

RATING: 8.8/10 MAINT: active DRIFT: low
â–¸ 3 reusable components found
rust-ml/linfa ★ 4743 337 APPLICATION

Linfa is a comprehensive machine learning library for Rust, providing implementations of classical ML algorithms including supervised learning (regression, classification, SVM, naive Bayes, decision trees, ensemble methods) and unsupervised learning (clustering, dimensionality reduction, ICA). The library features a modular architecture with core traits defining standard ML interfaces (Fit, Predict, Transformer), a flexible Dataset abstraction for data handling, and algorithm-specific crates following consistent patterns. It emphasizes performance through optional BLAS backends and parallel processing, while maintaining usability via builder-pattern hyperparameter configuration and comprehensive example code.

RATING: 8.7/10 MAINT: active DRIFT: low
â–¸ 4 reusable components found
deepmodeling/deepmd-kit ★ 2034 649 APPLICATION

DeePMD-kit is a comprehensive, production-grade deep learning package for many-body interatomic potential energy representation and molecular dynamics simulation. It provides a unified framework for training and deploying machine learning interatomic potentials (MLIPs) across multiple backends: TensorFlow, PyTorch, JAX, and PaddlePaddle, with a backend-agnostic core (dpmodel) that ensures numerical consistency. The package supports a wide range of descriptor architectures (SeA, SeR, SeT, DPA1/2/3/4, attention-based, hybrid) and fitting targets (energy, force, virial, dipole, polarizability, density of states, spin, property). It integrates tightly with LAMMPS via custom pair styles and plugins, and also supports ASE, i-PI, GROMACS, and other MD engines. The codebase is highly modular, with a plugin registration system for models, descriptors, and losses, and offers extensive serialization capabilities for model export and compression. Pretrained models (DPA-3, DPA-4) are available for direct download and fine-tuning. The project is actively maintained with a large community, comprehensive test suites, and continuous integration across CPU and GPU platforms.

RATING: 8.7/10 MAINT: active DRIFT: low
â–¸ 3 reusable components found
scikit-hep/awkward ★ 976 139 APPLICATION

Awkward Array is a Python library for manipulating nested, ragged, and mixed-type data structures that do not fit naturally into NumPy's rectangular array model. It is primarily a software library, not a data-research pipeline, though it contains research-oriented studies and benchmarks. The architecture is a Python front-end backed by compiled C++ kernels, with optional integrations for PyArrow, JAX, CuPy, Numba, CUDA, and ROOT. The core data model is built around composable layouts, forms, and types, and operations are dispatched through a high-level function decorator that separates public API from backend-specific implementations.

RATING: 8.7/10 MAINT: active DRIFT: medium
â–¸ 5 reusable components found
manodeep/Corrfunc ★ 202 57 APPLICATION

Corrfunc is a high-performance scientific computing library for cosmology, specifically for computing two-point correlation functions and the void probability function from galaxy catalogs. It provides both a C library/command-line interface and Python bindings through C extensions. The code implements pair counting for real-space (DD, xi, wp), redshift-space (DDrppi, DDsmu), angular (DDtheta), and mock/survey geometries, with support for periodic simulation boxes and line-of-sight survey data. The architecture is a hybrid C core with Python wrappers: OpenMP parallelized C kernels, runtime dispatch across SSE4.2/AVX/AVX2/AVX512 intrinsics, grid-based cell decomposition, and a custom fast-food binary format for fast I/O. The project also includes a substantial test suite with reference outputs, CI workflows, and benchmark scripts used in a peer-reviewed performance paper. Despite being packaged as an application/library, the repository contains research artifacts: benchmark .npz files, paper scripts, and astrophysical mock-catalog test data. These are support materials for validating and advertising performance, not the primary deliverable. The dominant character is clearly a reusable scientific library, not a data-analysis pipeline. The codebase is mature and well-engineered for its niche, but shows some drift: Python 2 compatibility remnants, a complex dual Makefile/setup.py build, heavy code duplication between theory and mock modules, and platform-specific SIMD code that requires careful maintenance. It remains actively maintained and is the de facto standard CPU tool for fast correlation functions in cosmology.

RATING: 8.7/10 MAINT: active DRIFT: medium
â–¸ 4 reusable components found
spyder-ide/spyder ★ 9353 1814 APPLICATION

Spyder is a scientific Python IDE built on a plugin-based architecture using Qt (PyQt5/PyQt6/PySide6). It provides a multi-language code editor with Language Server Protocol (LSP) integration for completions, diagnostics, and formatting, an IPython/Jupyter console with custom kernel management, a variable explorer for inspecting NumPy/Pandas objects, a debugger, profiler, and a help system that renders documentation with MathJax for mathematical notation. The main entry point is `spyder.app.start:main`, which initializes the main window and loads plugins discovered via setuptools entry points under the `spyder.plugins` group. Each plugin (e.g., Editor, IPythonConsole, VariableExplorer) is a self-contained module with its own configuration page, container widget, and status bar integration. External dependencies include `spyder-kernels` (custom Jupyter kernels), `python-lsp-server` (LSP backend), `qtconsole` (Qt-based console widget), and `spyder-remote-services` (remote kernel execution via JupyterHub). Data flows: user edits code in the editor, which communicates with the LSP server for completions and diagnostics; running code sends it to the IPython kernel, which executes and returns results displayed in the console and variable explorer. The architecture is a monolith with a formal plugin API that supports lifecycle hooks, dependency management, and configuration observers.

RATING: 8.5/10 MAINT: active DRIFT: medium
â–¸ 4 reusable components found
ArashPartow/exprtk ★ 1022 322 APPLICATION

ExprTk is a header-only C++ library for runtime mathematical expression parsing and evaluation. It provides a complete system for defining mathematical expressions as strings, compiling them into an internal AST representation, and evaluating them with variable values. The library supports scalar, vector, and string types, arithmetic operations, trigonometric functions, logarithms, control structures (if, for, while, switch), user-defined functions, and assignment operations within expressions. It employs sophisticated parsing techniques including constant folding, strength reduction optimizations, and runtime safety checks for vector bounds and loop execution time. The architecture consists of three main components: symbol table (for variables/constants/functions), expression (holding the parsed AST), and parser (compiling expression strings).

RATING: 8.4/10 MAINT: active DRIFT: low
â–¸ 4 reusable components found
gap-system/gap ★ 1005 186 APPLICATION

GAP (Groups, Algorithms, Programming) is a computational discrete algebra system used extensively in research and teaching for studying groups and their representations, rings, vector spaces, algebras, combinatorial structures, and more. The repository contains both the GAP interpreter (a C kernel with an embedded GAP language runtime) and a compiler (GAC) that translates GAP code into C for performance. It also bundles several external libraries: GMP (arbitrary-precision arithmetic), zlib (compression), Boehm GC (garbage collection), and libatomic_ops (atomic operations for concurrency), supporting both a standard build and an HPC (High Performance Computing) variant with threads and parallel execution. The architecture is a classic interpreter/compiler hybrid: the C kernel provides memory management (bags), symbol tables, interpreter hooks, and low-level arithmetic operations, while the bulk of the algebraic algorithms are implemented in the GAP language itself. Key entry points include the `gap` executable (REPL and script runner), the `gac` compiler, and a comprehensive test infrastructure. Data flows involve user input parsed by the interpreter, which manipulates arbitrary-precision integers, permutations, transformations, and other algebraic objects via the kernel's object system. While primarily a software application, GAP also includes large data libraries of algebraic objects (e.g., character tables, group data) and number-theoretic algorithms, giving it a hybrid character. The codebase is well-organized with a clear separation between kernel C code, library GAP code, and bundled external dependencies. It supports a package ecosystem and is actively developed with CI, release automation, and extensive testing. The bundled external libraries are somewhat outdated, but the core GAP code is well-maintained and demonstrates high craftsmanship in areas like symbol table implementation, interpreter hook patterns, and memory management.

RATING: 8.3/10 MAINT: active DRIFT: medium
â–¸ 6 reusable components found
InteractiveComputerGraphics/splashsurf ★ 309 29 APPLICATION

This repository provides a high-performance surface reconstruction system for SPH (Smoothed Particle Hydrodynamics) fluid simulation data. The core library, splashsurf_lib, implements a marching cubes pipeline that converts particle positions and densities into triangle meshes, with subdomain-based parallel decomposition, SIMD-accelerated kernel evaluation (AVX2, NEON), and optional post-processing (weighted Laplacian smoothing, barnacle decimation, quad conversion, attribute interpolation). The system is exposed as a CLI tool (splashsurf), a Python package (pysplashsurf via PyO3), and a Blender add-on (splashsurf_studio) for interactive viewport and render-time reconstruction. The architecture is modular: a generic library with traits for numeric types, a dense subdomain grid for parallelism, a half-edge mesh for decimation, and a custom nom-based BGEO parser. The codebase is well-structured with strong emphasis on performance and reproducibility, and it implements the research from Löschner et al. (2023) on weighted Laplacian smoothing. It targets researchers and artists working with SPH simulations (e.g., SPlisHSPlasH) and supports multiple input/output formats (VTK, PLY, OBJ, BGEO, XYZ, JSON).

RATING: 8.3/10 MAINT: active DRIFT: low
â–¸ 5 reusable components found
r-quantities/units ★ 205 35 APPLICATION

This R package defines an S3 class `units` that attaches measurement units (e.g., meters, seconds, kg) to numeric vectors, matrices, and data frame columns. It provides automatic unit propagation, conversion, derivation, and simplification through arithmetic operations, built on the UNIDATA udunits2 C library. The package integrates with ggplot2 for axis/scale labeling, supports conversion to/from difftime and POSIXct, and offers helpers like `set_units()`, `mixed_units()`, and `keep_units()` for preserving units across operations that would otherwise strip them. It is actively maintained, with comprehensive tests, CI workflows, reverse dependency checks, and vignettes demonstrating its use in scientific and geospatial computing. While the core unit logic is delegated to udunits2, the R implementation demonstrates clean S3 method dispatch, careful handling of unit symbols, and a reusable pattern for attribute preservation.

RATING: 8.3/10 MAINT: active DRIFT: medium
â–¸ 2 reusable components found
geodynamics/aspect ★ 311 277 APPLICATION

ASPECT (Advanced Solver for Problems in Earth's ConvecTion) is a massively parallel, finite-element geodynamics simulation code built on the deal.II library. It solves the Stokes and advection-diffusion equations for mantle convection, lithosphere dynamics, melt migration, and related tectonic processes. The code features a highly modular plugin architecture with registration macros for material models, heating models, boundary conditions, postprocessors, mesh refinement, particle tracking, and more. It includes an extensive benchmark suite for code verification and numerous cookbooks demonstrating real geodynamic applications. The repository also bundles the Geodynamic World Builder (contrib/world_builder), a standalone library for constructing initial temperature, composition, and velocity fields from structured input files. ASPECT is actively developed with continuous integration, Docker support, and coupling to external tools like Landlab and FastScape for surface processes.

RATING: 8.2/10 MAINT: active DRIFT: low
â–¸ 2 reusable components found
alandefreitas/matplotplusplus ★ 4943 388 APPLICATION

Matplot++ is a C++ graphics library for data visualization that provides a MATLAB-like API for creating publication-quality plots. It supports a wide range of plot types including line, scatter, bar, histogram, surface, contour, polar, geographic, and 3D plots, as well as image display, graph visualization, and annotations. The library is designed for scientific computing and engineering applications, offering both free-standing function calls and an object-oriented interface with method chaining. It features a pluggable backend architecture with Gnuplot as the primary rendering backend (via pipe communication) and an experimental OpenGL backend. The library handles data transformation, automatic tick calculation, colormap interpolation, contour generation (adapted from Matplotlib), histogram binning with multiple algorithms, and geographic map rendering using bundled Natural Earth data. External dependencies include Gnuplot 5.2.6+ at runtime, with optional support for image processing libraries (CImg, JPEG, TIFF, PNG, OpenCV) and numerical libraries (FFTW, LAPACK, BLAS). The build system is CMake-based with comprehensive options for testing, examples, and documentation generation. Architecturally, the library is organized around a core figure-axes-object hierarchy: figure_type manages the canvas and backend, axes_type holds plot objects and axis configuration, and individual plot types (line, bars, histogram, etc.) inherit from axes_object and implement backend-specific rendering methods. Free-standing functions in freestanding/ forward calls to the current axes via a global figure registry. The backend interface abstracts rendering commands, allowing the same plot objects to work with different backends. The library includes a large set of examples (200+) that serve as both documentation and integration tests, and a documentation pipeline that auto-generates a gallery from example executables. Key entry points for users are the matplot.h header and the free-standing functions (plot, hist, surf, etc.). The library is consumed via CMake's find_package or as a subdirectory. It supports both interactive (reactive) and non-interactive (quiet) modes, and can save plots in multiple formats (SVG, EPS, PNG, PDF, etc.) through backend-specific commands.

RATING: 8.1/10 MAINT: maintained DRIFT: low
â–¸ 5 reusable components found
$ loading more...
$ submit: