# PDL
πŸ“¦ stdpdl
`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::p5::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. ## Modules - [`PDL::Bad`](PDL/Bad.md) β€” bad value (missing data) support - [`PDL::Basic`](PDL/Basic.md) β€” basic constructors and utility functions - [`PDL::Constants`](PDL/Constants.md) β€” mathematical and physical constants - [`PDL::Core`](PDL/Core.md) β€” constructors, accessors, type system, DESTROY - [`PDL::FFT`](PDL/FFT.md) β€” Fast Fourier Transform operations - [`PDL::Lite`](PDL/Lite.md) β€” minimum PDL module OO loader - [`PDL::LiteF`](PDL/LiteF.md) β€” PDL::Lite + Basic + Primitive - [`PDL::Math`](PDL/Math.md) β€” mathematical functions (sin, cos, exp, log, etc.) - [`PDL::MatrixOps`](PDL/MatrixOps.md) β€” matrix operations (det, inv, eigens, etc.) - [`PDL::Ops`](PDL/Ops.md) β€” element-wise arithmetic, comparison, and logic operations - [`PDL::Primitive`](PDL/Primitive.md) β€” fundamental operations (inner, outer, matmult, etc.) - [`PDL::Slices`](PDL/Slices.md) β€” indexing, slicing, and data rearrangement - [`PDL::Types`](PDL/Types.md) β€” PDL type system (byte, short, long, float, double, etc.) - [`PDL::Ufunc`](PDL/Ufunc.md) β€” Unary reductions and aggregations over PDL arrays. ## Functions ### Other Functions #### `type_convert_func` Shared XS function for all type constructors (byte, short, float, etc.)