## Changes for version 2.057_01 - 2021-09-24

- fix pp_add_boot to remove any blank lines (such as added by pp_line_numbers)
- GSL::CDF now uses barf() on error, not GSL default of core-dump
- propagate_badflag only recurses with children that had different value
- Example/doc-pp script to use GraphViz2 to show pp_def key dependencies
- affineinternal only read/write when both parent & child physical
- allow zero-length ndarray as slice index even for length-1 dim - thanks @trevcs for report (SF#443, GH#229)
- replace some malloc/free with smalloc to not leak on exception
- replace whole genpp infrastructure with generated C macro
- remove Core.twod, requires recompile
- remove PDL::iscontig
- move all non-SV-using C out of Core.xs to C files
- remove unused pdl_{copy,unpackdims} including from Core struct
- move extra checks and functionality from Core.xs setdims into pdl_setdims, call that
- fix off-by-one error in nthreadids
- pthreading can be over non-divisible number of threads
- remove Core.qsort_*
- zeroes now quicker as only does memset, not assgn operation
- add $PPSYM()
- change API of PDL->converttype to remove obsolete flag
- remove unused "copy" mechanism for pdl_trans
- rename (struct pdl).trans -> trans_parent for comprehensibility
- now an error if CopyBadStatusCode uses $PRIV(bvalflag)
- fix setnantobad doc to match behaviour fixed in 2.040, add setnonfinitetobad
- Inplace now throws error for >2 elements in array-ref
- remove oslice (after 8 years) and never-used Slices::{s_,}identity
- all PDL operations now have a C function interface called pdl_(name)_run
- add setinftobad - thanks @alex-prusevich for suggestion

## Documentation

script to generate Makefile.PL and PP file skeleton

making ndarrays from Perl and C/XS code

Discussion of bad value support in PDL

A journey through PDL's documentation, from beginner to advanced.

description of the dataflow philosophy

PDL changes between V1.0 and V2.0

Frequently asked questions about PDL

an index of PDL documentation

Introduction to indexing and slicing ndarrays.

description of some aspects of the current internals

A guide for MATLAB users.

A guide to PDL's module reference.

Object-Orientation, what is it and how to exploit it

Generate PDL routines from concise descriptions

Parallel processor multi-threading support in PDL

Why did we write PDL?

Quick introduction to PDL features.

A guide for Scilab users.

Tutorial for PDL's Threading feature

Small tidbits of useful arcana. Programming tidbits and such.

A guide to PDL's tutorial documentation.

How to diagnose and report PDL problems

Functions in the PDL distribution

an index of PDL documentation

An overview of the modules in the PDL::IO namespace.

the perl debugger with PDL support

Simple shell (version 2) for PDL

calculates pdl dependencies

shell interface to PDL documentation

Simple shell for PDL (see also pdl2)

## Modules

MatLab style AutoLoader for PDL

basic compile time constants for PDL

Basic utility functions for PDL

PDL subclass which allows reading and writing of fixed-length character strings as byte PDLs

fundamental PDL functionality and vectorization/threading

functions to support debugging of PDL scripts

PDL development module

PDL export control

Module for use by ExtUtils::Depends and Inline

subclass of Math::Complex with overload fallbacks

define fundamental PDL Datatypes

Write PDL Subroutines inline with PDL::PP

Internal module to handle signatures

minimum PDL module OO loader

minimum PDL module function loader

declare PDL lvalue subs

a convenience matrix class for column-major access

simplifies option passing by hash in PerlDL

the Perl Data Language

a reduce function for PDL

toward a nicer slicing syntax for PDL

PDL demo for PDL::Graphics::Prima

support for PDL online documentation

commands for accessing PDL doc database from 'perldl' shell

a simple PDL module containing inlined Pdlpp code

PDL always processes bad values

handle complex numbers (DEPRECATED - use native complex)

compression utilities

FFTs for PDL

routines for fitting gaussians

PDL interface to the Proj4 projection library.

PDL interface to GSL Cumulative Distribution Functions

PDL interface to numerical differentiation routines in GSL

PDL interface to numerical integration routines in GSL

PDL interface to Interpolation routines in GSL

PDL interface to linear algebra routines in GSL

PDL interface to multidimensional root-finding routines in GSL

PDL interface to RNG and randist routines in GSL

PDL interface to GSL Special Functions

PDL interface to GSL Special Functions

PDL interface to GSL Special Functions

PDL interface to GSL Special Functions

PDL interface to GSL Special Functions

PDL interface to GSL Special Functions

PDL interface to GSL Special Functions

PDL interface to GSL Special Functions

PDL interface to GSL Special Functions

PDL interface to GSL Special Functions

PDL interface to GSL Special Functions

PDL interface to GSL Special Functions

PDL interface to GSL Special Functions

PDL interface to GSL Special Functions

PDL interface to GSL Special Functions

PDL interface to GSL Special Functions

PDL interface to GSL Special Functions

PDL interface to GSL Special Functions

PDL interface to GSL Special Functions

PDL interface to GSL Special Functions

PDL interface to GSL Special Functions

PDL interface to GSL Special Functions

PDL interface to GSL Special Functions

PDL interface to GSL Special Functions

PDL interface to GSL Special Functions

PDL interface to GSL Special Functions

PDL interface to GSL Special Functions

PDL interface to GSL Special Functions

Display PDL images on IIS devices (saoimage/ximtool)

quick routines to plot lots of stuff from ndarrays.

Helper routines for Three-dimensional graphics

2D data browser for PDL

Interface to the GD image library.

An interface library for HDF4 files.

PDL interface to the HDF4 SD library.

misc IO routines for PDL

pnm format I/O for PDL

helper functions to make PDL usable with Storable

Miscellaneous 2D image processing functions

useful image processing in N dimensions

some utility functions for RGB image data handling

extended mathematical operations and special functions

Some Useful Matrix Operations

a PDL interface to the Minuit library

Fundamental mathematical operators

primitive operations for pdl

PDL interface to the slatec numerical programming library

Indexing, slicing, and dicing

Coordinate transforms, image warping, and N-D functions

PDL::Transform interface to the Proj4 projection library

primitive ufunc operations for pdl

An object oriented interface to PDL graphics

provides access to a number of look-up tables

derive limits for display purposes

PGPLOT enhanced interface for PDL

Setting PGPLOT options

A OO interface to PGPLOT windows

A package to keep track of plotting commands

PDL TriD OpenGL interface using POGL

PDL 3D interface

default event handler subroutines

3D Surface contours for TriD

Text tools

Mathematical Graph objects for PDL

Simple Graph Objects for TriD

TriD VRML backend

a module for reading DICOM images.

data dumping for structs with PDLs

Simple FITS support for PDL

A simple, fast and convenient io format for PerlDL.

A flexible binary I/O format for PerlDL

A PDL interface to the HDF4 library.

I/O of IDL Save Files

image I/O for PDL

call functions in external shared libraries

Non-memory-resident array object

linear filtering for PDL

routines for fitting with polynomials

interpolation, integration, & gradient estimation (differentiation) of functions

Simplex optimization routines

Gaussian distributions.

Levenberg-Marquardt fitting routine for PDL

Linear predictive filtering

routines for fitting data with linear combinations of functions.

Useful cartographic projections

filter out Moose cruft

enable PDL NiceSlice syntax

implement perldl aliases/escapes

disable default print output

profile for Perldl2 shell

## Provides

in Basic/Gen/Inline/MakePdlppInstallable.pm

in Basic/Core/Core.pm

in Basic/Core/Dbg.pm

in Basic/Lvalue.pm

in GENERATED/PDL/Ops.pm

in GENERATED/PDL/Primitive.pm

in Example/Benchmark/Bench.pm

in Demos/BAD2_demo.pm.PL

in Demos/BAD_demo.pm.PL

in Demos/Cartography_demo.pm

in Demos/General.pm

in Demos/Gnuplot_demo.pm

in Demos/PGPLOT_OO_demo.pm

in Demos/PGPLOT_demo.pm

in Demos/Screen.pm

in Demos/Transform_demo.pm

in Demos/TriD1.pm

in Demos/TriD2.pm

in Demos/TriDGallery.pm

in Doc/Doc/Config.pm.PL

in Libtmp/Filter/Linear.pm

in Libtmp/Slatec/LinPred.pm

in Libtmp/Filter/Linear.pm

in Graphics/TriD/TriD/MathGraph.pm

in Graphics/TriD/TriD/MathGraph.pm

in Graphics/Limits/Limits.pm

in Graphics/TriD/POGL/OpenGL.pm

in Graphics/TriD/TriD/Mesh.pm

in Graphics/TriD/TriD/ArcBall.pm

in Graphics/TriD/TriD/ArcBall.pm

in Graphics/TriD/TriD/ArcBall.pm

in Graphics/TriD/TriD.pm

in Graphics/TriD/TriD.pm

in Graphics/TriD/TriD/Polygonize.pm

in Graphics/TriD/TriD/Control3D.pm

in Graphics/TriD/TriD/Graph.pm

in Graphics/TriD/TriD/TextObjects.pm

in Graphics/TriD/TriD/Graph.pm

in Graphics/TriD/TriD/GL.pm

in Graphics/TriD/TriD/OOGL.pm

in Graphics/TriD/TriD/Objects.pm

in Graphics/TriD/TriD/Objects.pm

in Graphics/TriD/TriD/GoBoard.pm

in Graphics/TriD/TriD/Graph.pm

in Graphics/TriD/TriD/Image.pm

in Graphics/TriD/TriD/Objects.pm

in Graphics/TriD/TriD/Objects.pm

in Graphics/TriD/TriD/Objects.pm

in Graphics/TriD/TriD/Lines.pm

in Graphics/TriD/TriD/Logo.pm

in Graphics/TriD/TriD.pm

in Graphics/TriD/TriD/Mesh.pm

in Graphics/TriD/TriD/OOGL.pm

in Graphics/TriD/TriD/OOGL.pm

in Graphics/TriD/TriD/Object.pm

in Graphics/TriD/TriD.pm

in Graphics/TriD/TriD/Objects.pm

in Graphics/TriD/TriD/Graph.pm

in Graphics/TriD/TriD/Polygonize.pm

in Graphics/TriD/TriD/ArcBall.pm

in Graphics/TriD/TriD/Quaternion.pm

in Graphics/TriD/TriD/Objects.pm

in Graphics/TriD/TriD/Objects.pm

in Graphics/TriD/TriD/Objects.pm

in Graphics/TriD/TriD/Objects.pm

in Graphics/TriD/TriD/Objects.pm

in Graphics/TriD/TriD.pm

in Graphics/TriD/TriD/SimpleScaler.pm

in Graphics/TriD/TriD/Control3D.pm

in Graphics/TriD/TriD/SimpleScaler.pm

in Graphics/TriD/TriD/Objects.pm

in Graphics/TriD/TriD/Polygonize.pm

in Graphics/TriD/TriD/Surface.pm

in Graphics/TriD/TriD.pm

in Graphics/TriD/TriD.pm

in Graphics/TriD/TriD/VRML.pm

in Graphics/TriD/TriD/VRML.pm

in Graphics/TriD/TriD/VRML.pm

in Graphics/TriD/TriD/GL.pm

in Graphics/TriD/TriD/VRML.pm

in Graphics/TriD/TriD/ViewPort.pm

in Graphics/TriD/TriD/GL.pm

in Graphics/TriD/TriD/VRML.pm

in Graphics/TriD/TriD/Window.pm

in Graphics/TriD/VRML/VRML.pm

in Graphics/TriD/VRML/VRML/Protos.pm

in Graphics/TriD/VRML/VRML.pm

in Graphics/TriD/VRML/VRML.pm

in Graphics/TriD/VRML/VRML.pm

in Basic/Gen/PP.pm

in Basic/Gen/PP/PDLCode.pm

in Basic/Gen/PP/PDLCode.pm

in Basic/Gen/PP/PDLCode.pm

in Basic/Gen/PP/PDLCode.pm

in Basic/Gen/PP/PDLCode.pm

in Basic/Gen/PP/PDLCode.pm

in Basic/Gen/PP/CType.pm

in Basic/Gen/PP/PDLCode.pm

in Basic/Gen/PP/PDLCode.pm

in Basic/Gen/PP/PDLCode.pm

in Basic/Gen/PP/Dims.pm

in Basic/Gen/PP/PDLCode.pm

in Basic/Gen/PP/PDLCode.pm

in Basic/Gen/PP/PDLCode.pm

in Basic/Gen/PP/PDLCode.pm

in Basic/Gen/PP/PDLCode.pm

in Basic/Gen/PP/PDLCode.pm

in Basic/Gen/PP/Dims.pm

in Basic/Gen/PP/PdlParObj.pm

in Basic/Gen/PP/PDLCode.pm

in Basic/Gen/PP/PDLCode.pm

in Basic/Gen/PP/PDLCode.pm

in Basic/Gen/PP.pm

in Basic/Gen/PP.pm

in Basic/Gen/PP.pm

in Basic/Gen/PP.pm

in Basic/Gen/PP.pm

in Basic/Gen/PP.pm

in Basic/Gen/PP.pm

in Basic/Gen/PP.pm

in Basic/Gen/PP.pm

in Basic/Gen/PP.pm

in Basic/Gen/PP.pm

in Basic/Gen/PP/PDLCode.pm

in Basic/Gen/PP/PDLCode.pm

in Basic/Gen/PP/PDLCode.pm

in Perldl2/Script.pm

in Doc/Doc.pm

in GENERATED/PDL/Transform.pm

in GENERATED/PDL/Transform.pm

in GENERATED/PDL/Transform/Proj4.pm

in GENERATED/PDL/Transform/Proj4.pm

in GENERATED/PDL/Transform/Proj4.pm

in GENERATED/PDL/Transform/Proj4.pm

in GENERATED/PDL/Transform/Proj4.pm

in GENERATED/PDL/Transform/Proj4.pm

in GENERATED/PDL/Transform/Proj4.pm

in GENERATED/PDL/Transform/Proj4.pm

in GENERATED/PDL/Transform/Proj4.pm

in GENERATED/PDL/Transform/Proj4.pm

in GENERATED/PDL/Transform/Proj4.pm

in GENERATED/PDL/Transform/Proj4.pm

in GENERATED/PDL/Transform/Proj4.pm

in GENERATED/PDL/Transform/Proj4.pm

in GENERATED/PDL/Transform/Proj4.pm

in GENERATED/PDL/Transform/Proj4.pm

in GENERATED/PDL/Transform/Proj4.pm

in GENERATED/PDL/Transform/Proj4.pm

in GENERATED/PDL/Transform/Proj4.pm

in GENERATED/PDL/Transform/Proj4.pm

in GENERATED/PDL/Transform/Proj4.pm

in GENERATED/PDL/Transform/Proj4.pm

in GENERATED/PDL/Transform/Proj4.pm

in GENERATED/PDL/Transform/Proj4.pm

in GENERATED/PDL/Transform/Proj4.pm

in GENERATED/PDL/Transform/Proj4.pm

in GENERATED/PDL/Transform/Proj4.pm

in GENERATED/PDL/Transform/Proj4.pm

in GENERATED/PDL/Transform/Proj4.pm

in GENERATED/PDL/Transform/Proj4.pm

in GENERATED/PDL/Transform/Proj4.pm

in GENERATED/PDL/Transform/Proj4.pm

in GENERATED/PDL/Transform/Proj4.pm

in GENERATED/PDL/Transform/Proj4.pm

in GENERATED/PDL/Transform/Proj4.pm

in GENERATED/PDL/Transform/Proj4.pm

in GENERATED/PDL/Transform/Proj4.pm

in GENERATED/PDL/Transform/Proj4.pm

in GENERATED/PDL/Transform/Proj4.pm

in GENERATED/PDL/Transform/Proj4.pm

in GENERATED/PDL/Transform/Proj4.pm

in GENERATED/PDL/Transform/Proj4.pm

in GENERATED/PDL/Transform/Proj4.pm

in GENERATED/PDL/Transform/Proj4.pm

in GENERATED/PDL/Transform/Proj4.pm

in GENERATED/PDL/Transform/Proj4.pm

in GENERATED/PDL/Transform/Proj4.pm

in GENERATED/PDL/Transform/Proj4.pm

in GENERATED/PDL/Transform/Proj4.pm

in GENERATED/PDL/Transform/Proj4.pm

in GENERATED/PDL/Transform/Proj4.pm

in GENERATED/PDL/Transform/Proj4.pm

in GENERATED/PDL/Transform/Proj4.pm

in GENERATED/PDL/Transform/Proj4.pm

in GENERATED/PDL/Transform/Proj4.pm

in GENERATED/PDL/Transform/Proj4.pm

in GENERATED/PDL/Transform/Proj4.pm

in GENERATED/PDL/Transform/Proj4.pm

in GENERATED/PDL/Transform/Proj4.pm

in GENERATED/PDL/Transform/Proj4.pm

in GENERATED/PDL/Transform/Proj4.pm

in GENERATED/PDL/Transform/Proj4.pm

in GENERATED/PDL/Transform/Proj4.pm

in GENERATED/PDL/Transform/Proj4.pm

in GENERATED/PDL/Transform/Proj4.pm

in GENERATED/PDL/Transform/Proj4.pm

in GENERATED/PDL/Transform/Proj4.pm

in GENERATED/PDL/Transform/Proj4.pm

in GENERATED/PDL/Transform/Proj4.pm

in GENERATED/PDL/Transform/Proj4.pm

in GENERATED/PDL/Transform/Proj4.pm

in GENERATED/PDL/Transform/Proj4.pm

in GENERATED/PDL/Transform/Proj4.pm

in GENERATED/PDL/Transform/Proj4.pm

in GENERATED/PDL/Transform/Proj4.pm

in GENERATED/PDL/Transform/Proj4.pm

in GENERATED/PDL/Transform/Proj4.pm

in GENERATED/PDL/Transform/Proj4.pm

in GENERATED/PDL/Transform/Proj4.pm

in GENERATED/PDL/Transform/Proj4.pm

in GENERATED/PDL/Transform/Proj4.pm

in GENERATED/PDL/Transform/Proj4.pm

in GENERATED/PDL/Transform/Proj4.pm

in GENERATED/PDL/Transform/Proj4.pm

in GENERATED/PDL/Transform/Proj4.pm

in GENERATED/PDL/Transform/Proj4.pm

in GENERATED/PDL/Transform/Proj4.pm

in GENERATED/PDL/Transform/Proj4.pm

in GENERATED/PDL/Transform/Proj4.pm

in GENERATED/PDL/Transform/Proj4.pm

in GENERATED/PDL/Transform/Proj4.pm

in GENERATED/PDL/Transform/Proj4.pm

in GENERATED/PDL/Transform/Proj4.pm

in GENERATED/PDL/Transform/Proj4.pm

in GENERATED/PDL/Transform/Proj4.pm

in GENERATED/PDL/Transform/Proj4.pm

in GENERATED/PDL/Transform/Proj4.pm

in GENERATED/PDL/Transform/Proj4.pm

in GENERATED/PDL/Transform/Proj4.pm

in GENERATED/PDL/Transform/Proj4.pm

in GENERATED/PDL/Transform/Proj4.pm

in GENERATED/PDL/Transform/Proj4.pm

in GENERATED/PDL/Transform/Proj4.pm

in GENERATED/PDL/Transform/Proj4.pm

in GENERATED/PDL/Transform/Proj4.pm

in GENERATED/PDL/Transform/Proj4.pm

in GENERATED/PDL/Transform/Proj4.pm

in GENERATED/PDL/Transform/Proj4.pm

in GENERATED/PDL/Transform/Proj4.pm

in GENERATED/PDL/Transform/Proj4.pm

in GENERATED/PDL/Transform/Proj4.pm

in GENERATED/PDL/Transform/Proj4.pm

in GENERATED/PDL/Transform/Proj4.pm

in GENERATED/PDL/Transform/Proj4.pm

in GENERATED/PDL/Transform/Proj4.pm

in GENERATED/PDL/Transform/Proj4.pm

in GENERATED/PDL/Transform/Proj4.pm

in GENERATED/PDL/Transform/Proj4.pm

in GENERATED/PDL/Transform/Proj4.pm

in GENERATED/PDL/Transform/Proj4.pm

in GENERATED/PDL/Transform/Proj4.pm

in GENERATED/PDL/Transform/Proj4.pm

in GENERATED/PDL/Transform/Proj4.pm

in GENERATED/PDL/Transform/Proj4.pm

in GENERATED/PDL/Transform/Proj4.pm

in GENERATED/PDL/Transform/Proj4.pm

in GENERATED/PDL/Transform/Proj4.pm

in GENERATED/PDL/Transform/Proj4.pm

in GENERATED/PDL/Transform/Proj4.pm

in GENERATED/PDL/Transform/Proj4.pm

in GENERATED/PDL/Transform/Proj4.pm

in GENERATED/PDL/Transform/Proj4.pm

in GENERATED/PDL/Transform/Proj4.pm

in GENERATED/PDL/Transform/Proj4.pm

in GENERATED/PDL/Transform/Proj4.pm

in GENERATED/PDL/Transform/Proj4.pm

in GENERATED/PDL/Transform/Proj4.pm

in GENERATED/PDL/Transform/Proj4.pm

in GENERATED/PDL/Transform/Proj4.pm

in GENERATED/PDL/Transform/Proj4.pm

in GENERATED/PDL/Transform/Proj4.pm

in GENERATED/PDL/Transform/Proj4.pm

in GENERATED/PDL/Transform/Proj4.pm

in Basic/Core/Types.pm.PL

## Examples

- Basic/SourceFilter/example
- Example/Benchmark/Bench.xs
- Example/Benchmark/Makefile.PL
- Example/Benchmark/README.md
- Example/Benchmark/time.pl
- Example/Fit/lmfit_example.pl
- Example/IO/wmpeg.pl
- Example/InlinePdlpp/Module/Makefile.PL
- Example/InlinePdlpp/Module/t/myinlinemod.t
- Example/InlinePdlpp/inlpp.pl
- Example/InlinePdlpp/inlpp_link.pl
- Example/InlinePdlpp/inlppminimal.pl
- Example/PGPLOT/pgplot.pl
- Example/PGPLOT/std_pgplot.pl
- Example/Simplex/tsimp2.pl
- Example/Simplex/tsimp_needs_pgplot.pl
- Example/TriD/3dtest.pl
- Example/TriD/line3d.pl
- Example/TriD/old_trid_clip.pl
- Example/doc-pp