PDL#

📦 stdpdl

PDL - the Perl Data Language: fast, vectorised, multidimensional arrays for scientific and bulk numeric work.

use PDL boots Core, Ops, Ufunc, Math, Primitive, Slices, Basic and exports the standard PDL functions into the caller’s namespace.

Option B Architecture#

Every PDL object in Perl stores a *mut c_pdl (the C-repr struct from core_vtable) directly in PERL_MAGIC_ext on the blessed SV. This mirrors how upstream PDL does it (pdl_SetSV_PDL / pdl_SvPDLV from pdlcore.c).

No rust_pdl::Pdl intermediary. No copy bridge. The same pointer that lives in the SV is passed directly to pdl_run_* functions.

Child submodules declared here (leaf-with-children pattern, same as crate::native::Peta::FFI) because PDL has both its own P5_ENTRY and 14 sub-namespace modules. Rust does not allow #[path] combined with an inline block.

מודולים#

  • PDL::Bad — PDL::Bad - bad value (missing data) support.

  • PDL::Basic — PDL::Basic - basic constructors and utility functions.

  • PDL::Constants — PDL::Constants - mathematical and physical constants.

  • PDL::Core — PDL::Core - constructors, accessors, type system, DESTROY.

  • PDL::FFT — PDL::FFT - Fast Fourier Transform operations.

  • PDL::Lite — PDL::Lite - minimum PDL module OO loader.

  • PDL::LiteF — PDL::LiteF - PDL::Lite + Basic + Primitive.

  • PDL::Math — PDL::Math - mathematical functions (sin, cos, exp, log, etc.).

  • PDL::MatrixOps — PDL::MatrixOps - matrix operations (det, inv, eigens, etc.).

  • PDL::Ops — PDL::Ops - element-wise arithmetic, comparison, and logic operations.

  • PDL::Primitive — PDL::Primitive - fundamental operations (inner, outer, matmult, etc.).

  • PDL::Slices — PDL::Slices - indexing, slicing, and data rearrangement.

  • PDL::Types — PDL::Types - PDL type system (byte, short, long, float, double, etc.).

  • PDL::Ufunc — Unary reductions and aggregations over PDL arrays.

Functions#

Other Functions#

type_convert_func#

Shared XS function for all type constructors (byte, short, float, etc.)