Hawkynt

PPMd (PPM with Dynamic Memory)

Context trie with Method D escape estimation (escape frequency = number of distinct symbols observed), periodic rescaling, exclusion of already-coded symbols on escape, and a flat order(-1) fallback, entropy-coded with a multi-symbol range coder. Ported to be byte-for-byte identical to CompressionWorkbench’s BB_Ppmd (Model H) reference block.

Properties

Property Value
Category Compression Algorithms
Sub-category Statistical (PPM)
Security status 🎓 Educational Only
Complexity Expert
Inventor Dmitry Shkarin (concept); reduced clean-room reimplementation
Year 1999
Origin 🇷🇺 Russia
Source algorithms/compression/ppmd.js

Security

Status: 🎓 Educational Only

No vulnerabilities are recorded for this implementation.

Documentation

References

Test vectors

4 vectors ship with this algorithm and run in the test suite. Byte values are hexadecimal.

Vector 1 — Empty data test

Field Value
input (empty)
expected 0600000000

Vector 2 — Single byte test

Field Value
input 41
expected (empty)

Vector 3 — Mixed alphanumeric data

Field Value
input 54686520717569636b2062726f776e20 666f78206a756d7073206f7665722074 6865206c617a7920646f67
expected (empty)

Vector 4 — Repetitive text compression

Field Value
input 616263616263616263616263616263616263
expected (empty)

← All algorithms