{
  "krate": "mrlyrs",
  "version": "0.2.0",
  "modules": [
    {
      "path": "",
      "file": "lib.rs",
      "docs": [],
      "items": 2
    },
    {
      "path": "core",
      "file": "core/mod.rs",
      "docs": [
        "The substrate: tensors, cells, colors, images, codecs, resampling and seeded chance.",
        "The substrate: the road from a grid of bytes to pixels, with nothing mrly on it.",
        "",
        "- `tensor` makes and tallies the byte grids; `cell` dresses one in colors and tags.",
        "- `colors` holds the rgba color, the two themes and the house palette; `paint` spreads a palette over a cell.",
        "- `ramp` turns counter values into colors; `resample` rescales pixels and squashes them for hex.",
        "- `image` holds the paletted pixels; `codec` writes them as a png or a gif and reads a png back.",
        "- `rng` deals seeded chance: one xoshiro256++ stream, passed by hand, never global.",
        "- `error` holds the one error, its Result and the json parser; `named` names an enum.",
        "",
        "The json value and map are serde_json's, kept under `preserve_order` so an object comes back in the order it was written and both bridges print the same text.",
        "",
        "The doors: [`Tensor::of`](crate::core::tensor::Tensor::of), [`Tensor::rot90`](crate::core::tensor::Tensor::rot90), [`Color::from_hex`](crate::core::colors::Color::from_hex), [`Color::to_hex`](crate::core::colors::Color::to_hex), [`png`](crate::core::png()), [`unpng`](crate::core::unpng()), [`gif`](crate::core::gif()) and [`Colorizer::color`](crate::core::ramp::Colorizer::color)."
      ],
      "items": 28
    },
    {
      "path": "core::cell",
      "file": "core/cell.rs",
      "docs": [
        "The cell grid: type bytes with optional per-cell colors and tags."
      ],
      "items": 27
    },
    {
      "path": "core::codec",
      "file": "core/codec/mod.rs",
      "docs": [
        "The png and gif codecs, rented from the png and gif crates.",
        "A png is written paletted whenever 256 colors or fewer fit, rgba otherwise; a gif is always paletted and always loops."
      ],
      "items": 2
    },
    {
      "path": "core::colors",
      "file": "core/colors.rs",
      "docs": [
        "The rgba color, its themes and the fifteen-color palette utils/colors.py stamps."
      ],
      "items": 40
    },
    {
      "path": "core::error",
      "file": "core/error.rs",
      "docs": [
        "The one error type, its Result and the json parser over the rented value."
      ],
      "items": 4
    },
    {
      "path": "core::image",
      "file": "core/image.rs",
      "docs": [
        "The paletted image and its rows."
      ],
      "items": 1
    },
    {
      "path": "core::paint",
      "file": "core/paint.rs",
      "docs": [
        "The editions that distribute a palette over a cell."
      ],
      "items": 27
    },
    {
      "path": "core::ramp",
      "file": "core/ramp.rs",
      "docs": [
        "The colorizers that turn counter values into colors."
      ],
      "items": 2
    },
    {
      "path": "core::resample",
      "file": "core/resample.rs",
      "docs": [
        "The pixel resamplers and the hex squash."
      ],
      "items": 0
    },
    {
      "path": "core::rng",
      "file": "core/rng.rs",
      "docs": [
        "The seeded random stream."
      ],
      "items": 9
    },
    {
      "path": "core::tensor",
      "file": "core/tensor.rs",
      "docs": [
        "The tensor and its dtypes."
      ],
      "items": 41
    },
    {
      "path": "font",
      "file": "font/mod.rs",
      "docs": [
        "The alphabet: the stroked pixel glyphs, their rasters and their writing animations.",
        "The alphabet: a stroked pixel font of 108 characters, painted whole or written stroke by stroke.",
        "",
        "- `bitmaps` holds the raw on/off rows; `glyph` builds them into glyphs and trims them.",
        "- `pens` holds every glyph's hand-penned strokes; `paths` reads them and drafts new ones.",
        "- `names` gives a character its Unicode name.",
        "- `raster` lays a text out as one 0/1 grid; `animate` writes it cell by cell and loops the cycle.",
        "",
        "The font is the uppers, their corner-rounded lowers, the digits, the punctuation and arrows, and four specials; most glyphs are five rows of five, the ten that dip below the baseline are seven.",
        "",
        "The doors: [`glyph`](crate::font::glyph()), [`supported`](crate::font::supported()), [`map`](crate::font::map()), [`raster`](crate::font::raster()), [`path`](crate::font::path()), [`floor`](crate::font::floor()), [`animate`](crate::font::animate()), [`merge`](crate::font::merge()), [`cycle`](crate::font::cycle()) and [`name_of`](crate::font::name_of()).",
        "",
        "`cargo run -p mrlyrs --example pen` prints the pen tables; `-- X` drafts one glyph and its stroke floor."
      ],
      "items": 27
    },
    {
      "path": "font::animate",
      "file": "font/animate.rs",
      "docs": [
        "The stroke-order writing animations of text."
      ],
      "items": 0
    },
    {
      "path": "font::bitmaps",
      "file": "font/bitmaps.rs",
      "docs": [
        "The raw bitmap tables of the font."
      ],
      "items": 0
    },
    {
      "path": "font::glyph",
      "file": "font/glyph.rs",
      "docs": [
        "The glyph, its trimming and descenders, and the builders for uppers, lowers, digits, extras and specials."
      ],
      "items": 0
    },
    {
      "path": "font::names",
      "file": "font/names.rs",
      "docs": [
        "The Unicode names of the font's characters."
      ],
      "items": 0
    },
    {
      "path": "font::paths",
      "file": "font/paths.rs",
      "docs": [
        "The stroke orders that write each character."
      ],
      "items": 1
    },
    {
      "path": "font::pens",
      "file": "font/pens.rs",
      "docs": [
        "The hand-penned stroke tables, one per glyph."
      ],
      "items": 7
    },
    {
      "path": "font::raster",
      "file": "font/raster.rs",
      "docs": [
        "The 0/1 grid a text renders to."
      ],
      "items": 0
    },
    {
      "path": "gen",
      "file": "gen/mod.rs",
      "docs": [
        "The generator: the whole pipeline from a recipe to a file.",
        "The generator: the pipeline from a recipe to a file, for datasets, the automator, backgrounds.",
        "",
        "- `recipe`: the tile recipe, its families, groups, parities, catalog and size lists.",
        "- `draw`: one recipe drawn at random from a seeded stream under size constraints.",
        "- `build`: the recipe to cell builders, one per dimension.",
        "- `variation`: the seeded artwork, from recipe through paint to rendered files.",
        "- `name`: the canonical name of a recipe, and the recipe back out of it.",
        "",
        "The doors: [`Tile::new`](crate::gen::recipe::Tile::new),",
        "[`Tile::size`](crate::gen::recipe::Tile::size),",
        "[`Tile::check`](crate::gen::recipe::Tile::check),",
        "[`draw::create`](crate::gen::draw::create), [`random_design`](crate::gen::random_design),",
        "[`random_rotation`](crate::gen::random_rotation), [`build_2d`](crate::gen::build::build_2d),",
        "[`tree_mask`](crate::gen::tree_mask), [`variation::create`](crate::gen::variation::create),",
        "[`hex_key`](crate::gen::hex_key), [`classic_code_nd`](crate::gen::classic_code_nd),",
        "[`Tile::of`](crate::gen::name::Tile::of) and [`background`](crate::gen::background)."
      ],
      "items": 21
    },
    {
      "path": "gen::build",
      "file": "gen/build.rs",
      "docs": [
        "The recipe to cell builders, one per dimension, and the random draws that feed them."
      ],
      "items": 14
    },
    {
      "path": "gen::draw",
      "file": "gen/draw.rs",
      "docs": [
        "The random tile drawing the dimensions share, on the seeded stream."
      ],
      "items": 3
    },
    {
      "path": "gen::name",
      "file": "gen/name.rs",
      "docs": [
        "The tile name: a full tile recipe folded to its one canonical object."
      ],
      "items": 14
    },
    {
      "path": "gen::recipe",
      "file": "gen/recipe.rs",
      "docs": [
        "The tile recipe: its families, groups, parities, catalog and size lists."
      ],
      "items": 18
    },
    {
      "path": "gen::variation",
      "file": "gen/variation.rs",
      "docs": [
        "The seeded artwork run from tile recipe to rendered files."
      ],
      "items": 10
    },
    {
      "path": "life",
      "file": "life/mod.rs",
      "docs": [
        "The engine: a rule over a grid, stepped, recorded, measured and rendered.",
        "The engine: a rule over a grid, stepped, recorded, measured and rendered.",
        "",
        "- `step`: one generation of a grid under birth and survive counts.",
        "- `animate`: a seed run until it fixes, loops or times out.",
        "- `models`: the run config and the recorded life.",
        "- `metrics`: the entropy and churn readings of a run.",
        "- `crop`: the centred cropping and tiling of a run's frames.",
        "- `mask`: the design masks a rule reads and the lattice they generate.",
        "- `source`: the named sources of neighbor counts, and the counts they lay down.",
        "- `elementary`: the one-line automata and the card of one rule.",
        "- `render`: the PNG frames, the visit heatmap and the gif movie.",
        "- `rule`: the canonical name of a rule.",
        "",
        "The doors: [`next_grid`](crate::life::next_grid), [`animate`](crate::life::animate()),",
        "[`entropy`](crate::life::entropy), [`churn`](crate::life::churn),",
        "[`counts`](crate::life::counts), [`frames`](crate::life::frames),",
        "[`heatmap`](crate::life::heatmap), [`history`](crate::life::history) and",
        "[`Rule`](crate::life::Rule)."
      ],
      "items": 71
    },
    {
      "path": "life::animate",
      "file": "life/animate.rs",
      "docs": [
        "The run of a seed until it fixes, loops or times out."
      ],
      "items": 0
    },
    {
      "path": "life::crop",
      "file": "life/crop.rs",
      "docs": [
        "The centred cropping and tiling of a run's frames."
      ],
      "items": 0
    },
    {
      "path": "life::elementary",
      "file": "life/elementary.rs",
      "docs": [
        "The elementary automata: their stepping, their space-time diagrams and the card of one rule."
      ],
      "items": 1
    },
    {
      "path": "life::mask",
      "file": "life/mask.rs",
      "docs": [
        "The design masks a rule reads and the lattice they generate."
      ],
      "items": 0
    },
    {
      "path": "life::metrics",
      "file": "life/metrics.rs",
      "docs": [
        "The entropy and churn readings of a run."
      ],
      "items": 0
    },
    {
      "path": "life::models",
      "file": "life/models.rs",
      "docs": [
        "The run config and the recorded life."
      ],
      "items": 0
    },
    {
      "path": "life::render",
      "file": "life/render.rs",
      "docs": [
        "The PNG frames, the cumulative-visit heatmap and the gif movie of grids."
      ],
      "items": 1
    },
    {
      "path": "life::rule",
      "file": "life/rule.rs",
      "docs": [
        "The rule name: a life rule's birth and survival counts and whether the edge wraps."
      ],
      "items": 0
    },
    {
      "path": "life::source",
      "file": "life/source.rs",
      "docs": [
        "The named sources of neighbor-count values, and the counts they lay down."
      ],
      "items": 1
    },
    {
      "path": "life::step",
      "file": "life/step.rs",
      "docs": [
        "The one-generation advance of a grid."
      ],
      "items": 0
    },
    {
      "path": "math",
      "file": "math/mod.rs",
      "docs": [
        "The designs in space: codes, cells, cubes, hexagons, their counts, graphs and names.",
        "The designs in space.",
        "",
        "A small integer code picks the filled corners of a hypercube, that seed grows level by level",
        "into a fractal design, and the same code always unfolds into the same shape, so a design can be",
        "named, counted and drawn again from its number alone. Half the module generates and half",
        "measures; everything rests on the tensors and cells of [`crate::core`] and the sequences of",
        "[`crate::num`].",
        "",
        "- `atoms` fills a tensor with a carpet, a net, beams or noise.",
        "- `bang` enumerates the design codes, their symmetries and their counts.",
        "- `cell` holds the N-dimensional cell and the pipeline the fixed dimensions share.",
        "- `two`, `three` and `six` run that pipeline for flat cells, cubes and hexagons.",
        "- `counts` gives the same fills, surfaces, hex slices and carry ladder in closed form.",
        "- `graph` lifts a grid into nodes and branches; `spectrum` reads the Laplacian spectra off it.",
        "- `shape` crops a cell against a rational shape, cell by cell, with no floats.",
        "- `rules` marks the cells of a hypercube whose coordinate residues satisfy a rule.",
        "- `moire` layers one design at many scales into an interference field.",
        "- `press` weighs the integers a design's digit rule keeps.",
        "- `spin` spins a raster about its centre; `tourbillon` stacks the turned parity carpets.",
        "- `spirograph` rolls a byte grid as a wheel; `roulette` counts where its curves cross.",
        "- `name` prints and parses the one canonical JSON object of every design, rule, tile and word.",
        "",
        "The doors are [`crate::math::atoms::carpet_2d`], [`crate::math::bang::bang`],",
        "[`crate::math::two::carpet`], [`crate::math::two::census()`], [`crate::math::two::to_json`],",
        "[`crate::math::counts::fill`], [`crate::math::three::census::surface`] and",
        "[`crate::math::spectrum::laplacian_spectrum`]."
      ],
      "items": 0
    },
    {
      "path": "math::atoms",
      "file": "math/atoms.rs",
      "docs": [
        "Ready-made tensors: zeros, ones, noise and carpets in two or three dimensions."
      ],
      "items": 36
    },
    {
      "path": "math::bang",
      "file": "math/bang/mod.rs",
      "docs": [
        "The universe of design codes: corners, symmetries and their counts.",
        "The universe of design codes.",
        "",
        "A code is a bitmask over the residue corners of a hypercube; this folder packs corners into",
        "codes, folds codes into symmetry classes, counts the classes and spells the magic words."
      ],
      "items": 26
    },
    {
      "path": "math::bang::baseq",
      "file": "math/bang/baseq.rs",
      "docs": [
        "The base-q symmetry maps, the design counts raw and distinct, and the fill classes."
      ],
      "items": 17
    },
    {
      "path": "math::bang::catalog",
      "file": "math/bang/catalog.rs",
      "docs": [
        "The cached canonical codes and tile sources of a dimension."
      ],
      "items": 3
    },
    {
      "path": "math::bang::code",
      "file": "math/bang/code.rs",
      "docs": [
        "The design code: the bitmask of filled corners, printed and parsed as one number."
      ],
      "items": 1
    },
    {
      "path": "math::bang::factory",
      "file": "math/bang/factory.rs",
      "docs": [
        "The packing of residue corners into codes and back."
      ],
      "items": 5
    },
    {
      "path": "math::bang::universe",
      "file": "math/bang/universe.rs",
      "docs": [
        "The corners, codes and symmetries that name designs."
      ],
      "items": 7
    },
    {
      "path": "math::bang::word",
      "file": "math/bang/word.rs",
      "docs": [
        "The magic words: their products, their component counts and the schedules that spell them."
      ],
      "items": 21
    },
    {
      "path": "math::cell",
      "file": "math/cell/mod.rs",
      "docs": [
        "The dimension-generic cell and the pipeline the fixed dimensions share.",
        "The N-dimensional cell and the pipeline the fixed dimensions share.",
        "",
        "A seed pattern grows into a fractal cell here, and `two`, `three` and `six` are that one",
        "pipeline pinned to a dimension: census, geometry, graphs, painting, text and JSON."
      ],
      "items": 2
    },
    {
      "path": "math::cell::census",
      "file": "math/cell/census.rs",
      "docs": [
        "The fill, void and exposure counts of an N-dimensional cell."
      ],
      "items": 5
    },
    {
      "path": "math::cell::designs",
      "file": "math/cell/designs.rs",
      "docs": [
        "The growth of a seed pattern into a fractal cell."
      ],
      "items": 0
    },
    {
      "path": "math::cell::geometry",
      "file": "math/cell/geometry.rs",
      "docs": [
        "The merges, magic folds, mosaics and perforations of N-dimensional cells."
      ],
      "items": 2
    },
    {
      "path": "math::cell::graph",
      "file": "math/cell/graph.rs",
      "docs": [
        "The core, edge and tunnel networks of an N-dimensional cell."
      ],
      "items": 0
    },
    {
      "path": "math::cell::models",
      "file": "math/cell/models.rs",
      "docs": [
        "The N-dimensional cell and its fixed-dimension aliases."
      ],
      "items": 25
    },
    {
      "path": "math::cell::painter",
      "file": "math/cell/painter.rs",
      "docs": [
        "The coloring of an N-dimensional cell by mapping and mode."
      ],
      "items": 0
    },
    {
      "path": "math::cell::renderer",
      "file": "math/cell/renderer.rs",
      "docs": [
        "The glyph pushing the text renderers share."
      ],
      "items": 0
    },
    {
      "path": "math::cell::serializer",
      "file": "math/cell/serializer.rs",
      "docs": [
        "The JSON reading the cell serializers share."
      ],
      "items": 8
    },
    {
      "path": "math::counts",
      "file": "math/counts/mod.rs",
      "docs": [
        "The closed-form counts: fills, surfaces, hex slices and the carry ladder, without rendering.",
        "The closed-form counts.",
        "",
        "Every number the censuses reach by walking a built cell, this folder reaches by formula:",
        "fills, grids, exposed surfaces, hex slices and the base-q carry ladder."
      ],
      "items": 26
    },
    {
      "path": "math::counts::counting",
      "file": "math/counts/counting.rs",
      "docs": [
        "The closed-form fill and grid counts of coded fractals."
      ],
      "items": 0
    },
    {
      "path": "math::counts::diagonal",
      "file": "math/counts/diagonal.rs",
      "docs": [
        "The diagonal profile of any tile's power, as a digit polynomial."
      ],
      "items": 1
    },
    {
      "path": "math::counts::ladder",
      "file": "math/counts/ladder.rs",
      "docs": [
        "The base-q slice carry automaton: its digit polynomial, its matrix, its ladder and its sign law."
      ],
      "items": 12
    },
    {
      "path": "math::counts::six",
      "file": "math/counts/six.rs",
      "docs": [
        "The closed-form triangle, node and edge counts of hex slices."
      ],
      "items": 8
    },
    {
      "path": "math::counts::surface",
      "file": "math/counts/surface.rs",
      "docs": [
        "The closed-form exposed-surface counts of 3d fractals."
      ],
      "items": 0
    },
    {
      "path": "math::graph",
      "file": "math/graph/mod.rs",
      "docs": [
        "The spatial network: its nodes, branches, extraction and census.",
        "The spatial network.",
        "",
        "A grid lifts into nodes and branches, as a core, an edge or a tunnel network, and the census",
        "reads its roles, tips, junctions and components back."
      ],
      "items": 32
    },
    {
      "path": "math::graph::census",
      "file": "math/graph/census.rs",
      "docs": [
        "The role tags, lengths, tip, junction and component counts of a network."
      ],
      "items": 0
    },
    {
      "path": "math::graph::extract",
      "file": "math/graph/extract.rs",
      "docs": [
        "The core, edge and tunnel networks lifted from a grid."
      ],
      "items": 0
    },
    {
      "path": "math::graph::layout",
      "file": "math/graph/layout.rs",
      "docs": [
        "The force-directed layout that lets a lattice relax."
      ],
      "items": 0
    },
    {
      "path": "math::graph::models",
      "file": "math/graph/models.rs",
      "docs": [
        "The node, branch and network types."
      ],
      "items": 0
    },
    {
      "path": "math::moire",
      "file": "math/moire/mod.rs",
      "docs": [
        "The moire fields layered from sampled designs.",
        "The moire fields.",
        "",
        "One design sampled at many scales and stacked makes an interference pattern; the layers, their",
        "combination, the volume they cut and the PNG they render live here."
      ],
      "items": 39
    },
    {
      "path": "math::moire::field",
      "file": "math/moire/field.rs",
      "docs": [
        "The square grid of f32 samples."
      ],
      "items": 0
    },
    {
      "path": "math::moire::layer",
      "file": "math/moire/layer.rs",
      "docs": [
        "The recipe and sampling of one moire layer."
      ],
      "items": 0
    },
    {
      "path": "math::moire::pairs",
      "file": "math/moire/pairs.rs",
      "docs": [
        "The exact correlations of flat carpet layers, and the prime detector they make."
      ],
      "items": 4
    },
    {
      "path": "math::moire::presets",
      "file": "math/moire/presets.rs",
      "docs": [
        "The named recipes: the parity heatmap, its weave, its hive and the carpet stack."
      ],
      "items": 0
    },
    {
      "path": "math::moire::render",
      "file": "math/moire/render.rs",
      "docs": [
        "The quantized PNG rendering of a field."
      ],
      "items": 0
    },
    {
      "path": "math::moire::sample",
      "file": "math/moire/sample.rs",
      "docs": [
        "The lattice coordinates and code-membership tests behind the layers."
      ],
      "items": 3
    },
    {
      "path": "math::moire::stack",
      "file": "math/moire/stack.rs",
      "docs": [
        "The stacking of layers into one combined field."
      ],
      "items": 0
    },
    {
      "path": "math::moire::volume",
      "file": "math/moire/volume.rs",
      "docs": [
        "The cube designs stacked into a volume, and the planes that cut it."
      ],
      "items": 0
    },
    {
      "path": "math::name",
      "file": "math/name/mod.rs",
      "docs": [
        "The mrly names: one canonical JSON object for every mathematical thing.",
        "The mrly names.",
        "",
        "Every mathematical thing prints one canonical JSON object, and the url, filename, prose and id",
        "views are functions of that one string."
      ],
      "items": 41
    },
    {
      "path": "math::name::bang",
      "file": "math/name/bang.rs",
      "docs": [
        "The bang name: a design code pinned to its dimension, lattice and base."
      ],
      "items": 0
    },
    {
      "path": "math::name::sequence",
      "file": "math/name/sequence.rs",
      "docs": [
        "The sequence name: a design's reading pinned to its measure and axis."
      ],
      "items": 0
    },
    {
      "path": "math::name::word",
      "file": "math/name/word.rs",
      "docs": [
        "The word name: an ordered list of design letters, each at its own side."
      ],
      "items": 0
    },
    {
      "path": "math::press",
      "file": "math/press.rs",
      "docs": [
        "The sequence press: the integers a design's digit rule keeps, weighed all at once."
      ],
      "items": 20
    },
    {
      "path": "math::roulette",
      "file": "math/roulette.rs",
      "docs": [
        "The nodes of a roulette: where the curves a wheel's pencils draw cross themselves and one another."
      ],
      "items": 9
    },
    {
      "path": "math::rules",
      "file": "math/rules.rs",
      "docs": [
        "The residue rules that mark a hypercube's cells."
      ],
      "items": 3
    },
    {
      "path": "math::shape",
      "file": "math/shape.rs",
      "docs": [
        "The exact crop machinery: rational shapes classified cell by cell, no floats."
      ],
      "items": 25
    },
    {
      "path": "math::six",
      "file": "math/six/mod.rs",
      "docs": [
        "The hexagon world: cubes flattened to triangle-meshed hexes.",
        "The hexagon world, the projection of `three`.",
        "",
        "A coded cube flattened to an iso, pro or cut hexagon, meshed into triangles, then counted,",
        "graphed, rastered and drawn like any other cell."
      ],
      "items": 66
    },
    {
      "path": "math::six::census",
      "file": "math/six/census.rs",
      "docs": [
        "The triangle, corner and edge tallies of a hex cell, whose census and euler take the extra include_grid flag."
      ],
      "items": 0
    },
    {
      "path": "math::six::designs",
      "file": "math/six/designs.rs",
      "docs": [
        "The coded cubes projected to iso, pro and cut hexagons."
      ],
      "items": 0
    },
    {
      "path": "math::six::geometry",
      "file": "math/six/geometry.rs",
      "docs": [
        "The hexagon shapes, projections and tessellations."
      ],
      "items": 0
    },
    {
      "path": "math::six::graph",
      "file": "math/six/graph.rs",
      "docs": [
        "The core, dual and edge networks of a hex slice."
      ],
      "items": 0
    },
    {
      "path": "math::six::painter",
      "file": "math/six/painter.rs",
      "docs": [
        "The coloring of a hex cell's triangles by type."
      ],
      "items": 0
    },
    {
      "path": "math::six::raster",
      "file": "math/six/raster.rs",
      "docs": [
        "The square raster of a hex cell's fills at the true aspect."
      ],
      "items": 0
    },
    {
      "path": "math::six::renderer",
      "file": "math/six/renderer.rs",
      "docs": [
        "The triangle, SVG and PNG renderings of a hex cell."
      ],
      "items": 1
    },
    {
      "path": "math::six::serializer",
      "file": "math/six/serializer.rs",
      "docs": [
        "The JSON form of a hex cell and its projection."
      ],
      "items": 0
    },
    {
      "path": "math::six::star",
      "file": "math/six/star.rs",
      "docs": [
        "The ghost star of the hexagonal cut stack: the arm ink law, the background and the cell-frame decay."
      ],
      "items": 20
    },
    {
      "path": "math::six::topology",
      "file": "math/six/topology.rs",
      "docs": [
        "The pieces, holes and enclosed voids of a hex slice's fill."
      ],
      "items": 0
    },
    {
      "path": "math::spectrum",
      "file": "math/spectrum.rs",
      "docs": [
        "The symmetric eigensolver and the Laplacian spectra it reads off a network."
      ],
      "items": 8
    },
    {
      "path": "math::spin",
      "file": "math/spin.rs",
      "docs": [
        "The turntable: the exact circle means of a raster about its centre, the profile they trace and the wheel it paints."
      ],
      "items": 14
    },
    {
      "path": "math::spirograph",
      "file": "math/spirograph.rs",
      "docs": [
        "The spirograph: a byte grid as a wheel with a pencil in every cell, rolled on a line, a circle or a polygon, and the curves it draws."
      ],
      "items": 29
    },
    {
      "path": "math::three",
      "file": "math/three/mod.rs",
      "docs": [
        "The cube pipeline: designs, tiles, graphs and renderings in three dimensions.",
        "The cube pipeline.",
        "",
        "The shared cell pipeline pinned to three dimensions: coded and carpet cubes, their censuses,",
        "their diagonal slices, their exposed quads and their JSON."
      ],
      "items": 61
    },
    {
      "path": "math::three::census",
      "file": "math/three/census.rs",
      "docs": [
        "The fill, void, volume, surface and Euler counts of a cube."
      ],
      "items": 0
    },
    {
      "path": "math::three::designs",
      "file": "math/three/designs.rs",
      "docs": [
        "The builders of coded, corner, noise and carpet cubes."
      ],
      "items": 0
    },
    {
      "path": "math::three::diagonal",
      "file": "math/three/diagonal.rs",
      "docs": [
        "The diagonal slices of a cube: their profile, their cells, their projection and their drawing."
      ],
      "items": 0
    },
    {
      "path": "math::three::faces",
      "file": "math/three/faces.rs",
      "docs": [
        "The exposed quads and wire edges of a cube."
      ],
      "items": 0
    },
    {
      "path": "math::three::geometry",
      "file": "math/three/geometry.rs",
      "docs": [
        "The orientations, merges, masked mosaics, slices and lifts of cubes."
      ],
      "items": 0
    },
    {
      "path": "math::three::renderer",
      "file": "math/three/renderer.rs",
      "docs": [
        "The text and Wavefront OBJ renderings of a cube."
      ],
      "items": 0
    },
    {
      "path": "math::three::serializer",
      "file": "math/three/serializer.rs",
      "docs": [
        "The JSON form of a cube."
      ],
      "items": 0
    },
    {
      "path": "math::tourbillon",
      "file": "math/tourbillon.rs",
      "docs": [
        "The tourbillon: the odd parity carpets turned one angle a layer and stacked inside the inscribed disc."
      ],
      "items": 10
    },
    {
      "path": "math::two",
      "file": "math/two/mod.rs",
      "docs": [
        "The flat-cell pipeline: designs, tiles, graphs and renderings in two dimensions.",
        "The flat-cell pipeline.",
        "",
        "The shared cell pipeline pinned to two dimensions: coded and carpet cells, their censuses,",
        "their payloads, their text and PNG renderings and their JSON."
      ],
      "items": 40
    },
    {
      "path": "math::two::census",
      "file": "math/two/census.rs",
      "docs": [
        "The fill, void, perimeter, corner, edge and Euler counts of a flat cell."
      ],
      "items": 0
    },
    {
      "path": "math::two::designs",
      "file": "math/two/designs.rs",
      "docs": [
        "The builders of coded, corner, noise and carpet cells."
      ],
      "items": 0
    },
    {
      "path": "math::two::geometry",
      "file": "math/two/geometry.rs",
      "docs": [
        "The merges, magic folds, masked mosaics and the cube lift of flat cells."
      ],
      "items": 0
    },
    {
      "path": "math::two::payload",
      "file": "math/two/payload.rs",
      "docs": [
        "The payload a cell's filled sites carry, framed in a sheet."
      ],
      "items": 1
    },
    {
      "path": "math::two::renderer",
      "file": "math/two/renderer.rs",
      "docs": [
        "The text and PNG renderings of a flat cell."
      ],
      "items": 0
    },
    {
      "path": "math::two::serializer",
      "file": "math/two/serializer.rs",
      "docs": [
        "The JSON form of a flat cell."
      ],
      "items": 0
    },
    {
      "path": "num",
      "file": "num/mod.rs",
      "docs": [
        "The integers: primes, divisors, series, lattices, spectra and networks.",
        "The instruments of number: primes, divisors, series, spectra, lattices and the designs the digits draw.",
        "",
        "Plain numbers and byte grids go in; counts, fractions, rates and measurements come out.",
        "Every answer is exact where the integers allow and a stated approximation where they do not.",
        "",
        "# Files",
        "",
        "- `apollonian`: an integral circle packing, the Ford circles on its line, the Farey stack beneath.",
        "- `automaton`: the Dirichlet series of a memory design, continued through its transfer matrix.",
        "- `blend`: term ops on sequences, the exact recurrence behind one, its growth rate.",
        "- `boolean`: a truth table's Walsh spectrum, nonlinearity, balance and avalanche.",
        "- `design`: the digit designs on the line, their Mobius meter and the ordinates it carries.",
        "- `factor`: factorizations, divisors, totients, radicals, Mobius values, gcd and lcm.",
        "- `fft`: the fast Fourier transform in one and two dimensions.",
        "- `gauss`: the Gaussian and the Eisenstein integers, their classes, windows and shells.",
        "- `ladder`: the Dirichlet series of a digit design, continued to the plane, each value with its bound.",
        "- `lattice`: coprime pairs, the Farey nodes of a window, the constant a dimension recovers.",
        "- `memory`: a rule on consecutive digits, its transfer matrix, its words, its Perron root.",
        "- `morse`: the Thue-Morse world: the digit rule, the substitution, the lifts and the runs.",
        "- `prime`: the sieve and its readings, ranks, gaps, counts and the shapes a number makes.",
        "- `radix`: a digit set inside the residues of a base in a ring, and where its words land.",
        "- `series`: the classic sequences, zeta and its cousins, the partials walking to pi, e and gamma.",
        "- `sieve`: the Wallis sieve and its kin as schedule words, with their rasters and limits.",
        "- `spiral`: the whole numbers wound on the square and the hexagonal lattice, marked and read.",
        "- `zeta`: zeta on the critical line, its zeros, the prime staircase they rebuild.",
        "",
        "# Doors",
        "",
        "- The divisor arithmetic: [`gcd`](crate::num::factor::gcd), [`factorial`](crate::num::factor::factorial), [`divisors`](crate::num::factor::divisors), [`mobius`](crate::num::factor::mobius).",
        "- The primality test: [`is_prime`](crate::num::prime::is_prime).",
        "- The zeta value above one: [`zeta`](crate::num::series::zeta)."
      ],
      "items": 0
    },
    {
      "path": "num::apollonian",
      "file": "num/apollonian.rs",
      "docs": [
        "The Apollonian gasket: a packing grown from its root quadruple in exact integers, the Ford circles it rests on the line, and the Farey stack they shadow."
      ],
      "items": 23
    },
    {
      "path": "num::automaton",
      "file": "num/automaton.rs",
      "docs": [
        "The matrix ladder: the Dirichlet series of a memory design continued through its transfer matrix, its determinant cofactor and the residues on its pole combs.",
        "",
        "A claim witness with no caller in the crate: it witnesses `research/claims/memory-dial.md`."
      ],
      "items": 16
    },
    {
      "path": "num::blend",
      "file": "num/blend.rs",
      "docs": [
        "The sequence blender: term ops, exact recurrences and growth rates."
      ],
      "items": 12
    },
    {
      "path": "num::boolean",
      "file": "num/boolean.rs",
      "docs": [
        "The boolean-function measures: Walsh spectra, nonlinearity, balance and avalanche."
      ],
      "items": 4
    },
    {
      "path": "num::design",
      "file": "num/design.rs",
      "docs": [
        "The digit designs on the integer line: their elements, their Mobius meter, its density echo and the ordinates its spectrum carries."
      ],
      "items": 15
    },
    {
      "path": "num::factor",
      "file": "num/factor.rs",
      "docs": [
        "The divisor arithmetic: factorizations, divisors, totients, radicals, the Mobius values and the exact whole-number arithmetic under them."
      ],
      "items": 17
    },
    {
      "path": "num::fft",
      "file": "num/fft.rs",
      "docs": [
        "The fast Fourier transform in one and two dimensions."
      ],
      "items": 11
    },
    {
      "path": "num::gauss",
      "file": "num/gauss.rs",
      "docs": [
        "The primes of the plane: the Gaussian and the Eisenstein integers, their classes, windows and ring weights."
      ],
      "items": 36
    },
    {
      "path": "num::ladder",
      "file": "num/ladder.rs",
      "docs": [
        "The peeled ladder: the Dirichlet series of a digit design continued to the whole plane, its Lyndon cofactor and the residues at its poles, each value carrying its bound.",
        "",
        "A claim witness with no caller in the crate: it witnesses `research/claims/zeros-of-the-design-zeta.md`."
      ],
      "items": 13
    },
    {
      "path": "num::lattice",
      "file": "num/lattice.rs",
      "docs": [
        "The visible lattice: coprime pairs, the constant a dimension recovers and the Farey nodes."
      ],
      "items": 11
    },
    {
      "path": "num::memory",
      "file": "num/memory.rs",
      "docs": [
        "The memory designs: a rule on `k` consecutive digits, its transfer matrix, the words it accepts and the Perron root that is their dimension."
      ],
      "items": 20
    },
    {
      "path": "num::morse",
      "file": "num/morse.rs",
      "docs": [
        "The Thue-Morse world: the digit rule, the substitution, the plane lifts, the runs and the period-doubling word."
      ],
      "items": 21
    },
    {
      "path": "num::prime",
      "file": "num/prime.rs",
      "docs": [
        "The prime objects: the sieve and its readings, values, ranks, gaps, the counts they make and the shape readings of a number."
      ],
      "items": 25
    },
    {
      "path": "num::radix",
      "file": "num/radix.rs",
      "docs": [
        "The radix designs: a digit set inside the residues of a base in a ring, a unit twist per digit, and the points their words land on."
      ],
      "items": 33
    },
    {
      "path": "num::series",
      "file": "num/series.rs",
      "docs": [
        "The infinite sums: the classic sequences, zeta and its Dirichlet cousins, the partials that walk to pi, e and gamma, the visible count and the Bernoulli fractions."
      ],
      "items": 29
    },
    {
      "path": "num::sieve",
      "file": "num/sieve.rs",
      "docs": [
        "The punctured schedules: the Wallis sieve and its kin, their words, rasters, punctures and limits."
      ],
      "items": 12
    },
    {
      "path": "num::spiral",
      "file": "num/spiral.rs",
      "docs": [
        "The spirals: the whole numbers wound on the square and the hexagonal lattice, marked and read along a quadratic."
      ],
      "items": 22
    },
    {
      "path": "num::zeta",
      "file": "num/zeta.rs",
      "docs": [
        "The critical line: zeta at one half plus i t and off it, its zeros, the prime staircase they rebuild and the novelty meter their waves predict."
      ],
      "items": 35
    }
  ],
  "types": [
    {
      "path": "Error",
      "name": "Error",
      "defined_at": "core/error.rs:7",
      "docs": [
        "The one error type of the crate."
      ],
      "kind": "enum",
      "cross": {
        "kind": "uncrossable",
        "reason": "no serde derives and no methods"
      },
      "derives": [
        "Debug"
      ],
      "serde": [],
      "const_generic": false,
      "fields": [],
      "variants": [
        {
          "name": "Value",
          "word": null,
          "docs": [
            "A value that broke a rule, carrying the message."
          ],
          "serde": [],
          "fields": [
            {
              "name": "0",
              "public": false,
              "docs": [],
              "serde": [],
              "serde_skip": false,
              "ty": {
                "t": "string"
              }
            }
          ]
        },
        {
          "name": "Shape",
          "word": null,
          "docs": [
            "A length, extent or dtype that does not match, carrying the message."
          ],
          "serde": [],
          "fields": [
            {
              "name": "0",
              "public": false,
              "docs": [],
              "serde": [],
              "serde_skip": false,
              "ty": {
                "t": "string"
              }
            }
          ]
        },
        {
          "name": "Overflow",
          "word": null,
          "docs": [
            "A count that runs past the width of its integer, carrying the message."
          ],
          "serde": [],
          "fields": [
            {
              "name": "0",
              "public": false,
              "docs": [],
              "serde": [],
              "serde_skip": false,
              "ty": {
                "t": "string"
              }
            }
          ]
        },
        {
          "name": "Json",
          "word": null,
          "docs": [
            "A json text that would not parse, carrying the reader's own error."
          ],
          "serde": [],
          "fields": [
            {
              "name": "0",
              "public": false,
              "docs": [],
              "serde": [],
              "serde_skip": false,
              "ty": {
                "t": "unknown",
                "text": "serde_json :: Error"
              }
            }
          ]
        },
        {
          "name": "Codec",
          "word": null,
          "docs": [
            "A png or gif codec that refused, carrying its message."
          ],
          "serde": [],
          "fields": [
            {
              "name": "0",
              "public": false,
              "docs": [],
              "serde": [],
              "serde_skip": false,
              "ty": {
                "t": "string"
              }
            }
          ]
        }
      ],
      "alias": null
    },
    {
      "path": "Result",
      "name": "Result",
      "defined_at": "core/error.rs:42",
      "docs": [
        "The crate's result, erring with Error."
      ],
      "kind": "alias",
      "cross": {
        "kind": "uncrossable",
        "reason": "generic alias Result"
      },
      "derives": [],
      "serde": [],
      "const_generic": false,
      "fields": [],
      "variants": [],
      "alias": {
        "t": "unknown",
        "text": "generic alias Result"
      }
    },
    {
      "path": "core::Cell",
      "name": "Cell",
      "defined_at": "core/cell.rs:31",
      "docs": [
        "A grid of type bytes with optional per-cell colors and tags."
      ],
      "kind": "struct",
      "cross": {
        "kind": "hand",
        "name": "Cell"
      },
      "derives": [
        "Clone",
        "Debug",
        "PartialEq",
        "Eq",
        "Serialize",
        "Deserialize"
      ],
      "serde": [],
      "const_generic": false,
      "fields": [
        {
          "name": "types",
          "public": true,
          "docs": [
            "The type of every cell."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "hand",
            "name": "Tensor",
            "dim": null
          }
        },
        {
          "name": "colors",
          "public": true,
          "docs": [
            "The painted rgba of every cell, once painted."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "option",
            "item": {
              "t": "vec",
              "item": {
                "t": "array",
                "item": {
                  "t": "scalar",
                  "name": "u8"
                },
                "len": 4
              }
            }
          }
        },
        {
          "name": "tags",
          "public": true,
          "docs": [
            "The tag layer over the cells, once built."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "option",
            "item": {
              "t": "hand",
              "name": "Tensor",
              "dim": null
            }
          }
        }
      ],
      "variants": [],
      "alias": null
    },
    {
      "path": "core::Color",
      "name": "Color",
      "defined_at": "core/colors.rs:8",
      "docs": [
        "An rgba color with byte channels."
      ],
      "kind": "struct",
      "cross": {
        "kind": "hand",
        "name": "Color"
      },
      "derives": [
        "Clone",
        "Copy",
        "Debug",
        "PartialEq",
        "Eq",
        "Hash"
      ],
      "serde": [],
      "const_generic": false,
      "fields": [
        {
          "name": "r",
          "public": true,
          "docs": [
            "The red channel."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "u8"
          }
        },
        {
          "name": "g",
          "public": true,
          "docs": [
            "The green channel."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "u8"
          }
        },
        {
          "name": "b",
          "public": true,
          "docs": [
            "The blue channel."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "u8"
          }
        },
        {
          "name": "a",
          "public": true,
          "docs": [
            "The alpha channel, 255 for opaque."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "u8"
          }
        }
      ],
      "variants": [],
      "alias": null
    },
    {
      "path": "core::Colorizer",
      "name": "Colorizer",
      "defined_at": "core/ramp.rs:7",
      "docs": [
        "A rule that turns counter values into colors."
      ],
      "kind": "enum",
      "cross": {
        "kind": "plain"
      },
      "derives": [
        "Clone",
        "Debug",
        "Serialize",
        "Deserialize"
      ],
      "serde": [],
      "const_generic": false,
      "fields": [],
      "variants": [
        {
          "name": "Bins",
          "word": null,
          "docs": [
            "The background at zero, then the ramp binned across the range."
          ],
          "serde": [],
          "fields": [
            {
              "name": "background",
              "public": false,
              "docs": [
                "The color at zero."
              ],
              "serde": [],
              "serde_skip": false,
              "ty": {
                "t": "hand",
                "name": "Color",
                "dim": null
              }
            },
            {
              "name": "ramp",
              "public": false,
              "docs": [
                "The colors binned across the range."
              ],
              "serde": [],
              "serde_skip": false,
              "ty": {
                "t": "vec",
                "item": {
                  "t": "hand",
                  "name": "Color",
                  "dim": null
                }
              }
            }
          ]
        }
      ],
      "alias": null
    },
    {
      "path": "core::Dtype",
      "name": "Dtype",
      "defined_at": "core/tensor.rs:6",
      "docs": [
        "The element widths a tensor can hold."
      ],
      "kind": "enum",
      "cross": {
        "kind": "enum",
        "named": false,
        "words": []
      },
      "derives": [
        "Clone",
        "Copy",
        "Debug",
        "PartialEq",
        "Eq",
        "Serialize",
        "Deserialize"
      ],
      "serde": [],
      "const_generic": false,
      "fields": [],
      "variants": [
        {
          "name": "U8",
          "word": null,
          "docs": [
            "Unsigned 8-bit elements."
          ],
          "serde": [],
          "fields": []
        },
        {
          "name": "U16",
          "word": null,
          "docs": [
            "Unsigned 16-bit elements."
          ],
          "serde": [],
          "fields": []
        },
        {
          "name": "U32",
          "word": null,
          "docs": [
            "Unsigned 32-bit elements."
          ],
          "serde": [],
          "fields": []
        },
        {
          "name": "I32",
          "word": null,
          "docs": [
            "Signed 32-bit elements."
          ],
          "serde": [],
          "fields": []
        }
      ],
      "alias": null
    },
    {
      "path": "core::Filter",
      "name": "Filter",
      "defined_at": "core/resample.rs:6",
      "docs": [
        "The way a resampling weighs the source pixels it reads."
      ],
      "kind": "enum",
      "cross": {
        "kind": "enum",
        "named": false,
        "words": []
      },
      "derives": [
        "Clone",
        "Copy",
        "Debug",
        "PartialEq",
        "Eq",
        "Serialize",
        "Deserialize"
      ],
      "serde": [],
      "const_generic": false,
      "fields": [],
      "variants": [
        {
          "name": "Nearest",
          "word": null,
          "docs": [
            "The single nearest source pixel, palettes and hard edges kept."
          ],
          "serde": [],
          "fields": []
        },
        {
          "name": "Linear",
          "word": null,
          "docs": [
            "The linear blend of the four source pixels around the target centre."
          ],
          "serde": [],
          "fields": []
        },
        {
          "name": "Box",
          "word": null,
          "docs": [
            "The mean of the source box the target pixel covers."
          ],
          "serde": [],
          "fields": []
        }
      ],
      "alias": null
    },
    {
      "path": "core::Image",
      "name": "Image",
      "defined_at": "core/image.rs:10",
      "docs": [
        "A paletted image: rows of palette indices and the palette they point into, hex strings in json."
      ],
      "kind": "struct",
      "cross": {
        "kind": "class"
      },
      "derives": [
        "Clone",
        "Debug",
        "PartialEq",
        "Eq",
        "Serialize",
        "Deserialize"
      ],
      "serde": [
        "try_from = \"Parts\""
      ],
      "const_generic": false,
      "fields": [
        {
          "name": "width",
          "public": true,
          "docs": [
            "The width in pixels."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "height",
          "public": true,
          "docs": [
            "The height in pixels."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "rows",
          "public": true,
          "docs": [
            "The palette index of every pixel, row by row."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "vec",
            "item": {
              "t": "vec",
              "item": {
                "t": "scalar",
                "name": "usize"
              }
            }
          }
        },
        {
          "name": "palette",
          "public": true,
          "docs": [
            "The colors the rows index."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "vec",
            "item": {
              "t": "hand",
              "name": "Color",
              "dim": null
            }
          }
        }
      ],
      "variants": [],
      "alias": null
    },
    {
      "path": "core::Map",
      "name": "Map",
      "defined_at": "core/mod.rs:49",
      "docs": [
        "An object's entries, kept in insertion order."
      ],
      "kind": "alias",
      "cross": {
        "kind": "plain"
      },
      "derives": [],
      "serde": [],
      "const_generic": false,
      "fields": [],
      "variants": [],
      "alias": {
        "t": "json"
      }
    },
    {
      "path": "core::Mode",
      "name": "Mode",
      "defined_at": "core/cell.rs:10",
      "docs": [
        "The ways paint picks a color within a type's palette."
      ],
      "kind": "enum",
      "cross": {
        "kind": "enum",
        "named": false,
        "words": []
      },
      "derives": [
        "Clone",
        "Copy",
        "Debug",
        "PartialEq",
        "Eq",
        "Serialize",
        "Deserialize"
      ],
      "serde": [],
      "const_generic": false,
      "fields": [],
      "variants": [
        {
          "name": "Type",
          "word": null,
          "docs": [
            "The first palette color, always."
          ],
          "serde": [],
          "fields": []
        },
        {
          "name": "Tag",
          "word": null,
          "docs": [
            "The color each cell's tag indexes."
          ],
          "serde": [],
          "fields": []
        },
        {
          "name": "Index",
          "word": null,
          "docs": [
            "The color the flat position indexes."
          ],
          "serde": [],
          "fields": []
        },
        {
          "name": "Enumerate",
          "word": null,
          "docs": [
            "The colors cycled in encounter order."
          ],
          "serde": [],
          "fields": []
        },
        {
          "name": "Random",
          "word": null,
          "docs": [
            "A color drawn from the stream for every cell."
          ],
          "serde": [],
          "fields": []
        },
        {
          "name": "Row",
          "word": null,
          "docs": [
            "The color the row index picks."
          ],
          "serde": [],
          "fields": []
        },
        {
          "name": "Column",
          "word": null,
          "docs": [
            "The color the column index picks."
          ],
          "serde": [],
          "fields": []
        },
        {
          "name": "Depth",
          "word": null,
          "docs": [
            "The color the depth index picks."
          ],
          "serde": [],
          "fields": []
        }
      ],
      "alias": null
    },
    {
      "path": "core::Rng",
      "name": "Rng",
      "defined_at": "core/rng.rs:6",
      "docs": [
        "A seeded xoshiro256++ random stream."
      ],
      "kind": "struct",
      "cross": {
        "kind": "hand",
        "name": "Rng"
      },
      "derives": [
        "Clone",
        "Debug",
        "Serialize",
        "Deserialize"
      ],
      "serde": [],
      "const_generic": false,
      "fields": [
        {
          "name": "s",
          "public": false,
          "docs": [],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "array",
            "item": {
              "t": "scalar",
              "name": "u64"
            },
            "len": 4
          }
        }
      ],
      "variants": [],
      "alias": null
    },
    {
      "path": "core::Tensor",
      "name": "Tensor",
      "defined_at": "core/tensor.rs:119",
      "docs": [
        "An n-dimensional grid of small integers."
      ],
      "kind": "struct",
      "cross": {
        "kind": "hand",
        "name": "Tensor"
      },
      "derives": [
        "Clone",
        "Debug",
        "PartialEq",
        "Eq",
        "Serialize",
        "Deserialize"
      ],
      "serde": [],
      "const_generic": false,
      "fields": [
        {
          "name": "data",
          "public": false,
          "docs": [],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "plain",
            "path": "core::tensor::Buf"
          }
        },
        {
          "name": "shape",
          "public": true,
          "docs": [
            "The extent of each axis."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "vec",
            "item": {
              "t": "scalar",
              "name": "usize"
            }
          }
        }
      ],
      "variants": [],
      "alias": null
    },
    {
      "path": "core::colors::Theme",
      "name": "Theme",
      "defined_at": "core/colors.rs:80",
      "docs": [
        "One theme: the surfaces of a dark or a light ground and the thirteen inks, the same on both."
      ],
      "kind": "struct",
      "cross": {
        "kind": "class"
      },
      "derives": [
        "Clone",
        "Copy",
        "Debug",
        "PartialEq",
        "Eq",
        "Serialize",
        "Deserialize"
      ],
      "serde": [],
      "const_generic": false,
      "fields": [
        {
          "name": "ground",
          "public": true,
          "docs": [
            "The ground every figure is painted on."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "hand",
            "name": "Color",
            "dim": null
          }
        },
        {
          "name": "bg",
          "public": true,
          "docs": [
            "The page background, one step off the ground."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "hand",
            "name": "Color",
            "dim": null
          }
        },
        {
          "name": "panel",
          "public": true,
          "docs": [
            "The raised panel."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "hand",
            "name": "Color",
            "dim": null
          }
        },
        {
          "name": "deep",
          "public": true,
          "docs": [
            "The sunken well."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "hand",
            "name": "Color",
            "dim": null
          }
        },
        {
          "name": "line",
          "public": true,
          "docs": [
            "The hairline between things."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "hand",
            "name": "Color",
            "dim": null
          }
        },
        {
          "name": "fg",
          "public": true,
          "docs": [
            "The foreground, the strongest tone."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "hand",
            "name": "Color",
            "dim": null
          }
        },
        {
          "name": "dim",
          "public": true,
          "docs": [
            "The dimmed foreground, for anything secondary."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "hand",
            "name": "Color",
            "dim": null
          }
        },
        {
          "name": "accent",
          "public": true,
          "docs": [
            "The interactive accent."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "hand",
            "name": "Color",
            "dim": null
          }
        },
        {
          "name": "on_accent",
          "public": true,
          "docs": [
            "The tone written on the accent."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "hand",
            "name": "Color",
            "dim": null
          }
        },
        {
          "name": "red",
          "public": true,
          "docs": [
            "The red ink."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "hand",
            "name": "Color",
            "dim": null
          }
        },
        {
          "name": "orange",
          "public": true,
          "docs": [
            "The orange ink."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "hand",
            "name": "Color",
            "dim": null
          }
        },
        {
          "name": "yellow",
          "public": true,
          "docs": [
            "The yellow ink."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "hand",
            "name": "Color",
            "dim": null
          }
        },
        {
          "name": "green",
          "public": true,
          "docs": [
            "The green ink."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "hand",
            "name": "Color",
            "dim": null
          }
        },
        {
          "name": "mint",
          "public": true,
          "docs": [
            "The mint ink."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "hand",
            "name": "Color",
            "dim": null
          }
        },
        {
          "name": "teal",
          "public": true,
          "docs": [
            "The teal ink."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "hand",
            "name": "Color",
            "dim": null
          }
        },
        {
          "name": "cyan",
          "public": true,
          "docs": [
            "The cyan ink."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "hand",
            "name": "Color",
            "dim": null
          }
        },
        {
          "name": "blue",
          "public": true,
          "docs": [
            "The blue ink."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "hand",
            "name": "Color",
            "dim": null
          }
        },
        {
          "name": "indigo",
          "public": true,
          "docs": [
            "The indigo ink."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "hand",
            "name": "Color",
            "dim": null
          }
        },
        {
          "name": "purple",
          "public": true,
          "docs": [
            "The purple ink."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "hand",
            "name": "Color",
            "dim": null
          }
        },
        {
          "name": "pink",
          "public": true,
          "docs": [
            "The pink ink."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "hand",
            "name": "Color",
            "dim": null
          }
        },
        {
          "name": "brown",
          "public": true,
          "docs": [
            "The brown ink."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "hand",
            "name": "Color",
            "dim": null
          }
        },
        {
          "name": "gray",
          "public": true,
          "docs": [
            "The gray ink."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "hand",
            "name": "Color",
            "dim": null
          }
        }
      ],
      "variants": [],
      "alias": null
    },
    {
      "path": "core::paint::Config",
      "name": "Config",
      "defined_at": "core/paint.rs:136",
      "docs": [
        "The constraints a caller may put on a random paint."
      ],
      "kind": "struct",
      "cross": {
        "kind": "plain"
      },
      "derives": [
        "Clone",
        "Debug",
        "Default",
        "Serialize",
        "Deserialize"
      ],
      "serde": [],
      "const_generic": false,
      "fields": [
        {
          "name": "editions",
          "public": true,
          "docs": [
            "The editions allowed, or None for all seven."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "option",
            "item": {
              "t": "vec",
              "item": {
                "t": "enum",
                "path": "core::paint::Edition"
              }
            }
          }
        },
        {
          "name": "primaries",
          "public": true,
          "docs": [
            "The primary inks allowed, or None for black and white."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "option",
            "item": {
              "t": "vec",
              "item": {
                "t": "enum",
                "path": "core::paint::Ink"
              }
            }
          }
        },
        {
          "name": "target",
          "public": true,
          "docs": [
            "The forced target, or None for a coin flip."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "option",
            "item": {
              "t": "enum",
              "path": "core::paint::Target"
            }
          }
        }
      ],
      "variants": [],
      "alias": null
    },
    {
      "path": "core::paint::Edition",
      "name": "Edition",
      "defined_at": "core/paint.rs:14",
      "docs": [
        "The seven ways a paint distributes its colors over a cell."
      ],
      "kind": "enum",
      "cross": {
        "kind": "enum",
        "named": true,
        "words": [
          "Simple",
          "Index",
          "Layers",
          "Neighbors",
          "Rows",
          "Columns",
          "Random"
        ]
      },
      "derives": [
        "Clone",
        "Copy",
        "Debug",
        "PartialEq",
        "Eq",
        "Hash",
        "Serialize",
        "Deserialize"
      ],
      "serde": [],
      "const_generic": false,
      "fields": [],
      "variants": [
        {
          "name": "Simple",
          "word": "Simple",
          "docs": [
            "One color per cell type."
          ],
          "serde": [],
          "fields": []
        },
        {
          "name": "Index",
          "word": "Index",
          "docs": [
            "Color by cell index."
          ],
          "serde": [],
          "fields": []
        },
        {
          "name": "Layers",
          "word": "Layers",
          "docs": [
            "Color by concentric layer."
          ],
          "serde": [],
          "fields": []
        },
        {
          "name": "Neighbors",
          "word": "Neighbors",
          "docs": [
            "Color by neighbor count."
          ],
          "serde": [],
          "fields": []
        },
        {
          "name": "Rows",
          "word": "Rows",
          "docs": [
            "Color by row."
          ],
          "serde": [],
          "fields": []
        },
        {
          "name": "Columns",
          "word": "Columns",
          "docs": [
            "Color by column."
          ],
          "serde": [],
          "fields": []
        },
        {
          "name": "Random",
          "word": "Random",
          "docs": [
            "A random color per cell."
          ],
          "serde": [],
          "fields": []
        }
      ],
      "alias": null
    },
    {
      "path": "core::paint::Ink",
      "name": "Ink",
      "defined_at": "core/paint.rs:35",
      "docs": [
        "The fifteen named inks a paint draws from."
      ],
      "kind": "enum",
      "cross": {
        "kind": "enum",
        "named": true,
        "words": [
          "Black",
          "White",
          "Red",
          "Orange",
          "Yellow",
          "Green",
          "Mint",
          "Teal",
          "Cyan",
          "Blue",
          "Indigo",
          "Purple",
          "Pink",
          "Brown",
          "Gray"
        ]
      },
      "derives": [
        "Clone",
        "Copy",
        "Debug",
        "PartialEq",
        "Eq",
        "Hash",
        "Serialize",
        "Deserialize"
      ],
      "serde": [],
      "const_generic": false,
      "fields": [],
      "variants": [
        {
          "name": "Black",
          "word": "Black",
          "docs": [
            "Black (0, 0, 0)."
          ],
          "serde": [],
          "fields": []
        },
        {
          "name": "White",
          "word": "White",
          "docs": [
            "White (255, 255, 255)."
          ],
          "serde": [],
          "fields": []
        },
        {
          "name": "Red",
          "word": "Red",
          "docs": [
            "Red (255, 61, 64)."
          ],
          "serde": [],
          "fields": []
        },
        {
          "name": "Orange",
          "word": "Orange",
          "docs": [
            "Orange (255, 143, 44)."
          ],
          "serde": [],
          "fields": []
        },
        {
          "name": "Yellow",
          "word": "Yellow",
          "docs": [
            "Yellow (255, 209, 0)."
          ],
          "serde": [],
          "fields": []
        },
        {
          "name": "Green",
          "word": "Green",
          "docs": [
            "Green (50, 204, 88)."
          ],
          "serde": [],
          "fields": []
        },
        {
          "name": "Mint",
          "word": "Mint",
          "docs": [
            "Mint (0, 209, 187)."
          ],
          "serde": [],
          "fields": []
        },
        {
          "name": "Teal",
          "word": "Teal",
          "docs": [
            "Teal (0, 202, 216)."
          ],
          "serde": [],
          "fields": []
        },
        {
          "name": "Cyan",
          "word": "Cyan",
          "docs": [
            "Cyan (30, 201, 243)."
          ],
          "serde": [],
          "fields": []
        },
        {
          "name": "Blue",
          "word": "Blue",
          "docs": [
            "Blue (0, 140, 255)."
          ],
          "serde": [],
          "fields": []
        },
        {
          "name": "Indigo",
          "word": "Indigo",
          "docs": [
            "Indigo (103, 104, 250)."
          ],
          "serde": [],
          "fields": []
        },
        {
          "name": "Purple",
          "word": "Purple",
          "docs": [
            "Purple (211, 50, 233)."
          ],
          "serde": [],
          "fields": []
        },
        {
          "name": "Pink",
          "word": "Pink",
          "docs": [
            "The palette pink."
          ],
          "serde": [],
          "fields": []
        },
        {
          "name": "Brown",
          "word": "Brown",
          "docs": [
            "Brown (177, 132, 98)."
          ],
          "serde": [],
          "fields": []
        },
        {
          "name": "Gray",
          "word": "Gray",
          "docs": [
            "Gray (142, 142, 147)."
          ],
          "serde": [],
          "fields": []
        }
      ],
      "alias": null
    },
    {
      "path": "core::paint::Paint",
      "name": "Paint",
      "defined_at": "core/paint.rs:147",
      "docs": [
        "A complete coloring recipe for one cell."
      ],
      "kind": "struct",
      "cross": {
        "kind": "class"
      },
      "derives": [
        "Clone",
        "Debug",
        "PartialEq",
        "Eq",
        "Serialize",
        "Deserialize"
      ],
      "serde": [],
      "const_generic": false,
      "fields": [
        {
          "name": "edition",
          "public": true,
          "docs": [
            "The coloring edition."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "enum",
            "path": "core::paint::Edition"
          }
        },
        {
          "name": "scheme",
          "public": true,
          "docs": [
            "The secondary color scheme."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "enum",
            "path": "core::paint::Scheme"
          }
        },
        {
          "name": "target",
          "public": true,
          "docs": [
            "The side the primary ink lands on."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "enum",
            "path": "core::paint::Target"
          }
        },
        {
          "name": "primary",
          "public": true,
          "docs": [
            "The primary ink."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "enum",
            "path": "core::paint::Ink"
          }
        },
        {
          "name": "secondary",
          "public": true,
          "docs": [
            "The secondary inks."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "vec",
            "item": {
              "t": "enum",
              "path": "core::paint::Ink"
            }
          }
        },
        {
          "name": "shades",
          "public": true,
          "docs": [
            "The shade indices of a multitone ramp."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "vec",
            "item": {
              "t": "scalar",
              "name": "usize"
            }
          }
        }
      ],
      "variants": [],
      "alias": null
    },
    {
      "path": "core::paint::Scheme",
      "name": "Scheme",
      "defined_at": "core/paint.rs:72",
      "docs": [
        "The two ways secondary colors are drawn."
      ],
      "kind": "enum",
      "cross": {
        "kind": "enum",
        "named": true,
        "words": [
          "Multicolor",
          "Multitone"
        ]
      },
      "derives": [
        "Clone",
        "Copy",
        "Debug",
        "PartialEq",
        "Eq",
        "Hash",
        "Serialize",
        "Deserialize"
      ],
      "serde": [],
      "const_generic": false,
      "fields": [],
      "variants": [
        {
          "name": "Multicolor",
          "word": "Multicolor",
          "docs": [
            "Distinct secondary inks."
          ],
          "serde": [],
          "fields": []
        },
        {
          "name": "Multitone",
          "word": "Multitone",
          "docs": [
            "One secondary ink stepped through shades."
          ],
          "serde": [],
          "fields": []
        }
      ],
      "alias": null
    },
    {
      "path": "core::paint::Target",
      "name": "Target",
      "defined_at": "core/paint.rs:83",
      "docs": [
        "The side of the figure the primary ink lands on."
      ],
      "kind": "enum",
      "cross": {
        "kind": "enum",
        "named": true,
        "words": [
          "Fill",
          "Void"
        ]
      },
      "derives": [
        "Clone",
        "Copy",
        "Debug",
        "PartialEq",
        "Eq",
        "Hash",
        "Serialize",
        "Deserialize"
      ],
      "serde": [],
      "const_generic": false,
      "fields": [],
      "variants": [
        {
          "name": "Fill",
          "word": "Fill",
          "docs": [
            "The primary on the filled cells, secondaries on the empty."
          ],
          "serde": [],
          "fields": []
        },
        {
          "name": "Void",
          "word": "Void",
          "docs": [
            "The primary on the empty cells, secondaries on the filled."
          ],
          "serde": [],
          "fields": []
        }
      ],
      "alias": null
    },
    {
      "path": "core::tensor::Buf",
      "name": "Buf",
      "defined_at": "core/tensor.rs:31",
      "docs": [
        "The typed storage behind a tensor."
      ],
      "kind": "enum",
      "cross": {
        "kind": "plain"
      },
      "derives": [
        "Clone",
        "Debug",
        "PartialEq",
        "Eq",
        "Serialize",
        "Deserialize"
      ],
      "serde": [],
      "const_generic": false,
      "fields": [],
      "variants": [
        {
          "name": "U8",
          "word": null,
          "docs": [
            "Unsigned 8-bit storage."
          ],
          "serde": [],
          "fields": [
            {
              "name": "0",
              "public": false,
              "docs": [],
              "serde": [],
              "serde_skip": false,
              "ty": {
                "t": "vec",
                "item": {
                  "t": "scalar",
                  "name": "u8"
                }
              }
            }
          ]
        },
        {
          "name": "U16",
          "word": null,
          "docs": [
            "Unsigned 16-bit storage."
          ],
          "serde": [],
          "fields": [
            {
              "name": "0",
              "public": false,
              "docs": [],
              "serde": [],
              "serde_skip": false,
              "ty": {
                "t": "vec",
                "item": {
                  "t": "scalar",
                  "name": "u16"
                }
              }
            }
          ]
        },
        {
          "name": "U32",
          "word": null,
          "docs": [
            "Unsigned 32-bit storage."
          ],
          "serde": [],
          "fields": [
            {
              "name": "0",
              "public": false,
              "docs": [],
              "serde": [],
              "serde_skip": false,
              "ty": {
                "t": "vec",
                "item": {
                  "t": "scalar",
                  "name": "u32"
                }
              }
            }
          ]
        },
        {
          "name": "I32",
          "word": null,
          "docs": [
            "Signed 32-bit storage."
          ],
          "serde": [],
          "fields": [
            {
              "name": "0",
              "public": false,
              "docs": [],
              "serde": [],
              "serde_skip": false,
              "ty": {
                "t": "vec",
                "item": {
                  "t": "scalar",
                  "name": "i32"
                }
              }
            }
          ]
        }
      ],
      "alias": null
    },
    {
      "path": "font::Anim",
      "name": "Anim",
      "defined_at": "font/animate.rs:14",
      "docs": [
        "A frame-by-frame animation over a fixed board."
      ],
      "kind": "struct",
      "cross": {
        "kind": "plain"
      },
      "derives": [
        "Clone",
        "Debug",
        "PartialEq",
        "Eq",
        "Serialize",
        "Deserialize"
      ],
      "serde": [],
      "const_generic": false,
      "fields": [
        {
          "name": "rows",
          "public": true,
          "docs": [
            "The board height in cells."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "cols",
          "public": true,
          "docs": [
            "The board width in cells."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "fps",
          "public": true,
          "docs": [
            "The playback rate in frames per second."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "frames",
          "public": true,
          "docs": [
            "The frames, each a sorted list of lit row-major cell indices."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "vec",
            "item": {
              "t": "vec",
              "item": {
                "t": "scalar",
                "name": "usize"
              }
            }
          }
        }
      ],
      "variants": [],
      "alias": null
    },
    {
      "path": "font::Glyph",
      "name": "Glyph",
      "defined_at": "font/glyph.rs:6",
      "docs": [
        "One character's pixel bitmap."
      ],
      "kind": "struct",
      "cross": {
        "kind": "class"
      },
      "derives": [
        "Clone",
        "Debug",
        "PartialEq",
        "Eq",
        "Serialize",
        "Deserialize"
      ],
      "serde": [],
      "const_generic": false,
      "fields": [
        {
          "name": "char",
          "public": true,
          "docs": [
            "The character the glyph draws."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "char"
          }
        },
        {
          "name": "rows",
          "public": true,
          "docs": [
            "The bitmap rows of '0' and '1' characters."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "vec",
            "item": {
              "t": "string"
            }
          }
        }
      ],
      "variants": [],
      "alias": null
    },
    {
      "path": "font::pens::Pen",
      "name": "Pen",
      "defined_at": "font/pens.rs:9",
      "docs": [
        "A glyph's pen: its character and its strokes, one string per stroke, cells as row-col tokens.",
        "",
        "- A token is one row digit then one column digit over the trimmed bitmap; rows and columns never pass 6.",
        "- One stroke per string, cells in drawing order, each 4-adjacent to the one before it.",
        "- Long strokes: start where a hand starts the shape and lift only where a hand lifts.",
        "- The tables follow `bitmaps.rs` order: UPPERS, LOWERS, DIGITS, EXTRAS, SPECIALS.",
        "- Draft a glyph with `cargo run -p mrlyrs --example pen -- X`, then edit it by hand.",
        "- The mechanical rules are tests in `paths.rs`; taste is not, so P keeps its one-cell stroke."
      ],
      "kind": "alias",
      "cross": {
        "kind": "plain"
      },
      "derives": [],
      "serde": [],
      "const_generic": false,
      "fields": [],
      "variants": [],
      "alias": {
        "t": "tuple",
        "items": [
          {
            "t": "scalar",
            "name": "char"
          },
          {
            "t": "ref",
            "mutable": false,
            "lifetime": "'static",
            "item": {
              "t": "slice",
              "mutable": false,
              "item": {
                "t": "ref",
                "mutable": false,
                "lifetime": "'static",
                "item": {
                  "t": "str"
                }
              }
            }
          }
        ]
      }
    },
    {
      "path": "gen::Group",
      "name": "Group",
      "defined_at": "gen/recipe.rs:19",
      "docs": [
        "The five construction families a tile can belong to."
      ],
      "kind": "enum",
      "cross": {
        "kind": "enum",
        "named": true,
        "words": [
          "General",
          "Fractal",
          "Magic",
          "Special",
          "Mosaic"
        ]
      },
      "derives": [
        "Clone",
        "Copy",
        "Debug",
        "PartialEq",
        "Eq",
        "Hash",
        "Serialize",
        "Deserialize"
      ],
      "serde": [],
      "const_generic": false,
      "fields": [],
      "variants": [
        {
          "name": "General",
          "word": "General",
          "docs": [
            "One source at one flat size."
          ],
          "serde": [],
          "fields": []
        },
        {
          "name": "Fractal",
          "word": "Fractal",
          "docs": [
            "One source raised to a power."
          ],
          "serde": [],
          "fields": []
        },
        {
          "name": "Magic",
          "word": "Magic",
          "docs": [
            "A magic-recipe construction."
          ],
          "serde": [],
          "fields": []
        },
        {
          "name": "Special",
          "word": "Special",
          "docs": [
            "A one-off special construction."
          ],
          "serde": [],
          "fields": []
        },
        {
          "name": "Mosaic",
          "word": "Mosaic",
          "docs": [
            "Sources nested as a product of factors."
          ],
          "serde": [],
          "fields": []
        }
      ],
      "alias": null
    },
    {
      "path": "gen::Parity",
      "name": "Parity",
      "defined_at": "gen/recipe.rs:36",
      "docs": [
        "The parity filter over candidate sizes."
      ],
      "kind": "enum",
      "cross": {
        "kind": "enum",
        "named": true,
        "words": [
          "Evens",
          "Odds",
          "Both"
        ]
      },
      "derives": [
        "Clone",
        "Copy",
        "Debug",
        "PartialEq",
        "Eq",
        "Hash",
        "Serialize",
        "Deserialize"
      ],
      "serde": [],
      "const_generic": false,
      "fields": [],
      "variants": [
        {
          "name": "Evens",
          "word": "Evens",
          "docs": [
            "Even sizes only."
          ],
          "serde": [],
          "fields": []
        },
        {
          "name": "Odds",
          "word": "Odds",
          "docs": [
            "Odd sizes only."
          ],
          "serde": [],
          "fields": []
        },
        {
          "name": "Both",
          "word": "Both",
          "docs": [
            "Every size."
          ],
          "serde": [],
          "fields": []
        }
      ],
      "alias": null
    },
    {
      "path": "gen::Tile",
      "name": "Tile",
      "defined_at": "gen/recipe.rs:62",
      "docs": [
        "A complete recipe for one tile."
      ],
      "kind": "struct",
      "cross": {
        "kind": "class"
      },
      "derives": [
        "Clone",
        "Debug",
        "PartialEq",
        "Eq",
        "Serialize",
        "Deserialize"
      ],
      "serde": [],
      "const_generic": false,
      "fields": [
        {
          "name": "group",
          "public": true,
          "docs": [
            "The construction family."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "enum",
            "path": "gen::Group"
          }
        },
        {
          "name": "factor",
          "public": true,
          "docs": [
            "The base factor of the construction."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "sources",
          "public": true,
          "docs": [
            "The origin of each layer."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "vec",
            "item": {
              "t": "plain",
              "path": "gen::recipe::Source"
            }
          }
        },
        {
          "name": "numbers",
          "public": true,
          "docs": [
            "The grid size of each source."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "vec",
            "item": {
              "t": "scalar",
              "name": "usize"
            }
          }
        },
        {
          "name": "levels",
          "public": true,
          "docs": [
            "The fractal level of each source."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "vec",
            "item": {
              "t": "scalar",
              "name": "usize"
            }
          }
        },
        {
          "name": "rotations",
          "public": true,
          "docs": [
            "The quarter-turn rotation of each source."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "vec",
            "item": {
              "t": "scalar",
              "name": "usize"
            }
          }
        },
        {
          "name": "invert",
          "public": true,
          "docs": [
            "Whether the finished tile inverts."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "bool"
          }
        },
        {
          "name": "flip",
          "public": true,
          "docs": [
            "Whether the finished tile flips."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "bool"
          }
        },
        {
          "name": "width",
          "public": true,
          "docs": [
            "The tile's width in cells."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "height",
          "public": true,
          "docs": [
            "The tile's height in cells."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "variants": [],
      "alias": null
    },
    {
      "path": "gen::build::Config2d",
      "name": "Config2d",
      "defined_at": "gen/build.rs:5",
      "docs": [
        "The constraints a random flat tile is drawn under."
      ],
      "kind": "alias",
      "cross": {
        "kind": "plain"
      },
      "derives": [],
      "serde": [],
      "const_generic": false,
      "fields": [],
      "variants": [],
      "alias": {
        "t": "plain",
        "path": "gen::draw::ConfigNd"
      }
    },
    {
      "path": "gen::build::Config3d",
      "name": "Config3d",
      "defined_at": "gen/build.rs:8",
      "docs": [
        "The constraints a random cube tile is drawn under, shared by the hex pipeline."
      ],
      "kind": "alias",
      "cross": {
        "kind": "plain"
      },
      "derives": [],
      "serde": [],
      "const_generic": false,
      "fields": [],
      "variants": [],
      "alias": {
        "t": "plain",
        "path": "gen::draw::ConfigNd"
      }
    },
    {
      "path": "gen::build::HexTile",
      "name": "HexTile",
      "defined_at": "gen/build.rs:532",
      "docs": [
        "A cube tile paired with the projection that flattens it."
      ],
      "kind": "struct",
      "cross": {
        "kind": "plain"
      },
      "derives": [
        "Clone",
        "Debug",
        "Serialize",
        "Deserialize"
      ],
      "serde": [],
      "const_generic": false,
      "fields": [
        {
          "name": "projection",
          "public": true,
          "docs": [
            "The projection that flattens the tile."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "enum",
            "path": "math::six::Projection"
          }
        },
        {
          "name": "tile",
          "public": true,
          "docs": [
            "The cube tile underneath."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "class",
            "path": "gen::Tile",
            "dim": null
          }
        }
      ],
      "variants": [],
      "alias": null
    },
    {
      "path": "gen::draw::ConfigNd",
      "name": "ConfigNd",
      "defined_at": "gen/draw.rs:10",
      "docs": [
        "The constraints a random tile is drawn under."
      ],
      "kind": "struct",
      "cross": {
        "kind": "plain"
      },
      "derives": [
        "Clone",
        "Debug",
        "Serialize",
        "Deserialize"
      ],
      "serde": [],
      "const_generic": true,
      "fields": [
        {
          "name": "groups",
          "public": true,
          "docs": [
            "The tile groups allowed."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "vec",
            "item": {
              "t": "enum",
              "path": "gen::Group"
            }
          }
        },
        {
          "name": "catalog",
          "public": true,
          "docs": [
            "The catalog the sources are drawn from."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "plain",
            "path": "gen::recipe::Catalog"
          }
        },
        {
          "name": "min_size",
          "public": true,
          "docs": [
            "The smallest allowed side."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "max_size",
          "public": true,
          "docs": [
            "The largest allowed side."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "parity",
          "public": true,
          "docs": [
            "The parity the sizes must keep."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "enum",
            "path": "gen::Parity"
          }
        },
        {
          "name": "invert",
          "public": true,
          "docs": [
            "The forced inversion flag, or None to flip a coin."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "option",
            "item": {
              "t": "scalar",
              "name": "bool"
            }
          }
        }
      ],
      "variants": [],
      "alias": null
    },
    {
      "path": "gen::name::Slots",
      "name": "Slots",
      "defined_at": "gen/name.rs:83",
      "docs": [
        "One value for every slot of a tile, or one value per slot."
      ],
      "kind": "enum",
      "cross": {
        "kind": "plain"
      },
      "derives": [
        "Clone",
        "Debug",
        "PartialEq",
        "Eq",
        "Hash",
        "Serialize",
        "Deserialize"
      ],
      "serde": [
        "untagged"
      ],
      "const_generic": false,
      "fields": [],
      "variants": [
        {
          "name": "One",
          "word": null,
          "docs": [
            "The one value the slots share."
          ],
          "serde": [],
          "fields": [
            {
              "name": "0",
              "public": false,
              "docs": [],
              "serde": [],
              "serde_skip": false,
              "ty": {
                "t": "scalar",
                "name": "usize"
              }
            }
          ]
        },
        {
          "name": "Each",
          "word": null,
          "docs": [
            "One value per slot, in slot order."
          ],
          "serde": [],
          "fields": [
            {
              "name": "0",
              "public": false,
              "docs": [],
              "serde": [],
              "serde_skip": false,
              "ty": {
                "t": "vec",
                "item": {
                  "t": "scalar",
                  "name": "usize"
                }
              }
            }
          ]
        }
      ],
      "alias": null
    },
    {
      "path": "gen::name::Tile",
      "name": "Tile",
      "defined_at": "gen/name.rs:138",
      "docs": [
        "A tile recipe folded to its one canonical object.",
        "",
        "The key that carries the codes says the group: `code` is one design flat or, with `level`, raised",
        "to a power; `magic` is a list of letters; `special` is one mask code over a factor; `mosaic` is",
        "three codes behind a tree mask. Classics fold to their codes and a level of one folds away, so",
        "aliases that draw one picture share one name.",
        "",
        "```",
        "use mrlyrs::gen::name::Tile;",
        "use mrlyrs::math::name::Named;",
        "let carpet = Tile::from_json(r#\"{\"kind\":\"tile\",\"code\":7,\"side\":3,\"level\":2}\"#).unwrap();",
        "assert_eq!(carpet.recipe().unwrap().width, 9);",
        "assert_eq!(Tile::of(&carpet.recipe().unwrap()).unwrap(), carpet);",
        "```"
      ],
      "kind": "struct",
      "cross": {
        "kind": "class"
      },
      "derives": [
        "Clone",
        "Debug",
        "PartialEq",
        "Eq",
        "Hash",
        "Serialize",
        "Deserialize"
      ],
      "serde": [
        "deny_unknown_fields"
      ],
      "const_generic": false,
      "fields": [
        {
          "name": "kind",
          "public": true,
          "docs": [
            "The kind word."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "unknown",
            "text": "unknown type Kind"
          }
        },
        {
          "name": "code",
          "public": true,
          "docs": [
            "The one design of a flat or fractal tile."
          ],
          "serde": [
            "default , skip_serializing_if = \"Option::is_none\""
          ],
          "serde_skip": false,
          "ty": {
            "t": "option",
            "item": {
              "t": "u128"
            }
          }
        },
        {
          "name": "special",
          "public": true,
          "docs": [
            "The mask code of a special tile."
          ],
          "serde": [
            "default , skip_serializing_if = \"Option::is_none\""
          ],
          "serde_skip": false,
          "ty": {
            "t": "option",
            "item": {
              "t": "u128"
            }
          }
        },
        {
          "name": "magic",
          "public": true,
          "docs": [
            "The letters of a magic tile, first letter outermost."
          ],
          "serde": [
            "default , skip_serializing_if = \"Vec::is_empty\""
          ],
          "serde_skip": false,
          "ty": {
            "t": "vec",
            "item": {
              "t": "u128"
            }
          }
        },
        {
          "name": "mosaic",
          "public": true,
          "docs": [
            "The three codes of a mosaic tile."
          ],
          "serde": [
            "default , skip_serializing_if = \"Vec::is_empty\""
          ],
          "serde_skip": false,
          "ty": {
            "t": "vec",
            "item": {
              "t": "u128"
            }
          }
        },
        {
          "name": "factor",
          "public": true,
          "docs": [
            "The side of the mask of a special or mosaic tile."
          ],
          "serde": [
            "default , skip_serializing_if = \"Option::is_none\""
          ],
          "serde_skip": false,
          "ty": {
            "t": "option",
            "item": {
              "t": "scalar",
              "name": "usize"
            }
          }
        },
        {
          "name": "side",
          "public": true,
          "docs": [
            "The side each slot renders at, one per letter for a magic tile."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "plain",
            "path": "gen::name::Slots"
          }
        },
        {
          "name": "level",
          "public": true,
          "docs": [
            "The power a fractal tile is raised to, absent at one."
          ],
          "serde": [
            "default , skip_serializing_if = \"Option::is_none\""
          ],
          "serde_skip": false,
          "ty": {
            "t": "option",
            "item": {
              "t": "scalar",
              "name": "usize"
            }
          }
        },
        {
          "name": "turn",
          "public": true,
          "docs": [
            "The quarter turns of each slot, absent when nothing turns."
          ],
          "serde": [
            "default , skip_serializing_if = \"Slots::is_still\""
          ],
          "serde_skip": false,
          "ty": {
            "t": "plain",
            "path": "gen::name::Slots"
          }
        },
        {
          "name": "flip",
          "public": true,
          "docs": [
            "Whether a special tile flips its mask."
          ],
          "serde": [
            "default , skip_serializing_if = \"is_false\""
          ],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "bool"
          }
        },
        {
          "name": "invert",
          "public": true,
          "docs": [
            "Whether the finished tile inverts."
          ],
          "serde": [
            "default , skip_serializing_if = \"is_false\""
          ],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "bool"
          }
        }
      ],
      "variants": [],
      "alias": null
    },
    {
      "path": "gen::recipe::Catalog",
      "name": "Catalog",
      "defined_at": "math/bang/catalog.rs:54",
      "docs": [
        "The pool of sources a tile may draw from."
      ],
      "kind": "enum",
      "cross": {
        "kind": "plain"
      },
      "derives": [
        "Clone",
        "Debug",
        "PartialEq",
        "Eq",
        "Serialize",
        "Deserialize"
      ],
      "serde": [],
      "const_generic": false,
      "fields": [],
      "variants": [
        {
          "name": "Classics",
          "word": null,
          "docs": [
            "The classic designs only."
          ],
          "serde": [],
          "fields": []
        },
        {
          "name": "Universe",
          "word": null,
          "docs": [
            "The canonical codes, one per symmetry orbit."
          ],
          "serde": [],
          "fields": []
        },
        {
          "name": "Codes",
          "word": null,
          "docs": [
            "An explicit list of codes."
          ],
          "serde": [],
          "fields": [
            {
              "name": "0",
              "public": false,
              "docs": [],
              "serde": [],
              "serde_skip": false,
              "ty": {
                "t": "vec",
                "item": {
                  "t": "u128"
                }
              }
            }
          ]
        },
        {
          "name": "Designs",
          "word": null,
          "docs": [
            "An explicit list of named designs."
          ],
          "serde": [],
          "fields": [
            {
              "name": "0",
              "public": false,
              "docs": [],
              "serde": [],
              "serde_skip": false,
              "ty": {
                "t": "vec",
                "item": {
                  "t": "enum",
                  "path": "gen::recipe::Design"
                }
              }
            }
          ]
        }
      ],
      "alias": null
    },
    {
      "path": "gen::recipe::Design",
      "name": "Design",
      "defined_at": "math/bang/catalog.rs:65",
      "docs": [
        "The named designs a source can point at: the four classics and their four antis."
      ],
      "kind": "enum",
      "cross": {
        "kind": "enum",
        "named": true,
        "words": [
          "Carpet",
          "Net",
          "Htree",
          "Vtree",
          "Void",
          "Xtree",
          "Ytree",
          "Ztree",
          "Point",
          "Dust",
          "Hline",
          "Vline",
          "Star",
          "Xline",
          "Yline",
          "Zline"
        ]
      },
      "derives": [
        "Clone",
        "Copy",
        "Debug",
        "PartialEq",
        "Eq",
        "Hash",
        "Serialize",
        "Deserialize"
      ],
      "serde": [],
      "const_generic": false,
      "fields": [],
      "variants": [
        {
          "name": "Carpet",
          "word": "Carpet",
          "docs": [
            "The carpet with a lattice of holes."
          ],
          "serde": [],
          "fields": []
        },
        {
          "name": "Net",
          "word": "Net",
          "docs": [
            "The net of crossing lines."
          ],
          "serde": [],
          "fields": []
        },
        {
          "name": "Htree",
          "word": "Htree",
          "docs": [
            "The stripes along the even rows."
          ],
          "serde": [],
          "fields": []
        },
        {
          "name": "Vtree",
          "word": "Vtree",
          "docs": [
            "The stripes along the even columns."
          ],
          "serde": [],
          "fields": []
        },
        {
          "name": "Void",
          "word": "Void",
          "docs": [
            "The checkerboard lattice."
          ],
          "serde": [],
          "fields": []
        },
        {
          "name": "Xtree",
          "word": "Xtree",
          "docs": [
            "The beams along the x axis."
          ],
          "serde": [],
          "fields": []
        },
        {
          "name": "Ytree",
          "word": "Ytree",
          "docs": [
            "The beams along the y axis."
          ],
          "serde": [],
          "fields": []
        },
        {
          "name": "Ztree",
          "word": "Ztree",
          "docs": [
            "The beams along the z axis."
          ],
          "serde": [],
          "fields": []
        },
        {
          "name": "Point",
          "word": "Point",
          "docs": [
            "The points at the odd-odd sites."
          ],
          "serde": [],
          "fields": []
        },
        {
          "name": "Dust",
          "word": "Dust",
          "docs": [
            "The dust at the even-even sites."
          ],
          "serde": [],
          "fields": []
        },
        {
          "name": "Hline",
          "word": "Hline",
          "docs": [
            "The lines along the odd rows."
          ],
          "serde": [],
          "fields": []
        },
        {
          "name": "Vline",
          "word": "Vline",
          "docs": [
            "The lines along the odd columns."
          ],
          "serde": [],
          "fields": []
        },
        {
          "name": "Star",
          "word": "Star",
          "docs": [
            "The star of sites with exactly one odd coordinate."
          ],
          "serde": [],
          "fields": []
        },
        {
          "name": "Xline",
          "word": "Xline",
          "docs": [
            "The rods along the x axis."
          ],
          "serde": [],
          "fields": []
        },
        {
          "name": "Yline",
          "word": "Yline",
          "docs": [
            "The rods along the y axis."
          ],
          "serde": [],
          "fields": []
        },
        {
          "name": "Zline",
          "word": "Zline",
          "docs": [
            "The rods along the z axis."
          ],
          "serde": [],
          "fields": []
        }
      ],
      "alias": null
    },
    {
      "path": "gen::recipe::Source",
      "name": "Source",
      "defined_at": "math/bang/catalog.rs:144",
      "docs": [
        "The origin of one tile layer, a one-field json object."
      ],
      "kind": "enum",
      "cross": {
        "kind": "plain"
      },
      "derives": [
        "Clone",
        "Copy",
        "Debug",
        "PartialEq",
        "Eq",
        "Hash",
        "Serialize",
        "Deserialize"
      ],
      "serde": [],
      "const_generic": false,
      "fields": [],
      "variants": [
        {
          "name": "Classic",
          "word": null,
          "docs": [
            "A classic named design."
          ],
          "serde": [
            "rename = \"design\""
          ],
          "fields": [
            {
              "name": "0",
              "public": false,
              "docs": [],
              "serde": [],
              "serde_skip": false,
              "ty": {
                "t": "enum",
                "path": "gen::recipe::Design"
              }
            }
          ]
        },
        {
          "name": "Code",
          "word": null,
          "docs": [
            "A numbered rule code, spelled as a decimal string."
          ],
          "serde": [
            "rename = \"code\""
          ],
          "fields": [
            {
              "name": "0",
              "public": false,
              "docs": [],
              "serde": [
                "with = \"decimal\""
              ],
              "serde_skip": false,
              "ty": {
                "t": "u128"
              }
            }
          ]
        }
      ],
      "alias": null
    },
    {
      "path": "gen::variation::Config",
      "name": "Config",
      "defined_at": "gen/variation.rs:34",
      "docs": [
        "The settings an artwork is drawn under."
      ],
      "kind": "struct",
      "cross": {
        "kind": "plain"
      },
      "derives": [
        "Clone",
        "Debug",
        "Serialize",
        "Deserialize"
      ],
      "serde": [],
      "const_generic": false,
      "fields": [
        {
          "name": "tile",
          "public": true,
          "docs": [
            "The constraints the tile is drawn under."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "plain",
            "path": "gen::draw::ConfigNd"
          }
        },
        {
          "name": "paint",
          "public": true,
          "docs": [
            "The constraints the paint is drawn under."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "plain",
            "path": "core::paint::Config"
          }
        },
        {
          "name": "files",
          "public": true,
          "docs": [
            "The width and height repetition pairs to render."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "vec",
            "item": {
              "t": "tuple",
              "items": [
                {
                  "t": "scalar",
                  "name": "usize"
                },
                {
                  "t": "scalar",
                  "name": "usize"
                }
              ]
            }
          }
        }
      ],
      "variants": [],
      "alias": null
    },
    {
      "path": "gen::variation::File",
      "name": "File",
      "defined_at": "gen/variation.rs:11",
      "docs": [
        "One rendering of an artwork, sized in tile repetitions."
      ],
      "kind": "struct",
      "cross": {
        "kind": "class"
      },
      "derives": [
        "Clone",
        "Debug",
        "PartialEq",
        "Eq",
        "Serialize",
        "Deserialize"
      ],
      "serde": [],
      "const_generic": false,
      "fields": [
        {
          "name": "width",
          "public": true,
          "docs": [
            "The count of tile repetitions across."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "height",
          "public": true,
          "docs": [
            "The count of tile repetitions down."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "png",
          "public": true,
          "docs": [
            "The encoded PNG bytes, empty until rendered and left out of the json."
          ],
          "serde": [
            "skip"
          ],
          "serde_skip": true,
          "ty": {
            "t": "vec",
            "item": {
              "t": "scalar",
              "name": "u8"
            }
          }
        }
      ],
      "variants": [],
      "alias": null
    },
    {
      "path": "gen::variation::Variation",
      "name": "Variation",
      "defined_at": "gen/variation.rs:55",
      "docs": [
        "One seeded artwork, from tile recipe to rendered files."
      ],
      "kind": "struct",
      "cross": {
        "kind": "class"
      },
      "derives": [
        "Clone",
        "Debug",
        "Serialize",
        "Deserialize"
      ],
      "serde": [],
      "const_generic": false,
      "fields": [
        {
          "name": "key",
          "public": true,
          "docs": [
            "The random hex identifier."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "string"
          }
        },
        {
          "name": "seed",
          "public": true,
          "docs": [
            "The seed the variation is drawn under."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "u64"
          }
        },
        {
          "name": "edition",
          "public": true,
          "docs": [
            "The paint edition."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "enum",
            "path": "core::paint::Edition"
          }
        },
        {
          "name": "primaries",
          "public": true,
          "docs": [
            "The primary inks, when the config fixes them."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "option",
            "item": {
              "t": "vec",
              "item": {
                "t": "enum",
                "path": "core::paint::Ink"
              }
            }
          }
        },
        {
          "name": "tile",
          "public": true,
          "docs": [
            "The tile recipe."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "class",
            "path": "gen::Tile",
            "dim": null
          }
        },
        {
          "name": "mask",
          "public": true,
          "docs": [
            "The mask tile, present only under the Neighbors edition."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "option",
            "item": {
              "t": "class",
              "path": "gen::Tile",
              "dim": null
            }
          }
        },
        {
          "name": "paint",
          "public": true,
          "docs": [
            "The paint, set by generate."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "option",
            "item": {
              "t": "class",
              "path": "core::paint::Paint",
              "dim": null
            }
          }
        },
        {
          "name": "base",
          "public": true,
          "docs": [
            "The built base cell, set by generate and left out of the json."
          ],
          "serde": [
            "skip"
          ],
          "serde_skip": true,
          "ty": {
            "t": "option",
            "item": {
              "t": "hand",
              "name": "CellNd",
              "dim": 2
            }
          }
        },
        {
          "name": "files",
          "public": true,
          "docs": [
            "The renderings, filled by render."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "vec",
            "item": {
              "t": "class",
              "path": "gen::variation::File",
              "dim": null
            }
          }
        }
      ],
      "variants": [],
      "alias": null
    },
    {
      "path": "life::Boundary",
      "name": "Boundary",
      "defined_at": "life/mod.rs:55",
      "docs": [
        "The edge policy of a life grid."
      ],
      "kind": "enum",
      "cross": {
        "kind": "enum",
        "named": true,
        "words": [
          "Constant",
          "Wrap"
        ]
      },
      "derives": [
        "Clone",
        "Copy",
        "Debug",
        "PartialEq",
        "Eq",
        "Serialize",
        "Deserialize"
      ],
      "serde": [],
      "const_generic": false,
      "fields": [],
      "variants": [
        {
          "name": "Constant",
          "word": "Constant",
          "docs": [
            "The fixed dead border."
          ],
          "serde": [],
          "fields": []
        },
        {
          "name": "Wrap",
          "word": "Wrap",
          "docs": [
            "The toroidal edge."
          ],
          "serde": [],
          "fields": []
        }
      ],
      "alias": null
    },
    {
      "path": "life::Config",
      "name": "Config",
      "defined_at": "life/models.rs:9",
      "docs": [
        "The rulebook of a life run."
      ],
      "kind": "struct",
      "cross": {
        "kind": "class"
      },
      "derives": [
        "Clone",
        "Debug",
        "Serialize",
        "Deserialize"
      ],
      "serde": [],
      "const_generic": false,
      "fields": [
        {
          "name": "mask",
          "public": true,
          "docs": [
            "The neighborhood mask."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "hand",
            "name": "CellNd",
            "dim": 2
          }
        },
        {
          "name": "birth",
          "public": true,
          "docs": [
            "The neighbor counts that create a cell."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "class",
            "path": "life::Counts",
            "dim": null
          }
        },
        {
          "name": "survive",
          "public": true,
          "docs": [
            "The neighbor counts that keep a cell."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "class",
            "path": "life::Counts",
            "dim": null
          }
        },
        {
          "name": "boundary",
          "public": true,
          "docs": [
            "The edge policy."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "enum",
            "path": "life::Boundary"
          }
        },
        {
          "name": "max_generations",
          "public": true,
          "docs": [
            "The generation cap."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "grid_size",
          "public": true,
          "docs": [
            "The tiling factor applied to the seed."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "padding",
          "public": true,
          "docs": [
            "The dead border added around the seed."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "variants": [],
      "alias": null
    },
    {
      "path": "life::Counts",
      "name": "Counts",
      "defined_at": "life/source.rs:371",
      "docs": [
        "The neighbor counts one side of a rule fires on.",
        "",
        "A list spells its counts outright and holds them all; a drawn side names the",
        "sequence behind them, so any budget of neighbors rebuilds the same counts."
      ],
      "kind": "enum",
      "cross": {
        "kind": "class"
      },
      "derives": [
        "Clone",
        "Debug",
        "PartialEq",
        "Eq",
        "Serialize",
        "Deserialize"
      ],
      "serde": [],
      "const_generic": false,
      "fields": [],
      "variants": [
        {
          "name": "List",
          "word": null,
          "docs": [
            "The counts listed outright."
          ],
          "serde": [],
          "fields": [
            {
              "name": "0",
              "public": false,
              "docs": [],
              "serde": [],
              "serde_skip": false,
              "ty": {
                "t": "vec",
                "item": {
                  "t": "scalar",
                  "name": "usize"
                }
              }
            }
          ]
        },
        {
          "name": "Drawn",
          "word": null,
          "docs": [
            "The counts a named sequence lays down inside the budget."
          ],
          "serde": [],
          "fields": [
            {
              "name": "seq",
              "public": false,
              "docs": [
                "The sequence behind the counts."
              ],
              "serde": [],
              "serde_skip": false,
              "ty": {
                "t": "class",
                "path": "life::Source",
                "dim": null
              }
            },
            {
              "name": "zeros",
              "public": false,
              "docs": [
                "Whether zero stays in the counts."
              ],
              "serde": [],
              "serde_skip": false,
              "ty": {
                "t": "scalar",
                "name": "bool"
              }
            },
            {
              "name": "ones",
              "public": false,
              "docs": [
                "Whether one stays in the counts."
              ],
              "serde": [],
              "serde_skip": false,
              "ty": {
                "t": "scalar",
                "name": "bool"
              }
            }
          ]
        }
      ],
      "alias": null
    },
    {
      "path": "life::Fate",
      "name": "Fate",
      "defined_at": "life/mod.rs:73",
      "docs": [
        "The ending of a life run."
      ],
      "kind": "enum",
      "cross": {
        "kind": "enum",
        "named": true,
        "words": [
          "dead",
          "alive",
          "loop",
          "timeout"
        ]
      },
      "derives": [
        "Clone",
        "Copy",
        "Debug",
        "PartialEq",
        "Eq",
        "Serialize",
        "Deserialize"
      ],
      "serde": [],
      "const_generic": false,
      "fields": [],
      "variants": [
        {
          "name": "Dead",
          "word": "dead",
          "docs": [
            "The empty fixed point."
          ],
          "serde": [],
          "fields": []
        },
        {
          "name": "Alive",
          "word": "alive",
          "docs": [
            "The living fixed point."
          ],
          "serde": [],
          "fields": []
        },
        {
          "name": "Loop",
          "word": "loop",
          "docs": [
            "The periodic cycle."
          ],
          "serde": [],
          "fields": []
        },
        {
          "name": "Timeout",
          "word": "timeout",
          "docs": [
            "The generation cap reached before settling."
          ],
          "serde": [],
          "fields": []
        }
      ],
      "alias": null
    },
    {
      "path": "life::Life",
      "name": "Life",
      "defined_at": "life/models.rs:56",
      "docs": [
        "The recorded run of one seed."
      ],
      "kind": "struct",
      "cross": {
        "kind": "class"
      },
      "derives": [
        "Clone",
        "Debug",
        "Serialize",
        "Deserialize"
      ],
      "serde": [],
      "const_generic": false,
      "fields": [
        {
          "name": "grids",
          "public": true,
          "docs": [
            "Every generation in order."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "vec",
            "item": {
              "t": "hand",
              "name": "CellNd",
              "dim": 2
            }
          }
        },
        {
          "name": "fate",
          "public": true,
          "docs": [
            "The run's ending."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "enum",
            "path": "life::Fate"
          }
        },
        {
          "name": "count",
          "public": true,
          "docs": [
            "The number of recorded generations."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "loop_length",
          "public": true,
          "docs": [
            "The cycle length when the fate is a loop, else zero."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "variants": [],
      "alias": null
    },
    {
      "path": "life::Rule",
      "name": "Rule",
      "defined_at": "life/rule.rs:109",
      "docs": [
        "A life rule: the birth and survival counts and whether the edge wraps.",
        "",
        "```",
        "use mrlyrs::life::Rule;",
        "use mrlyrs::math::name::Named;",
        "let conway = Rule::new(vec![3].into(), vec![2, 3].into(), false);",
        "assert_eq!(conway.to_json(), r#\"{\"kind\":\"rule\",\"birth\":[3],\"survive\":[2,3]}\"#);",
        "Rule::from_json(&conway.to_json())?;",
        "# Ok::<(), mrlyrs::Error>(())",
        "```"
      ],
      "kind": "struct",
      "cross": {
        "kind": "class"
      },
      "derives": [
        "Clone",
        "Debug",
        "PartialEq",
        "Eq",
        "Serialize",
        "Deserialize"
      ],
      "serde": [
        "deny_unknown_fields"
      ],
      "const_generic": false,
      "fields": [
        {
          "name": "kind",
          "public": true,
          "docs": [
            "The kind word."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "unknown",
            "text": "unknown type Kind"
          }
        },
        {
          "name": "birth",
          "public": true,
          "docs": [
            "The neighbor counts that create a cell, listed or drawn from a sequence."
          ],
          "serde": [
            "with = \"counts\""
          ],
          "serde_skip": false,
          "ty": {
            "t": "class",
            "path": "life::Counts",
            "dim": null
          }
        },
        {
          "name": "survive",
          "public": true,
          "docs": [
            "The neighbor counts that keep a cell, listed or drawn from a sequence."
          ],
          "serde": [
            "with = \"counts\""
          ],
          "serde_skip": false,
          "ty": {
            "t": "class",
            "path": "life::Counts",
            "dim": null
          }
        },
        {
          "name": "wrap",
          "public": true,
          "docs": [
            "Whether the edge wraps, false unless said."
          ],
          "serde": [
            "default , skip_serializing_if = \"is_false\""
          ],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "bool"
          }
        }
      ],
      "variants": [],
      "alias": null
    },
    {
      "path": "life::Source",
      "name": "Source",
      "defined_at": "life/source.rs:26",
      "docs": [
        "A named source of neighbor-count values.",
        "",
        "| Source | OEIS |",
        "|---|---|",
        "| Evens | A005843 |",
        "| Odds | A005408 |",
        "| Primes | A000040 |",
        "| Binary | A000079 |",
        "| Fibonacci | A000045 |",
        "| GridSquares | A016754 |",
        "",
        "Random, the other mrly families and the code families carry no OEIS id."
      ],
      "kind": "enum",
      "cross": {
        "kind": "class"
      },
      "derives": [
        "Clone",
        "Copy",
        "Debug",
        "PartialEq",
        "Eq",
        "Serialize",
        "Deserialize"
      ],
      "serde": [],
      "const_generic": false,
      "fields": [],
      "variants": [
        {
          "name": "Evens",
          "word": null,
          "docs": [
            "The even numbers."
          ],
          "serde": [],
          "fields": []
        },
        {
          "name": "Odds",
          "word": null,
          "docs": [
            "The odd numbers."
          ],
          "serde": [],
          "fields": []
        },
        {
          "name": "Random",
          "word": null,
          "docs": [
            "The random subset its seed draws."
          ],
          "serde": [],
          "fields": [
            {
              "name": "0",
              "public": false,
              "docs": [],
              "serde": [],
              "serde_skip": false,
              "ty": {
                "t": "scalar",
                "name": "u64"
              }
            }
          ]
        },
        {
          "name": "Primes",
          "word": null,
          "docs": [
            "The primes."
          ],
          "serde": [],
          "fields": []
        },
        {
          "name": "Binary",
          "word": null,
          "docs": [
            "The powers of two."
          ],
          "serde": [],
          "fields": []
        },
        {
          "name": "Fibonacci",
          "word": null,
          "docs": [
            "The Fibonacci numbers."
          ],
          "serde": [],
          "fields": []
        },
        {
          "name": "GridSquares",
          "word": null,
          "docs": [
            "The squares of the odd numbers."
          ],
          "serde": [],
          "fields": []
        },
        {
          "name": "CarpetFills",
          "word": null,
          "docs": [
            "The carpet fill counts."
          ],
          "serde": [],
          "fields": []
        },
        {
          "name": "CarpetVoids",
          "word": null,
          "docs": [
            "The carpet void counts."
          ],
          "serde": [],
          "fields": []
        },
        {
          "name": "NetFills",
          "word": null,
          "docs": [
            "The net fill counts."
          ],
          "serde": [],
          "fields": []
        },
        {
          "name": "NetVoids",
          "word": null,
          "docs": [
            "The net void counts."
          ],
          "serde": [],
          "fields": []
        },
        {
          "name": "TreeFills",
          "word": null,
          "docs": [
            "The H-tree fill counts."
          ],
          "serde": [],
          "fields": []
        },
        {
          "name": "TreeVoids",
          "word": null,
          "docs": [
            "The H-tree void counts."
          ],
          "serde": [],
          "fields": []
        },
        {
          "name": "VoidFills",
          "word": null,
          "docs": [
            "The void design fill counts."
          ],
          "serde": [],
          "fields": []
        },
        {
          "name": "VoidVoids",
          "word": null,
          "docs": [
            "The void design void counts."
          ],
          "serde": [],
          "fields": []
        },
        {
          "name": "PointFills",
          "word": null,
          "docs": [
            "The point fill counts."
          ],
          "serde": [],
          "fields": []
        },
        {
          "name": "PointVoids",
          "word": null,
          "docs": [
            "The point void counts."
          ],
          "serde": [],
          "fields": []
        },
        {
          "name": "DustFills",
          "word": null,
          "docs": [
            "The dust fill counts."
          ],
          "serde": [],
          "fields": []
        },
        {
          "name": "DustVoids",
          "word": null,
          "docs": [
            "The dust void counts."
          ],
          "serde": [],
          "fields": []
        },
        {
          "name": "LineFills",
          "word": null,
          "docs": [
            "The H-line fill counts."
          ],
          "serde": [],
          "fields": []
        },
        {
          "name": "LineVoids",
          "word": null,
          "docs": [
            "The H-line void counts."
          ],
          "serde": [],
          "fields": []
        },
        {
          "name": "StarFills",
          "word": null,
          "docs": [
            "The star fill counts."
          ],
          "serde": [],
          "fields": []
        },
        {
          "name": "StarVoids",
          "word": null,
          "docs": [
            "The star void counts."
          ],
          "serde": [],
          "fields": []
        },
        {
          "name": "CodeFills",
          "word": null,
          "docs": [
            "The fill counts of a coded design."
          ],
          "serde": [],
          "fields": [
            {
              "name": "0",
              "public": false,
              "docs": [],
              "serde": [],
              "serde_skip": false,
              "ty": {
                "t": "u128"
              }
            }
          ]
        },
        {
          "name": "CodeVoids",
          "word": null,
          "docs": [
            "The void counts of a coded design."
          ],
          "serde": [],
          "fields": [
            {
              "name": "0",
              "public": false,
              "docs": [],
              "serde": [],
              "serde_skip": false,
              "ty": {
                "t": "u128"
              }
            }
          ]
        }
      ],
      "alias": null
    },
    {
      "path": "math::bang::Code",
      "name": "Code",
      "defined_at": "math/bang/code.rs:19",
      "docs": [
        "The bitmask of filled corners that names a design.",
        "",
        "It prints, parses and serialises as the bare decimal number.",
        "",
        "```",
        "use mrlyrs::math::bang::Code;",
        "assert_eq!(Code::from(402u64).to_string(), \"402\");",
        "assert_eq!(\"402\".parse::<Code>().unwrap().get(), 402);",
        "```"
      ],
      "kind": "struct",
      "cross": {
        "kind": "hand",
        "name": "Code"
      },
      "derives": [
        "Copy",
        "Clone",
        "PartialEq",
        "Eq",
        "PartialOrd",
        "Ord",
        "Hash",
        "Debug",
        "Default",
        "Serialize",
        "Deserialize"
      ],
      "serde": [
        "transparent"
      ],
      "const_generic": false,
      "fields": [
        {
          "name": "0",
          "public": false,
          "docs": [],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "u128"
          }
        }
      ],
      "variants": [],
      "alias": null
    },
    {
      "path": "math::bang::Design",
      "name": "Design",
      "defined_at": "math/bang/universe.rs:195",
      "docs": [
        "A single design with its place in the orbit structure."
      ],
      "kind": "struct",
      "cross": {
        "kind": "class"
      },
      "derives": [
        "Clone",
        "Debug",
        "Serialize",
        "Deserialize"
      ],
      "serde": [],
      "const_generic": false,
      "fields": [
        {
          "name": "i",
          "public": true,
          "docs": [
            "The design's code."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "code"
          }
        },
        {
          "name": "dimension",
          "public": true,
          "docs": [
            "The design's dimension."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "canonical",
          "public": true,
          "docs": [
            "Whether this code is the smallest in its orbit."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "bool"
          }
        },
        {
          "name": "class_rep",
          "public": true,
          "docs": [
            "The smallest code in the orbit."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "code"
          }
        },
        {
          "name": "orbit_size",
          "public": true,
          "docs": [
            "The number of codes in the orbit."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "variants": [],
      "alias": null
    },
    {
      "path": "math::bang::MagicLayer",
      "name": "MagicLayer",
      "defined_at": "math/bang/factory.rs:11",
      "docs": [
        "One ordered layer of a magic composition: a coded design at its own side number."
      ],
      "kind": "struct",
      "cross": {
        "kind": "plain"
      },
      "derives": [
        "Clone",
        "Debug",
        "PartialEq",
        "Eq",
        "Serialize",
        "Deserialize"
      ],
      "serde": [],
      "const_generic": false,
      "fields": [
        {
          "name": "design",
          "public": true,
          "docs": [
            "The layer's coded design."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "class",
            "path": "math::name::Bang",
            "dim": null
          }
        },
        {
          "name": "number",
          "public": true,
          "docs": [
            "The layer's side number."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "variants": [],
      "alias": null
    },
    {
      "path": "math::bang::Universe",
      "name": "Universe",
      "defined_at": "math/bang/universe.rs:245",
      "docs": [
        "The complete enumeration of one dimension's designs and orbits."
      ],
      "kind": "struct",
      "cross": {
        "kind": "class"
      },
      "derives": [
        "Serialize",
        "Deserialize"
      ],
      "serde": [],
      "const_generic": false,
      "fields": [
        {
          "name": "dimension",
          "public": true,
          "docs": [
            "The universe's dimension."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "total",
          "public": true,
          "docs": [
            "The number of codes in the universe."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "class_rep",
          "public": false,
          "docs": [],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "vec",
            "item": {
              "t": "code"
            }
          }
        },
        {
          "name": "orbit_size",
          "public": false,
          "docs": [],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "vec",
            "item": {
              "t": "scalar",
              "name": "usize"
            }
          }
        }
      ],
      "variants": [],
      "alias": null
    },
    {
      "path": "math::bang::word::Counts",
      "name": "Counts",
      "defined_at": "math/bang/word.rs:28",
      "docs": [
        "The counts a word carries at one prefix length."
      ],
      "kind": "struct",
      "cross": {
        "kind": "plain"
      },
      "derives": [
        "Clone",
        "Copy",
        "Debug",
        "PartialEq",
        "Eq",
        "Serialize",
        "Deserialize"
      ],
      "serde": [],
      "const_generic": false,
      "fields": [
        {
          "name": "side",
          "public": true,
          "docs": [
            "The side, the product of the prefix's letter sides."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "u128"
          }
        },
        {
          "name": "fill",
          "public": true,
          "docs": [
            "The filled cells, the product of the prefix's letter fills."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "u128"
          }
        },
        {
          "name": "components",
          "public": true,
          "docs": [
            "The 4-connected components."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "u128"
          }
        },
        {
          "name": "runs_h",
          "public": true,
          "docs": [
            "The maximal horizontal runs of filled cells."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "u128"
          }
        },
        {
          "name": "runs_v",
          "public": true,
          "docs": [
            "The maximal vertical runs of filled cells."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "u128"
          }
        }
      ],
      "variants": [],
      "alias": null
    },
    {
      "path": "math::bang::word::Letter",
      "name": "Letter",
      "defined_at": "math/bang/word.rs:11",
      "docs": [
        "The plane geometry of one letter, the numbers a word's counts fold through."
      ],
      "kind": "struct",
      "cross": {
        "kind": "plain"
      },
      "derives": [
        "Clone",
        "Copy",
        "Debug",
        "PartialEq",
        "Eq",
        "Serialize",
        "Deserialize"
      ],
      "serde": [],
      "const_generic": false,
      "fields": [
        {
          "name": "fill",
          "public": true,
          "docs": [
            "The count of filled cells."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "u128"
          }
        },
        {
          "name": "runs_h",
          "public": true,
          "docs": [
            "The count of maximal horizontal runs of filled cells."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "u128"
          }
        },
        {
          "name": "runs_v",
          "public": true,
          "docs": [
            "The count of maximal vertical runs of filled cells."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "u128"
          }
        },
        {
          "name": "touch_h",
          "public": true,
          "docs": [
            "The count of rows whose first and last cells are both filled."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "u128"
          }
        },
        {
          "name": "touch_v",
          "public": true,
          "docs": [
            "The count of columns whose first and last cells are both filled."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "u128"
          }
        },
        {
          "name": "components",
          "public": true,
          "docs": [
            "The count of 4-connected components."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "u128"
          }
        }
      ],
      "variants": [],
      "alias": null
    },
    {
      "path": "math::bang::word::Schedule",
      "name": "Schedule",
      "defined_at": "math/bang/word.rs:369",
      "docs": [
        "The named infinite schedules over an ordered pair of letters."
      ],
      "kind": "enum",
      "cross": {
        "kind": "enum",
        "named": true,
        "words": [
          "thue-morse",
          "periodic",
          "constant"
        ]
      },
      "derives": [
        "Clone",
        "Copy",
        "Debug",
        "PartialEq",
        "Eq",
        "Serialize",
        "Deserialize"
      ],
      "serde": [],
      "const_generic": false,
      "fields": [],
      "variants": [
        {
          "name": "ThueMorse",
          "word": "thue-morse",
          "docs": [
            "The Thue-Morse word, the parity of the binary digit sum of the place."
          ],
          "serde": [],
          "fields": []
        },
        {
          "name": "Periodic",
          "word": "periodic",
          "docs": [
            "The two letters alternating, the periodic control at the same frequencies."
          ],
          "serde": [],
          "fields": []
        },
        {
          "name": "Constant",
          "word": "constant",
          "docs": [
            "The first letter repeated, the constant control."
          ],
          "serde": [],
          "fields": []
        }
      ],
      "alias": null
    },
    {
      "path": "math::cell::models::CellNd",
      "name": "CellNd",
      "defined_at": "math/cell/models.rs:40",
      "docs": [
        "A cell whose tensor is pinned to N dimensions."
      ],
      "kind": "struct",
      "cross": {
        "kind": "hand",
        "name": "CellNd"
      },
      "derives": [
        "Clone",
        "Debug",
        "PartialEq",
        "Eq",
        "Serialize",
        "Deserialize"
      ],
      "serde": [],
      "const_generic": true,
      "fields": [
        {
          "name": "cell",
          "public": true,
          "docs": [
            "The wrapped cell."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "hand",
            "name": "Cell",
            "dim": null
          }
        }
      ],
      "variants": [],
      "alias": null
    },
    {
      "path": "math::counts::Exposure",
      "name": "Exposure",
      "defined_at": "math/counts/surface.rs:53",
      "docs": [
        "The counts the exposure recurrence runs on: the filled cells and exposed faces of the tile, and per axis its adjacent pairs and spanning positions.",
        "",
        "With `occ` filled cells, `V(1)` exposed faces and per axis `P` adjacent pairs and `S` spanning",
        "positions, `V(L + 1) = occ V(L) - 2 sum P S^L`: the perimeter in the plane, the surface in space."
      ],
      "kind": "struct",
      "cross": {
        "kind": "class"
      },
      "derives": [
        "Clone",
        "Debug",
        "PartialEq",
        "Eq",
        "Serialize",
        "Deserialize"
      ],
      "serde": [],
      "const_generic": false,
      "fields": [
        {
          "name": "occupancy",
          "public": true,
          "docs": [
            "The filled cells of the tile."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "u128"
          }
        },
        {
          "name": "exposed",
          "public": true,
          "docs": [
            "The exposed faces of the tile."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "u128"
          }
        },
        {
          "name": "axes",
          "public": true,
          "docs": [
            "Per axis, the adjacent filled pairs and the spanning positions."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "vec",
            "item": {
              "t": "tuple",
              "items": [
                {
                  "t": "u128"
                },
                {
                  "t": "u128"
                }
              ]
            }
          }
        }
      ],
      "variants": [],
      "alias": null
    },
    {
      "path": "math::graph::Branch",
      "name": "Branch",
      "defined_at": "math/graph/models.rs:16",
      "docs": [
        "A link between two nodes."
      ],
      "kind": "struct",
      "cross": {
        "kind": "plain"
      },
      "derives": [
        "Clone",
        "Debug",
        "PartialEq",
        "Serialize",
        "Deserialize"
      ],
      "serde": [],
      "const_generic": false,
      "fields": [
        {
          "name": "parent",
          "public": true,
          "docs": [
            "The index of the node the branch leaves."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "child",
          "public": true,
          "docs": [
            "The index of the node the branch reaches."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "radius",
          "public": true,
          "docs": [
            "The thickness of the branch."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "f64"
          }
        }
      ],
      "variants": [],
      "alias": null
    },
    {
      "path": "math::graph::Census",
      "name": "Census",
      "defined_at": "math/graph/census.rs:251",
      "docs": [
        "The measurements of one network."
      ],
      "kind": "struct",
      "cross": {
        "kind": "plain"
      },
      "derives": [
        "Clone",
        "Debug",
        "PartialEq",
        "Serialize",
        "Deserialize"
      ],
      "serde": [],
      "const_generic": false,
      "fields": [
        {
          "name": "nodes",
          "public": true,
          "docs": [
            "The node count."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "branches",
          "public": true,
          "docs": [
            "The branch count."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "tips",
          "public": true,
          "docs": [
            "The count of degree-one nodes."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "junctions",
          "public": true,
          "docs": [
            "The count of nodes of degree three or more."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "components",
          "public": true,
          "docs": [
            "The connected component count."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "total_length",
          "public": true,
          "docs": [
            "The summed branch length."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "f64"
          }
        },
        {
          "name": "fractal_dimension",
          "public": true,
          "docs": [
            "The box-counting dimension estimate."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "f64"
          }
        }
      ],
      "variants": [],
      "alias": null
    },
    {
      "path": "math::graph::Layout",
      "name": "Layout",
      "defined_at": "math/graph/layout.rs:26",
      "docs": [
        "A force-directed layout: every node repels every other, every branch pulls its ends together, and a cooling cap on the move per tick lets the lattice settle.",
        "",
        "The forces are Fruchterman and Reingold's: repulsion `k^2 / d` between every pair, attraction",
        "`d^2 / k` along every branch, with `k` the ideal length `extent / n^(1/dim)` read off the",
        "starting box. The temperature caps the move of any node in one tick and cools linearly from",
        "a tenth of the extent to a floor over the first ticks, then holds, so the layout keeps",
        "creeping toward rest. The seed jitters the start so a symmetric lattice can fold.",
        "",
        "```",
        "let square = [0.0, 0.0, 1.0, 0.0, 1.0, 1.0, 0.0, 1.0];",
        "let ring = [(0, 1), (1, 2), (2, 3), (3, 0)];",
        "let mut layout = mrlyrs::math::graph::Layout::new(&square, &ring, 2, 1).unwrap();",
        "assert!(layout.step(500) < 1e-3);",
        "```"
      ],
      "kind": "struct",
      "cross": {
        "kind": "class"
      },
      "derives": [
        "Clone"
      ],
      "serde": [],
      "const_generic": false,
      "fields": [
        {
          "name": "dim",
          "public": false,
          "docs": [],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "positions",
          "public": false,
          "docs": [],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "vec",
            "item": {
              "t": "scalar",
              "name": "f64"
            }
          }
        },
        {
          "name": "branches",
          "public": false,
          "docs": [],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "vec",
            "item": {
              "t": "tuple",
              "items": [
                {
                  "t": "scalar",
                  "name": "usize"
                },
                {
                  "t": "scalar",
                  "name": "usize"
                }
              ]
            }
          }
        },
        {
          "name": "ideal",
          "public": false,
          "docs": [],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "f64"
          }
        },
        {
          "name": "heat",
          "public": false,
          "docs": [],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "f64"
          }
        },
        {
          "name": "tick",
          "public": false,
          "docs": [],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "energy",
          "public": false,
          "docs": [],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "f64"
          }
        },
        {
          "name": "moved",
          "public": false,
          "docs": [],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "f64"
          }
        },
        {
          "name": "rng",
          "public": false,
          "docs": [],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "hand",
            "name": "Rng",
            "dim": null
          }
        }
      ],
      "variants": [],
      "alias": null
    },
    {
      "path": "math::graph::Network",
      "name": "Network",
      "defined_at": "math/graph/models.rs:27",
      "docs": [
        "A spatial graph of nodes and branches."
      ],
      "kind": "struct",
      "cross": {
        "kind": "class"
      },
      "derives": [
        "Clone",
        "Debug",
        "PartialEq",
        "Serialize",
        "Deserialize"
      ],
      "serde": [],
      "const_generic": false,
      "fields": [
        {
          "name": "dim",
          "public": true,
          "docs": [
            "The dimension every position must match."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "nodes",
          "public": true,
          "docs": [
            "The nodes in insertion order."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "vec",
            "item": {
              "t": "plain",
              "path": "math::graph::Node"
            }
          }
        },
        {
          "name": "branches",
          "public": true,
          "docs": [
            "The branches in insertion order."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "vec",
            "item": {
              "t": "plain",
              "path": "math::graph::Branch"
            }
          }
        }
      ],
      "variants": [],
      "alias": null
    },
    {
      "path": "math::graph::Node",
      "name": "Node",
      "defined_at": "math/graph/models.rs:7",
      "docs": [
        "A point of the network."
      ],
      "kind": "struct",
      "cross": {
        "kind": "plain"
      },
      "derives": [
        "Clone",
        "Debug",
        "PartialEq",
        "Serialize",
        "Deserialize"
      ],
      "serde": [],
      "const_generic": false,
      "fields": [
        {
          "name": "position",
          "public": true,
          "docs": [
            "The coordinates, one per dimension."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "vec",
            "item": {
              "t": "scalar",
              "name": "f64"
            }
          }
        },
        {
          "name": "index",
          "public": true,
          "docs": [
            "The node's place in the network's list."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "variants": [],
      "alias": null
    },
    {
      "path": "math::graph::Role",
      "name": "Role",
      "defined_at": "math/graph/census.rs:28",
      "docs": [
        "What a node's degree makes it."
      ],
      "kind": "enum",
      "cross": {
        "kind": "enum",
        "named": false,
        "words": []
      },
      "derives": [
        "Clone",
        "Copy",
        "Debug",
        "PartialEq",
        "Serialize",
        "Deserialize"
      ],
      "serde": [],
      "const_generic": false,
      "fields": [],
      "variants": [
        {
          "name": "Alone",
          "word": null,
          "docs": [
            "A node no branch touches."
          ],
          "serde": [],
          "fields": []
        },
        {
          "name": "Tip",
          "word": null,
          "docs": [
            "A node exactly one branch touches."
          ],
          "serde": [],
          "fields": []
        },
        {
          "name": "Through",
          "word": null,
          "docs": [
            "A node exactly two branches pass through."
          ],
          "serde": [],
          "fields": []
        },
        {
          "name": "Junction",
          "word": null,
          "docs": [
            "A node three or more branches meet at."
          ],
          "serde": [],
          "fields": []
        }
      ],
      "alias": null
    },
    {
      "path": "math::moire::Combine",
      "name": "Combine",
      "defined_at": "math/moire/mod.rs:36",
      "docs": [
        "The way stacked layers merge."
      ],
      "kind": "enum",
      "cross": {
        "kind": "enum",
        "named": false,
        "words": []
      },
      "derives": [
        "Clone",
        "Copy",
        "Debug",
        "PartialEq",
        "Eq",
        "Serialize",
        "Deserialize"
      ],
      "serde": [],
      "const_generic": false,
      "fields": [],
      "variants": [
        {
          "name": "Sum",
          "word": null,
          "docs": [
            "The layer-count sum."
          ],
          "serde": [],
          "fields": []
        },
        {
          "name": "And",
          "word": null,
          "docs": [
            "The intersection."
          ],
          "serde": [],
          "fields": []
        },
        {
          "name": "Xor",
          "word": null,
          "docs": [
            "The parity."
          ],
          "serde": [],
          "fields": []
        }
      ],
      "alias": null
    },
    {
      "path": "math::moire::Field",
      "name": "Field",
      "defined_at": "math/moire/field.rs:6",
      "docs": [
        "A square grid of f32 samples."
      ],
      "kind": "struct",
      "cross": {
        "kind": "class"
      },
      "derives": [
        "Clone",
        "Debug",
        "PartialEq",
        "Serialize",
        "Deserialize"
      ],
      "serde": [],
      "const_generic": false,
      "fields": [
        {
          "name": "data",
          "public": true,
          "docs": [
            "The samples in row-major order."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "vec",
            "item": {
              "t": "scalar",
              "name": "f32"
            }
          }
        },
        {
          "name": "size",
          "public": true,
          "docs": [
            "The side length in samples."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "variants": [],
      "alias": null
    },
    {
      "path": "math::moire::Frame",
      "name": "Frame",
      "defined_at": "math/moire/volume.rs:19",
      "docs": [
        "A plane through the unit box, framed for sampling: its centre, its two in-plane axes and the width of the square window that holds the whole section, all in the box `[-1, 1]^3`."
      ],
      "kind": "struct",
      "cross": {
        "kind": "plain"
      },
      "derives": [
        "Clone",
        "Debug",
        "PartialEq",
        "Serialize",
        "Deserialize"
      ],
      "serde": [],
      "const_generic": false,
      "fields": [
        {
          "name": "centre",
          "public": true,
          "docs": [
            "The point of the plane the window is centred on."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "array",
            "item": {
              "t": "scalar",
              "name": "f64"
            },
            "len": 3
          }
        },
        {
          "name": "u",
          "public": true,
          "docs": [
            "The unit axis the window's columns run along."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "array",
            "item": {
              "t": "scalar",
              "name": "f64"
            },
            "len": 3
          }
        },
        {
          "name": "v",
          "public": true,
          "docs": [
            "The unit axis the window's rows run along."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "array",
            "item": {
              "t": "scalar",
              "name": "f64"
            },
            "len": 3
          }
        },
        {
          "name": "normal",
          "public": true,
          "docs": [
            "The unit normal."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "array",
            "item": {
              "t": "scalar",
              "name": "f64"
            },
            "len": 3
          }
        },
        {
          "name": "width",
          "public": true,
          "docs": [
            "The side of the square window."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "f64"
          }
        }
      ],
      "variants": [],
      "alias": null
    },
    {
      "path": "math::moire::Lattice",
      "name": "Lattice",
      "defined_at": "math/moire/mod.rs:27",
      "docs": [
        "The sampling lattice of a moire field."
      ],
      "kind": "enum",
      "cross": {
        "kind": "enum",
        "named": false,
        "words": []
      },
      "derives": [
        "Clone",
        "Copy",
        "Debug",
        "PartialEq",
        "Eq",
        "Serialize",
        "Deserialize"
      ],
      "serde": [],
      "const_generic": false,
      "fields": [],
      "variants": [
        {
          "name": "Square",
          "word": null,
          "docs": [
            "The square lattice."
          ],
          "serde": [],
          "fields": []
        },
        {
          "name": "Hex",
          "word": null,
          "docs": [
            "The hexagonal lattice."
          ],
          "serde": [],
          "fields": []
        }
      ],
      "alias": null
    },
    {
      "path": "math::moire::Layer",
      "name": "Layer",
      "defined_at": "math/moire/layer.rs:8",
      "docs": [
        "The recipe for one moire layer."
      ],
      "kind": "struct",
      "cross": {
        "kind": "plain"
      },
      "derives": [
        "Clone",
        "Debug",
        "Serialize",
        "Deserialize"
      ],
      "serde": [],
      "const_generic": false,
      "fields": [
        {
          "name": "spec",
          "public": true,
          "docs": [
            "The design to sample."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "plain",
            "path": "math::moire::Spec"
          }
        },
        {
          "name": "number",
          "public": true,
          "docs": [
            "The side number of the residue grid."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "level",
          "public": true,
          "docs": [
            "The fractal depth."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "lattice",
          "public": true,
          "docs": [
            "The sampling lattice."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "enum",
            "path": "math::moire::Lattice"
          }
        },
        {
          "name": "size",
          "public": true,
          "docs": [
            "The output side in pixels."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "slices",
          "public": true,
          "docs": [
            "The 0..1 positions fixing the axes beyond the first two."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "vec",
            "item": {
              "t": "scalar",
              "name": "f64"
            }
          }
        }
      ],
      "variants": [],
      "alias": null
    },
    {
      "path": "math::moire::Preset",
      "name": "Preset",
      "defined_at": "math/moire/presets.rs:10",
      "docs": [
        "One named moire recipe: the design, the scales it stacks and the lattice it samples."
      ],
      "kind": "struct",
      "cross": {
        "kind": "class"
      },
      "derives": [
        "Clone",
        "Debug",
        "PartialEq",
        "Serialize"
      ],
      "serde": [],
      "const_generic": false,
      "fields": [
        {
          "name": "name",
          "public": true,
          "docs": [
            "The name the recipe answers to."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": "'static",
            "item": {
              "t": "str"
            }
          }
        },
        {
          "name": "spec",
          "public": true,
          "docs": [
            "The design sampled at every scale."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "plain",
            "path": "math::moire::Spec"
          }
        },
        {
          "name": "numbers",
          "public": true,
          "docs": [
            "The side numbers stacked."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "vec",
            "item": {
              "t": "scalar",
              "name": "usize"
            }
          }
        },
        {
          "name": "combine",
          "public": true,
          "docs": [
            "The way the layers merge."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "enum",
            "path": "math::moire::Combine"
          }
        },
        {
          "name": "level",
          "public": true,
          "docs": [
            "The fractal depth of each layer."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "lattice",
          "public": true,
          "docs": [
            "The lattice the layers are sampled on."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "enum",
            "path": "math::moire::Lattice"
          }
        }
      ],
      "variants": [],
      "alias": null
    },
    {
      "path": "math::moire::Spec",
      "name": "Spec",
      "defined_at": "math/moire/mod.rs:47",
      "docs": [
        "The identity of a design: its code, base and dimension."
      ],
      "kind": "struct",
      "cross": {
        "kind": "plain"
      },
      "derives": [
        "Clone",
        "Copy",
        "Debug",
        "PartialEq",
        "Eq",
        "Serialize",
        "Deserialize"
      ],
      "serde": [],
      "const_generic": false,
      "fields": [
        {
          "name": "code",
          "public": true,
          "docs": [
            "The design code."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "u128"
          }
        },
        {
          "name": "base",
          "public": true,
          "docs": [
            "The residue base."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "dimension",
          "public": true,
          "docs": [
            "The design dimension."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "variants": [],
      "alias": null
    },
    {
      "path": "math::moire::Volume",
      "name": "Volume",
      "defined_at": "math/moire/volume.rs:10",
      "docs": [
        "A cubic grid of f32 samples, x-major."
      ],
      "kind": "struct",
      "cross": {
        "kind": "class"
      },
      "derives": [
        "Clone",
        "Debug",
        "PartialEq",
        "Serialize",
        "Deserialize"
      ],
      "serde": [],
      "const_generic": false,
      "fields": [
        {
          "name": "data",
          "public": true,
          "docs": [
            "The samples, x-major, then y, then z."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "vec",
            "item": {
              "t": "scalar",
              "name": "f32"
            }
          }
        },
        {
          "name": "size",
          "public": true,
          "docs": [
            "The side in samples."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "variants": [],
      "alias": null
    },
    {
      "path": "math::moire::pairs::Witness",
      "name": "Witness",
      "defined_at": "math/moire/pairs.rs:53",
      "docs": [
        "The witness row of an odd scale: its correlation with every earlier odd scale from three, and the verdict the row gives."
      ],
      "kind": "struct",
      "cross": {
        "kind": "plain"
      },
      "derives": [
        "Clone",
        "Debug",
        "PartialEq",
        "Serialize",
        "Deserialize"
      ],
      "serde": [],
      "const_generic": false,
      "fields": [
        {
          "name": "scale",
          "public": true,
          "docs": [
            "The scale on trial."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "scales",
          "public": true,
          "docs": [
            "The earlier odd scales, three up to the scale less two."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "vec",
            "item": {
              "t": "scalar",
              "name": "usize"
            }
          }
        },
        {
          "name": "row",
          "public": true,
          "docs": [
            "The exact correlation with each earlier scale."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "vec",
            "item": {
              "t": "scalar",
              "name": "f64"
            }
          }
        },
        {
          "name": "max",
          "public": true,
          "docs": [
            "The largest correlation in the row, zero for an empty row."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "f64"
          }
        },
        {
          "name": "at",
          "public": true,
          "docs": [
            "The earlier scale carrying the largest correlation, zero when the row is clear."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "prime",
          "public": true,
          "docs": [
            "Whether the row is exactly clear, which is the scale being prime."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "bool"
          }
        }
      ],
      "variants": [],
      "alias": null
    },
    {
      "path": "math::name::Bang",
      "name": "Bang",
      "defined_at": "math/name/bang.rs:50",
      "docs": [
        "A design code pinned to its dimension, lattice and base, with one unit index per filled digit when it twists.",
        "",
        "```",
        "use mrlyrs::math::name::{Bang, Named};",
        "let carpet = Bang::new(7, 2, 2);",
        "assert_eq!(carpet.to_json(), r#\"{\"kind\":\"bang\",\"dim\":2,\"code\":7}\"#);",
        "assert_eq!(Bang::from_json(&carpet.to_json()).unwrap(), carpet);",
        "```"
      ],
      "kind": "struct",
      "cross": {
        "kind": "class"
      },
      "derives": [
        "Clone",
        "Debug",
        "PartialEq",
        "Eq",
        "Hash",
        "Serialize",
        "Deserialize"
      ],
      "serde": [
        "deny_unknown_fields"
      ],
      "const_generic": false,
      "fields": [
        {
          "name": "kind",
          "public": true,
          "docs": [
            "The kind word."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "unknown",
            "text": "unknown type Kind"
          }
        },
        {
          "name": "dim",
          "public": true,
          "docs": [
            "The number of axes."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "lattice",
          "public": true,
          "docs": [
            "The lattice, square unless said."
          ],
          "serde": [
            "default , skip_serializing_if = \"Lattice::is_square\""
          ],
          "serde_skip": false,
          "ty": {
            "t": "enum",
            "path": "math::name::Lattice"
          }
        },
        {
          "name": "base",
          "public": true,
          "docs": [
            "The digits per axis, 2 unless said."
          ],
          "serde": [
            "default = \"two\" , skip_serializing_if = \"is_two\""
          ],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "code",
          "public": true,
          "docs": [
            "The design as a number."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "u128"
          }
        },
        {
          "name": "twist",
          "public": true,
          "docs": [
            "One unit index per filled digit, absent when nothing turns."
          ],
          "serde": [
            "default , skip_serializing_if = \"Option::is_none\""
          ],
          "serde_skip": false,
          "ty": {
            "t": "option",
            "item": {
              "t": "vec",
              "item": {
                "t": "scalar",
                "name": "usize"
              }
            }
          }
        }
      ],
      "variants": [],
      "alias": null
    },
    {
      "path": "math::name::Lattice",
      "name": "Lattice",
      "defined_at": "math/name/bang.rs:10",
      "docs": [
        "The lattice the cells sit on."
      ],
      "kind": "enum",
      "cross": {
        "kind": "enum",
        "named": false,
        "words": []
      },
      "derives": [
        "Clone",
        "Copy",
        "Debug",
        "Default",
        "PartialEq",
        "Eq",
        "Hash",
        "Serialize",
        "Deserialize"
      ],
      "serde": [
        "rename_all = \"lowercase\""
      ],
      "const_generic": false,
      "fields": [],
      "variants": [
        {
          "name": "Square",
          "word": null,
          "docs": [
            "The square lattice, the default the name elides."
          ],
          "serde": [],
          "fields": []
        },
        {
          "name": "Hex",
          "word": null,
          "docs": [
            "The hexagonal lattice."
          ],
          "serde": [],
          "fields": []
        }
      ],
      "alias": null
    },
    {
      "path": "math::name::Sequence",
      "name": "Sequence",
      "defined_at": "math/name/sequence.rs:45",
      "docs": [
        "A design sequence's address: the design, the reading taken off it and the index it runs along.",
        "",
        "```",
        "use mrlyrs::math::name::{Named, Sequence};",
        "let carpet = Sequence::new(7, 2, 2, \"fills\", \"side\");",
        "assert_eq!(",
        "    carpet.to_json(),",
        "    r#\"{\"kind\":\"sequence\",\"dim\":2,\"code\":7,\"measure\":\"fills\",\"axis\":\"side\"}\"#",
        ");",
        "assert_eq!(carpet.to_file().unwrap(), \"sequence_dim=2_code=7_measure=fills_axis=side\");",
        "```"
      ],
      "kind": "struct",
      "cross": {
        "kind": "class"
      },
      "derives": [
        "Clone",
        "Debug",
        "PartialEq",
        "Eq",
        "Hash",
        "Serialize",
        "Deserialize"
      ],
      "serde": [
        "deny_unknown_fields"
      ],
      "const_generic": false,
      "fields": [
        {
          "name": "kind",
          "public": true,
          "docs": [
            "The kind word."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "unknown",
            "text": "unknown type Kind"
          }
        },
        {
          "name": "dim",
          "public": true,
          "docs": [
            "The number of axes."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "base",
          "public": true,
          "docs": [
            "The digits per axis, 2 unless said."
          ],
          "serde": [
            "default = \"two\" , skip_serializing_if = \"is_two\""
          ],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "code",
          "public": true,
          "docs": [
            "The design as a number."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "u128"
          }
        },
        {
          "name": "measure",
          "public": true,
          "docs": [
            "The reading taken."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "string"
          }
        },
        {
          "name": "axis",
          "public": true,
          "docs": [
            "The index the reading runs along."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "string"
          }
        }
      ],
      "variants": [],
      "alias": null
    },
    {
      "path": "math::name::Word",
      "name": "Word",
      "defined_at": "math/name/word.rs:17",
      "docs": [
        "A magic word: an ordered list of design letters, first letter outermost, each at its own side.",
        "",
        "```",
        "use mrlyrs::math::name::{Named, Word};",
        "let word = Word::new(2, &[(7, 3), (14, 7), (9, 5)]).unwrap();",
        "assert_eq!(word.to_json(), r#\"{\"kind\":\"word\",\"dim\":2,\"magic\":[7,14,9],\"side\":[3,7,5]}\"#);",
        "assert_eq!(Word::from_json(&word.to_json()).unwrap(), word);",
        "```"
      ],
      "kind": "struct",
      "cross": {
        "kind": "class"
      },
      "derives": [
        "Clone",
        "Debug",
        "PartialEq",
        "Eq",
        "Hash",
        "Serialize",
        "Deserialize"
      ],
      "serde": [
        "deny_unknown_fields"
      ],
      "const_generic": false,
      "fields": [
        {
          "name": "kind",
          "public": true,
          "docs": [
            "The kind word."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "unknown",
            "text": "unknown type Kind"
          }
        },
        {
          "name": "dim",
          "public": true,
          "docs": [
            "The number of axes every letter shares."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "magic",
          "public": true,
          "docs": [
            "The codes of the letters in order."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "vec",
            "item": {
              "t": "u128"
            }
          }
        },
        {
          "name": "side",
          "public": true,
          "docs": [
            "The side each letter renders at."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "vec",
            "item": {
              "t": "scalar",
              "name": "usize"
            }
          }
        },
        {
          "name": "base",
          "public": true,
          "docs": [
            "The base of each letter, absent when every letter is base 2."
          ],
          "serde": [
            "default , skip_serializing_if = \"Option::is_none\""
          ],
          "serde_skip": false,
          "ty": {
            "t": "option",
            "item": {
              "t": "vec",
              "item": {
                "t": "scalar",
                "name": "usize"
              }
            }
          }
        }
      ],
      "variants": [],
      "alias": null
    },
    {
      "path": "math::press::Press",
      "name": "Press",
      "defined_at": "math/press.rs:274",
      "docs": [
        "The tally press: one pass over the integers weighs every design of a universe at once.",
        "",
        "Each added number lands its weight in the bucket of its corner-usage mask, and a",
        "design's total is the sum over the submasks of its code, so a single sweep prices",
        "a Mertens sum, a member count or a prime count for all two to the corners designs."
      ],
      "kind": "struct",
      "cross": {
        "kind": "class"
      },
      "derives": [
        "Serialize",
        "Deserialize"
      ],
      "serde": [],
      "const_generic": false,
      "fields": [
        {
          "name": "dimension",
          "public": true,
          "docs": [
            "The design dimension of the universe."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "base",
          "public": true,
          "docs": [
            "The numeral base of the universe."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "corners",
          "public": false,
          "docs": [],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "tallies",
          "public": false,
          "docs": [],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "vec",
            "item": {
              "t": "i128"
            }
          }
        }
      ],
      "variants": [],
      "alias": null
    },
    {
      "path": "math::roulette::Nodes",
      "name": "Nodes",
      "defined_at": "math/roulette.rs:14",
      "docs": [
        "Every crossing of a traced roulette: the curves against themselves, the curves against one another, and how crowded the worst node is."
      ],
      "kind": "struct",
      "cross": {
        "kind": "class"
      },
      "derives": [
        "Clone",
        "Debug",
        "Default",
        "PartialEq",
        "Eq",
        "Serialize",
        "Deserialize"
      ],
      "serde": [],
      "const_generic": false,
      "fields": [
        {
          "name": "curves",
          "public": true,
          "docs": [
            "The curves counted, in the order the pencils came in."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "selves",
          "public": true,
          "docs": [
            "How often each curve crosses itself, curve by curve."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "vec",
            "item": {
              "t": "scalar",
              "name": "usize"
            }
          }
        },
        {
          "name": "pairs",
          "public": true,
          "docs": [
            "How often each pair of curves crosses, the lower curve first, in lexicographic order."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "vec",
            "item": {
              "t": "scalar",
              "name": "usize"
            }
          }
        },
        {
          "name": "most",
          "public": true,
          "docs": [
            "The most crossings one node carries: one at a plain double point, and `n(n - 1)/2` where `n` branches meet."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "crowded",
          "public": true,
          "docs": [
            "The nodes more than one crossing clusters at."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "points",
          "public": true,
          "docs": [
            "The distinct points the crossings sit at, one for every cluster."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "branches",
          "public": true,
          "docs": [
            "The branches through every node added up, which is the edge count of the picture as a plane graph, `n` at a node where `n` branches meet and `2` times `points` when no node is crowded."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "touches",
          "public": true,
          "docs": [
            "The segment pairs that meet without crossing: collinear or end to end."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "variants": [],
      "alias": null
    },
    {
      "path": "math::shape::Frac",
      "name": "Frac",
      "defined_at": "math/shape.rs:10",
      "docs": [
        "An exact rational number with a positive, reduced denominator."
      ],
      "kind": "struct",
      "cross": {
        "kind": "class"
      },
      "derives": [
        "Clone",
        "Copy",
        "Debug",
        "PartialEq",
        "Eq",
        "Serialize",
        "Deserialize"
      ],
      "serde": [],
      "const_generic": false,
      "fields": [
        {
          "name": "num",
          "public": true,
          "docs": [
            "The numerator, carrying the sign."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "i64"
          }
        },
        {
          "name": "den",
          "public": true,
          "docs": [
            "The denominator, always positive."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "i64"
          }
        }
      ],
      "variants": [],
      "alias": null
    },
    {
      "path": "math::shape::Half",
      "name": "Half",
      "defined_at": "math/shape.rs:90",
      "docs": [
        "A closed half-space: the points x with normal dot x at most offset."
      ],
      "kind": "struct",
      "cross": {
        "kind": "plain"
      },
      "derives": [
        "Clone",
        "Debug",
        "PartialEq",
        "Eq",
        "Serialize",
        "Deserialize"
      ],
      "serde": [],
      "const_generic": false,
      "fields": [
        {
          "name": "normal",
          "public": true,
          "docs": [
            "The integer outward normal."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "vec",
            "item": {
              "t": "scalar",
              "name": "i64"
            }
          }
        },
        {
          "name": "offset",
          "public": true,
          "docs": [
            "The rational offset the linear form stays under."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "class",
            "path": "math::shape::Frac",
            "dim": null
          }
        }
      ],
      "variants": [],
      "alias": null
    },
    {
      "path": "math::shape::RadialCounts",
      "name": "RadialCounts",
      "defined_at": "math/shape.rs:504",
      "docs": [
        "The tallies of one design against a single integer radius about a centre."
      ],
      "kind": "struct",
      "cross": {
        "kind": "plain"
      },
      "derives": [
        "Clone",
        "Copy",
        "Debug",
        "PartialEq",
        "Eq",
        "Serialize",
        "Deserialize"
      ],
      "serde": [],
      "const_generic": false,
      "fields": [
        {
          "name": "seen",
          "public": true,
          "docs": [
            "The filled cells whose own centre lies within the radius."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "u64"
          }
        },
        {
          "name": "inside",
          "public": true,
          "docs": [
            "The filled cells lying wholly within the radius."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "u64"
          }
        },
        {
          "name": "cut",
          "public": true,
          "docs": [
            "The filled cells the sphere of the radius crosses."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "u64"
          }
        }
      ],
      "variants": [],
      "alias": null
    },
    {
      "path": "math::shape::Region",
      "name": "Region",
      "defined_at": "math/shape.rs:119",
      "docs": [
        "Where one lattice cell sits relative to a shape."
      ],
      "kind": "enum",
      "cross": {
        "kind": "enum",
        "named": false,
        "words": []
      },
      "derives": [
        "Clone",
        "Copy",
        "Debug",
        "PartialEq",
        "Eq",
        "Serialize",
        "Deserialize"
      ],
      "serde": [],
      "const_generic": false,
      "fields": [],
      "variants": [
        {
          "name": "Out",
          "word": null,
          "docs": [
            "The cell lies fully outside the shape."
          ],
          "serde": [],
          "fields": []
        },
        {
          "name": "Cut",
          "word": null,
          "docs": [
            "The cell crosses the shape's boundary."
          ],
          "serde": [],
          "fields": []
        },
        {
          "name": "In",
          "word": null,
          "docs": [
            "The cell lies fully inside the shape."
          ],
          "serde": [],
          "fields": []
        }
      ],
      "alias": null
    },
    {
      "path": "math::shape::Shape",
      "name": "Shape",
      "defined_at": "math/shape.rs:99",
      "docs": [
        "An exact region of the unit box, scaled onto the lattice by the side."
      ],
      "kind": "enum",
      "cross": {
        "kind": "plain"
      },
      "derives": [
        "Clone",
        "Debug",
        "PartialEq",
        "Eq",
        "Serialize",
        "Deserialize"
      ],
      "serde": [],
      "const_generic": false,
      "fields": [],
      "variants": [
        {
          "name": "Ball",
          "word": null,
          "docs": [
            "The closed ball of the given rational center and radius."
          ],
          "serde": [],
          "fields": [
            {
              "name": "center",
              "public": false,
              "docs": [
                "The rational center, one coordinate per axis."
              ],
              "serde": [],
              "serde_skip": false,
              "ty": {
                "t": "vec",
                "item": {
                  "t": "class",
                  "path": "math::shape::Frac",
                  "dim": null
                }
              }
            },
            {
              "name": "radius",
              "public": false,
              "docs": [
                "The rational radius."
              ],
              "serde": [],
              "serde_skip": false,
              "ty": {
                "t": "class",
                "path": "math::shape::Frac",
                "dim": null
              }
            }
          ]
        },
        {
          "name": "Polytope",
          "word": null,
          "docs": [
            "The intersection of closed half-spaces."
          ],
          "serde": [],
          "fields": [
            {
              "name": "walls",
              "public": false,
              "docs": [
                "The bounding walls."
              ],
              "serde": [],
              "serde_skip": false,
              "ty": {
                "t": "vec",
                "item": {
                  "t": "plain",
                  "path": "math::shape::Half"
                }
              }
            }
          ]
        },
        {
          "name": "Anti",
          "word": null,
          "docs": [
            "The complement of the inner shape: In and Out swap, Cut stays."
          ],
          "serde": [],
          "fields": [
            {
              "name": "0",
              "public": false,
              "docs": [],
              "serde": [],
              "serde_skip": false,
              "ty": {
                "t": "unknown",
                "text": "unknown type Box < Shape >"
              }
            }
          ]
        }
      ],
      "alias": null
    },
    {
      "path": "math::shape::ShapeCensus",
      "name": "ShapeCensus",
      "defined_at": "math/shape.rs:472",
      "docs": [
        "The per-region tallies of a shape over a design, indexed Out, Cut, In."
      ],
      "kind": "struct",
      "cross": {
        "kind": "plain"
      },
      "derives": [
        "Clone",
        "Copy",
        "Debug",
        "PartialEq",
        "Eq",
        "Serialize",
        "Deserialize"
      ],
      "serde": [],
      "const_generic": false,
      "fields": [
        {
          "name": "cells",
          "public": true,
          "docs": [
            "The cell count of each region."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "array",
            "item": {
              "t": "scalar",
              "name": "usize"
            },
            "len": 3
          }
        },
        {
          "name": "filled",
          "public": true,
          "docs": [
            "The filled-cell count of each region."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "array",
            "item": {
              "t": "scalar",
              "name": "usize"
            },
            "len": 3
          }
        }
      ],
      "variants": [],
      "alias": null
    },
    {
      "path": "math::shape::Shell",
      "name": "Shell",
      "defined_at": "math/shape.rs:600",
      "docs": [
        "The rooted tree of the boxes one circle crosses, level by level."
      ],
      "kind": "struct",
      "cross": {
        "kind": "plain"
      },
      "derives": [
        "Clone",
        "Debug",
        "Serialize",
        "Deserialize"
      ],
      "serde": [],
      "const_generic": false,
      "fields": [
        {
          "name": "radius",
          "public": true,
          "docs": [
            "The radius in cells."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "u64"
          }
        },
        {
          "name": "number",
          "public": true,
          "docs": [
            "The side of a box measured in the boxes one level below it."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "u64"
          }
        },
        {
          "name": "levels",
          "public": true,
          "docs": [
            "The boxes of level `j`, the crossed cells at `0` and the single root last, each level in the arc's own order."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "vec",
            "item": {
              "t": "vec",
              "item": {
                "t": "plain",
                "path": "math::shape::ShellBox"
              }
            }
          }
        },
        {
          "name": "orphans",
          "public": true,
          "docs": [
            "The boxes whose parent is missing from the level above, which the crossing identity forbids."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "variants": [],
      "alias": null
    },
    {
      "path": "math::shape::ShellBox",
      "name": "ShellBox",
      "defined_at": "math/shape.rs:585",
      "docs": [
        "One box of a crossing shell: where it sits, the seat it takes in its parent and whether the design keeps its path."
      ],
      "kind": "struct",
      "cross": {
        "kind": "plain"
      },
      "derives": [
        "Clone",
        "Copy",
        "Debug",
        "PartialEq",
        "Eq",
        "Serialize",
        "Deserialize"
      ],
      "serde": [],
      "const_generic": false,
      "fields": [
        {
          "name": "x",
          "public": true,
          "docs": [
            "The box's first coordinate in its own level's grid."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "u64"
          }
        },
        {
          "name": "y",
          "public": true,
          "docs": [
            "The box's second coordinate in its own level's grid."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "u64"
          }
        },
        {
          "name": "seat",
          "public": true,
          "docs": [
            "The seat the box takes in its parent, row-major over the side, and the side squared at the root."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "parent",
          "public": true,
          "docs": [
            "The parent's place in the level above, and `usize::MAX` at the root or when the level above holds no such box."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "live",
          "public": true,
          "docs": [
            "Whether every seat from the root down to this box is one the design keeps."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "bool"
          }
        }
      ],
      "variants": [],
      "alias": null
    },
    {
      "path": "math::six::Cell6d",
      "name": "Cell6d",
      "defined_at": "math/six/models.rs:9",
      "docs": [
        "The projected cell: a triangle grid with its projection, orientation and start parity."
      ],
      "kind": "struct",
      "cross": {
        "kind": "hand",
        "name": "Cell6d"
      },
      "derives": [
        "Clone",
        "Debug",
        "PartialEq",
        "Eq",
        "Serialize",
        "Deserialize"
      ],
      "serde": [],
      "const_generic": false,
      "fields": [
        {
          "name": "cell",
          "public": true,
          "docs": [
            "The triangle grid of type codes."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "hand",
            "name": "CellNd",
            "dim": 2
          }
        },
        {
          "name": "projection",
          "public": true,
          "docs": [
            "The projection that made the grid."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "enum",
            "path": "math::six::Projection"
          }
        },
        {
          "name": "orientation",
          "public": true,
          "docs": [
            "The way the hexagon points."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "enum",
            "path": "math::six::Orientation"
          }
        },
        {
          "name": "start",
          "public": true,
          "docs": [
            "The parity of the first triangle."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "u8"
          }
        }
      ],
      "variants": [],
      "alias": null
    },
    {
      "path": "math::six::Census",
      "name": "Census",
      "defined_at": "math/six/census.rs:34",
      "docs": [
        "The tally of a triangle mesh."
      ],
      "kind": "struct",
      "cross": {
        "kind": "plain"
      },
      "derives": [
        "Clone",
        "Debug",
        "PartialEq",
        "Eq",
        "Serialize",
        "Deserialize"
      ],
      "serde": [],
      "const_generic": false,
      "fields": [
        {
          "name": "triangles",
          "public": true,
          "docs": [
            "The count of tallied triangles."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "fills",
          "public": true,
          "docs": [
            "The count of filled triangles."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "voids",
          "public": true,
          "docs": [
            "The count of void triangles."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "grids",
          "public": true,
          "docs": [
            "The count of backdrop triangles."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "vertices",
          "public": true,
          "docs": [
            "The count of distinct corners."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "edges",
          "public": true,
          "docs": [
            "The count of distinct edges."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "boundary_edges",
          "public": true,
          "docs": [
            "The count of edges touching one triangle."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "interior_edges",
          "public": true,
          "docs": [
            "The count of edges shared by two triangles."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "euler",
          "public": true,
          "docs": [
            "The Euler characteristic of the mesh."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "i64"
          }
        }
      ],
      "variants": [],
      "alias": null
    },
    {
      "path": "math::six::Orientation",
      "name": "Orientation",
      "defined_at": "math/six/mod.rs:45",
      "docs": [
        "The two ways a hexagon can point."
      ],
      "kind": "enum",
      "cross": {
        "kind": "enum",
        "named": false,
        "words": []
      },
      "derives": [
        "Clone",
        "Copy",
        "Debug",
        "PartialEq",
        "Eq",
        "Serialize",
        "Deserialize"
      ],
      "serde": [],
      "const_generic": false,
      "fields": [],
      "variants": [
        {
          "name": "Horizontal",
          "word": null,
          "docs": [
            "The hexagon wider than it is tall."
          ],
          "serde": [],
          "fields": []
        },
        {
          "name": "Vertical",
          "word": null,
          "docs": [
            "The hexagon taller than it is wide."
          ],
          "serde": [],
          "fields": []
        }
      ],
      "alias": null
    },
    {
      "path": "math::six::Projection",
      "name": "Projection",
      "defined_at": "math/six/mod.rs:54",
      "docs": [
        "The three ways a cube flattens to a hexagon."
      ],
      "kind": "enum",
      "cross": {
        "kind": "enum",
        "named": false,
        "words": []
      },
      "derives": [
        "Clone",
        "Copy",
        "Debug",
        "PartialEq",
        "Eq",
        "Serialize",
        "Deserialize"
      ],
      "serde": [],
      "const_generic": false,
      "fields": [],
      "variants": [
        {
          "name": "Iso",
          "word": null,
          "docs": [
            "The isometric view of top, left and right faces."
          ],
          "serde": [],
          "fields": []
        },
        {
          "name": "Pro",
          "word": null,
          "docs": [
            "The three-face view keeping each face's fills and voids."
          ],
          "serde": [],
          "fields": []
        },
        {
          "name": "Cut",
          "word": null,
          "docs": [
            "The hexagonal slice through the cube's center."
          ],
          "serde": [],
          "fields": []
        }
      ],
      "alias": null
    },
    {
      "path": "math::six::renderer::Triangle",
      "name": "Triangle",
      "defined_at": "math/six/renderer.rs:10",
      "docs": [
        "A screen triangle: three grid points and an RGBA color."
      ],
      "kind": "alias",
      "cross": {
        "kind": "plain"
      },
      "derives": [],
      "serde": [],
      "const_generic": false,
      "fields": [],
      "variants": [],
      "alias": {
        "t": "tuple",
        "items": [
          {
            "t": "array",
            "item": {
              "t": "tuple",
              "items": [
                {
                  "t": "scalar",
                  "name": "i64"
                },
                {
                  "t": "scalar",
                  "name": "i64"
                }
              ]
            },
            "len": 3
          },
          {
            "t": "array",
            "item": {
              "t": "scalar",
              "name": "u8"
            },
            "len": 4
          }
        ]
      }
    },
    {
      "path": "math::six::star::Branch",
      "name": "Branch",
      "defined_at": "math/six/star.rs:99",
      "docs": [
        "The three classes of layer count the `1/L^2` term of the decay reads."
      ],
      "kind": "enum",
      "cross": {
        "kind": "enum",
        "named": false,
        "words": []
      },
      "derives": [
        "Clone",
        "Copy",
        "Debug",
        "PartialEq",
        "Eq",
        "Serialize",
        "Deserialize"
      ],
      "serde": [],
      "const_generic": false,
      "fields": [],
      "variants": [
        {
          "name": "Zero",
          "word": null,
          "docs": [
            "`L` divisible by four, where the residual is `-23/192`."
          ],
          "serde": [],
          "fields": []
        },
        {
          "name": "Two",
          "word": null,
          "docs": [
            "`L` twice an odd number, where the residual is `+25/192`."
          ],
          "serde": [],
          "fields": []
        },
        {
          "name": "Odd",
          "word": null,
          "docs": [
            "Odd `L`, where the constant shifts by `1/8` and the error is `O(1/L)`."
          ],
          "serde": [],
          "fields": []
        }
      ],
      "alias": null
    },
    {
      "path": "math::six::star::Decay",
      "name": "Decay",
      "defined_at": "math/six/star.rs:145",
      "docs": [
        "The `L`-layer reading of the ghost star's decay in the cell frame."
      ],
      "kind": "struct",
      "cross": {
        "kind": "plain"
      },
      "derives": [
        "Clone",
        "Copy",
        "Debug",
        "PartialEq",
        "Serialize",
        "Deserialize"
      ],
      "serde": [],
      "const_generic": false,
      "fields": [
        {
          "name": "layers",
          "public": true,
          "docs": [
            "The layer count `L`."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "excess",
          "public": true,
          "docs": [
            "The mean excess of the star over the background across the first `L` odd layers."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "f64"
          }
        },
        {
          "name": "scaled",
          "public": true,
          "docs": [
            "That excess times `L`."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "f64"
          }
        },
        {
          "name": "logged",
          "public": true,
          "docs": [
            "The scaled excess plus `(ln L)/4`, which settles on the branch constant."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "f64"
          }
        },
        {
          "name": "miss",
          "public": true,
          "docs": [
            "The miss of the settled value against the branch constant."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "f64"
          }
        },
        {
          "name": "linear",
          "public": true,
          "docs": [
            "The miss times `L`, the reading odd `L` leaves behind."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "f64"
          }
        },
        {
          "name": "residual",
          "public": true,
          "docs": [
            "The miss times `L` squared, the reading even `L` leaves behind."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "f64"
          }
        },
        {
          "name": "slope",
          "public": true,
          "docs": [
            "The slope of the scaled excess against `ln L`, read from `L/2` to `L`, absent unless `L` is divisible by four."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "option",
            "item": {
              "t": "scalar",
              "name": "f64"
            }
          }
        }
      ],
      "variants": [],
      "alias": null
    },
    {
      "path": "math::six::star::Share",
      "name": "Share",
      "defined_at": "math/six/star.rs:8",
      "docs": [
        "The exact reading of a cut layer: how many cells were inked out of how many were read."
      ],
      "kind": "struct",
      "cross": {
        "kind": "class"
      },
      "derives": [
        "Clone",
        "Copy",
        "Debug",
        "PartialEq",
        "Eq",
        "Serialize",
        "Deserialize"
      ],
      "serde": [],
      "const_generic": false,
      "fields": [
        {
          "name": "inked",
          "public": true,
          "docs": [
            "The count of inked cells."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "i64"
          }
        },
        {
          "name": "cells",
          "public": true,
          "docs": [
            "The count of cells read."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "i64"
          }
        }
      ],
      "variants": [],
      "alias": null
    },
    {
      "path": "math::six::star::Star",
      "name": "Star",
      "defined_at": "math/six/star.rs:171",
      "docs": [
        "The ghost star of a coded cube's hexagonal cut stack, read in the cell frame.",
        "",
        "The cut of the level-one cube of side `n` lives on the cube's own `4n` cell lattice, one layer at",
        "a time and nothing resampled, so the half-cell displacement `1/(2n)` between consecutive layers",
        "is carried rather than averaged away. A cell `(x, y, z)` of the plane `x + y + z = 6n - 2` is",
        "inked when the design's corner mask holds the three block parities `floor(c/4) mod 2`."
      ],
      "kind": "struct",
      "cross": {
        "kind": "class"
      },
      "derives": [
        "Serialize",
        "Deserialize"
      ],
      "serde": [],
      "const_generic": false,
      "fields": [
        {
          "name": "corners",
          "public": false,
          "docs": [],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "array",
            "item": {
              "t": "scalar",
              "name": "bool"
            },
            "len": 8
          }
        }
      ],
      "variants": [],
      "alias": null
    },
    {
      "path": "math::spin::Blend",
      "name": "Blend",
      "defined_at": "math/spin.rs:149",
      "docs": [
        "The way radial copies merge: their mean, their sum, their union, their meet, their parity or what the first keeps that no other has."
      ],
      "kind": "enum",
      "cross": {
        "kind": "enum",
        "named": false,
        "words": []
      },
      "derives": [
        "Clone",
        "Copy",
        "Debug",
        "PartialEq",
        "Eq",
        "Serialize",
        "Deserialize"
      ],
      "serde": [],
      "const_generic": false,
      "fields": [],
      "variants": [
        {
          "name": "Mean",
          "word": null,
          "docs": [
            "The mean of the copies."
          ],
          "serde": [],
          "fields": []
        },
        {
          "name": "Sum",
          "word": null,
          "docs": [
            "The sum of the copies."
          ],
          "serde": [],
          "fields": []
        },
        {
          "name": "Union",
          "word": null,
          "docs": [
            "The largest copy."
          ],
          "serde": [],
          "fields": []
        },
        {
          "name": "Meet",
          "word": null,
          "docs": [
            "The smallest copy."
          ],
          "serde": [],
          "fields": []
        },
        {
          "name": "Parity",
          "word": null,
          "docs": [
            "The sum folded to its parity."
          ],
          "serde": [],
          "fields": []
        },
        {
          "name": "Difference",
          "word": null,
          "docs": [
            "The first copy less the largest of the rest, floored at zero."
          ],
          "serde": [],
          "fields": []
        }
      ],
      "alias": null
    },
    {
      "path": "math::spirograph::Cover",
      "name": "Cover",
      "defined_at": "math/spirograph.rs:566",
      "docs": [
        "The shape between the walls on a raster, with its numbers."
      ],
      "kind": "struct",
      "cross": {
        "kind": "plain"
      },
      "derives": [
        "Clone",
        "Debug",
        "PartialEq",
        "Serialize",
        "Deserialize"
      ],
      "serde": [],
      "const_generic": false,
      "fields": [
        {
          "name": "mask",
          "public": true,
          "docs": [
            "The raster row by row, four codes: zero outside the disc, one the flood from the raster's edge, two the flood from the centre, three the shape, the walls and their pockets included."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "vec",
            "item": {
              "t": "scalar",
              "name": "u8"
            }
          }
        },
        {
          "name": "side",
          "public": true,
          "docs": [
            "The raster's side in pixels."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "covered",
          "public": true,
          "docs": [
            "The shape's share of the disc's pixels, the walls counted in."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "f64"
          }
        },
        {
          "name": "hole",
          "public": true,
          "docs": [
            "The centre flood's share of the disc's pixels."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "f64"
          }
        },
        {
          "name": "wall",
          "public": true,
          "docs": [
            "The share of the disc's pixels the polylines themselves mark, the boundary error `covered` carries and loses as the raster grows."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "f64"
          }
        },
        {
          "name": "winding",
          "public": true,
          "docs": [
            "The mean signed winding number of the disc's pixel centres, read by scanline off the polylines."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "f64"
          }
        },
        {
          "name": "areas",
          "public": true,
          "docs": [
            "The closed form `winding` converges to: the distinct curves' signed areas summed and divided by the disc's area."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "f64"
          }
        }
      ],
      "variants": [],
      "alias": null
    },
    {
      "path": "math::spirograph::Disc",
      "name": "Disc",
      "defined_at": "math/spirograph.rs:553",
      "docs": [
        "The disc a circle roulette sits in, in the track's units."
      ],
      "kind": "struct",
      "cross": {
        "kind": "plain"
      },
      "derives": [
        "Clone",
        "Copy",
        "Debug",
        "PartialEq",
        "Serialize",
        "Deserialize"
      ],
      "serde": [],
      "const_generic": false,
      "fields": [
        {
          "name": "x",
          "public": true,
          "docs": [
            "The centre's abscissa in the track's units, the centre of the ring."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "f64"
          }
        },
        {
          "name": "y",
          "public": true,
          "docs": [
            "The centre's ordinate in the track's units."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "f64"
          }
        },
        {
          "name": "radius",
          "public": true,
          "docs": [
            "The radius no curve leaves, in the track's units: `rho + d` with `rho` the centre circle's radius and `d = r abs(p)` the outermost seat, which is `(a - b)/b + abs(p)` wheel radii inside and `(a + b)/b + abs(p)` outside."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "f64"
          }
        },
        {
          "name": "hole",
          "public": true,
          "docs": [
            "The radius no curve enters, in the track's units: the least of `abs(rho - d)` over the seats, which is not `rho` less the outermost seat when the seats straddle `rho`, and `rho` itself when no pencil is seated."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "f64"
          }
        }
      ],
      "variants": [],
      "alias": null
    },
    {
      "path": "math::spirograph::Kind",
      "name": "Kind",
      "defined_at": "math/spirograph.rs:25",
      "docs": [
        "What a pencil sits on: a filled cell, an empty cell, or a corner of a filled cell."
      ],
      "kind": "enum",
      "cross": {
        "kind": "enum",
        "named": false,
        "words": []
      },
      "derives": [
        "Clone",
        "Copy",
        "Debug",
        "PartialEq",
        "Eq",
        "Serialize",
        "Deserialize"
      ],
      "serde": [],
      "const_generic": false,
      "fields": [],
      "variants": [
        {
          "name": "Fill",
          "word": null,
          "docs": [
            "The centre of a filled cell."
          ],
          "serde": [],
          "fields": []
        },
        {
          "name": "Void",
          "word": null,
          "docs": [
            "The centre of an empty cell."
          ],
          "serde": [],
          "fields": []
        },
        {
          "name": "Corner",
          "word": null,
          "docs": [
            "A corner of a filled cell."
          ],
          "serde": [],
          "fields": []
        }
      ],
      "alias": null
    },
    {
      "path": "math::spirograph::Pencil",
      "name": "Pencil",
      "defined_at": "math/spirograph.rs:36",
      "docs": [
        "A pencil on the wheel: its seat in units of the wheel's radius with the tile centre at the origin, the exact seat it came from, and its kind."
      ],
      "kind": "struct",
      "cross": {
        "kind": "plain"
      },
      "derives": [
        "Clone",
        "Copy",
        "Debug",
        "PartialEq",
        "Serialize",
        "Deserialize"
      ],
      "serde": [],
      "const_generic": false,
      "fields": [
        {
          "name": "x",
          "public": true,
          "docs": [
            "The seat's abscissa, in wheel radii."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "f64"
          }
        },
        {
          "name": "y",
          "public": true,
          "docs": [
            "The seat's ordinate, up the page, in wheel radii."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "f64"
          }
        },
        {
          "name": "seat",
          "public": true,
          "docs": [
            "The exact seat, twice the cell coordinates from the tile centre, before any jitter."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "tuple",
            "items": [
              {
                "t": "scalar",
                "name": "i64"
              },
              {
                "t": "scalar",
                "name": "i64"
              }
            ]
          }
        },
        {
          "name": "kind",
          "public": true,
          "docs": [
            "What the pencil sits on."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "enum",
            "path": "math::spirograph::Kind"
          }
        }
      ],
      "variants": [],
      "alias": null
    },
    {
      "path": "math::spirograph::Piece",
      "name": "Piece",
      "defined_at": "math/spirograph.rs:161",
      "docs": [
        "One piece of the centre path: a straight run, or a turn about a point."
      ],
      "kind": "enum",
      "cross": {
        "kind": "plain"
      },
      "derives": [
        "Clone",
        "Copy",
        "Debug",
        "PartialEq",
        "Serialize",
        "Deserialize"
      ],
      "serde": [],
      "const_generic": false,
      "fields": [],
      "variants": [
        {
          "name": "Run",
          "word": null,
          "docs": [
            "A straight run from one point to another."
          ],
          "serde": [],
          "fields": [
            {
              "name": "from",
              "public": false,
              "docs": [
                "Where the run starts."
              ],
              "serde": [],
              "serde_skip": false,
              "ty": {
                "t": "tuple",
                "items": [
                  {
                    "t": "scalar",
                    "name": "f64"
                  },
                  {
                    "t": "scalar",
                    "name": "f64"
                  }
                ]
              }
            },
            {
              "name": "to",
              "public": false,
              "docs": [
                "Where the run ends."
              ],
              "serde": [],
              "serde_skip": false,
              "ty": {
                "t": "tuple",
                "items": [
                  {
                    "t": "scalar",
                    "name": "f64"
                  },
                  {
                    "t": "scalar",
                    "name": "f64"
                  }
                ]
              }
            }
          ]
        },
        {
          "name": "Turn",
          "word": null,
          "docs": [
            "A turn about a point at a radius, counterclockwise from one angle to another."
          ],
          "serde": [],
          "fields": [
            {
              "name": "about",
              "public": false,
              "docs": [
                "The point turned about."
              ],
              "serde": [],
              "serde_skip": false,
              "ty": {
                "t": "tuple",
                "items": [
                  {
                    "t": "scalar",
                    "name": "f64"
                  },
                  {
                    "t": "scalar",
                    "name": "f64"
                  }
                ]
              }
            },
            {
              "name": "radius",
              "public": false,
              "docs": [
                "The radius of the turn."
              ],
              "serde": [],
              "serde_skip": false,
              "ty": {
                "t": "scalar",
                "name": "f64"
              }
            },
            {
              "name": "from",
              "public": false,
              "docs": [
                "The angle the turn starts at."
              ],
              "serde": [],
              "serde_skip": false,
              "ty": {
                "t": "scalar",
                "name": "f64"
              }
            },
            {
              "name": "to",
              "public": false,
              "docs": [
                "The angle the turn ends at, past the start."
              ],
              "serde": [],
              "serde_skip": false,
              "ty": {
                "t": "scalar",
                "name": "f64"
              }
            }
          ]
        }
      ],
      "alias": null
    },
    {
      "path": "math::spirograph::Seats",
      "name": "Seats",
      "defined_at": "math/spirograph.rs:49",
      "docs": [
        "The mass of a byte grid taken as a wheel: how many pencils of each kind it seats."
      ],
      "kind": "struct",
      "cross": {
        "kind": "plain"
      },
      "derives": [
        "Clone",
        "Copy",
        "Debug",
        "Default",
        "PartialEq",
        "Eq",
        "Serialize",
        "Deserialize"
      ],
      "serde": [],
      "const_generic": false,
      "fields": [
        {
          "name": "fills",
          "public": true,
          "docs": [
            "The pencils on filled cells."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "voids",
          "public": true,
          "docs": [
            "The pencils on empty cells."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "corners",
          "public": true,
          "docs": [
            "The pencils on corners."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "variants": [],
      "alias": null
    },
    {
      "path": "math::spirograph::Track",
      "name": "Track",
      "defined_at": "math/spirograph.rs:238",
      "docs": [
        "A track and the path the wheel's centre takes along it: the wheel of radius `wheel` rolls without slipping, on the left of the track when `side` is minus one and on the right when it is plus one, and turns by `side` times the centre's path length over the wheel's radius."
      ],
      "kind": "struct",
      "cross": {
        "kind": "plain"
      },
      "derives": [
        "Clone",
        "Debug",
        "PartialEq",
        "Serialize",
        "Deserialize"
      ],
      "serde": [],
      "const_generic": false,
      "fields": [
        {
          "name": "kind",
          "public": true,
          "docs": [
            "The kind: `line`, `in`, `out`, `polyin` or `polyout`."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "string"
          }
        },
        {
          "name": "wheel",
          "public": true,
          "docs": [
            "The wheel's radius."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "f64"
          }
        },
        {
          "name": "pieces",
          "public": true,
          "docs": [
            "The pieces of the centre path, in order."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "vec",
            "item": {
              "t": "plain",
              "path": "math::spirograph::Piece"
            }
          }
        },
        {
          "name": "total",
          "public": true,
          "docs": [
            "The length of the centre path."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "f64"
          }
        },
        {
          "name": "side",
          "public": true,
          "docs": [
            "Minus one inside the track, plus one outside it."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "f64"
          }
        },
        {
          "name": "outline",
          "public": true,
          "docs": [
            "The track itself as a polyline, closed when `closed` says so."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "vec",
            "item": {
              "t": "tuple",
              "items": [
                {
                  "t": "scalar",
                  "name": "f64"
                },
                {
                  "t": "scalar",
                  "name": "f64"
                }
              ]
            }
          }
        },
        {
          "name": "closed",
          "public": true,
          "docs": [
            "Whether the outline closes on itself."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "bool"
          }
        },
        {
          "name": "ratio",
          "public": true,
          "docs": [
            "The ring's radius over the wheel's in lowest terms on a circle, zero over zero elsewhere."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "tuple",
            "items": [
              {
                "t": "scalar",
                "name": "usize"
              },
              {
                "t": "scalar",
                "name": "usize"
              }
            ]
          }
        },
        {
          "name": "orbits",
          "public": true,
          "docs": [
            "How many times the centre goes round: the ratio's denominator on a circle, the laps on a polygon, one on a line."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "fold",
          "public": true,
          "docs": [
            "The rotation order of the whole picture: the ratio's numerator on a circle, none elsewhere."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "variants": [],
      "alias": null
    },
    {
      "path": "math::three::Cell3d",
      "name": "Cell3d",
      "defined_at": "math/cell/models.rs:13",
      "docs": [
        "The three-dimensional cell."
      ],
      "kind": "alias",
      "cross": {
        "kind": "hand",
        "name": "CellNd"
      },
      "derives": [],
      "serde": [],
      "const_generic": false,
      "fields": [],
      "variants": [],
      "alias": {
        "t": "hand",
        "name": "CellNd",
        "dim": 3
      }
    },
    {
      "path": "math::three::Census",
      "name": "Census",
      "defined_at": "math/three/census.rs:11",
      "docs": [
        "The tally of a cube's sites."
      ],
      "kind": "struct",
      "cross": {
        "kind": "plain"
      },
      "derives": [
        "Clone",
        "Debug",
        "PartialEq",
        "Eq",
        "Serialize",
        "Deserialize"
      ],
      "serde": [],
      "const_generic": false,
      "fields": [
        {
          "name": "fills",
          "public": true,
          "docs": [
            "The count of filled sites."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "voids",
          "public": true,
          "docs": [
            "The count of empty sites."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "surface",
          "public": true,
          "docs": [
            "The count of exposed faces."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "u128"
          }
        },
        {
          "name": "vertices",
          "public": true,
          "docs": [
            "The count of corners the filled sites touch."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "edges",
          "public": true,
          "docs": [
            "The count of unit edges the filled sites touch."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "faces",
          "public": true,
          "docs": [
            "The count of unit faces the filled sites touch, shared ones counted once."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "euler",
          "public": true,
          "docs": [
            "The Euler characteristic of the filled complex."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "i64"
          }
        }
      ],
      "variants": [],
      "alias": null
    },
    {
      "path": "math::three::Quad",
      "name": "Quad",
      "defined_at": "math/three/faces.rs:61",
      "docs": [
        "An outward face of a filled site: its normal and four corners."
      ],
      "kind": "struct",
      "cross": {
        "kind": "plain"
      },
      "derives": [
        "Serialize",
        "Deserialize"
      ],
      "serde": [],
      "const_generic": false,
      "fields": [
        {
          "name": "normal",
          "public": true,
          "docs": [
            "The outward unit normal."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "class",
            "path": "math::three::Vec3",
            "dim": null
          }
        },
        {
          "name": "verts",
          "public": true,
          "docs": [
            "The four corners in winding order."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "array",
            "item": {
              "t": "class",
              "path": "math::three::Vec3",
              "dim": null
            },
            "len": 4
          }
        }
      ],
      "variants": [],
      "alias": null
    },
    {
      "path": "math::three::Vec3",
      "name": "Vec3",
      "defined_at": "math/three/faces.rs:7",
      "docs": [
        "A three-component vector of f32."
      ],
      "kind": "struct",
      "cross": {
        "kind": "class"
      },
      "derives": [
        "Clone",
        "Copy",
        "Debug",
        "PartialEq",
        "Serialize",
        "Deserialize"
      ],
      "serde": [],
      "const_generic": false,
      "fields": [
        {
          "name": "x",
          "public": true,
          "docs": [
            "The x component."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "f32"
          }
        },
        {
          "name": "y",
          "public": true,
          "docs": [
            "The y component."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "f32"
          }
        },
        {
          "name": "z",
          "public": true,
          "docs": [
            "The z component."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "f32"
          }
        }
      ],
      "variants": [],
      "alias": null
    },
    {
      "path": "math::tourbillon::Eye",
      "name": "Eye",
      "defined_at": "math/tourbillon.rs:68",
      "docs": [
        "One angle of the quarter-turn lattice: the turn in degrees and the ninety a over q that names it."
      ],
      "kind": "struct",
      "cross": {
        "kind": "plain"
      },
      "derives": [
        "Clone",
        "Copy",
        "Debug",
        "PartialEq",
        "Serialize",
        "Deserialize"
      ],
      "serde": [],
      "const_generic": false,
      "fields": [
        {
          "name": "angle",
          "public": true,
          "docs": [
            "The turn in degrees."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "f64"
          }
        },
        {
          "name": "numer",
          "public": true,
          "docs": [
            "The numerator, ninety times a."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "denom",
          "public": true,
          "docs": [
            "The denominator q."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "variants": [],
      "alias": null
    },
    {
      "path": "math::tourbillon::Layer",
      "name": "Layer",
      "defined_at": "math/tourbillon.rs:22",
      "docs": [
        "One carpet of a stack: the odd scale it is drawn at, the weight the linear blends carry it at and the turn it takes about the centre, in degrees."
      ],
      "kind": "struct",
      "cross": {
        "kind": "plain"
      },
      "derives": [
        "Clone",
        "Copy",
        "Debug",
        "PartialEq",
        "Serialize",
        "Deserialize"
      ],
      "serde": [],
      "const_generic": false,
      "fields": [
        {
          "name": "scale",
          "public": true,
          "docs": [
            "The odd scale, the number of cells across the carpet."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "weight",
          "public": true,
          "docs": [
            "The weight, scaled so the magnitudes average one."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "f64"
          }
        },
        {
          "name": "degrees",
          "public": true,
          "docs": [
            "The turn about the centre, in degrees."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "f64"
          }
        }
      ],
      "variants": [],
      "alias": null
    },
    {
      "path": "math::tourbillon::Stats",
      "name": "Stats",
      "defined_at": "math/tourbillon.rs:33",
      "docs": [
        "The readings of a spun stack: its layers, the first eight scales and angles, the mean and RMS contrast over the disc, that contrast times the root of the layer count, the exact centre value, whether the blend carries the weights, the span the raster covers, the sites inside the disc and the brightest three."
      ],
      "kind": "struct",
      "cross": {
        "kind": "plain"
      },
      "derives": [
        "Clone",
        "Debug",
        "PartialEq",
        "Serialize",
        "Deserialize"
      ],
      "serde": [],
      "const_generic": false,
      "fields": [
        {
          "name": "layers",
          "public": true,
          "docs": [
            "The count of layers in the stack."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "scales",
          "public": true,
          "docs": [
            "The first eight scales."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "vec",
            "item": {
              "t": "scalar",
              "name": "usize"
            }
          }
        },
        {
          "name": "angles",
          "public": true,
          "docs": [
            "The first eight angles, in degrees."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "vec",
            "item": {
              "t": "scalar",
              "name": "f64"
            }
          }
        },
        {
          "name": "mean",
          "public": true,
          "docs": [
            "The mean over the disc."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "f64"
          }
        },
        {
          "name": "rms",
          "public": true,
          "docs": [
            "The RMS contrast over the disc."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "f64"
          }
        },
        {
          "name": "faded",
          "public": true,
          "docs": [
            "The RMS contrast times the root of the layer count."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "f64"
          }
        },
        {
          "name": "centre",
          "public": true,
          "docs": [
            "The exact value at the centre, computed and never sampled."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "f64"
          }
        },
        {
          "name": "weighted",
          "public": true,
          "docs": [
            "Whether the blend carries the weights."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "bool"
          }
        },
        {
          "name": "low",
          "public": true,
          "docs": [
            "The smallest value over the disc."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "f64"
          }
        },
        {
          "name": "high",
          "public": true,
          "docs": [
            "The largest value over the disc."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "f64"
          }
        },
        {
          "name": "inside",
          "public": true,
          "docs": [
            "The count of sites inside the disc."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "peaks",
          "public": true,
          "docs": [
            "The brightest three sites, each as its unit coordinates and its value."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "vec",
            "item": {
              "t": "array",
              "item": {
                "t": "scalar",
                "name": "f64"
              },
              "len": 3
            }
          }
        },
        {
          "name": "period",
          "public": true,
          "docs": [
            "The least whole number of increments that closes a quarter turn, none past the cap."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "option",
            "item": {
              "t": "scalar",
              "name": "usize"
            }
          }
        },
        {
          "name": "classes",
          "public": true,
          "docs": [
            "The count of distinct angle classes the layers fall in, read a quarter turn apart."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "pairs",
          "public": true,
          "docs": [
            "The count of layer pairs sharing an angle class."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "variants": [],
      "alias": null
    },
    {
      "path": "math::two::Cell2d",
      "name": "Cell2d",
      "defined_at": "math/cell/models.rs:11",
      "docs": [
        "The two-dimensional cell."
      ],
      "kind": "alias",
      "cross": {
        "kind": "hand",
        "name": "CellNd"
      },
      "derives": [],
      "serde": [],
      "const_generic": false,
      "fields": [],
      "variants": [],
      "alias": {
        "t": "hand",
        "name": "CellNd",
        "dim": 2
      }
    },
    {
      "path": "math::two::Census",
      "name": "Census",
      "defined_at": "math/two/census.rs:11",
      "docs": [
        "One reading of a cell: its sites, its outline and its topology."
      ],
      "kind": "struct",
      "cross": {
        "kind": "plain"
      },
      "derives": [
        "Clone",
        "Debug",
        "PartialEq",
        "Eq",
        "Serialize",
        "Deserialize"
      ],
      "serde": [],
      "const_generic": false,
      "fields": [
        {
          "name": "fills",
          "public": true,
          "docs": [
            "The count of filled sites."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "voids",
          "public": true,
          "docs": [
            "The count of empty sites."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "perimeter",
          "public": true,
          "docs": [
            "The count of filled faces open to emptiness or the border."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "u128"
          }
        },
        {
          "name": "vertices",
          "public": true,
          "docs": [
            "The count of distinct corners the filled sites touch."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "edges",
          "public": true,
          "docs": [
            "The count of distinct unit edges the filled sites carry."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "euler",
          "public": true,
          "docs": [
            "The Euler characteristic, vertices less edges plus filled sites."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "i64"
          }
        }
      ],
      "variants": [],
      "alias": null
    },
    {
      "path": "math::two::Shape",
      "name": "Shape",
      "defined_at": "math/two/renderer.rs:12",
      "docs": [
        "The outline a flat cell's sites are drawn with."
      ],
      "kind": "enum",
      "cross": {
        "kind": "enum",
        "named": false,
        "words": []
      },
      "derives": [
        "Clone",
        "Copy",
        "Debug",
        "Eq",
        "PartialEq",
        "Serialize",
        "Deserialize"
      ],
      "serde": [],
      "const_generic": false,
      "fields": [],
      "variants": [
        {
          "name": "Square",
          "word": null,
          "docs": [
            "A filled cell-sized square."
          ],
          "serde": [],
          "fields": []
        },
        {
          "name": "Circle",
          "word": null,
          "docs": [
            "A disc inscribed in the cell-sized square."
          ],
          "serde": [],
          "fields": []
        },
        {
          "name": "Diamond",
          "word": null,
          "docs": [
            "A rhombus through the midpoints of the cell-sized square."
          ],
          "serde": [],
          "fields": []
        }
      ],
      "alias": null
    },
    {
      "path": "num::apollonian::Circle",
      "name": "Circle",
      "defined_at": "num/apollonian.rs:19",
      "docs": [
        "A circle in the integer coordinates `(k, k x, k y)`: a line is `k = 0` with `(k x, k y)` its outward unit normal, and the curvature is negative on the circle that contains a bounded packing."
      ],
      "kind": "struct",
      "cross": {
        "kind": "class"
      },
      "derives": [
        "Clone",
        "Copy",
        "Debug",
        "PartialEq",
        "Eq",
        "Hash",
        "PartialOrd",
        "Ord",
        "Serialize",
        "Deserialize"
      ],
      "serde": [],
      "const_generic": false,
      "fields": [
        {
          "name": "k",
          "public": true,
          "docs": [
            "The curvature."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "i64"
          }
        },
        {
          "name": "x",
          "public": true,
          "docs": [
            "The curvature times the centre's abscissa."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "i64"
          }
        },
        {
          "name": "y",
          "public": true,
          "docs": [
            "The curvature times the centre's ordinate."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "i64"
          }
        }
      ],
      "variants": [],
      "alias": null
    },
    {
      "path": "num::apollonian::Packing",
      "name": "Packing",
      "defined_at": "num/apollonian.rs:156",
      "docs": [
        "A packing grown from its root in exact integers."
      ],
      "kind": "struct",
      "cross": {
        "kind": "plain"
      },
      "derives": [
        "Serialize",
        "Deserialize"
      ],
      "serde": [],
      "const_generic": false,
      "fields": [
        {
          "name": "root",
          "public": true,
          "docs": [
            "The root quadruple the growth started from."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "array",
            "item": {
              "t": "class",
              "path": "num::apollonian::Circle",
              "dim": null
            },
            "len": 4
          }
        },
        {
          "name": "strip",
          "public": true,
          "docs": [
            "Whether the root carries a line, so the packing is the strip and the growth keeps one period."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "bool"
          }
        },
        {
          "name": "cap",
          "public": true,
          "docs": [
            "The curvature the growth stopped at."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "i64"
          }
        },
        {
          "name": "circles",
          "public": true,
          "docs": [
            "The circles the growth made, the root excluded, in curvature order."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "vec",
            "item": {
              "t": "class",
              "path": "num::apollonian::Circle",
              "dim": null
            }
          }
        },
        {
          "name": "quads",
          "public": true,
          "docs": [
            "The quadruples the growth made, the root counted."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "u64"
          }
        },
        {
          "name": "broken",
          "public": true,
          "docs": [
            "The quadruples that failed one of the six invariants."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "u64"
          }
        },
        {
          "name": "strayed",
          "public": true,
          "docs": [
            "The circles centred outside the open period, which the strip must have none of."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "u64"
          }
        }
      ],
      "variants": [],
      "alias": null
    },
    {
      "path": "num::apollonian::Quad",
      "name": "Quad",
      "defined_at": "num/apollonian.rs:46",
      "docs": [
        "Four mutually tangent circles."
      ],
      "kind": "alias",
      "cross": {
        "kind": "plain"
      },
      "derives": [],
      "serde": [],
      "const_generic": false,
      "fields": [],
      "variants": [],
      "alias": {
        "t": "array",
        "item": {
          "t": "class",
          "path": "num::apollonian::Circle",
          "dim": null
        },
        "len": 4
      }
    },
    {
      "path": "num::apollonian::Shadow",
      "name": "Shadow",
      "defined_at": "num/apollonian.rs:303",
      "docs": [
        "The Farey stack read against the packing's tangency points."
      ],
      "kind": "struct",
      "cross": {
        "kind": "plain"
      },
      "derives": [
        "Serialize",
        "Deserialize"
      ],
      "serde": [],
      "const_generic": false,
      "fields": [
        {
          "name": "order",
          "public": true,
          "docs": [
            "The depth the stack is read at."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "reach",
          "public": true,
          "docs": [
            "The curvature a circle of denominator the order carries, twice the order squared."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "i64"
          }
        },
        {
          "name": "covered",
          "public": true,
          "docs": [
            "Whether the packing was grown far enough to carry every node of that depth."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "bool"
          }
        },
        {
          "name": "nodes",
          "public": true,
          "docs": [
            "The stack's nodes inside the open period."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "touched",
          "public": true,
          "docs": [
            "The packing's tangency points of denominator at most the order."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "missed",
          "public": true,
          "docs": [
            "The nodes no tangency point rests on, plus the tangency points no node lights."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "offford",
          "public": true,
          "docs": [
            "The circles below the reach tangent to the line that are not Ford circles."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "bright",
          "public": true,
          "docs": [
            "The brightness of the period summed node by node, the node `0/1` on the period's edge counted."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "u128"
          }
        },
        {
          "name": "want",
          "public": true,
          "docs": [
            "The closed form that brightness lands on, `Q(Q + 1)/2`."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "u128"
          }
        }
      ],
      "variants": [],
      "alias": null
    },
    {
      "path": "num::apollonian::Touch",
      "name": "Touch",
      "defined_at": "num/apollonian.rs:254",
      "docs": [
        "A tangency point on the line `y = 0`: the reduced fraction the circle rests at and the curvature it carries."
      ],
      "kind": "struct",
      "cross": {
        "kind": "plain"
      },
      "derives": [
        "Clone",
        "Copy",
        "Debug",
        "PartialEq",
        "Eq",
        "Serialize",
        "Deserialize"
      ],
      "serde": [],
      "const_generic": false,
      "fields": [
        {
          "name": "num",
          "public": true,
          "docs": [
            "The numerator of the reduced fraction."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "i64"
          }
        },
        {
          "name": "den",
          "public": true,
          "docs": [
            "The denominator of the reduced fraction."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "i64"
          }
        },
        {
          "name": "k",
          "public": true,
          "docs": [
            "The curvature of the circle resting there, which the Ford identification forces to be `2 den^2`."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "i64"
          }
        }
      ],
      "variants": [],
      "alias": null
    },
    {
      "path": "num::automaton::Automaton",
      "name": "Automaton",
      "defined_at": "num/automaton.rs:32",
      "docs": [
        "A memory design read as a matrix ladder: the rule, the transfer matrix on its `(k-1)`-window states, and the peel depth its Dirichlet series is continued from.",
        "",
        "The elements are the positive integers whose minimal base-`q` string, `q = 2^D`, is accepted by the rule, and the object is `zeta_W(s) = sum n^(-s)` over them.",
        "[`crate::num::memory::Rule::accepts`] holds a word shorter than the width `k` to be accepted, there being no window in it, so every integer below `q^(k-1)` with a nonzero leading digit sits in `S_W` for every rule of that width, and the head polynomial carries them.",
        "With `E_j(w)` the vector whose entry `u` sums `n^(-w)` over accepted words of exactly `j` digits ending in state `u`, and `G_P = sum_(j >= P) E_j`, splitting a word on its last digit gives `(I - q^(-w) T) G_P(w) = E_P(w) + sum_(l >= 1) binom(-w, l) q^(-w-l) Gamma_l G_P(w+l)`, where `Gamma_l(u', u) = sum a^l` over the letters `a` with the window `(u, a)` allowed and `u' = shift(u, a)`, and `T = Gamma_0` is [`crate::num::memory::transfer`] transposed.",
        "Then `zeta_W(w) = 1^T D_(P-1)(w) + 1^T G_P(w)` with `D_(P-1)` the Dirichlet polynomial over the accepted words of at most `P-1` digits, and the scalar ladder of [`crate::num::ladder`] is the width one case with `card F` where `T` stands."
      ],
      "kind": "struct",
      "cross": {
        "kind": "class"
      },
      "derives": [
        "Clone",
        "Debug",
        "PartialEq",
        "Serialize",
        "Deserialize"
      ],
      "serde": [],
      "const_generic": false,
      "fields": [
        {
          "name": "rule",
          "public": false,
          "docs": [],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "class",
            "path": "num::memory::Rule",
            "dim": null
          }
        },
        {
          "name": "base",
          "public": false,
          "docs": [],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "u64"
          }
        },
        {
          "name": "states",
          "public": false,
          "docs": [],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "peel",
          "public": false,
          "docs": [],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "largest",
          "public": false,
          "docs": [],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "u64"
          }
        },
        {
          "name": "arcs",
          "public": false,
          "docs": [],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "vec",
            "item": {
              "t": "tuple",
              "items": [
                {
                  "t": "scalar",
                  "name": "usize"
                },
                {
                  "t": "scalar",
                  "name": "usize"
                },
                {
                  "t": "scalar",
                  "name": "u64"
                }
              ]
            }
          }
        },
        {
          "name": "power",
          "public": false,
          "docs": [],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "vec",
            "item": {
              "t": "vec",
              "item": {
                "t": "scalar",
                "name": "f64"
              }
            }
          }
        },
        {
          "name": "low",
          "public": false,
          "docs": [],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "vec",
            "item": {
              "t": "scalar",
              "name": "f64"
            }
          }
        },
        {
          "name": "mid",
          "public": false,
          "docs": [],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "vec",
            "item": {
              "t": "vec",
              "item": {
                "t": "scalar",
                "name": "f64"
              }
            }
          }
        },
        {
          "name": "seats",
          "public": false,
          "docs": [],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "vec",
            "item": {
              "t": "scalar",
              "name": "f64"
            }
          }
        },
        {
          "name": "guide",
          "public": false,
          "docs": [],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "vec",
            "item": {
              "t": "scalar",
              "name": "f64"
            }
          }
        },
        {
          "name": "perron_high",
          "public": false,
          "docs": [],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "f64"
          }
        },
        {
          "name": "perron_low",
          "public": false,
          "docs": [],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "f64"
          }
        },
        {
          "name": "charpoly",
          "public": false,
          "docs": [],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "vec",
            "item": {
              "t": "scalar",
              "name": "f64"
            }
          }
        },
        {
          "name": "adjugate",
          "public": false,
          "docs": [],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "vec",
            "item": {
              "t": "vec",
              "item": {
                "t": "vec",
                "item": {
                  "t": "scalar",
                  "name": "f64"
                }
              }
            }
          }
        }
      ],
      "variants": [],
      "alias": null
    },
    {
      "path": "num::gauss::Census",
      "name": "Census",
      "defined_at": "num/gauss.rs:232",
      "docs": [
        "The tallies of a window: every class counted and the share of primes."
      ],
      "kind": "struct",
      "cross": {
        "kind": "plain"
      },
      "derives": [
        "Clone",
        "Debug",
        "PartialEq",
        "Serialize",
        "Deserialize"
      ],
      "serde": [],
      "const_generic": false,
      "fields": [
        {
          "name": "points",
          "public": true,
          "docs": [
            "The count of points."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "primes",
          "public": true,
          "docs": [
            "The count of primes."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "split",
          "public": true,
          "docs": [
            "The split primes."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "inert",
          "public": true,
          "docs": [
            "The inert primes."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "ramified",
          "public": true,
          "docs": [
            "The ramified primes."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "units",
          "public": true,
          "docs": [
            "The units."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "composites",
          "public": true,
          "docs": [
            "The composites."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "density",
          "public": true,
          "docs": [
            "The primes over the points."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "f64"
          }
        }
      ],
      "variants": [],
      "alias": null
    },
    {
      "path": "num::gauss::Class",
      "name": "Class",
      "defined_at": "num/gauss.rs:196",
      "docs": [
        "What a point of the ring is."
      ],
      "kind": "enum",
      "cross": {
        "kind": "enum",
        "named": false,
        "words": []
      },
      "derives": [
        "Clone",
        "Copy",
        "Debug",
        "PartialEq",
        "Eq",
        "Serialize",
        "Deserialize"
      ],
      "serde": [],
      "const_generic": false,
      "fields": [],
      "variants": [
        {
          "name": "Zero",
          "word": null,
          "docs": [
            "The origin."
          ],
          "serde": [],
          "fields": []
        },
        {
          "name": "Unit",
          "word": null,
          "docs": [
            "A unit: norm one."
          ],
          "serde": [],
          "fields": []
        },
        {
          "name": "Ramified",
          "word": null,
          "docs": [
            "A prime over the one rational prime that ramifies, 2 or 3."
          ],
          "serde": [],
          "fields": []
        },
        {
          "name": "Split",
          "word": null,
          "docs": [
            "A prime whose norm is a rational prime that splits into it and its conjugate."
          ],
          "serde": [],
          "fields": []
        },
        {
          "name": "Inert",
          "word": null,
          "docs": [
            "A rational prime that stays prime in the ring, times a unit."
          ],
          "serde": [],
          "fields": []
        },
        {
          "name": "Composite",
          "word": null,
          "docs": [
            "A product of two points of norm above one."
          ],
          "serde": [],
          "fields": []
        }
      ],
      "alias": null
    },
    {
      "path": "num::gauss::Ring",
      "name": "Ring",
      "defined_at": "num/gauss.rs:9",
      "docs": [
        "The two rings of whole numbers in the plane, each a pair (a, b) on its own lattice."
      ],
      "kind": "enum",
      "cross": {
        "kind": "enum",
        "named": false,
        "words": []
      },
      "derives": [
        "Clone",
        "Copy",
        "Debug",
        "PartialEq",
        "Eq",
        "Serialize",
        "Deserialize"
      ],
      "serde": [],
      "const_generic": false,
      "fields": [],
      "variants": [
        {
          "name": "Gaussian",
          "word": null,
          "docs": [
            "a + b i on the square lattice: norm a^2 + b^2, four units, the window a square."
          ],
          "serde": [],
          "fields": []
        },
        {
          "name": "Eisenstein",
          "word": null,
          "docs": [
            "a + b omega on the hexagonal lattice, omega a cube root of one: norm a^2 - a b + b^2, six units, the window a hexagon."
          ],
          "serde": [],
          "fields": []
        }
      ],
      "alias": null
    },
    {
      "path": "num::gauss::Window",
      "name": "Window",
      "defined_at": "num/gauss.rs:253",
      "docs": [
        "The symmetric window of one ring: every point within a reach, with the norms sieved once."
      ],
      "kind": "struct",
      "cross": {
        "kind": "class"
      },
      "derives": [
        "Clone",
        "Debug",
        "Serialize",
        "Deserialize"
      ],
      "serde": [],
      "const_generic": false,
      "fields": [
        {
          "name": "ring",
          "public": false,
          "docs": [],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "enum",
            "path": "num::gauss::Ring"
          }
        },
        {
          "name": "radius",
          "public": false,
          "docs": [],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "u64"
          }
        },
        {
          "name": "prime",
          "public": false,
          "docs": [],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "vec",
            "item": {
              "t": "scalar",
              "name": "bool"
            }
          }
        }
      ],
      "variants": [],
      "alias": null
    },
    {
      "path": "num::ladder::Design",
      "name": "Design",
      "defined_at": "num/ladder.rs:26",
      "docs": [
        "A digit design: the base `q`, the digit set `F` its elements are written with, and the peel depth `P` its ladder starts at.",
        "",
        "The elements are the whole numbers whose base-`q` digits all lie in `F` with a nonzero leading digit, and the object is their Dirichlet series `zeta_F(s) = sum n^(-s)`, of abscissa `alpha = log_q k` for `k = card F`.",
        "With `E_j` the sum over the elements of exactly `j` digits and `G_P = sum_(j >= P) E_j`, splitting an element on its last digit gives `(1 - k q^(-w)) G_P(w) = E_P(w) + sum_(l >= 1) binom(-w, l) q^(-w-l) gamma_l G_P(w+l)` with `gamma_l = sum_(a in F) a^l`, and `zeta_F = D_(P-1) + G_P` for the finite Dirichlet polynomial `D_(P-1)` over the elements below `q^(P-1)`.",
        "The `l`-series has ratio `max F / q^P`, so the peel depth buys the convergence and the small quantity `G_P` is carried directly, never as a difference of two large ones."
      ],
      "kind": "struct",
      "cross": {
        "kind": "class"
      },
      "derives": [
        "Clone",
        "Debug",
        "PartialEq",
        "Serialize",
        "Deserialize"
      ],
      "serde": [],
      "const_generic": false,
      "fields": [
        {
          "name": "base",
          "public": false,
          "docs": [],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "u64"
          }
        },
        {
          "name": "digits",
          "public": false,
          "docs": [],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "vec",
            "item": {
              "t": "scalar",
              "name": "u64"
            }
          }
        },
        {
          "name": "peel",
          "public": false,
          "docs": [],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "lead",
          "public": false,
          "docs": [],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "largest",
          "public": false,
          "docs": [],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "u64"
          }
        },
        {
          "name": "low",
          "public": false,
          "docs": [],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "vec",
            "item": {
              "t": "scalar",
              "name": "f64"
            }
          }
        },
        {
          "name": "mid",
          "public": false,
          "docs": [],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "vec",
            "item": {
              "t": "scalar",
              "name": "f64"
            }
          }
        },
        {
          "name": "gamma",
          "public": false,
          "docs": [],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "vec",
            "item": {
              "t": "scalar",
              "name": "f64"
            }
          }
        }
      ],
      "variants": [],
      "alias": null
    },
    {
      "path": "num::lattice::Node",
      "name": "Node",
      "defined_at": "num/lattice.rs:77",
      "docs": [
        "A visible node: a reduced fraction and the brightness a stack of scales one through the window gives it."
      ],
      "kind": "struct",
      "cross": {
        "kind": "plain"
      },
      "derives": [
        "Clone",
        "Copy",
        "Debug",
        "PartialEq",
        "Eq",
        "Serialize",
        "Deserialize"
      ],
      "serde": [],
      "const_generic": false,
      "fields": [
        {
          "name": "num",
          "public": true,
          "docs": [
            "The numerator, coprime to the denominator."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "u64"
          }
        },
        {
          "name": "den",
          "public": true,
          "docs": [
            "The denominator."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "u64"
          }
        },
        {
          "name": "brightness",
          "public": true,
          "docs": [
            "The count of scales putting a line here: the floor of the window over the denominator."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "u64"
          }
        }
      ],
      "variants": [],
      "alias": null
    },
    {
      "path": "num::lattice::Node2d",
      "name": "Node2d",
      "defined_at": "num/lattice.rs:88",
      "docs": [
        "A grid crossing of two visible nodes, its brightness the separable product."
      ],
      "kind": "struct",
      "cross": {
        "kind": "plain"
      },
      "derives": [
        "Clone",
        "Copy",
        "Debug",
        "PartialEq",
        "Eq",
        "Serialize",
        "Deserialize"
      ],
      "serde": [],
      "const_generic": false,
      "fields": [
        {
          "name": "x",
          "public": true,
          "docs": [
            "The horizontal node."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "plain",
            "path": "num::lattice::Node"
          }
        },
        {
          "name": "y",
          "public": true,
          "docs": [
            "The vertical node."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "plain",
            "path": "num::lattice::Node"
          }
        },
        {
          "name": "brightness",
          "public": true,
          "docs": [
            "The product of the two axis brightnesses."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "u64"
          }
        }
      ],
      "variants": [],
      "alias": null
    },
    {
      "path": "num::memory::Rule",
      "name": "Rule",
      "defined_at": "num/memory.rs:15",
      "docs": [
        "A rule on `k` consecutive digits of a design word.",
        "",
        "The alphabet is the `2^D` digit vectors `d` of `{0, 1}^D`, each read as the corner integer `c = sum_i d[i] 2^i`, with `x` bit `0`, `y` bit `1` and `z` bit `2`.",
        "A window is `k` digits `(c_1, ..., c_k)` read as `w = sum_j c_j 2^(D (k - j))`, the first digit most significant, and the code has bit `w` set exactly when that window is allowed.",
        "The code therefore lives in `[0, 2^(2^(k D)))`, which forces `k D <= SPAN`.",
        "A word `d_1 d_2 ... d_L` is read coarsest digit first and is accepted when every window of `k` consecutive digits is allowed; for `L < k` there is no window, so every word is accepted.",
        "Width 1 is the memoryless design of the same code: the cells of `bang dim <dim>, code <code>` at that level."
      ],
      "kind": "struct",
      "cross": {
        "kind": "class"
      },
      "derives": [
        "Clone",
        "Copy",
        "Debug",
        "PartialEq",
        "Eq",
        "Serialize",
        "Deserialize"
      ],
      "serde": [],
      "const_generic": false,
      "fields": [
        {
          "name": "dimension",
          "public": true,
          "docs": [
            "The dimension `D`, one to three."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "width",
          "public": true,
          "docs": [
            "The window width `k`, at least one."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "code",
          "public": true,
          "docs": [
            "The window code, bit `w` set when window `w` is allowed."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "u64"
          }
        }
      ],
      "variants": [],
      "alias": null
    },
    {
      "path": "num::morse::Fold",
      "name": "Fold",
      "defined_at": "num/morse.rs:181",
      "docs": [
        "The verdict on whether a grid is the Kronecker power of its own corner tile."
      ],
      "kind": "struct",
      "cross": {
        "kind": "plain"
      },
      "derives": [
        "Clone",
        "Debug",
        "Serialize",
        "Deserialize"
      ],
      "serde": [],
      "const_generic": false,
      "fields": [
        {
          "name": "tile",
          "public": true,
          "docs": [
            "The corner tile the test folds, row major."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "vec",
            "item": {
              "t": "scalar",
              "name": "u8"
            }
          }
        },
        {
          "name": "number",
          "public": true,
          "docs": [
            "The side of the tile."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "level",
          "public": true,
          "docs": [
            "The count of tile factors the side asks for."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "folds",
          "public": true,
          "docs": [
            "Whether the grid is that tile's Kronecker power."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "bool"
          }
        },
        {
          "name": "faults",
          "public": true,
          "docs": [
            "The count of sites where the grid and the power differ."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "first",
          "public": true,
          "docs": [
            "The first differing site in row-major order, when there is one."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "option",
            "item": {
              "t": "tuple",
              "items": [
                {
                  "t": "scalar",
                  "name": "usize"
                },
                {
                  "t": "scalar",
                  "name": "usize"
                }
              ]
            }
          }
        }
      ],
      "variants": [],
      "alias": null
    },
    {
      "path": "num::morse::Lift",
      "name": "Lift",
      "defined_at": "num/morse.rs:92",
      "docs": [
        "The four ways the word lifts from a line to the plane, one sign at every site."
      ],
      "kind": "enum",
      "cross": {
        "kind": "enum",
        "named": true,
        "words": [
          "parity",
          "and",
          "xor",
          "sum"
        ]
      },
      "derives": [
        "Clone",
        "Copy",
        "Debug",
        "PartialEq",
        "Eq",
        "Serialize",
        "Deserialize"
      ],
      "serde": [],
      "const_generic": false,
      "fields": [],
      "variants": [
        {
          "name": "Parity",
          "word": "parity",
          "docs": [
            "`t(i) xor t(j)`, the sign grid of the two-by-two tile `[[+1, -1], [-1, +1]]`."
          ],
          "serde": [],
          "fields": []
        },
        {
          "name": "And",
          "word": "and",
          "docs": [
            "`t(i and j)`, the Walsh-Hadamard pattern."
          ],
          "serde": [],
          "fields": []
        },
        {
          "name": "Xor",
          "word": "xor",
          "docs": [
            "`t(i xor j)`, which the parity of a xor forces equal to the first lift."
          ],
          "serde": [],
          "fields": []
        },
        {
          "name": "Sum",
          "word": "sum",
          "docs": [
            "`t(i + j)`, the one that carries and so does not fold."
          ],
          "serde": [],
          "fields": []
        }
      ],
      "alias": null
    },
    {
      "path": "num::prime::Pile",
      "name": "Pile",
      "defined_at": "num/prime.rs:267",
      "docs": [
        "A number as a pile of stones: its prime factors, whether it is prime, and every rectangle the stones make."
      ],
      "kind": "struct",
      "cross": {
        "kind": "plain"
      },
      "derives": [
        "Clone",
        "Debug",
        "PartialEq",
        "Eq",
        "Serialize",
        "Deserialize"
      ],
      "serde": [],
      "const_generic": false,
      "fields": [
        {
          "name": "number",
          "public": true,
          "docs": [
            "The count of stones."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "u64"
          }
        },
        {
          "name": "factors",
          "public": true,
          "docs": [
            "The prime and exponent pairs, ascending."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "vec",
            "item": {
              "t": "tuple",
              "items": [
                {
                  "t": "scalar",
                  "name": "u64"
                },
                {
                  "t": "scalar",
                  "name": "u32"
                }
              ]
            }
          }
        },
        {
          "name": "prime",
          "public": true,
          "docs": [
            "Whether the stones make a single row and nothing else."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "bool"
          }
        },
        {
          "name": "rectangles",
          "public": true,
          "docs": [
            "Every rectangle as a pair of sides, the shorter first, ascending."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "vec",
            "item": {
              "t": "tuple",
              "items": [
                {
                  "t": "scalar",
                  "name": "u64"
                },
                {
                  "t": "scalar",
                  "name": "u64"
                }
              ]
            }
          }
        }
      ],
      "variants": [],
      "alias": null
    },
    {
      "path": "num::prime::Prime",
      "name": "Prime",
      "defined_at": "num/prime.rs:87",
      "docs": [
        "The prime object: one prime with its rank, the step behind it and the shapes it makes."
      ],
      "kind": "struct",
      "cross": {
        "kind": "plain"
      },
      "derives": [
        "Clone",
        "Copy",
        "Debug",
        "PartialEq",
        "Eq",
        "Serialize",
        "Deserialize"
      ],
      "serde": [],
      "const_generic": false,
      "fields": [
        {
          "name": "value",
          "public": true,
          "docs": [
            "The prime itself."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "index",
          "public": true,
          "docs": [
            "The one-based rank in the prime sequence, so two has index one."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "gap",
          "public": true,
          "docs": [
            "The distance from the previous prime, zero for two."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "twin",
          "public": true,
          "docs": [
            "The twin flag: whether a prime sits exactly two away on either side, false for two."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "bool"
          }
        },
        {
          "name": "squares",
          "public": true,
          "docs": [
            "The two positive sides whose squares sum to the prime, when they exist."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "option",
            "item": {
              "t": "tuple",
              "items": [
                {
                  "t": "scalar",
                  "name": "usize"
                },
                {
                  "t": "scalar",
                  "name": "usize"
                }
              ]
            }
          }
        }
      ],
      "variants": [],
      "alias": null
    },
    {
      "path": "num::prime::Reading",
      "name": "Reading",
      "defined_at": "num/prime.rs:302",
      "docs": [
        "One reading of the prime count against its two smooth guesses."
      ],
      "kind": "struct",
      "cross": {
        "kind": "plain"
      },
      "derives": [
        "Clone",
        "Copy",
        "Debug",
        "PartialEq",
        "Serialize",
        "Deserialize"
      ],
      "serde": [],
      "const_generic": false,
      "fields": [
        {
          "name": "x",
          "public": true,
          "docs": [
            "The point on the number line."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "pi",
          "public": true,
          "docs": [
            "The count of primes up to it."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "ratio",
          "public": true,
          "docs": [
            "The guess x over ln x."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "f64"
          }
        },
        {
          "name": "li",
          "public": true,
          "docs": [
            "The logarithmic integral."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "f64"
          }
        }
      ],
      "variants": [],
      "alias": null
    },
    {
      "path": "num::prime::Sieve",
      "name": "Sieve",
      "defined_at": "num/prime.rs:117",
      "docs": [
        "The sieve of Eratosthenes taken one prime at a time, each number remembering which prime struck it."
      ],
      "kind": "struct",
      "cross": {
        "kind": "class"
      },
      "derives": [
        "Clone",
        "Debug",
        "PartialEq",
        "Eq",
        "Serialize",
        "Deserialize"
      ],
      "serde": [],
      "const_generic": false,
      "fields": [
        {
          "name": "types",
          "public": false,
          "docs": [],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "vec",
            "item": {
              "t": "scalar",
              "name": "u8"
            }
          }
        },
        {
          "name": "at",
          "public": false,
          "docs": [],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "rank",
          "public": false,
          "docs": [],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "struck",
          "public": false,
          "docs": [],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "done",
          "public": false,
          "docs": [],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "bool"
          }
        }
      ],
      "variants": [],
      "alias": null
    },
    {
      "path": "num::radix::Base",
      "name": "Base",
      "defined_at": "num/radix.rs:25",
      "docs": [
        "The base of a radix design: a ring and an element of norm at least two, the scale every word is read against."
      ],
      "kind": "struct",
      "cross": {
        "kind": "class"
      },
      "derives": [
        "Clone",
        "Copy",
        "Debug",
        "PartialEq",
        "Eq",
        "Serialize",
        "Deserialize"
      ],
      "serde": [],
      "const_generic": false,
      "fields": [
        {
          "name": "ring",
          "public": false,
          "docs": [],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "enum",
            "path": "num::gauss::Ring"
          }
        },
        {
          "name": "value",
          "public": false,
          "docs": [],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "tuple",
            "items": [
              {
                "t": "scalar",
                "name": "i64"
              },
              {
                "t": "scalar",
                "name": "i64"
              }
            ]
          }
        }
      ],
      "variants": [],
      "alias": null
    },
    {
      "path": "num::radix::Radix",
      "name": "Radix",
      "defined_at": "num/radix.rs:178",
      "docs": [
        "A radix design: a digit set inside one ring, placed by a base with a unit twist per digit."
      ],
      "kind": "struct",
      "cross": {
        "kind": "class"
      },
      "derives": [
        "Clone",
        "Debug",
        "PartialEq",
        "Eq",
        "Serialize",
        "Deserialize"
      ],
      "serde": [],
      "const_generic": false,
      "fields": [
        {
          "name": "base",
          "public": false,
          "docs": [],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "class",
            "path": "num::radix::Base",
            "dim": null
          }
        },
        {
          "name": "digits",
          "public": false,
          "docs": [],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "vec",
            "item": {
              "t": "tuple",
              "items": [
                {
                  "t": "scalar",
                  "name": "i64"
                },
                {
                  "t": "scalar",
                  "name": "i64"
                }
              ]
            }
          }
        },
        {
          "name": "twists",
          "public": false,
          "docs": [],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "vec",
            "item": {
              "t": "tuple",
              "items": [
                {
                  "t": "scalar",
                  "name": "i64"
                },
                {
                  "t": "scalar",
                  "name": "i64"
                }
              ]
            }
          }
        }
      ],
      "variants": [],
      "alias": null
    },
    {
      "path": "num::spiral::Diagonal",
      "name": "Diagonal",
      "defined_at": "num/spiral.rs:179",
      "docs": [
        "The readout of one quadratic a k^2 + b k + c across a sheet: where it lands and how often on a prime."
      ],
      "kind": "struct",
      "cross": {
        "kind": "plain"
      },
      "derives": [
        "Clone",
        "Debug",
        "PartialEq",
        "Serialize",
        "Deserialize"
      ],
      "serde": [],
      "const_generic": false,
      "fields": [
        {
          "name": "top",
          "public": true,
          "docs": [
            "The count of numbers the sheet holds."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "primes",
          "public": true,
          "docs": [
            "The count of primes among them."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "density",
          "public": true,
          "docs": [
            "The primes as a share of the numbers."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "f64"
          }
        },
        {
          "name": "values",
          "public": true,
          "docs": [
            "The values of the quadratic inside the sheet, k counting up from zero."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "vec",
            "item": {
              "t": "scalar",
              "name": "u64"
            }
          }
        },
        {
          "name": "cells",
          "public": true,
          "docs": [
            "The cell of each value."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "vec",
            "item": {
              "t": "tuple",
              "items": [
                {
                  "t": "scalar",
                  "name": "i64"
                },
                {
                  "t": "scalar",
                  "name": "i64"
                }
              ]
            }
          }
        },
        {
          "name": "hit",
          "public": true,
          "docs": [
            "Whether each value is prime."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "vec",
            "item": {
              "t": "scalar",
              "name": "bool"
            }
          }
        },
        {
          "name": "hits",
          "public": true,
          "docs": [
            "The count of values that are prime."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "streak",
          "public": true,
          "docs": [
            "The count of primes before the first composite."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "share",
          "public": true,
          "docs": [
            "The hits as a share of the values, zero when the quadratic misses the sheet."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "f64"
          }
        }
      ],
      "variants": [],
      "alias": null
    },
    {
      "path": "num::spiral::Growth",
      "name": "Growth",
      "defined_at": "num/spiral.rs:242",
      "docs": [
        "Which cells of the square winding grow into a tile."
      ],
      "kind": "enum",
      "cross": {
        "kind": "enum",
        "named": true,
        "words": [
          "prime",
          "every"
        ]
      },
      "derives": [
        "Clone",
        "Copy",
        "Debug",
        "PartialEq",
        "Eq",
        "Serialize",
        "Deserialize"
      ],
      "serde": [],
      "const_generic": false,
      "fields": [],
      "variants": [
        {
          "name": "Prime",
          "word": "prime",
          "docs": [
            "Only the primes grow; one and every composite stay unit cells."
          ],
          "serde": [],
          "fields": []
        },
        {
          "name": "Every",
          "word": "every",
          "docs": [
            "Every number grows."
          ],
          "serde": [],
          "fields": []
        }
      ],
      "alias": null
    },
    {
      "path": "num::spiral::Lattice",
      "name": "Lattice",
      "defined_at": "num/spiral.rs:8",
      "docs": [
        "The two lattices a spiral of the whole numbers is wound on, one at the centre and two to its right."
      ],
      "kind": "enum",
      "cross": {
        "kind": "enum",
        "named": true,
        "words": [
          "square",
          "hex"
        ]
      },
      "derives": [
        "Clone",
        "Copy",
        "Debug",
        "PartialEq",
        "Eq",
        "Serialize",
        "Deserialize"
      ],
      "serde": [],
      "const_generic": false,
      "fields": [],
      "variants": [
        {
          "name": "Square",
          "word": "square",
          "docs": [
            "Unit squares turning anticlockwise with y up: ring k holds 8k cells and ends at the odd square (2k + 1)^2 on the diagonal below right."
          ],
          "serde": [],
          "fields": []
        },
        {
          "name": "Hex",
          "word": "hex",
          "docs": [
            "Hexagons in axial coordinates q and r, r growing downward: ring r holds 6r cells and ends at the centered hexagonal number 3r^2 + 3r + 1 below right of the centre."
          ],
          "serde": [],
          "fields": []
        }
      ],
      "alias": null
    },
    {
      "path": "num::spiral::Mark",
      "name": "Mark",
      "defined_at": "num/spiral.rs:137",
      "docs": [
        "What a cell is painted for."
      ],
      "kind": "enum",
      "cross": {
        "kind": "enum",
        "named": true,
        "words": [
          "prime",
          "twin",
          "squarefree",
          "mobius"
        ]
      },
      "derives": [
        "Clone",
        "Copy",
        "Debug",
        "PartialEq",
        "Eq",
        "Serialize",
        "Deserialize"
      ],
      "serde": [],
      "const_generic": false,
      "fields": [],
      "variants": [
        {
          "name": "Prime",
          "word": "prime",
          "docs": [
            "The primes."
          ],
          "serde": [],
          "fields": []
        },
        {
          "name": "Twin",
          "word": "twin",
          "docs": [
            "The primes with a prime two away."
          ],
          "serde": [],
          "fields": []
        },
        {
          "name": "Squarefree",
          "word": "squarefree",
          "docs": [
            "The numbers no prime squares into."
          ],
          "serde": [],
          "fields": []
        },
        {
          "name": "Mobius",
          "word": "mobius",
          "docs": [
            "The Mobius value: one, minus one, or zero for a squared factor."
          ],
          "serde": [],
          "fields": []
        }
      ],
      "alias": null
    },
    {
      "path": "num::spiral::Snail",
      "name": "Snail",
      "defined_at": "num/spiral.rs:272",
      "docs": [
        "The snail: every tile of the winding, the tallies, the area drawn and the box filled."
      ],
      "kind": "struct",
      "cross": {
        "kind": "plain"
      },
      "derives": [
        "Clone",
        "Debug",
        "PartialEq",
        "Serialize",
        "Deserialize"
      ],
      "serde": [],
      "const_generic": false,
      "fields": [
        {
          "name": "base",
          "public": true,
          "docs": [
            "The base every tile side is a power of."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "u64"
          }
        },
        {
          "name": "tiles",
          "public": true,
          "docs": [
            "Every tile, in the order one, two, three and on."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "vec",
            "item": {
              "t": "plain",
              "path": "num::spiral::Tile"
            }
          }
        },
        {
          "name": "primes",
          "public": true,
          "docs": [
            "The count of primes at or below the top."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "levels",
          "public": true,
          "docs": [
            "The count of tiles at each level, from zero up."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "vec",
            "item": {
              "t": "scalar",
              "name": "usize"
            }
          }
        },
        {
          "name": "area",
          "public": true,
          "docs": [
            "The sum of the tile areas, a tile counted once wherever it overlaps another."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "u128"
          }
        },
        {
          "name": "low",
          "public": true,
          "docs": [
            "The lower-left corner of the box the tiles fill."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "tuple",
            "items": [
              {
                "t": "scalar",
                "name": "i64"
              },
              {
                "t": "scalar",
                "name": "i64"
              }
            ]
          }
        },
        {
          "name": "high",
          "public": true,
          "docs": [
            "The upper-right corner of the box the tiles fill."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "tuple",
            "items": [
              {
                "t": "scalar",
                "name": "i64"
              },
              {
                "t": "scalar",
                "name": "i64"
              }
            ]
          }
        }
      ],
      "variants": [],
      "alias": null
    },
    {
      "path": "num::spiral::Tile",
      "name": "Tile",
      "defined_at": "num/spiral.rs:255",
      "docs": [
        "One tile of the snail: the number it stands for, its level, the side of its square, whether the number is prime, and the lower-left corner it is laid at."
      ],
      "kind": "struct",
      "cross": {
        "kind": "plain"
      },
      "derives": [
        "Clone",
        "Copy",
        "Debug",
        "PartialEq",
        "Eq",
        "Serialize",
        "Deserialize"
      ],
      "serde": [],
      "const_generic": false,
      "fields": [
        {
          "name": "n",
          "public": true,
          "docs": [
            "The number the tile stands for."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "u64"
          }
        },
        {
          "name": "level",
          "public": true,
          "docs": [
            "The level the design is grown to."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "u32"
          }
        },
        {
          "name": "side",
          "public": true,
          "docs": [
            "The side of the tile, the base raised to the level."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "u64"
          }
        },
        {
          "name": "prime",
          "public": true,
          "docs": [
            "Whether the number is prime."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "bool"
          }
        },
        {
          "name": "x",
          "public": true,
          "docs": [
            "The x of the lower-left corner."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "i64"
          }
        },
        {
          "name": "y",
          "public": true,
          "docs": [
            "The y of the lower-left corner."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "i64"
          }
        }
      ],
      "variants": [],
      "alias": null
    },
    {
      "path": "num::zeta::Complex",
      "name": "Complex",
      "defined_at": "num/zeta.rs:18",
      "docs": [
        "A complex number: a real and an imaginary part."
      ],
      "kind": "struct",
      "cross": {
        "kind": "class"
      },
      "derives": [
        "Clone",
        "Copy",
        "Debug",
        "Default",
        "PartialEq",
        "Serialize",
        "Deserialize"
      ],
      "serde": [],
      "const_generic": false,
      "fields": [
        {
          "name": "re",
          "public": true,
          "docs": [
            "The real part."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "f64"
          }
        },
        {
          "name": "im",
          "public": true,
          "docs": [
            "The imaginary part."
          ],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "scalar",
            "name": "f64"
          }
        }
      ],
      "variants": [],
      "alias": null
    },
    {
      "path": "num::zeta::Line",
      "name": "Line",
      "defined_at": "num/zeta.rs:162",
      "docs": [
        "The critical line: the Bernoulli numbers and the Euler-Maclaurin weights the two engines share, built once."
      ],
      "kind": "struct",
      "cross": {
        "kind": "class"
      },
      "derives": [
        "Serialize",
        "Deserialize"
      ],
      "serde": [],
      "const_generic": false,
      "fields": [
        {
          "name": "bern",
          "public": false,
          "docs": [],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "vec",
            "item": {
              "t": "scalar",
              "name": "f64"
            }
          }
        },
        {
          "name": "tail",
          "public": false,
          "docs": [],
          "serde": [],
          "serde_skip": false,
          "ty": {
            "t": "vec",
            "item": {
              "t": "scalar",
              "name": "f64"
            }
          }
        }
      ],
      "variants": [],
      "alias": null
    }
  ],
  "consts": [
    {
      "path": "core::HEX_RATIO",
      "name": "HEX_RATIO",
      "defined_at": "core/resample.rs:16",
      "docs": [
        "The height of an equilateral triangle over its side, the squash a hex rendering wears."
      ],
      "ty": {
        "t": "scalar",
        "name": "f64"
      },
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "core::PNG_MAGIC",
      "name": "PNG_MAGIC",
      "defined_at": "core/codec/png.rs:9",
      "docs": [
        "The eight bytes every png file starts with."
      ],
      "ty": {
        "t": "array",
        "item": {
          "t": "scalar",
          "name": "u8"
        },
        "len": 8
      },
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "core::colors::ALPHA",
      "name": "ALPHA",
      "defined_at": "core/colors.rs:20",
      "docs": [
        "The fully transparent color."
      ],
      "ty": {
        "t": "hand",
        "name": "Color",
        "dim": null
      },
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "core::colors::BLACK",
      "name": "BLACK",
      "defined_at": "core/colors.rs:25",
      "docs": [
        "The palette black, #000000."
      ],
      "ty": {
        "t": "hand",
        "name": "Color",
        "dim": null
      },
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "core::colors::BLUE",
      "name": "BLUE",
      "defined_at": "core/colors.rs:43",
      "docs": [
        "The palette blue, #008cff."
      ],
      "ty": {
        "t": "hand",
        "name": "Color",
        "dim": null
      },
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "core::colors::BROWN",
      "name": "BROWN",
      "defined_at": "core/colors.rs:51",
      "docs": [
        "The palette brown, #b18462."
      ],
      "ty": {
        "t": "hand",
        "name": "Color",
        "dim": null
      },
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "core::colors::CYAN",
      "name": "CYAN",
      "defined_at": "core/colors.rs:41",
      "docs": [
        "The palette cyan, #1ec9f3."
      ],
      "ty": {
        "t": "hand",
        "name": "Color",
        "dim": null
      },
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "core::colors::DARK",
      "name": "DARK",
      "defined_at": "core/colors.rs:185",
      "docs": [
        "The dark theme."
      ],
      "ty": {
        "t": "class",
        "path": "core::colors::Theme",
        "dim": null
      },
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "core::colors::GRAY",
      "name": "GRAY",
      "defined_at": "core/colors.rs:53",
      "docs": [
        "The palette gray, #8e8e93."
      ],
      "ty": {
        "t": "hand",
        "name": "Color",
        "dim": null
      },
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "core::colors::GREEN",
      "name": "GREEN",
      "defined_at": "core/colors.rs:35",
      "docs": [
        "The palette green, #32cc58."
      ],
      "ty": {
        "t": "hand",
        "name": "Color",
        "dim": null
      },
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "core::colors::INDIGO",
      "name": "INDIGO",
      "defined_at": "core/colors.rs:45",
      "docs": [
        "The palette indigo, #6768fa."
      ],
      "ty": {
        "t": "hand",
        "name": "Color",
        "dim": null
      },
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "core::colors::LIGHT",
      "name": "LIGHT",
      "defined_at": "core/colors.rs:197",
      "docs": [
        "The light theme."
      ],
      "ty": {
        "t": "class",
        "path": "core::colors::Theme",
        "dim": null
      },
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "core::colors::MINT",
      "name": "MINT",
      "defined_at": "core/colors.rs:37",
      "docs": [
        "The palette mint, #00d1bb."
      ],
      "ty": {
        "t": "hand",
        "name": "Color",
        "dim": null
      },
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "core::colors::NAMES",
      "name": "NAMES",
      "defined_at": "core/colors.rs:57",
      "docs": [
        "The fifteen names, in palette order."
      ],
      "ty": {
        "t": "array",
        "item": {
          "t": "str"
        },
        "len": 15
      },
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "core::colors::ORANGE",
      "name": "ORANGE",
      "defined_at": "core/colors.rs:31",
      "docs": [
        "The palette orange, #ff8f2c."
      ],
      "ty": {
        "t": "hand",
        "name": "Color",
        "dim": null
      },
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "core::colors::PALETTE",
      "name": "PALETTE",
      "defined_at": "core/colors.rs:61",
      "docs": [
        "The fifteen colors, in name order."
      ],
      "ty": {
        "t": "array",
        "item": {
          "t": "hand",
          "name": "Color",
          "dim": null
        },
        "len": 15
      },
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "core::colors::PINK",
      "name": "PINK",
      "defined_at": "core/colors.rs:49",
      "docs": [
        "The palette pink, #ff325a."
      ],
      "ty": {
        "t": "hand",
        "name": "Color",
        "dim": null
      },
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "core::colors::PURPLE",
      "name": "PURPLE",
      "defined_at": "core/colors.rs:47",
      "docs": [
        "The palette purple, #d332e9."
      ],
      "ty": {
        "t": "hand",
        "name": "Color",
        "dim": null
      },
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "core::colors::RED",
      "name": "RED",
      "defined_at": "core/colors.rs:29",
      "docs": [
        "The palette red, #ff3d40."
      ],
      "ty": {
        "t": "hand",
        "name": "Color",
        "dim": null
      },
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "core::colors::TEAL",
      "name": "TEAL",
      "defined_at": "core/colors.rs:39",
      "docs": [
        "The palette teal, #00cad8."
      ],
      "ty": {
        "t": "hand",
        "name": "Color",
        "dim": null
      },
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "core::colors::WHITE",
      "name": "WHITE",
      "defined_at": "core/colors.rs:27",
      "docs": [
        "The palette white, #ffffff."
      ],
      "ty": {
        "t": "hand",
        "name": "Color",
        "dim": null
      },
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "core::colors::YELLOW",
      "name": "YELLOW",
      "defined_at": "core/colors.rs:33",
      "docs": [
        "The palette yellow, #ffd100."
      ],
      "ty": {
        "t": "hand",
        "name": "Color",
        "dim": null
      },
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "font::FPS",
      "name": "FPS",
      "defined_at": "font/animate.rs:7",
      "docs": [
        "The playback rate of every animation, in frames per second."
      ],
      "ty": {
        "t": "scalar",
        "name": "usize"
      },
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "font::HOLD",
      "name": "HOLD",
      "defined_at": "font/animate.rs:10",
      "docs": [
        "The default number of frames a cycle rests between movements."
      ],
      "ty": {
        "t": "scalar",
        "name": "usize"
      },
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "font::pens::DIGITS",
      "name": "DIGITS",
      "defined_at": "font/pens.rs:281",
      "docs": [
        "The pens of the ten digits."
      ],
      "ty": {
        "t": "slice",
        "mutable": false,
        "item": {
          "t": "tuple",
          "items": [
            {
              "t": "scalar",
              "name": "char"
            },
            {
              "t": "ref",
              "mutable": false,
              "lifetime": "'static",
              "item": {
                "t": "slice",
                "mutable": false,
                "item": {
                  "t": "ref",
                  "mutable": false,
                  "lifetime": "'static",
                  "item": {
                    "t": "str"
                  }
                }
              }
            }
          ]
        }
      },
      "cross": {
        "status": "skip",
        "reason": "&'static const"
      }
    },
    {
      "path": "font::pens::EXTRAS",
      "name": "EXTRAS",
      "defined_at": "font/pens.rs:321",
      "docs": [
        "The pens of the punctuation, symbol and arrow glyphs."
      ],
      "ty": {
        "t": "slice",
        "mutable": false,
        "item": {
          "t": "tuple",
          "items": [
            {
              "t": "scalar",
              "name": "char"
            },
            {
              "t": "ref",
              "mutable": false,
              "lifetime": "'static",
              "item": {
                "t": "slice",
                "mutable": false,
                "item": {
                  "t": "ref",
                  "mutable": false,
                  "lifetime": "'static",
                  "item": {
                    "t": "str"
                  }
                }
              }
            }
          ]
        }
      },
      "cross": {
        "status": "skip",
        "reason": "&'static const"
      }
    },
    {
      "path": "font::pens::LOWERS",
      "name": "LOWERS",
      "defined_at": "font/pens.rs:132",
      "docs": [
        "The pens of the twenty-six lowers."
      ],
      "ty": {
        "t": "slice",
        "mutable": false,
        "item": {
          "t": "tuple",
          "items": [
            {
              "t": "scalar",
              "name": "char"
            },
            {
              "t": "ref",
              "mutable": false,
              "lifetime": "'static",
              "item": {
                "t": "slice",
                "mutable": false,
                "item": {
                  "t": "ref",
                  "mutable": false,
                  "lifetime": "'static",
                  "item": {
                    "t": "str"
                  }
                }
              }
            }
          ]
        }
      },
      "cross": {
        "status": "skip",
        "reason": "&'static const"
      }
    },
    {
      "path": "font::pens::SPECIALS",
      "name": "SPECIALS",
      "defined_at": "font/pens.rs:558",
      "docs": [
        "The pens of the four seven-row specials."
      ],
      "ty": {
        "t": "slice",
        "mutable": false,
        "item": {
          "t": "tuple",
          "items": [
            {
              "t": "scalar",
              "name": "char"
            },
            {
              "t": "ref",
              "mutable": false,
              "lifetime": "'static",
              "item": {
                "t": "slice",
                "mutable": false,
                "item": {
                  "t": "ref",
                  "mutable": false,
                  "lifetime": "'static",
                  "item": {
                    "t": "str"
                  }
                }
              }
            }
          ]
        }
      },
      "cross": {
        "status": "skip",
        "reason": "&'static const"
      }
    },
    {
      "path": "font::pens::UPPERS",
      "name": "UPPERS",
      "defined_at": "font/pens.rs:13",
      "docs": [
        "The pens of the twenty-six uppers."
      ],
      "ty": {
        "t": "slice",
        "mutable": false,
        "item": {
          "t": "tuple",
          "items": [
            {
              "t": "scalar",
              "name": "char"
            },
            {
              "t": "ref",
              "mutable": false,
              "lifetime": "'static",
              "item": {
                "t": "slice",
                "mutable": false,
                "item": {
                  "t": "ref",
                  "mutable": false,
                  "lifetime": "'static",
                  "item": {
                    "t": "str"
                  }
                }
              }
            }
          ]
        }
      },
      "cross": {
        "status": "skip",
        "reason": "&'static const"
      }
    },
    {
      "path": "gen::recipe::CLASSICS_2D",
      "name": "CLASSICS_2D",
      "defined_at": "math/bang/catalog.rs:105",
      "docs": [
        "The five classic designs of the plane."
      ],
      "ty": {
        "t": "array",
        "item": {
          "t": "enum",
          "path": "gen::recipe::Design"
        },
        "len": 5
      },
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "gen::recipe::CLASSICS_3D",
      "name": "CLASSICS_3D",
      "defined_at": "math/bang/catalog.rs:114",
      "docs": [
        "The six classic designs of the cube."
      ],
      "ty": {
        "t": "array",
        "item": {
          "t": "enum",
          "path": "gen::recipe::Design"
        },
        "len": 6
      },
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "gen::recipe::MAX_LEVEL",
      "name": "MAX_LEVEL",
      "defined_at": "gen/recipe.rs:14",
      "docs": [
        "The deepest fractal level a tile may take."
      ],
      "ty": {
        "t": "scalar",
        "name": "usize"
      },
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "gen::recipe::MAX_SIDE",
      "name": "MAX_SIDE",
      "defined_at": "gen/recipe.rs:11",
      "docs": [
        "The largest side, number or factor a tile may take."
      ],
      "ty": {
        "t": "scalar",
        "name": "usize"
      },
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "gen::recipe::MAX_SLOTS",
      "name": "MAX_SLOTS",
      "defined_at": "gen/recipe.rs:17",
      "docs": [
        "The most slots a magic tile may take."
      ],
      "ty": {
        "t": "scalar",
        "name": "usize"
      },
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "gen::recipe::MIN_SIDE",
      "name": "MIN_SIDE",
      "defined_at": "gen/recipe.rs:8",
      "docs": [
        "The smallest side, number or factor a tile may take."
      ],
      "ty": {
        "t": "scalar",
        "name": "usize"
      },
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::bang::baseq::WALK_LIMIT",
      "name": "WALK_LIMIT",
      "defined_at": "math/bang/baseq.rs:9",
      "docs": [
        "The most cells a code walk visits, so that the walk stays within `2^20` codes."
      ],
      "ty": {
        "t": "scalar",
        "name": "usize"
      },
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::bang::catalog::ANTIS_2D",
      "name": "ANTIS_2D",
      "defined_at": "math/bang/catalog.rs:124",
      "docs": [
        "The five antis of the plane, the complements of the five classics in order."
      ],
      "ty": {
        "t": "array",
        "item": {
          "t": "enum",
          "path": "gen::recipe::Design"
        },
        "len": 5
      },
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::bang::catalog::ANTIS_3D",
      "name": "ANTIS_3D",
      "defined_at": "math/bang/catalog.rs:133",
      "docs": [
        "The six antis of the cube: point, dust, the three lines and the star."
      ],
      "ty": {
        "t": "array",
        "item": {
          "t": "enum",
          "path": "gen::recipe::Design"
        },
        "len": 6
      },
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::counts::diagonal::WIDEST",
      "name": "WIDEST",
      "defined_at": "math/counts/diagonal.rs:6",
      "docs": [
        "The widest side a profile spans."
      ],
      "ty": {
        "t": "scalar",
        "name": "usize"
      },
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::press::CORNERS",
      "name": "CORNERS",
      "defined_at": "math/press.rs:7",
      "docs": [
        "The largest corner count the tally press accepts, keeping its table a million rows."
      ],
      "ty": {
        "t": "scalar",
        "name": "usize"
      },
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::rules::BASE",
      "name": "BASE",
      "defined_at": "math/rules.rs:6",
      "docs": [
        "The default residue base."
      ],
      "ty": {
        "t": "scalar",
        "name": "usize"
      },
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::shape::REFINE_LIMIT",
      "name": "REFINE_LIMIT",
      "defined_at": "math/shape.rs:401",
      "docs": [
        "The refine output ceiling in cells."
      ],
      "ty": {
        "t": "scalar",
        "name": "usize"
      },
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::six::FILL",
      "name": "FILL",
      "defined_at": "math/six/mod.rs:33",
      "docs": [
        "The triangle code for a filled site."
      ],
      "ty": {
        "t": "scalar",
        "name": "u8"
      },
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::six::GRID",
      "name": "GRID",
      "defined_at": "math/six/mod.rs:35",
      "docs": [
        "The triangle code for the backdrop outside the figure."
      ],
      "ty": {
        "t": "scalar",
        "name": "u8"
      },
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::six::LEFT",
      "name": "LEFT",
      "defined_at": "math/six/mod.rs:39",
      "docs": [
        "The triangle code for a cube's left face in the iso view."
      ],
      "ty": {
        "t": "scalar",
        "name": "u8"
      },
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::six::RIGHT",
      "name": "RIGHT",
      "defined_at": "math/six/mod.rs:41",
      "docs": [
        "The triangle code for a cube's right face in the iso view."
      ],
      "ty": {
        "t": "scalar",
        "name": "u8"
      },
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::six::UP",
      "name": "UP",
      "defined_at": "math/six/mod.rs:37",
      "docs": [
        "The triangle code for a cube's top face in the iso view."
      ],
      "ty": {
        "t": "scalar",
        "name": "u8"
      },
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::six::VOID",
      "name": "VOID",
      "defined_at": "math/six/mod.rs:31",
      "docs": [
        "The triangle code for an empty site."
      ],
      "ty": {
        "t": "scalar",
        "name": "u8"
      },
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::spirograph::LAPS_CAP",
      "name": "LAPS_CAP",
      "defined_at": "math/spirograph.rs:13",
      "docs": [
        "The most laps of a line or a polygon."
      ],
      "ty": {
        "t": "scalar",
        "name": "usize"
      },
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::spirograph::PENCIL_CAP",
      "name": "PENCIL_CAP",
      "defined_at": "math/spirograph.rs:15",
      "docs": [
        "The most pencils a wheel seats."
      ],
      "ty": {
        "t": "scalar",
        "name": "usize"
      },
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::spirograph::POINT_CAP",
      "name": "POINT_CAP",
      "defined_at": "math/spirograph.rs:17",
      "docs": [
        "The most points one trace returns."
      ],
      "ty": {
        "t": "scalar",
        "name": "usize"
      },
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::spirograph::RADIUS_CAP",
      "name": "RADIUS_CAP",
      "defined_at": "math/spirograph.rs:9",
      "docs": [
        "The largest radius of a ring or a wheel."
      ],
      "ty": {
        "t": "scalar",
        "name": "usize"
      },
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::spirograph::RASTER_CAP",
      "name": "RASTER_CAP",
      "defined_at": "math/spirograph.rs:549",
      "docs": [
        "The largest raster side a cover rasters."
      ],
      "ty": {
        "t": "scalar",
        "name": "usize"
      },
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::spirograph::SIDES",
      "name": "SIDES",
      "defined_at": "math/spirograph.rs:11",
      "docs": [
        "The fewest and the most sides of a polygon track."
      ],
      "ty": {
        "t": "tuple",
        "items": [
          {
            "t": "scalar",
            "name": "usize"
          },
          {
            "t": "scalar",
            "name": "usize"
          }
        ]
      },
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::apollonian::CIRCLE_CAP",
      "name": "CIRCLE_CAP",
      "defined_at": "num/apollonian.rs:9",
      "docs": [
        "The most circles one growth makes before it gives up."
      ],
      "ty": {
        "t": "scalar",
        "name": "usize"
      },
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::apollonian::CURVATURE_CAP",
      "name": "CURVATURE_CAP",
      "defined_at": "num/apollonian.rs:7",
      "docs": [
        "The largest curvature a packing is grown to."
      ],
      "ty": {
        "t": "scalar",
        "name": "i64"
      },
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::apollonian::ORDER_CAP",
      "name": "ORDER_CAP",
      "defined_at": "num/apollonian.rs:11",
      "docs": [
        "The deepest the Farey stack is read against a packing."
      ],
      "ty": {
        "t": "scalar",
        "name": "usize"
      },
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::apollonian::ROOTS",
      "name": "ROOTS",
      "defined_at": "num/apollonian.rs:13",
      "docs": [
        "The root quadruples on offer: the strip first, then the bounded packings named by their curvatures."
      ],
      "ty": {
        "t": "array",
        "item": {
          "t": "str"
        },
        "len": 4
      },
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::automaton::ROUNDING",
      "name": "ROUNDING",
      "defined_at": "num/automaton.rs:9",
      "docs": [
        "The relative rounding allowance the double-precision matrix ladder charges against the scale it carries.",
        "",
        "The truncation bound is the proved one, carried entrywise by the same recursion that carries the value vector; this constant is a measured allowance for the arithmetic itself and is not a proof."
      ],
      "ty": {
        "t": "scalar",
        "name": "f64"
      },
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::design::ZETA_ORDINATES",
      "name": "ZETA_ORDINATES",
      "defined_at": "num/design.rs:7",
      "docs": [
        "The ordinates of the first fourteen nontrivial zeros of the Riemann zeta function, the imaginary parts of the zeros on the critical line in ascending order."
      ],
      "ty": {
        "t": "array",
        "item": {
          "t": "scalar",
          "name": "f64"
        },
        "len": 14
      },
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::ladder::ROUNDING",
      "name": "ROUNDING",
      "defined_at": "num/ladder.rs:9",
      "docs": [
        "The relative rounding allowance the double-precision ladder charges against the scale it carries.",
        "",
        "The truncation bound is the proved one, carried by the same recursion that carries the value; this constant is a measured allowance for the arithmetic itself and is not a proof."
      ],
      "ty": {
        "t": "scalar",
        "name": "f64"
      },
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::memory::SPAN",
      "name": "SPAN",
      "defined_at": "num/memory.rs:5",
      "docs": [
        "The largest digit span a rule may read, so its code fits a `u64`."
      ],
      "ty": {
        "t": "scalar",
        "name": "usize"
      },
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::memory::SWEEPS",
      "name": "SWEEPS",
      "defined_at": "num/memory.rs:289",
      "docs": [
        "The sweep cap of the power iteration."
      ],
      "ty": {
        "t": "scalar",
        "name": "usize"
      },
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::memory::TOLERANCE",
      "name": "TOLERANCE",
      "defined_at": "num/memory.rs:286",
      "docs": [
        "The absolute `l^1` move of the normalised iterate that stops the power iteration, counted only when it holds over three consecutive sweeps."
      ],
      "ty": {
        "t": "scalar",
        "name": "f64"
      },
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::morse::LIFTS",
      "name": "LIFTS",
      "defined_at": "num/morse.rs:108",
      "docs": [
        "Lists the lifts in the order the gallery draws them."
      ],
      "ty": {
        "t": "array",
        "item": {
          "t": "enum",
          "path": "num::morse::Lift"
        },
        "len": 4
      },
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::series::APERY",
      "name": "APERY",
      "defined_at": "num/series.rs:16",
      "docs": [
        "The Apery constant, the value zeta takes at three."
      ],
      "ty": {
        "t": "scalar",
        "name": "f64"
      },
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::series::BASEL",
      "name": "BASEL",
      "defined_at": "num/series.rs:7",
      "docs": [
        "The Basel constant, pi squared over six, the value zeta takes at two."
      ],
      "ty": {
        "t": "scalar",
        "name": "f64"
      },
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::series::CATALAN",
      "name": "CATALAN",
      "defined_at": "num/series.rs:13",
      "docs": [
        "The Catalan constant, the value the Dirichlet beta function takes at two."
      ],
      "ty": {
        "t": "scalar",
        "name": "f64"
      },
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::series::EULER",
      "name": "EULER",
      "defined_at": "num/series.rs:19",
      "docs": [
        "The Euler constant, the limit of the harmonic sum less the logarithm."
      ],
      "ty": {
        "t": "scalar",
        "name": "f64"
      },
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::series::VISIBLE",
      "name": "VISIBLE",
      "defined_at": "num/series.rs:10",
      "docs": [
        "The visible density, six over pi squared, the share of lattice pairs that are coprime."
      ],
      "ty": {
        "t": "scalar",
        "name": "f64"
      },
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::sieve::PLANE_LIMIT",
      "name": "PLANE_LIMIT",
      "defined_at": "num/sieve.rs:5",
      "docs": [
        "The limit of the plane Wallis sieve's surviving area, pi over four."
      ],
      "ty": {
        "t": "scalar",
        "name": "f64"
      },
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::zeta::JOIN",
      "name": "JOIN",
      "defined_at": "num/zeta.rs:8",
      "docs": [
        "The t where the walk hands over from Euler-Maclaurin to Riemann-Siegel."
      ],
      "ty": {
        "t": "scalar",
        "name": "f64"
      },
      "cross": {
        "status": "ok"
      }
    }
  ],
  "functions": [
    {
      "path": "core::Colorizer::default",
      "name": "default",
      "module": "core",
      "defined_at": "core/ramp.rs:87",
      "docs": [
        "Returns the default Colorizer."
      ],
      "owner": "core::Colorizer",
      "self_kind": null,
      "params": [],
      "ret": {
        "t": "plain",
        "path": "core::Colorizer"
      },
      "dims": [],
      "trait": null,
      "source": "default",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "core::Colorizer::diverge",
      "name": "diverge",
      "module": "core",
      "defined_at": "core/ramp.rs:36",
      "docs": [
        "Builds the blue-to-red diverging ramp around a white middle."
      ],
      "owner": "core::Colorizer",
      "self_kind": null,
      "params": [],
      "ret": {
        "t": "plain",
        "path": "core::Colorizer"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "core::Colorizer::fire",
      "name": "fire",
      "module": "core",
      "defined_at": "core/ramp.rs:27",
      "docs": [
        "Builds the black-through-ember fire ramp: black, dark red, orange, light yellow."
      ],
      "owner": "core::Colorizer",
      "self_kind": null,
      "params": [],
      "ret": {
        "t": "plain",
        "path": "core::Colorizer"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "core::Colorizer::gradient_bins",
      "name": "gradient_bins",
      "module": "core",
      "defined_at": "core/ramp.rs:49",
      "docs": [
        "Builds a binned colorizer from a gradient through the given stops.",
        "",
        "# Errors",
        "",
        "Errs on an empty stop list."
      ],
      "owner": "core::Colorizer",
      "self_kind": null,
      "params": [
        {
          "name": "background",
          "ty": {
            "t": "hand",
            "name": "Color",
            "dim": null
          }
        },
        {
          "name": "colors",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "hand",
              "name": "Color",
              "dim": null
            }
          }
        },
        {
          "name": "shades",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "plain",
          "path": "core::Colorizer"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "core::Colorizer::heat",
      "name": "heat",
      "module": "core",
      "defined_at": "core/ramp.rs:19",
      "docs": [
        "Builds the white-to-black heat ramp."
      ],
      "owner": "core::Colorizer",
      "self_kind": null,
      "params": [],
      "ret": {
        "t": "plain",
        "path": "core::Colorizer"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "core::Dtype::max",
      "name": "max",
      "module": "core",
      "defined_at": "core/tensor.rs:19",
      "docs": [
        "Returns the largest value the width can hold."
      ],
      "owner": "core::Dtype",
      "self_kind": "value",
      "params": [],
      "ret": {
        "t": "scalar",
        "name": "i64"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "core::Image::colors",
      "name": "colors",
      "module": "core",
      "defined_at": "core/image.rs:54",
      "docs": [
        "Returns the flat rgba pixels, transparent wherever an index misses the palette."
      ],
      "owner": "core::Image",
      "self_kind": "ref",
      "params": [],
      "ret": {
        "t": "vec",
        "item": {
          "t": "array",
          "item": {
            "t": "scalar",
            "name": "u8"
          },
          "len": 4
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "core::Image::from_pixels",
      "name": "from_pixels",
      "module": "core",
      "defined_at": "core/image.rs:32",
      "docs": [
        "Builds a paletted image from raw rgba pixels, growing the palette as new colors appear."
      ],
      "owner": "core::Image",
      "self_kind": null,
      "params": [
        {
          "name": "width",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "height",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "pixels",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "array",
              "item": {
                "t": "scalar",
                "name": "u8"
              },
              "len": 4
            }
          }
        }
      ],
      "ret": {
        "t": "class",
        "path": "core::Image",
        "dim": null
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "core::Image::new",
      "name": "new",
      "module": "core",
      "defined_at": "core/image.rs:23",
      "docs": [
        "Builds an image from its four parts."
      ],
      "owner": "core::Image",
      "self_kind": null,
      "params": [
        {
          "name": "width",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "height",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "rows",
          "ty": {
            "t": "vec",
            "item": {
              "t": "vec",
              "item": {
                "t": "scalar",
                "name": "usize"
              }
            }
          }
        },
        {
          "name": "palette",
          "ty": {
            "t": "vec",
            "item": {
              "t": "hand",
              "name": "Color",
              "dim": null
            }
          }
        }
      ],
      "ret": {
        "t": "class",
        "path": "core::Image",
        "dim": null
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "core::Image::png",
      "name": "png",
      "module": "core",
      "defined_at": "core/image.rs:73",
      "docs": [
        "Encodes the image as a png at the given scale.",
        "",
        "# Errors",
        "",
        "Errs when the codec refuses the scale or the scaled size."
      ],
      "owner": "core::Image",
      "self_kind": "ref",
      "params": [
        {
          "name": "scale",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "vec",
          "item": {
            "t": "scalar",
            "name": "u8"
          }
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "core::Image::resample",
      "name": "resample",
      "module": "core",
      "defined_at": "core/image.rs:81",
      "docs": [
        "Resamples the image to a new size, its palette rebuilt from the blended pixels.",
        "",
        "# Errors",
        "",
        "Errs on a side of zero or a size that overflows."
      ],
      "owner": "core::Image",
      "self_kind": "ref",
      "params": [
        {
          "name": "width",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "height",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "filter",
          "ty": {
            "t": "enum",
            "path": "core::Filter"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "class",
          "path": "core::Image",
          "dim": null
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "core::block",
      "name": "block",
      "module": "core",
      "defined_at": "core/resample.rs:98",
      "docs": [
        "Draws every source element as a scale by scale block, growing both sides by scale.",
        "",
        "# Errors",
        "",
        "Errs when the source is not width by height, or the grown size overflows.",
        "",
        "```",
        "let out = mrlyrs::core::resample::block(&[1u8, 2], 2, 1, 2).unwrap();",
        "assert_eq!(out, vec![1, 1, 2, 2, 1, 1, 2, 2]);",
        "```"
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "src",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "unknown",
              "text": "generic T"
            }
          }
        },
        {
          "name": "width",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "height",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "scale",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "vec",
          "item": {
            "t": "unknown",
            "text": "generic T"
          }
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "skip",
        "reason": "generic over T"
      }
    },
    {
      "path": "core::cell::anti",
      "name": "anti",
      "module": "core::cell",
      "defined_at": "core/cell.rs:103",
      "docs": [
        "Flips every type to one minus itself, same as invert."
      ],
      "owner": "core::Cell",
      "self_kind": "value",
      "params": [],
      "ret": {
        "t": "hand",
        "name": "Cell",
        "dim": null
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "core::cell::binarize",
      "name": "binarize",
      "module": "core::cell",
      "defined_at": "core/cell.rs:176",
      "docs": [
        "Maps every type to one at or above the threshold and zero below, dropping colors."
      ],
      "owner": "core::Cell",
      "self_kind": "value",
      "params": [
        {
          "name": "threshold",
          "ty": {
            "t": "scalar",
            "name": "u8"
          }
        }
      ],
      "ret": {
        "t": "hand",
        "name": "Cell",
        "dim": null
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "core::cell::binarize_otsu",
      "name": "binarize_otsu",
      "module": "core::cell",
      "defined_at": "core/cell.rs:182",
      "docs": [
        "Binarizes the types at Otsu's threshold, dropping colors."
      ],
      "owner": "core::Cell",
      "self_kind": "value",
      "params": [],
      "ret": {
        "t": "hand",
        "name": "Cell",
        "dim": null
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "core::cell::blur",
      "name": "blur",
      "module": "core::cell",
      "defined_at": "core/cell.rs:192",
      "docs": [
        "Replaces every type with the rounded mean of its masked neighborhood, dropping colors.",
        "",
        "# Errors",
        "",
        "Errs on a mask of another rank, an even side, or a mask with nothing on."
      ],
      "owner": "core::Cell",
      "self_kind": "value",
      "params": [
        {
          "name": "mask",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "hand",
              "name": "Tensor",
              "dim": null
            }
          }
        },
        {
          "name": "wrap",
          "ty": {
            "t": "scalar",
            "name": "bool"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "hand",
          "name": "Cell",
          "dim": null
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "core::cell::color_at",
      "name": "color_at",
      "module": "core::cell",
      "defined_at": "core/cell.rs:70",
      "docs": [
        "Returns the painted color at a flat index, or transparent while unpainted or past the end."
      ],
      "owner": "core::Cell",
      "self_kind": "ref",
      "params": [
        {
          "name": "flat",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "array",
        "item": {
          "t": "scalar",
          "name": "u8"
        },
        "len": 4
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "core::cell::combine",
      "name": "combine",
      "module": "core::cell",
      "defined_at": "core/cell.rs:208",
      "docs": [
        "Builds the Kronecker product of the two cells' types."
      ],
      "owner": "core::Cell",
      "self_kind": "ref",
      "params": [
        {
          "name": "other",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "hand",
              "name": "Cell",
              "dim": null
            }
          }
        }
      ],
      "ret": {
        "t": "hand",
        "name": "Cell",
        "dim": null
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "core::cell::fractal",
      "name": "fractal",
      "module": "core::cell",
      "defined_at": "core/cell.rs:131",
      "docs": [
        "Grows the types to the level-fold Kronecker power of themselves, dropping colors and tags.",
        "",
        "# Errors",
        "",
        "Errs when the level is below one."
      ],
      "owner": "core::Cell",
      "self_kind": "value",
      "params": [
        {
          "name": "level",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "hand",
          "name": "Cell",
          "dim": null
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "core::cell::invert",
      "name": "invert",
      "module": "core::cell",
      "defined_at": "core/cell.rs:98",
      "docs": [
        "Flips every type to one minus itself."
      ],
      "owner": "core::Cell",
      "self_kind": "value",
      "params": [],
      "ret": {
        "t": "hand",
        "name": "Cell",
        "dim": null
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "core::cell::layers",
      "name": "layers",
      "module": "core::cell",
      "defined_at": "core/cell.rs:156",
      "docs": [
        "Tags every cell with its concentric shell distance from the center."
      ],
      "owner": "core::Cell",
      "self_kind": "value",
      "params": [
        {
          "name": "dtype",
          "ty": {
            "t": "enum",
            "path": "core::Dtype"
          }
        }
      ],
      "ret": {
        "t": "hand",
        "name": "Cell",
        "dim": null
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "core::cell::magic",
      "name": "magic",
      "module": "core::cell",
      "defined_at": "core/cell.rs:471",
      "docs": [
        "Folds at least two cells into one by chained Kronecker products.",
        "",
        "# Errors",
        "",
        "Errs with fewer than two cells."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "cells",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "hand",
              "name": "Cell",
              "dim": null
            }
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "hand",
          "name": "Cell",
          "dim": null
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "core::cell::mapping",
      "name": "mapping",
      "module": "core::cell",
      "defined_at": "core/cell.rs:41",
      "docs": [
        "Returns the default mapping of the first six types to white, black, alpha, red, green, and blue."
      ],
      "owner": null,
      "self_kind": null,
      "params": [],
      "ret": {
        "t": "map",
        "key": {
          "t": "scalar",
          "name": "u8"
        },
        "value": {
          "t": "vec",
          "item": {
            "t": "hand",
            "name": "Color",
            "dim": null
          }
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "core::cell::merge",
      "name": "merge",
      "module": "core::cell",
      "defined_at": "core/cell.rs:421",
      "docs": [
        "Stitches same-shaped cells into one grid of reps blocks per axis.",
        "",
        "# Errors",
        "",
        "Errs on an empty list, a cell count that is not the product of reps, a rank mismatch, or cells of unequal shape."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "cells",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "hand",
              "name": "Cell",
              "dim": null
            }
          }
        },
        {
          "name": "reps",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "scalar",
              "name": "usize"
            }
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "hand",
          "name": "Cell",
          "dim": null
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "core::cell::moore",
      "name": "moore",
      "module": "core::cell",
      "defined_at": "core/cell.rs:365",
      "docs": [
        "Builds the 3-wide Moore mask of the dimension, every site on but the center.",
        "",
        "```",
        "let mask = mrlyrs::core::cell::moore(2);",
        "assert_eq!(mask.shape, vec![3, 3]);",
        "assert_eq!(mask.sum(), 8);",
        "```"
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "dimension",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "hand",
        "name": "Tensor",
        "dim": null
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "core::cell::mosaic",
      "name": "mosaic",
      "module": "core::cell",
      "defined_at": "core/cell.rs:487",
      "docs": [
        "Lays the cell each mask entry indexes into that entry's place and merges the lot.",
        "",
        "# Errors",
        "",
        "Errs when a mask entry indexes no cell, or the picked cells do not merge."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "mask",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "hand",
              "name": "Tensor",
              "dim": null
            }
          }
        },
        {
          "name": "cells",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "hand",
              "name": "Cell",
              "dim": null
            }
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "hand",
          "name": "Cell",
          "dim": null
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "core::cell::neighbors",
      "name": "neighbors",
      "module": "core::cell",
      "defined_at": "core/cell.rs:165",
      "docs": [
        "Tags every cell with its count of target-valued neighbors under the mask.",
        "",
        "# Errors",
        "",
        "Errs on a mask of another rank or an even side, a target above one, or a count past the dtype."
      ],
      "owner": "core::Cell",
      "self_kind": "value",
      "params": [
        {
          "name": "mask",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "hand",
              "name": "Tensor",
              "dim": null
            }
          }
        },
        {
          "name": "target",
          "ty": {
            "t": "scalar",
            "name": "u8"
          }
        },
        {
          "name": "wrap",
          "ty": {
            "t": "scalar",
            "name": "bool"
          }
        },
        {
          "name": "dtype",
          "ty": {
            "t": "enum",
            "path": "core::Dtype"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "hand",
          "name": "Cell",
          "dim": null
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "core::cell::new",
      "name": "new",
      "module": "core::cell",
      "defined_at": "core/cell.rs:54",
      "docs": [
        "Wraps a tensor of types in a bare cell, colorless and tagless."
      ],
      "owner": "core::Cell",
      "self_kind": null,
      "params": [
        {
          "name": "types",
          "ty": {
            "t": "hand",
            "name": "Tensor",
            "dim": null
          }
        }
      ],
      "ret": {
        "t": "hand",
        "name": "Cell",
        "dim": null
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "core::cell::pad",
      "name": "pad",
      "module": "core::cell",
      "defined_at": "core/cell.rs:107",
      "docs": [
        "Wraps the cell in count layers of value on every side, dropping colors."
      ],
      "owner": "core::Cell",
      "self_kind": "value",
      "params": [
        {
          "name": "count",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "value",
          "ty": {
            "t": "scalar",
            "name": "u8"
          }
        }
      ],
      "ret": {
        "t": "hand",
        "name": "Cell",
        "dim": null
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "core::cell::paint",
      "name": "paint",
      "module": "core::cell",
      "defined_at": "core/cell.rs:216",
      "docs": [
        "Colors every mapped cell, picking within each type's palette by the mode.",
        "",
        "# Errors",
        "",
        "Errs when the Random mode arrives without a stream to draw from."
      ],
      "owner": "core::Cell",
      "self_kind": "value",
      "params": [
        {
          "name": "mapping",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "map",
              "key": {
                "t": "scalar",
                "name": "u8"
              },
              "value": {
                "t": "vec",
                "item": {
                  "t": "hand",
                  "name": "Color",
                  "dim": null
                }
              }
            }
          }
        },
        {
          "name": "mode",
          "ty": {
            "t": "enum",
            "path": "core::Mode"
          }
        },
        {
          "name": "rng",
          "ty": {
            "t": "option",
            "item": {
              "t": "ref",
              "mutable": true,
              "lifetime": null,
              "item": {
                "t": "hand",
                "name": "Rng",
                "dim": null
              }
            }
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "hand",
          "name": "Cell",
          "dim": null
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "core::cell::perforate",
      "name": "perforate",
      "module": "core::cell",
      "defined_at": "core/cell.rs:202",
      "docs": [
        "Stamps value wherever the tiled mask is on, dropping colors.",
        "",
        "# Errors",
        "",
        "Errs on a mask of another rank or a side that does not evenly tile the cell."
      ],
      "owner": "core::Cell",
      "self_kind": "value",
      "params": [
        {
          "name": "mask",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "hand",
              "name": "Tensor",
              "dim": null
            }
          }
        },
        {
          "name": "value",
          "ty": {
            "t": "scalar",
            "name": "u8"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "hand",
          "name": "Cell",
          "dim": null
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "core::cell::remap",
      "name": "remap",
      "module": "core::cell",
      "defined_at": "core/cell.rs:324",
      "docs": [
        "Rebuilds a cell's types, colors and tags at the new shape from one destination-to-source index map.",
        "",
        "# Errors",
        "",
        "Errs when the map is not the shape's size, or points past the cell."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "cell",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "hand",
              "name": "Cell",
              "dim": null
            }
          }
        },
        {
          "name": "map",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "scalar",
              "name": "usize"
            }
          }
        },
        {
          "name": "shape",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "scalar",
              "name": "usize"
            }
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "hand",
          "name": "Cell",
          "dim": null
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "core::cell::rgba",
      "name": "rgba",
      "module": "core::cell",
      "defined_at": "core/cell.rs:84",
      "docs": [
        "Returns the flat rgba bytes of the cells, four to a cell, the stored color where there is one and opaque black everywhere else.",
        "",
        "```",
        "use mrlyrs::core::cell::Cell;",
        "use mrlyrs::core::tensor::Tensor;",
        "assert_eq!(Cell::new(Tensor::new(vec![1, 2])).rgba(), vec![0, 0, 0, 255, 0, 0, 0, 255]);",
        "```"
      ],
      "owner": "core::Cell",
      "self_kind": "ref",
      "params": [],
      "ret": {
        "t": "vec",
        "item": {
          "t": "scalar",
          "name": "u8"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "core::cell::rot90_map",
      "name": "rot90_map",
      "module": "core::cell",
      "defined_at": "core/cell.rs:380",
      "docs": [
        "Builds the flat source index of every destination cell after k quarter turns in the plane of the axes.",
        "",
        "# Errors",
        "",
        "Errs when the axes are not two distinct axes of the shape."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "shape",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "scalar",
              "name": "usize"
            }
          }
        },
        {
          "name": "k",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "axes",
          "ty": {
            "t": "tuple",
            "items": [
              {
                "t": "scalar",
                "name": "usize"
              },
              {
                "t": "scalar",
                "name": "usize"
              }
            ]
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "vec",
          "item": {
            "t": "scalar",
            "name": "usize"
          }
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "core::cell::rotate",
      "name": "rotate",
      "module": "core::cell",
      "defined_at": "core/cell.rs:118",
      "docs": [
        "Rotates the cell k quarter turns in the plane of the given axes, carrying colors and tags along.",
        "",
        "# Errors",
        "",
        "Errs when the axes are not two distinct axes of the cell."
      ],
      "owner": "core::Cell",
      "self_kind": "value",
      "params": [
        {
          "name": "k",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "axes",
          "ty": {
            "t": "tuple",
            "items": [
              {
                "t": "scalar",
                "name": "usize"
              },
              {
                "t": "scalar",
                "name": "usize"
              }
            ]
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "hand",
          "name": "Cell",
          "dim": null
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "core::cell::shape",
      "name": "shape",
      "module": "core::cell",
      "defined_at": "core/cell.rs:62",
      "docs": [
        "Returns the shape of the type tensor."
      ],
      "owner": "core::Cell",
      "self_kind": "ref",
      "params": [],
      "ret": {
        "t": "slice",
        "mutable": false,
        "item": {
          "t": "scalar",
          "name": "usize"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "core::cell::size",
      "name": "size",
      "module": "core::cell",
      "defined_at": "core/cell.rs:66",
      "docs": [
        "Returns the number of cells."
      ],
      "owner": "core::Cell",
      "self_kind": "ref",
      "params": [],
      "ret": {
        "t": "scalar",
        "name": "usize"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "core::cell::tile",
      "name": "tile",
      "module": "core::cell",
      "defined_at": "core/cell.rs:145",
      "docs": [
        "Repeats the cell reps times along each axis, carrying colors and tags along.",
        "",
        "# Errors",
        "",
        "Errs without one count per axis."
      ],
      "owner": "core::Cell",
      "self_kind": "value",
      "params": [
        {
          "name": "reps",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "scalar",
              "name": "usize"
            }
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "hand",
          "name": "Cell",
          "dim": null
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "core::cell::tile_map",
      "name": "tile_map",
      "module": "core::cell",
      "defined_at": "core/cell.rs:294",
      "docs": [
        "Builds the flat source index of every destination cell after tiling reps copies per axis.",
        "",
        "# Errors",
        "",
        "Errs without one count per axis."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "shape",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "scalar",
              "name": "usize"
            }
          }
        },
        {
          "name": "reps",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "scalar",
              "name": "usize"
            }
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "vec",
          "item": {
            "t": "scalar",
            "name": "usize"
          }
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "core::codec::gif",
      "name": "gif",
      "module": "core::codec",
      "defined_at": "core/codec/gif.rs:23",
      "docs": [
        "Encodes indexed frames as an animated gif89a, each source pixel a scale by scale block.",
        "",
        "The frames index one shared palette, the delay is in hundredths of a second, the",
        "animation loops forever, and the first fully transparent palette entry becomes the",
        "frame's transparent color.",
        "",
        "# Errors",
        "",
        "Errs on a scale or side below one, no frames, a palette outside 1 to 256 colors, a frame that is not width by height, an index past the palette, or a scaled side past 16 bits.",
        "",
        "```",
        "let still = [0u8, 1, 1, 0];",
        "let flip = [1u8, 0, 0, 1];",
        "let palette = [[0, 0, 0, 255], [255, 255, 255, 255]];",
        "let bytes = mrlyrs::core::gif(&[&still[..], &flip[..]], &palette, 2, 2, 3, 8).unwrap();",
        "assert_eq!(bytes[bytes.len() - 1], 0x3b);",
        "```"
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "frames",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "slice",
              "mutable": false,
              "item": {
                "t": "scalar",
                "name": "u8"
              }
            }
          }
        },
        {
          "name": "palette",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "array",
              "item": {
                "t": "scalar",
                "name": "u8"
              },
              "len": 4
            }
          }
        },
        {
          "name": "width",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "height",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "scale",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "delay",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "vec",
          "item": {
            "t": "scalar",
            "name": "u8"
          }
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "core::codec::png",
      "name": "png",
      "module": "core::codec",
      "defined_at": "core/codec/png.rs:26",
      "docs": [
        "Encodes rgba colors as a png, drawing each source pixel as a scale by scale block.",
        "",
        "Images of 256 colors or fewer are written as a palette png at the smallest bit depth that",
        "fits; everything else stays 8-bit rgba. Both forms read back through [`unpng`].",
        "",
        "# Errors",
        "",
        "Errs on a scale below one, a colors length that is not width by height, or a scaled side past 32 bits.",
        "",
        "```",
        "let bytes = mrlyrs::core::png(&[[255, 0, 0, 255], [0, 0, 255, 255]], 2, 1, 1)?;",
        "let (width, height, colors) = mrlyrs::core::unpng(&bytes)?;",
        "assert_eq!((width, height, colors[1]), (2, 1, [0, 0, 255, 255]));",
        "# Ok::<(), mrlyrs::Error>(())",
        "```"
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "colors",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "array",
              "item": {
                "t": "scalar",
                "name": "u8"
              },
              "len": 4
            }
          }
        },
        {
          "name": "width",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "height",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "scale",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "vec",
          "item": {
            "t": "scalar",
            "name": "u8"
          }
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "core::colors::Theme::hues",
      "name": "hues",
      "module": "core::colors",
      "defined_at": "core/colors.rs:129",
      "docs": [
        "The thirteen inks in name order."
      ],
      "owner": "core::colors::Theme",
      "self_kind": "ref",
      "params": [],
      "ret": {
        "t": "array",
        "item": {
          "t": "hand",
          "name": "Color",
          "dim": null
        },
        "len": 13
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "core::colors::Theme::inks",
      "name": "inks",
      "module": "core::colors",
      "defined_at": "core/colors.rs:147",
      "docs": [
        "The six inks a figure cycles through: blue, orange, yellow, green, pink, indigo."
      ],
      "owner": "core::colors::Theme",
      "self_kind": "ref",
      "params": [],
      "ret": {
        "t": "array",
        "item": {
          "t": "hand",
          "name": "Color",
          "dim": null
        },
        "len": 6
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "core::colors::alpha",
      "name": "alpha",
      "module": "core::colors",
      "defined_at": "core/colors.rs:302",
      "docs": [
        "Returns the color with its alpha set to level."
      ],
      "owner": "core::Color",
      "self_kind": "ref",
      "params": [
        {
          "name": "level",
          "ty": {
            "t": "scalar",
            "name": "u8"
          }
        }
      ],
      "ret": {
        "t": "hand",
        "name": "Color",
        "dim": null
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "core::colors::board",
      "name": "board",
      "module": "core::colors",
      "defined_at": "core/colors.rs:221",
      "docs": [
        "Returns the ground rgba of the dark or the light theme."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "dark",
          "ty": {
            "t": "scalar",
            "name": "bool"
          }
        }
      ],
      "ret": {
        "t": "array",
        "item": {
          "t": "scalar",
          "name": "u8"
        },
        "len": 4
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "core::colors::css",
      "name": "css",
      "module": "core::colors",
      "defined_at": "core/colors.rs:294",
      "docs": [
        "Formats the color as a css rgb or rgba call."
      ],
      "owner": "core::Color",
      "self_kind": "ref",
      "params": [],
      "ret": {
        "t": "string"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "core::colors::from_hex",
      "name": "from_hex",
      "module": "core::colors",
      "defined_at": "core/colors.rs:275",
      "docs": [
        "Parses a #RRGGBB or #RRGGBBAA code, hash optional.",
        "",
        "# Errors",
        "",
        "Errs when the text is not six or eight ascii hex digits after an optional hash.",
        "",
        "```",
        "assert_eq!(mrlyrs::core::Color::from_hex(\"#ff3d40\").unwrap(), mrlyrs::core::colors::RED);",
        "```"
      ],
      "owner": "core::Color",
      "self_kind": null,
      "params": [
        {
          "name": "hex",
          "ty": {
            "t": "str"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "hand",
          "name": "Color",
          "dim": null
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "core::colors::gradient",
      "name": "gradient",
      "module": "core::colors",
      "defined_at": "core/colors.rs:368",
      "docs": [
        "Builds a gradient of steps colors sweeping evenly through the given stops.",
        "",
        "# Errors",
        "",
        "Errs on an empty stop list or fewer than one step."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "colors",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "hand",
              "name": "Color",
              "dim": null
            }
          }
        },
        {
          "name": "steps",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "vec",
          "item": {
            "t": "hand",
            "name": "Color",
            "dim": null
          }
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "core::colors::ink",
      "name": "ink",
      "module": "core::colors",
      "defined_at": "core/colors.rs:227",
      "docs": [
        "Returns the foreground rgba of the dark or the light theme."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "dark",
          "ty": {
            "t": "scalar",
            "name": "bool"
          }
        }
      ],
      "ret": {
        "t": "array",
        "item": {
          "t": "scalar",
          "name": "u8"
        },
        "len": 4
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "core::colors::invert",
      "name": "invert",
      "module": "core::colors",
      "defined_at": "core/colors.rs:306",
      "docs": [
        "Returns the color with every channel flipped and the alpha kept."
      ],
      "owner": "core::Color",
      "self_kind": "ref",
      "params": [],
      "ret": {
        "t": "hand",
        "name": "Color",
        "dim": null
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "core::colors::lightness",
      "name": "lightness",
      "module": "core::colors",
      "defined_at": "core/colors.rs:314",
      "docs": [
        "Returns the color scaled toward black below level 50 and toward white above.",
        "",
        "# Errors",
        "",
        "Errs when the level is past 100."
      ],
      "owner": "core::Color",
      "self_kind": "ref",
      "params": [
        {
          "name": "level",
          "ty": {
            "t": "scalar",
            "name": "u8"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "hand",
          "name": "Color",
          "dim": null
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "core::colors::luma_types",
      "name": "luma_types",
      "module": "core::colors",
      "defined_at": "core/colors.rs:431",
      "docs": [
        "Reads rgba pixels as a type grid, one wherever the rgb mean falls below the level."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "pixels",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "array",
              "item": {
                "t": "scalar",
                "name": "u8"
              },
              "len": 4
            }
          }
        },
        {
          "name": "width",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "height",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "level",
          "ty": {
            "t": "scalar",
            "name": "u8"
          }
        }
      ],
      "ret": {
        "t": "hand",
        "name": "Tensor",
        "dim": null
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "core::colors::mix",
      "name": "mix",
      "module": "core::colors",
      "defined_at": "core/colors.rs:350",
      "docs": [
        "Blends two colors linearly by ratio.",
        "",
        "# Errors",
        "",
        "Errs when the ratio falls outside zero to one."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "color_1",
          "ty": {
            "t": "hand",
            "name": "Color",
            "dim": null
          }
        },
        {
          "name": "color_2",
          "ty": {
            "t": "hand",
            "name": "Color",
            "dim": null
          }
        },
        {
          "name": "ratio",
          "ty": {
            "t": "scalar",
            "name": "f64"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "hand",
          "name": "Color",
          "dim": null
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "core::colors::named",
      "name": "named",
      "module": "core::colors",
      "defined_at": "core/colors.rs:213",
      "docs": [
        "Returns the palette color a name spells.",
        "",
        "# Errors",
        "",
        "Errs when no palette color carries the name."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "name",
          "ty": {
            "t": "str"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "hand",
          "name": "Color",
          "dim": null
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "core::colors::random",
      "name": "random",
      "module": "core::colors",
      "defined_at": "core/colors.rs:335",
      "docs": [
        "Draws a color from the stream, opaque unless alpha is asked for."
      ],
      "owner": "core::Color",
      "self_kind": null,
      "params": [
        {
          "name": "alpha",
          "ty": {
            "t": "scalar",
            "name": "bool"
          }
        },
        {
          "name": "rng",
          "ty": {
            "t": "ref",
            "mutable": true,
            "lifetime": null,
            "item": {
              "t": "hand",
              "name": "Rng",
              "dim": null
            }
          }
        }
      ],
      "ret": {
        "t": "hand",
        "name": "Color",
        "dim": null
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "core::colors::rgb",
      "name": "rgb",
      "module": "core::colors",
      "defined_at": "core/colors.rs:246",
      "docs": [
        "Builds an opaque color."
      ],
      "owner": "core::Color",
      "self_kind": null,
      "params": [
        {
          "name": "r",
          "ty": {
            "t": "scalar",
            "name": "u8"
          }
        },
        {
          "name": "g",
          "ty": {
            "t": "scalar",
            "name": "u8"
          }
        },
        {
          "name": "b",
          "ty": {
            "t": "scalar",
            "name": "u8"
          }
        }
      ],
      "ret": {
        "t": "hand",
        "name": "Color",
        "dim": null
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": true,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "core::colors::rgba",
      "name": "rgba",
      "module": "core::colors",
      "defined_at": "core/colors.rs:250",
      "docs": [
        "Builds a color with an explicit alpha."
      ],
      "owner": "core::Color",
      "self_kind": null,
      "params": [
        {
          "name": "r",
          "ty": {
            "t": "scalar",
            "name": "u8"
          }
        },
        {
          "name": "g",
          "ty": {
            "t": "scalar",
            "name": "u8"
          }
        },
        {
          "name": "b",
          "ty": {
            "t": "scalar",
            "name": "u8"
          }
        },
        {
          "name": "a",
          "ty": {
            "t": "scalar",
            "name": "u8"
          }
        }
      ],
      "ret": {
        "t": "hand",
        "name": "Color",
        "dim": null
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": true,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "core::colors::shades",
      "name": "shades",
      "module": "core::colors",
      "defined_at": "core/colors.rs:68",
      "docs": [
        "Returns a hue one shade lighter, itself, and one shade darker."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "hue",
          "ty": {
            "t": "hand",
            "name": "Color",
            "dim": null
          }
        }
      ],
      "ret": {
        "t": "array",
        "item": {
          "t": "hand",
          "name": "Color",
          "dim": null
        },
        "len": 3
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "core::colors::snap",
      "name": "snap",
      "module": "core::colors",
      "defined_at": "core/colors.rs:400",
      "docs": [
        "Snaps every pixel to the palette color nearest it in squared rgba distance, first on a tie.",
        "",
        "Returns the pixels untouched when the palette is empty."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "pixels",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "array",
              "item": {
                "t": "scalar",
                "name": "u8"
              },
              "len": 4
            }
          }
        },
        {
          "name": "palette",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "hand",
              "name": "Color",
              "dim": null
            }
          }
        }
      ],
      "ret": {
        "t": "vec",
        "item": {
          "t": "array",
          "item": {
            "t": "scalar",
            "name": "u8"
          },
          "len": 4
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "core::colors::to_hex",
      "name": "to_hex",
      "module": "core::colors",
      "defined_at": "core/colors.rs:259",
      "docs": [
        "Formats the color as lowercase hex, appending the alpha pair only when not opaque.",
        "",
        "```",
        "use mrlyrs::core::Color;",
        "assert_eq!(Color::rgba(0, 140, 255, 128).to_hex(), \"#008cff80\");",
        "```"
      ],
      "owner": "core::Color",
      "self_kind": "ref",
      "params": [],
      "ret": {
        "t": "string"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "core::error::overflow_error",
      "name": "overflow_error",
      "module": "core::error",
      "defined_at": "core/error.rs:67",
      "docs": [
        "Wraps a message in an Err of the overflow variant.",
        "",
        "# Errors",
        "",
        "Always errs; the Ok side is only there to fit the caller's return type."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "message",
          "ty": {
            "t": "unknown",
            "text": "impl Trait argument impl Into < String >"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "unknown",
          "text": "generic T"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "skip",
        "reason": "error constructor"
      }
    },
    {
      "path": "core::error::parse",
      "name": "parse",
      "module": "core::error",
      "defined_at": "core/error.rs:106",
      "docs": [
        "Parses JSON text into a value.",
        "",
        "# Errors",
        "",
        "Errs when the text is not valid json, naming where it broke.",
        "",
        "```",
        "let v = mrlyrs::core::error::parse(r#\"{\"tags\": [3, 5]}\"#).unwrap();",
        "assert_eq!(v[\"tags\"][1], 5);",
        "assert!(mrlyrs::core::error::parse(\"[1,\").is_err());",
        "```"
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "text",
          "ty": {
            "t": "str"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "json"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "core::error::shape_error",
      "name": "shape_error",
      "module": "core::error",
      "defined_at": "core/error.rs:58",
      "docs": [
        "Wraps a message in an Err of the shape variant.",
        "",
        "# Errors",
        "",
        "Always errs; the Ok side is only there to fit the caller's return type."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "message",
          "ty": {
            "t": "unknown",
            "text": "impl Trait argument impl Into < String >"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "unknown",
          "text": "generic T"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "skip",
        "reason": "error constructor"
      }
    },
    {
      "path": "core::error::value_error",
      "name": "value_error",
      "module": "core::error",
      "defined_at": "core/error.rs:49",
      "docs": [
        "Wraps a message in an Err of the value variant.",
        "",
        "# Errors",
        "",
        "Always errs; the Ok side is only there to fit the caller's return type."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "message",
          "ty": {
            "t": "unknown",
            "text": "impl Trait argument impl Into < String >"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "unknown",
          "text": "generic T"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "skip",
        "reason": "error constructor"
      }
    },
    {
      "path": "core::hex_fit",
      "name": "hex_fit",
      "module": "core",
      "defined_at": "core/resample.rs:37",
      "docs": [
        "Squashes rgba pixels to the hex aspect, returning the new width, height and pixels.",
        "",
        "# Errors",
        "",
        "Errs on a side of zero or a pixels length that is not width by height."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "pixels",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "array",
              "item": {
                "t": "scalar",
                "name": "u8"
              },
              "len": 4
            }
          }
        },
        {
          "name": "width",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "height",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "vertical",
          "ty": {
            "t": "scalar",
            "name": "bool"
          }
        },
        {
          "name": "filter",
          "ty": {
            "t": "enum",
            "path": "core::Filter"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "tuple",
          "items": [
            {
              "t": "scalar",
              "name": "usize"
            },
            {
              "t": "scalar",
              "name": "usize"
            },
            {
              "t": "vec",
              "item": {
                "t": "array",
                "item": {
                  "t": "scalar",
                  "name": "u8"
                },
                "len": 4
              }
            }
          ]
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "core::hex_size",
      "name": "hex_size",
      "module": "core",
      "defined_at": "core/resample.rs:24",
      "docs": [
        "Returns the size a hex rendering wears, the named axis squashed by the triangle ratio.",
        "",
        "```",
        "assert_eq!(mrlyrs::core::resample::hex_size(100, 100, true), (86, 100));",
        "assert_eq!(mrlyrs::core::resample::hex_size(100, 100, false), (100, 86));",
        "```"
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "width",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "height",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "vertical",
          "ty": {
            "t": "scalar",
            "name": "bool"
          }
        }
      ],
      "ret": {
        "t": "tuple",
        "items": [
          {
            "t": "scalar",
            "name": "usize"
          },
          {
            "t": "scalar",
            "name": "usize"
          }
        ]
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "core::image::blur",
      "name": "blur",
      "module": "core::image",
      "defined_at": "core/image.rs:95",
      "docs": [
        "Box-blurs rgba pixels by radius, each channel the mean of its edge-padded window."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "pixels",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "array",
              "item": {
                "t": "scalar",
                "name": "u8"
              },
              "len": 4
            }
          }
        },
        {
          "name": "width",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "height",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "radius",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "vec",
        "item": {
          "t": "array",
          "item": {
            "t": "scalar",
            "name": "u8"
          },
          "len": 4
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "core::paint::Config::default",
      "name": "default",
      "module": "core::paint",
      "defined_at": "core/paint.rs:136",
      "docs": [
        "Returns the default Config."
      ],
      "owner": "core::paint::Config",
      "self_kind": null,
      "params": [],
      "ret": {
        "t": "plain",
        "path": "core::paint::Config"
      },
      "dims": [],
      "trait": null,
      "source": "default",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "core::paint::Edition::all",
      "name": "all",
      "module": "core::paint",
      "defined_at": "core/paint.rs:14",
      "docs": [
        "Returns every Edition in canonical order."
      ],
      "owner": "core::paint::Edition",
      "self_kind": null,
      "params": [],
      "ret": {
        "t": "array",
        "item": {
          "t": "enum",
          "path": "core::paint::Edition"
        },
        "len": 7
      },
      "dims": [],
      "trait": null,
      "source": "named_enum",
      "constant": true,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "core::paint::Edition::mode",
      "name": "mode",
      "module": "core::paint",
      "defined_at": "core/paint.rs:96",
      "docs": [
        "Returns the cell-painting mode this edition renders with, or None for Random, which scatters."
      ],
      "owner": "core::paint::Edition",
      "self_kind": "value",
      "params": [],
      "ret": {
        "t": "option",
        "item": {
          "t": "enum",
          "path": "core::Mode"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "core::paint::Edition::name",
      "name": "name",
      "module": "core::paint",
      "defined_at": "core/paint.rs:14",
      "docs": [
        "Returns the Edition's display name."
      ],
      "owner": "core::paint::Edition",
      "self_kind": "ref",
      "params": [],
      "ret": {
        "t": "ref",
        "mutable": false,
        "lifetime": "'static",
        "item": {
          "t": "str"
        }
      },
      "dims": [],
      "trait": null,
      "source": "named_enum",
      "constant": false,
      "cross": {
        "status": "skip",
        "reason": "&'static return"
      }
    },
    {
      "path": "core::paint::Ink::all",
      "name": "all",
      "module": "core::paint",
      "defined_at": "core/paint.rs:35",
      "docs": [
        "Returns every Ink in canonical order."
      ],
      "owner": "core::paint::Ink",
      "self_kind": null,
      "params": [],
      "ret": {
        "t": "array",
        "item": {
          "t": "enum",
          "path": "core::paint::Ink"
        },
        "len": 15
      },
      "dims": [],
      "trait": null,
      "source": "named_enum",
      "constant": true,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "core::paint::Ink::color",
      "name": "color",
      "module": "core::paint",
      "defined_at": "core/paint.rs:111",
      "docs": [
        "Returns the ink's color."
      ],
      "owner": "core::paint::Ink",
      "self_kind": "value",
      "params": [],
      "ret": {
        "t": "hand",
        "name": "Color",
        "dim": null
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "core::paint::Ink::name",
      "name": "name",
      "module": "core::paint",
      "defined_at": "core/paint.rs:35",
      "docs": [
        "Returns the Ink's display name."
      ],
      "owner": "core::paint::Ink",
      "self_kind": "ref",
      "params": [],
      "ret": {
        "t": "ref",
        "mutable": false,
        "lifetime": "'static",
        "item": {
          "t": "str"
        }
      },
      "dims": [],
      "trait": null,
      "source": "named_enum",
      "constant": false,
      "cross": {
        "status": "skip",
        "reason": "&'static return"
      }
    },
    {
      "path": "core::paint::Paint::is_simple",
      "name": "is_simple",
      "module": "core::paint",
      "defined_at": "core/paint.rs:175",
      "docs": [
        "Returns true for the Simple edition."
      ],
      "owner": "core::paint::Paint",
      "self_kind": "ref",
      "params": [],
      "ret": {
        "t": "scalar",
        "name": "bool"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "core::paint::Paint::new",
      "name": "new",
      "module": "core::paint",
      "defined_at": "core/paint.rs:164",
      "docs": [
        "Builds a black-primary, fill-target, multicolor paint for an edition."
      ],
      "owner": "core::paint::Paint",
      "self_kind": null,
      "params": [
        {
          "name": "edition",
          "ty": {
            "t": "enum",
            "path": "core::paint::Edition"
          }
        }
      ],
      "ret": {
        "t": "class",
        "path": "core::paint::Paint",
        "dim": null
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "core::paint::Scheme::all",
      "name": "all",
      "module": "core::paint",
      "defined_at": "core/paint.rs:72",
      "docs": [
        "Returns every Scheme in canonical order."
      ],
      "owner": "core::paint::Scheme",
      "self_kind": null,
      "params": [],
      "ret": {
        "t": "array",
        "item": {
          "t": "enum",
          "path": "core::paint::Scheme"
        },
        "len": 2
      },
      "dims": [],
      "trait": null,
      "source": "named_enum",
      "constant": true,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "core::paint::Scheme::name",
      "name": "name",
      "module": "core::paint",
      "defined_at": "core/paint.rs:72",
      "docs": [
        "Returns the Scheme's display name."
      ],
      "owner": "core::paint::Scheme",
      "self_kind": "ref",
      "params": [],
      "ret": {
        "t": "ref",
        "mutable": false,
        "lifetime": "'static",
        "item": {
          "t": "str"
        }
      },
      "dims": [],
      "trait": null,
      "source": "named_enum",
      "constant": false,
      "cross": {
        "status": "skip",
        "reason": "&'static return"
      }
    },
    {
      "path": "core::paint::Target::all",
      "name": "all",
      "module": "core::paint",
      "defined_at": "core/paint.rs:83",
      "docs": [
        "Returns every Target in canonical order."
      ],
      "owner": "core::paint::Target",
      "self_kind": null,
      "params": [],
      "ret": {
        "t": "array",
        "item": {
          "t": "enum",
          "path": "core::paint::Target"
        },
        "len": 2
      },
      "dims": [],
      "trait": null,
      "source": "named_enum",
      "constant": true,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "core::paint::Target::name",
      "name": "name",
      "module": "core::paint",
      "defined_at": "core/paint.rs:83",
      "docs": [
        "Returns the Target's display name."
      ],
      "owner": "core::paint::Target",
      "self_kind": "ref",
      "params": [],
      "ret": {
        "t": "ref",
        "mutable": false,
        "lifetime": "'static",
        "item": {
          "t": "str"
        }
      },
      "dims": [],
      "trait": null,
      "source": "named_enum",
      "constant": false,
      "cross": {
        "status": "skip",
        "reason": "&'static return"
      }
    },
    {
      "path": "core::paint::apply",
      "name": "apply",
      "module": "core::paint",
      "defined_at": "core/paint.rs:404",
      "docs": [
        "Colors the cell from the paint's inks under its edition mode, scattering the Random edition from the stream.",
        "",
        "# Errors",
        "",
        "Errs when a multitone paint carries no base color to shade."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "paint",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "class",
              "path": "core::paint::Paint",
              "dim": null
            }
          }
        },
        {
          "name": "cell",
          "ty": {
            "t": "ref",
            "mutable": true,
            "lifetime": null,
            "item": {
              "t": "hand",
              "name": "Cell",
              "dim": null
            }
          }
        },
        {
          "name": "rng",
          "ty": {
            "t": "ref",
            "mutable": true,
            "lifetime": null,
            "item": {
              "t": "hand",
              "name": "Rng",
              "dim": null
            }
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "unit"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "core::paint::coat",
      "name": "coat",
      "module": "core::paint",
      "defined_at": "core/paint.rs:446",
      "docs": [
        "Replays a stored paint onto a cell, tagging first and applying it from the stream.",
        "",
        "# Errors",
        "",
        "Errs when the tagging or the coloring does."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "cell",
          "ty": {
            "t": "ref",
            "mutable": true,
            "lifetime": null,
            "item": {
              "t": "hand",
              "name": "Cell",
              "dim": null
            }
          }
        },
        {
          "name": "paint",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "class",
              "path": "core::paint::Paint",
              "dim": null
            }
          }
        },
        {
          "name": "mask",
          "ty": {
            "t": "option",
            "item": {
              "t": "ref",
              "mutable": false,
              "lifetime": null,
              "item": {
                "t": "hand",
                "name": "Tensor",
                "dim": null
              }
            }
          }
        },
        {
          "name": "rng",
          "ty": {
            "t": "ref",
            "mutable": true,
            "lifetime": null,
            "item": {
              "t": "hand",
              "name": "Rng",
              "dim": null
            }
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "unit"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "core::paint::paint",
      "name": "paint",
      "module": "core::paint",
      "defined_at": "core/paint.rs:456",
      "docs": [
        "Draws a random paint under the config, applies it to the cell, and returns the recipe.",
        "",
        "# Errors",
        "",
        "Errs when the tagging or the coloring does."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "cell",
          "ty": {
            "t": "ref",
            "mutable": true,
            "lifetime": null,
            "item": {
              "t": "hand",
              "name": "Cell",
              "dim": null
            }
          }
        },
        {
          "name": "config",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "plain",
              "path": "core::paint::Config"
            }
          }
        },
        {
          "name": "mask",
          "ty": {
            "t": "option",
            "item": {
              "t": "ref",
              "mutable": false,
              "lifetime": null,
              "item": {
                "t": "hand",
                "name": "Tensor",
                "dim": null
              }
            }
          }
        },
        {
          "name": "rng",
          "ty": {
            "t": "ref",
            "mutable": true,
            "lifetime": null,
            "item": {
              "t": "hand",
              "name": "Rng",
              "dim": null
            }
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "class",
          "path": "core::paint::Paint",
          "dim": null
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "core::paint::prime",
      "name": "prime",
      "module": "core::paint",
      "defined_at": "core/paint.rs:360",
      "docs": [
        "Tags the cell for Layers and Neighbors paints and sizes the palette to the tag count.",
        "",
        "# Errors",
        "",
        "Errs when the tagging does."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "paint",
          "ty": {
            "t": "class",
            "path": "core::paint::Paint",
            "dim": null
          }
        },
        {
          "name": "cell",
          "ty": {
            "t": "ref",
            "mutable": true,
            "lifetime": null,
            "item": {
              "t": "hand",
              "name": "Cell",
              "dim": null
            }
          }
        },
        {
          "name": "mask",
          "ty": {
            "t": "option",
            "item": {
              "t": "ref",
              "mutable": false,
              "lifetime": null,
              "item": {
                "t": "hand",
                "name": "Tensor",
                "dim": null
              }
            }
          }
        },
        {
          "name": "rng",
          "ty": {
            "t": "ref",
            "mutable": true,
            "lifetime": null,
            "item": {
              "t": "hand",
              "name": "Rng",
              "dim": null
            }
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "class",
          "path": "core::paint::Paint",
          "dim": null
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "core::paint::random_edition",
      "name": "random_edition",
      "module": "core::paint",
      "defined_at": "core/paint.rs:185",
      "docs": [
        "Draws a random edition from the allowed list, or from all seven."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "editions",
          "ty": {
            "t": "option",
            "item": {
              "t": "slice",
              "mutable": false,
              "item": {
                "t": "enum",
                "path": "core::paint::Edition"
              }
            }
          }
        },
        {
          "name": "rng",
          "ty": {
            "t": "ref",
            "mutable": true,
            "lifetime": null,
            "item": {
              "t": "hand",
              "name": "Rng",
              "dim": null
            }
          }
        }
      ],
      "ret": {
        "t": "enum",
        "path": "core::paint::Edition"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "core::paint::reroll",
      "name": "reroll",
      "module": "core::paint",
      "defined_at": "core/paint.rs:236",
      "docs": [
        "Redraws the paint's secondary inks and shades under its scheme."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "paint",
          "ty": {
            "t": "class",
            "path": "core::paint::Paint",
            "dim": null
          }
        },
        {
          "name": "rng",
          "ty": {
            "t": "ref",
            "mutable": true,
            "lifetime": null,
            "item": {
              "t": "hand",
              "name": "Rng",
              "dim": null
            }
          }
        }
      ],
      "ret": {
        "t": "class",
        "path": "core::paint::Paint",
        "dim": null
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "core::paint::setup",
      "name": "setup",
      "module": "core::paint",
      "defined_at": "core/paint.rs:259",
      "docs": [
        "Draws the paint's scheme, target and primary under the config, then rerolls the rest."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "paint",
          "ty": {
            "t": "class",
            "path": "core::paint::Paint",
            "dim": null
          }
        },
        {
          "name": "config",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "plain",
              "path": "core::paint::Config"
            }
          }
        },
        {
          "name": "rng",
          "ty": {
            "t": "ref",
            "mutable": true,
            "lifetime": null,
            "item": {
              "t": "hand",
              "name": "Rng",
              "dim": null
            }
          }
        }
      ],
      "ret": {
        "t": "class",
        "path": "core::paint::Paint",
        "dim": null
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "core::paint::tag",
      "name": "tag",
      "module": "core::paint",
      "defined_at": "core/paint.rs:328",
      "docs": [
        "Tags the cell for the Layers and Neighbors editions and returns the distinct tag count on the secondary side.",
        "",
        "# Errors",
        "",
        "Errs when the Neighbors mask does not fit the cell."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "cell",
          "ty": {
            "t": "ref",
            "mutable": true,
            "lifetime": null,
            "item": {
              "t": "hand",
              "name": "Cell",
              "dim": null
            }
          }
        },
        {
          "name": "edition",
          "ty": {
            "t": "enum",
            "path": "core::paint::Edition"
          }
        },
        {
          "name": "target",
          "ty": {
            "t": "enum",
            "path": "core::paint::Target"
          }
        },
        {
          "name": "mask",
          "ty": {
            "t": "option",
            "item": {
              "t": "ref",
              "mutable": false,
              "lifetime": null,
              "item": {
                "t": "hand",
                "name": "Tensor",
                "dim": null
              }
            }
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "scalar",
          "name": "usize"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "core::ramp::color",
      "name": "color",
      "module": "core::ramp",
      "defined_at": "core/ramp.rs:61",
      "docs": [
        "Returns the color for one value against the range maximum: the background at zero, the top of the ramp from the maximum up.",
        "",
        "```",
        "use mrlyrs::core::{colors::WHITE, ramp::color, Colorizer};",
        "assert_eq!(color(&Colorizer::heat(), 0, 10), WHITE);",
        "```"
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "colorizer",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "plain",
              "path": "core::Colorizer"
            }
          }
        },
        {
          "name": "value",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "max",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "hand",
        "name": "Color",
        "dim": null
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "core::ramp::colors",
      "name": "colors",
      "module": "core::ramp",
      "defined_at": "core/ramp.rs:77",
      "docs": [
        "Maps a slice of values to rgba pixels against the range maximum."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "colorizer",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "plain",
              "path": "core::Colorizer"
            }
          }
        },
        {
          "name": "values",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "scalar",
              "name": "usize"
            }
          }
        },
        {
          "name": "max",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "vec",
        "item": {
          "t": "array",
          "item": {
            "t": "scalar",
            "name": "u8"
          },
          "len": 4
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "core::resample",
      "name": "resample",
      "module": "core",
      "defined_at": "core/resample.rs:61",
      "docs": [
        "Resamples rgba pixels to a new size.",
        "",
        "# Errors",
        "",
        "Errs on a side of zero, a pixels length that is not width by height, or an output size that overflows.",
        "",
        "```",
        "let pixels = [[255, 0, 0, 255], [0, 0, 255, 255]];",
        "let filter = mrlyrs::core::resample::Filter::Nearest;",
        "let wide = mrlyrs::core::resample::resample(&pixels, 2, 1, 4, 1, filter).unwrap();",
        "assert_eq!(wide, vec![pixels[0], pixels[0], pixels[1], pixels[1]]);",
        "```"
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "pixels",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "array",
              "item": {
                "t": "scalar",
                "name": "u8"
              },
              "len": 4
            }
          }
        },
        {
          "name": "width",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "height",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "out_w",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "out_h",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "filter",
          "ty": {
            "t": "enum",
            "path": "core::Filter"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "vec",
          "item": {
            "t": "array",
            "item": {
              "t": "scalar",
              "name": "u8"
            },
            "len": 4
          }
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "core::rng::below",
      "name": "below",
      "module": "core::rng",
      "defined_at": "core/rng.rs:68",
      "docs": [
        "Draws an integer below n, or zero when n is zero."
      ],
      "owner": "core::Rng",
      "self_kind": "mut",
      "params": [
        {
          "name": "n",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "scalar",
        "name": "usize"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "core::rng::boolean",
      "name": "boolean",
      "module": "core::rng",
      "defined_at": "core/rng.rs:80",
      "docs": [
        "Draws a fair coin flip."
      ],
      "owner": "core::Rng",
      "self_kind": "mut",
      "params": [],
      "ret": {
        "t": "scalar",
        "name": "bool"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "core::rng::chance",
      "name": "chance",
      "module": "core::rng",
      "defined_at": "core/rng.rs:84",
      "docs": [
        "Returns true with probability p."
      ],
      "owner": "core::Rng",
      "self_kind": "mut",
      "params": [
        {
          "name": "p",
          "ty": {
            "t": "scalar",
            "name": "f64"
          }
        }
      ],
      "ret": {
        "t": "scalar",
        "name": "bool"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "core::rng::choice",
      "name": "choice",
      "module": "core::rng",
      "defined_at": "core/rng.rs:92",
      "docs": [
        "Draws one element of the slice.",
        "",
        "# Errors",
        "",
        "Errs when the slice is empty."
      ],
      "owner": "core::Rng",
      "self_kind": "mut",
      "params": [
        {
          "name": "items",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": "'a",
            "item": {
              "t": "slice",
              "mutable": false,
              "item": {
                "t": "unknown",
                "text": "generic T"
              }
            }
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "ref",
          "mutable": false,
          "lifetime": "'a",
          "item": {
            "t": "unknown",
            "text": "generic T"
          }
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "skip",
        "reason": "generic over T"
      }
    },
    {
      "path": "core::rng::new",
      "name": "new",
      "module": "core::rng",
      "defined_at": "core/rng.rs:26",
      "docs": [
        "Builds the stream from a seed.",
        "",
        "```",
        "use mrlyrs::core::Rng;",
        "let mut rng = Rng::new(42);",
        "assert_eq!(rng.below(6), Rng::new(42).below(6));",
        "```"
      ],
      "owner": "core::Rng",
      "self_kind": null,
      "params": [
        {
          "name": "seed",
          "ty": {
            "t": "scalar",
            "name": "u64"
          }
        }
      ],
      "ret": {
        "t": "hand",
        "name": "Rng",
        "dim": null
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "core::rng::range",
      "name": "range",
      "module": "core::rng",
      "defined_at": "core/rng.rs:72",
      "docs": [
        "Draws an integer between lo and hi inclusive, or lo when hi is not above lo."
      ],
      "owner": "core::Rng",
      "self_kind": "mut",
      "params": [
        {
          "name": "lo",
          "ty": {
            "t": "scalar",
            "name": "i64"
          }
        },
        {
          "name": "hi",
          "ty": {
            "t": "scalar",
            "name": "i64"
          }
        }
      ],
      "ret": {
        "t": "scalar",
        "name": "i64"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "core::rng::sample_indices",
      "name": "sample_indices",
      "module": "core::rng",
      "defined_at": "core/rng.rs:105",
      "docs": [
        "Draws amount distinct indices below length, or every index when amount is larger."
      ],
      "owner": "core::Rng",
      "self_kind": "mut",
      "params": [
        {
          "name": "length",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "amount",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "vec",
        "item": {
          "t": "scalar",
          "name": "usize"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "core::rng::shuffle",
      "name": "shuffle",
      "module": "core::rng",
      "defined_at": "core/rng.rs:99",
      "docs": [
        "Shuffles the slice in place."
      ],
      "owner": "core::Rng",
      "self_kind": "mut",
      "params": [
        {
          "name": "seq",
          "ty": {
            "t": "slice",
            "mutable": true,
            "item": {
              "t": "unknown",
              "text": "generic T"
            }
          }
        }
      ],
      "ret": {
        "t": "unit"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "skip",
        "reason": "generic over T"
      }
    },
    {
      "path": "core::rng::unit",
      "name": "unit",
      "module": "core::rng",
      "defined_at": "core/rng.rs:64",
      "docs": [
        "Draws a float at or above zero and below one."
      ],
      "owner": "core::Rng",
      "self_kind": "mut",
      "params": [],
      "ret": {
        "t": "scalar",
        "name": "f64"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "core::tensor::at",
      "name": "at",
      "module": "core::tensor",
      "defined_at": "core/tensor.rs:395",
      "docs": [
        "Returns the element at a flat index, which must be below the size like a slice index."
      ],
      "owner": "core::Tensor",
      "self_kind": "ref",
      "params": [
        {
          "name": "flat",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "scalar",
        "name": "i64"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "core::tensor::binarize",
      "name": "binarize",
      "module": "core::tensor",
      "defined_at": "core/tensor.rs:674",
      "docs": [
        "Maps every element to one at or above the threshold, zero below."
      ],
      "owner": "core::Tensor",
      "self_kind": "ref",
      "params": [
        {
          "name": "threshold",
          "ty": {
            "t": "scalar",
            "name": "u8"
          }
        }
      ],
      "ret": {
        "t": "hand",
        "name": "Tensor",
        "dim": null
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "core::tensor::binarize_otsu",
      "name": "binarize_otsu",
      "module": "core::tensor",
      "defined_at": "core/tensor.rs:723",
      "docs": [
        "Binarizes at one above the Otsu threshold."
      ],
      "owner": "core::Tensor",
      "self_kind": "ref",
      "params": [],
      "ret": {
        "t": "hand",
        "name": "Tensor",
        "dim": null
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "core::tensor::blur",
      "name": "blur",
      "module": "core::tensor",
      "defined_at": "core/tensor.rs:731",
      "docs": [
        "Averages every position over its masked neighborhood, rounded.",
        "",
        "# Errors",
        "",
        "Errs on a mask of another rank, an even side, or a mask with nothing on."
      ],
      "owner": "core::Tensor",
      "self_kind": "ref",
      "params": [
        {
          "name": "mask",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "hand",
              "name": "Tensor",
              "dim": null
            }
          }
        },
        {
          "name": "wrap",
          "ty": {
            "t": "scalar",
            "name": "bool"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "hand",
          "name": "Tensor",
          "dim": null
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "core::tensor::bytes",
      "name": "bytes",
      "module": "core::tensor",
      "defined_at": "core/tensor.rs:344",
      "docs": [
        "Returns the elements as bytes.",
        "",
        "# Errors",
        "",
        "Errs when the tensor is wider than one byte."
      ],
      "owner": "core::Tensor",
      "self_kind": "ref",
      "params": [],
      "ret": {
        "t": "result",
        "item": {
          "t": "slice",
          "mutable": false,
          "item": {
            "t": "scalar",
            "name": "u8"
          }
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "core::tensor::bytes_mut",
      "name": "bytes_mut",
      "module": "core::tensor",
      "defined_at": "core/tensor.rs:355",
      "docs": [
        "Returns the elements as mutable bytes.",
        "",
        "# Errors",
        "",
        "Errs when the tensor is wider than one byte."
      ],
      "owner": "core::Tensor",
      "self_kind": "mut",
      "params": [],
      "ret": {
        "t": "result",
        "item": {
          "t": "slice",
          "mutable": true,
          "item": {
            "t": "scalar",
            "name": "u8"
          }
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "skip",
        "reason": "mutable borrow return"
      }
    },
    {
      "path": "core::tensor::count",
      "name": "count",
      "module": "core::tensor",
      "defined_at": "core/tensor.rs:818",
      "docs": [
        "Counts the cells holding one value."
      ],
      "owner": "core::Tensor",
      "self_kind": "ref",
      "params": [
        {
          "name": "value",
          "ty": {
            "t": "scalar",
            "name": "u8"
          }
        }
      ],
      "ret": {
        "t": "scalar",
        "name": "usize"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "core::tensor::dtype",
      "name": "dtype",
      "module": "core::tensor",
      "defined_at": "core/tensor.rs:332",
      "docs": [
        "Returns the element width."
      ],
      "owner": "core::Tensor",
      "self_kind": "ref",
      "params": [],
      "ret": {
        "t": "enum",
        "path": "core::Dtype"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "core::tensor::exposed",
      "name": "exposed",
      "module": "core::tensor",
      "defined_at": "core/tensor.rs:824",
      "docs": [
        "Counts the faces where filled cells meet empty cells or the boundary: perimeter in 2d, surface in 3d."
      ],
      "owner": "core::Tensor",
      "self_kind": "ref",
      "params": [],
      "ret": {
        "t": "u128"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "core::tensor::filled",
      "name": "filled",
      "module": "core::tensor",
      "defined_at": "core/tensor.rs:261",
      "docs": [
        "Builds a tensor of the shape and width filled with one value."
      ],
      "owner": "core::Tensor",
      "self_kind": null,
      "params": [
        {
          "name": "shape",
          "ty": {
            "t": "vec",
            "item": {
              "t": "scalar",
              "name": "usize"
            }
          }
        },
        {
          "name": "value",
          "ty": {
            "t": "scalar",
            "name": "i64"
          }
        },
        {
          "name": "dtype",
          "ty": {
            "t": "enum",
            "path": "core::Dtype"
          }
        }
      ],
      "ret": {
        "t": "hand",
        "name": "Tensor",
        "dim": null
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "core::tensor::flip",
      "name": "flip",
      "module": "core::tensor",
      "defined_at": "core/tensor.rs:522",
      "docs": [
        "Reverses the tensor along one axis.",
        "",
        "# Errors",
        "",
        "Errs when the axis is past the rank."
      ],
      "owner": "core::Tensor",
      "self_kind": "ref",
      "params": [
        {
          "name": "axis",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "hand",
          "name": "Tensor",
          "dim": null
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "core::tensor::fractal",
      "name": "fractal",
      "module": "core::tensor",
      "defined_at": "core/tensor.rs:489",
      "docs": [
        "Folds the tensor into its level-fold Kronecker power.",
        "",
        "```",
        "use mrlyrs::core::tensor::Tensor;",
        "let f = Tensor::of(vec![1, 1, 0, 1], vec![2, 2]).unwrap().fractal(2);",
        "assert_eq!(f.shape, vec![4, 4]);",
        "assert_eq!(f.sum(), 9);",
        "```"
      ],
      "owner": "core::Tensor",
      "self_kind": "ref",
      "params": [
        {
          "name": "level",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "hand",
        "name": "Tensor",
        "dim": null
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "core::tensor::full",
      "name": "full",
      "module": "core::tensor",
      "defined_at": "core/tensor.rs:249",
      "docs": [
        "Builds a u8 tensor filled with one value."
      ],
      "owner": "core::Tensor",
      "self_kind": null,
      "params": [
        {
          "name": "shape",
          "ty": {
            "t": "vec",
            "item": {
              "t": "scalar",
              "name": "usize"
            }
          }
        },
        {
          "name": "value",
          "ty": {
            "t": "scalar",
            "name": "u8"
          }
        }
      ],
      "ret": {
        "t": "hand",
        "name": "Tensor",
        "dim": null
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "core::tensor::get",
      "name": "get",
      "module": "core::tensor",
      "defined_at": "core/tensor.rs:441",
      "docs": [
        "Returns the byte at a multi-index.",
        "",
        "# Errors",
        "",
        "Errs when the index misses the shape or the tensor is wider than one byte."
      ],
      "owner": "core::Tensor",
      "self_kind": "ref",
      "params": [
        {
          "name": "multi",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "scalar",
              "name": "usize"
            }
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "scalar",
          "name": "u8"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "core::tensor::i32",
      "name": "i32",
      "module": "core::tensor",
      "defined_at": "core/tensor.rs:328",
      "docs": [
        "Wraps an i32 vector as a tensor of the shape.",
        "",
        "# Errors",
        "",
        "Errs when the data length is not the shape's product."
      ],
      "owner": "core::Tensor",
      "self_kind": null,
      "params": [
        {
          "name": "data",
          "ty": {
            "t": "vec",
            "item": {
              "t": "scalar",
              "name": "i32"
            }
          }
        },
        {
          "name": "shape",
          "ty": {
            "t": "vec",
            "item": {
              "t": "scalar",
              "name": "usize"
            }
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "hand",
          "name": "Tensor",
          "dim": null
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "core::tensor::i32s",
      "name": "i32s",
      "module": "core::tensor",
      "defined_at": "core/tensor.rs:388",
      "docs": [
        "Returns the elements as i32s.",
        "",
        "# Errors",
        "",
        "Errs when the tensor is not four signed bytes wide."
      ],
      "owner": "core::Tensor",
      "self_kind": "ref",
      "params": [],
      "ret": {
        "t": "result",
        "item": {
          "t": "slice",
          "mutable": false,
          "item": {
            "t": "scalar",
            "name": "i32"
          }
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "core::tensor::index",
      "name": "index",
      "module": "core::tensor",
      "defined_at": "core/tensor.rs:407",
      "docs": [
        "Folds a multi-index into its flat index."
      ],
      "owner": "core::Tensor",
      "self_kind": "ref",
      "params": [
        {
          "name": "multi",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "scalar",
              "name": "usize"
            }
          }
        }
      ],
      "ret": {
        "t": "scalar",
        "name": "usize"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "core::tensor::invert",
      "name": "invert",
      "module": "core::tensor",
      "defined_at": "core/tensor.rs:510",
      "docs": [
        "Flips every element between zero and one."
      ],
      "owner": "core::Tensor",
      "self_kind": "ref",
      "params": [],
      "ret": {
        "t": "hand",
        "name": "Tensor",
        "dim": null
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "core::tensor::kron",
      "name": "kron",
      "module": "core::tensor",
      "defined_at": "core/tensor.rs:456",
      "docs": [
        "Builds the Kronecker product of the two tensors."
      ],
      "owner": "core::Tensor",
      "self_kind": "ref",
      "params": [
        {
          "name": "other",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "hand",
              "name": "Tensor",
              "dim": null
            }
          }
        }
      ],
      "ret": {
        "t": "hand",
        "name": "Tensor",
        "dim": null
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "core::tensor::layers",
      "name": "layers",
      "module": "core::tensor",
      "defined_at": "core/tensor.rs:624",
      "docs": [
        "Numbers every position by its concentric ring out from the center."
      ],
      "owner": "core::Tensor",
      "self_kind": "ref",
      "params": [
        {
          "name": "dtype",
          "ty": {
            "t": "enum",
            "path": "core::Dtype"
          }
        }
      ],
      "ret": {
        "t": "hand",
        "name": "Tensor",
        "dim": null
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "core::tensor::neighbors",
      "name": "neighbors",
      "module": "core::tensor",
      "defined_at": "core/tensor.rs:647",
      "docs": [
        "Counts each position's masked neighbors holding the target bit.",
        "",
        "# Errors",
        "",
        "Errs on a mask of another rank or an even side, a target above one, or a count past the dtype."
      ],
      "owner": "core::Tensor",
      "self_kind": "ref",
      "params": [
        {
          "name": "mask",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "hand",
              "name": "Tensor",
              "dim": null
            }
          }
        },
        {
          "name": "target",
          "ty": {
            "t": "scalar",
            "name": "u8"
          }
        },
        {
          "name": "wrap",
          "ty": {
            "t": "scalar",
            "name": "bool"
          }
        },
        {
          "name": "dtype",
          "ty": {
            "t": "enum",
            "path": "core::Dtype"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "hand",
          "name": "Tensor",
          "dim": null
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "core::tensor::new",
      "name": "new",
      "module": "core::tensor",
      "defined_at": "core/tensor.rs:245",
      "docs": [
        "Builds a zeroed u8 tensor of the shape."
      ],
      "owner": "core::Tensor",
      "self_kind": null,
      "params": [
        {
          "name": "shape",
          "ty": {
            "t": "vec",
            "item": {
              "t": "scalar",
              "name": "usize"
            }
          }
        }
      ],
      "ret": {
        "t": "hand",
        "name": "Tensor",
        "dim": null
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "core::tensor::of",
      "name": "of",
      "module": "core::tensor",
      "defined_at": "core/tensor.rs:279",
      "docs": [
        "Wraps a byte vector as a tensor of the shape.",
        "",
        "# Errors",
        "",
        "Errs when the data length is not the shape's product.",
        "",
        "```",
        "use mrlyrs::core::tensor::Tensor;",
        "assert_eq!(Tensor::of(vec![1, 0, 0, 1], vec![2, 2]).unwrap().sum(), 2);",
        "assert!(Tensor::of(vec![1, 0, 0], vec![2, 2]).is_err());",
        "```"
      ],
      "owner": "core::Tensor",
      "self_kind": null,
      "params": [
        {
          "name": "data",
          "ty": {
            "t": "vec",
            "item": {
              "t": "scalar",
              "name": "u8"
            }
          }
        },
        {
          "name": "shape",
          "ty": {
            "t": "vec",
            "item": {
              "t": "scalar",
              "name": "usize"
            }
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "hand",
          "name": "Tensor",
          "dim": null
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "core::tensor::otsu_threshold",
      "name": "otsu_threshold",
      "module": "core::tensor",
      "defined_at": "core/tensor.rs:683",
      "docs": [
        "Returns the Otsu threshold splitting the histogram at greatest variance."
      ],
      "owner": "core::Tensor",
      "self_kind": "ref",
      "params": [],
      "ret": {
        "t": "scalar",
        "name": "u8"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "core::tensor::pad",
      "name": "pad",
      "module": "core::tensor",
      "defined_at": "core/tensor.rs:593",
      "docs": [
        "Wraps the tensor in a count-thick border of one value."
      ],
      "owner": "core::Tensor",
      "self_kind": "ref",
      "params": [
        {
          "name": "count",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "value",
          "ty": {
            "t": "scalar",
            "name": "u8"
          }
        }
      ],
      "ret": {
        "t": "hand",
        "name": "Tensor",
        "dim": null
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "core::tensor::perforate",
      "name": "perforate",
      "module": "core::tensor",
      "defined_at": "core/tensor.rs:792",
      "docs": [
        "Stamps the value wherever the tiled mask is nonzero.",
        "",
        "# Errors",
        "",
        "Errs on a mask of another rank or a side that does not evenly tile the tensor."
      ],
      "owner": "core::Tensor",
      "self_kind": "ref",
      "params": [
        {
          "name": "mask",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "hand",
              "name": "Tensor",
              "dim": null
            }
          }
        },
        {
          "name": "value",
          "ty": {
            "t": "scalar",
            "name": "u8"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "hand",
          "name": "Tensor",
          "dim": null
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "core::tensor::put",
      "name": "put",
      "module": "core::tensor",
      "defined_at": "core/tensor.rs:399",
      "docs": [
        "Writes the element at a flat index, which must be below the size like a slice index."
      ],
      "owner": "core::Tensor",
      "self_kind": "mut",
      "params": [
        {
          "name": "flat",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "value",
          "ty": {
            "t": "scalar",
            "name": "i64"
          }
        }
      ],
      "ret": {
        "t": "unit"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "core::tensor::rot90",
      "name": "rot90",
      "module": "core::tensor",
      "defined_at": "core/tensor.rs:581",
      "docs": [
        "Rotates the tensor k quarter turns in the plane of two axes.",
        "",
        "# Errors",
        "",
        "Errs when the axes are not two distinct axes of the tensor.",
        "",
        "```",
        "use mrlyrs::core::tensor::Tensor;",
        "let a = Tensor::of(vec![1, 2, 3, 4], vec![2, 2]).unwrap();",
        "assert_eq!(a.rot90(1, (0, 1)).unwrap().bytes().unwrap(), &[2, 4, 1, 3]);",
        "assert!(a.rot90(1, (0, 2)).is_err());",
        "```"
      ],
      "owner": "core::Tensor",
      "self_kind": "ref",
      "params": [
        {
          "name": "k",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "axes",
          "ty": {
            "t": "tuple",
            "items": [
              {
                "t": "scalar",
                "name": "usize"
              },
              {
                "t": "scalar",
                "name": "usize"
              }
            ]
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "hand",
          "name": "Tensor",
          "dim": null
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "core::tensor::set",
      "name": "set",
      "module": "core::tensor",
      "defined_at": "core/tensor.rs:450",
      "docs": [
        "Writes the byte at a multi-index.",
        "",
        "# Errors",
        "",
        "Errs when the index misses the shape or the tensor is wider than one byte."
      ],
      "owner": "core::Tensor",
      "self_kind": "mut",
      "params": [
        {
          "name": "multi",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "scalar",
              "name": "usize"
            }
          }
        },
        {
          "name": "value",
          "ty": {
            "t": "scalar",
            "name": "u8"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "unit"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "core::tensor::size",
      "name": "size",
      "module": "core::tensor",
      "defined_at": "core/tensor.rs:336",
      "docs": [
        "Returns the number of elements."
      ],
      "owner": "core::Tensor",
      "self_kind": "ref",
      "params": [],
      "ret": {
        "t": "scalar",
        "name": "usize"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "core::tensor::slice",
      "name": "slice",
      "module": "core::tensor",
      "defined_at": "core/tensor.rs:554",
      "docs": [
        "Drops one axis by fixing it at an index.",
        "",
        "# Errors",
        "",
        "Errs when the axis is past the rank or the index is past the axis.",
        "",
        "```",
        "let sponge = mrlyrs::math::atoms::carpet_3d(3);",
        "assert_eq!(sponge.slice(2, 0).unwrap(), mrlyrs::math::atoms::carpet_2d(3));",
        "```"
      ],
      "owner": "core::Tensor",
      "self_kind": "ref",
      "params": [
        {
          "name": "axis",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "index",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "hand",
          "name": "Tensor",
          "dim": null
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "core::tensor::sum",
      "name": "sum",
      "module": "core::tensor",
      "defined_at": "core/tensor.rs:403",
      "docs": [
        "Returns the sum of all elements."
      ],
      "owner": "core::Tensor",
      "self_kind": "ref",
      "params": [],
      "ret": {
        "t": "scalar",
        "name": "u64"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "core::tensor::tile",
      "name": "tile",
      "module": "core::tensor",
      "defined_at": "core/tensor.rs:609",
      "docs": [
        "Repeats the tensor the given number of times along each axis.",
        "",
        "# Errors",
        "",
        "Errs without one count per axis."
      ],
      "owner": "core::Tensor",
      "self_kind": "ref",
      "params": [
        {
          "name": "reps",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "scalar",
              "name": "usize"
            }
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "hand",
          "name": "Tensor",
          "dim": null
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "core::tensor::transpose",
      "name": "transpose",
      "module": "core::tensor",
      "defined_at": "core/tensor.rs:535",
      "docs": [
        "Swaps two axes.",
        "",
        "# Errors",
        "",
        "Errs when either axis is past the rank."
      ],
      "owner": "core::Tensor",
      "self_kind": "ref",
      "params": [
        {
          "name": "a",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "b",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "hand",
          "name": "Tensor",
          "dim": null
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "core::tensor::typed",
      "name": "typed",
      "module": "core::tensor",
      "defined_at": "core/tensor.rs:253",
      "docs": [
        "Builds a zeroed tensor of the shape and width."
      ],
      "owner": "core::Tensor",
      "self_kind": null,
      "params": [
        {
          "name": "shape",
          "ty": {
            "t": "vec",
            "item": {
              "t": "scalar",
              "name": "usize"
            }
          }
        },
        {
          "name": "dtype",
          "ty": {
            "t": "enum",
            "path": "core::Dtype"
          }
        }
      ],
      "ret": {
        "t": "hand",
        "name": "Tensor",
        "dim": null
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "core::tensor::u16",
      "name": "u16",
      "module": "core::tensor",
      "defined_at": "core/tensor.rs:312",
      "docs": [
        "Wraps a u16 vector as a tensor of the shape.",
        "",
        "# Errors",
        "",
        "Errs when the data length is not the shape's product.",
        "",
        "```",
        "use mrlyrs::core::tensor::{Dtype, Tensor};",
        "let t = Tensor::u16(vec![1, 2, 3, 4], vec![2, 2]).unwrap();",
        "assert_eq!((t.dtype(), t.sum()), (Dtype::U16, 10));",
        "assert!(Tensor::u16(vec![1, 2, 3], vec![2, 2]).is_err());",
        "```"
      ],
      "owner": "core::Tensor",
      "self_kind": null,
      "params": [
        {
          "name": "data",
          "ty": {
            "t": "vec",
            "item": {
              "t": "scalar",
              "name": "u16"
            }
          }
        },
        {
          "name": "shape",
          "ty": {
            "t": "vec",
            "item": {
              "t": "scalar",
              "name": "usize"
            }
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "hand",
          "name": "Tensor",
          "dim": null
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "core::tensor::u16s",
      "name": "u16s",
      "module": "core::tensor",
      "defined_at": "core/tensor.rs:366",
      "docs": [
        "Returns the elements as u16s.",
        "",
        "# Errors",
        "",
        "Errs when the tensor is not two bytes wide."
      ],
      "owner": "core::Tensor",
      "self_kind": "ref",
      "params": [],
      "ret": {
        "t": "result",
        "item": {
          "t": "slice",
          "mutable": false,
          "item": {
            "t": "scalar",
            "name": "u16"
          }
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "core::tensor::u32",
      "name": "u32",
      "module": "core::tensor",
      "defined_at": "core/tensor.rs:320",
      "docs": [
        "Wraps a u32 vector as a tensor of the shape.",
        "",
        "# Errors",
        "",
        "Errs when the data length is not the shape's product."
      ],
      "owner": "core::Tensor",
      "self_kind": null,
      "params": [
        {
          "name": "data",
          "ty": {
            "t": "vec",
            "item": {
              "t": "scalar",
              "name": "u32"
            }
          }
        },
        {
          "name": "shape",
          "ty": {
            "t": "vec",
            "item": {
              "t": "scalar",
              "name": "usize"
            }
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "hand",
          "name": "Tensor",
          "dim": null
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "core::tensor::u32s",
      "name": "u32s",
      "module": "core::tensor",
      "defined_at": "core/tensor.rs:377",
      "docs": [
        "Returns the elements as u32s.",
        "",
        "# Errors",
        "",
        "Errs when the tensor is not four unsigned bytes wide."
      ],
      "owner": "core::Tensor",
      "self_kind": "ref",
      "params": [],
      "ret": {
        "t": "result",
        "item": {
          "t": "slice",
          "mutable": false,
          "item": {
            "t": "scalar",
            "name": "u32"
          }
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "core::tensor::u8",
      "name": "u8",
      "module": "core::tensor",
      "defined_at": "core/tensor.rs:297",
      "docs": [
        "Wraps a u8 vector as a tensor of the shape, the same door as [`Tensor::of`].",
        "",
        "# Errors",
        "",
        "Errs when the data length is not the shape's product."
      ],
      "owner": "core::Tensor",
      "self_kind": null,
      "params": [
        {
          "name": "data",
          "ty": {
            "t": "vec",
            "item": {
              "t": "scalar",
              "name": "u8"
            }
          }
        },
        {
          "name": "shape",
          "ty": {
            "t": "vec",
            "item": {
              "t": "scalar",
              "name": "usize"
            }
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "hand",
          "name": "Tensor",
          "dim": null
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "core::unpng",
      "name": "unpng",
      "module": "core",
      "defined_at": "core/codec/png.rs:148",
      "docs": [
        "Decodes a png to its width, height, and rgba colors.",
        "",
        "Grayscale, rgb, palette and 16-bit files all come back as 8-bit rgba.",
        "",
        "# Errors",
        "",
        "Errs when the bytes are not a png the decoder can expand to rgba."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "bytes",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "scalar",
              "name": "u8"
            }
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "tuple",
          "items": [
            {
              "t": "scalar",
              "name": "usize"
            },
            {
              "t": "scalar",
              "name": "usize"
            },
            {
              "t": "vec",
              "item": {
                "t": "array",
                "item": {
                  "t": "scalar",
                  "name": "u8"
                },
                "len": 4
              }
            }
          ]
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "font::Glyph::height",
      "name": "height",
      "module": "font",
      "defined_at": "font/glyph.rs:23",
      "docs": [
        "Returns the number of rows."
      ],
      "owner": "font::Glyph",
      "self_kind": "ref",
      "params": [],
      "ret": {
        "t": "scalar",
        "name": "usize"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "font::Glyph::new",
      "name": "new",
      "module": "font",
      "defined_at": "font/glyph.rs:15",
      "docs": [
        "Builds a glyph from its character and rows."
      ],
      "owner": "font::Glyph",
      "self_kind": null,
      "params": [
        {
          "name": "char",
          "ty": {
            "t": "scalar",
            "name": "char"
          }
        },
        {
          "name": "rows",
          "ty": {
            "t": "vec",
            "item": {
              "t": "string"
            }
          }
        }
      ],
      "ret": {
        "t": "class",
        "path": "font::Glyph",
        "dim": null
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "font::Glyph::width",
      "name": "width",
      "module": "font",
      "defined_at": "font/glyph.rs:19",
      "docs": [
        "Returns the cell width of the first row, or 0 for an empty glyph."
      ],
      "owner": "font::Glyph",
      "self_kind": "ref",
      "params": [],
      "ret": {
        "t": "scalar",
        "name": "usize"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "font::all",
      "name": "all",
      "module": "font",
      "defined_at": "font/glyph.rs:124",
      "docs": [
        "Builds every glyph in font order: uppers, lowers, digits, extras, specials."
      ],
      "owner": null,
      "self_kind": null,
      "params": [],
      "ret": {
        "t": "vec",
        "item": {
          "t": "class",
          "path": "font::Glyph",
          "dim": null
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "font::animate",
      "name": "animate",
      "module": "font",
      "defined_at": "font/animate.rs:32",
      "docs": [
        "Writes the text in stroke order, one cell per frame, from an empty padded board to the full raster.",
        "",
        "```",
        "let write = mrlyrs::font::animate(\"MRLYPROD\", 1);",
        "assert_eq!((write.rows, write.cols, write.fps), (7, 49, 25));",
        "assert!(write.frames[0].is_empty());",
        "```"
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "text",
          "ty": {
            "t": "str"
          }
        },
        {
          "name": "pad",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "plain",
        "path": "font::Anim"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "font::cycle",
      "name": "cycle",
      "module": "font",
      "defined_at": "font/animate.rs:90",
      "docs": [
        "Chains the write, the merge and their reversals into one loop, resting hold frames after each movement that has any."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "write",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "plain",
              "path": "font::Anim"
            }
          }
        },
        {
          "name": "merge",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "vec",
              "item": {
                "t": "scalar",
                "name": "usize"
              }
            }
          }
        },
        {
          "name": "hold",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "plain",
        "path": "font::Anim"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "font::digits",
      "name": "digits",
      "module": "font",
      "defined_at": "font/glyph.rs:100",
      "docs": [
        "Builds the ten digit glyphs."
      ],
      "owner": null,
      "self_kind": null,
      "params": [],
      "ret": {
        "t": "vec",
        "item": {
          "t": "class",
          "path": "font::Glyph",
          "dim": null
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "font::draft",
      "name": "draft",
      "module": "font",
      "defined_at": "font/paths.rs:74",
      "docs": [
        "Drafts a stroke order for a trimmed bitmap by walking its lit cells: start at a lowest-left free end, keep heading, lift when stuck."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "rows",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "string"
            }
          }
        }
      ],
      "ret": {
        "t": "vec",
        "item": {
          "t": "vec",
          "item": {
            "t": "tuple",
            "items": [
              {
                "t": "scalar",
                "name": "usize"
              },
              {
                "t": "scalar",
                "name": "usize"
              }
            ]
          }
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "font::extras",
      "name": "extras",
      "module": "font",
      "defined_at": "font/glyph.rs:108",
      "docs": [
        "Builds the punctuation, symbol and arrow glyphs."
      ],
      "owner": null,
      "self_kind": null,
      "params": [],
      "ret": {
        "t": "vec",
        "item": {
          "t": "class",
          "path": "font::Glyph",
          "dim": null
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "font::floor",
      "name": "floor",
      "module": "font",
      "defined_at": "font/paths.rs:103",
      "docs": [
        "Returns the least strokes that can write a trimmed bitmap: the minimum cover of its lit cells by 4-adjacent paths, zero for a blank."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "rows",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "string"
            }
          }
        }
      ],
      "ret": {
        "t": "scalar",
        "name": "usize"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "font::glyph",
      "name": "glyph",
      "module": "font",
      "defined_at": "font/mod.rs:55",
      "docs": [
        "Returns an owned copy of the character's glyph, or None outside the font.",
        "",
        "```",
        "let a = mrlyrs::font::glyph('a').unwrap();",
        "assert_eq!(a.rows[0], \"01110\");",
        "assert_eq!(mrlyrs::font::glyph('\\u{6f22}'), None);",
        "```"
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "c",
          "ty": {
            "t": "scalar",
            "name": "char"
          }
        }
      ],
      "ret": {
        "t": "option",
        "item": {
          "t": "class",
          "path": "font::Glyph",
          "dim": null
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "font::lower",
      "name": "lower",
      "module": "font",
      "defined_at": "font/glyph.rs:58",
      "docs": [
        "Blanks the four corner cells of an uppercase bitmap into its rounded lowercase form."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "rows",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "str"
            }
          }
        }
      ],
      "ret": {
        "t": "vec",
        "item": {
          "t": "string"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "font::lowers",
      "name": "lowers",
      "module": "font",
      "defined_at": "font/glyph.rs:89",
      "docs": [
        "Builds the twenty-six lowercase glyphs by rounding the uppers' corners."
      ],
      "owner": null,
      "self_kind": null,
      "params": [],
      "ret": {
        "t": "vec",
        "item": {
          "t": "class",
          "path": "font::Glyph",
          "dim": null
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "font::map",
      "name": "map",
      "module": "font",
      "defined_at": "font/mod.rs:70",
      "docs": [
        "Returns the whole font as a map from character to bitmap rows."
      ],
      "owner": null,
      "self_kind": null,
      "params": [],
      "ret": {
        "t": "map",
        "key": {
          "t": "scalar",
          "name": "char"
        },
        "value": {
          "t": "vec",
          "item": {
            "t": "string"
          }
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "font::merge",
      "name": "merge",
      "module": "font",
      "defined_at": "font/animate.rs:54",
      "docs": [
        "Folds the written text's glyphs, frame by frame, into one centered stack."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "text",
          "ty": {
            "t": "str"
          }
        },
        {
          "name": "pad",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "vec",
        "item": {
          "t": "vec",
          "item": {
            "t": "scalar",
            "name": "usize"
          }
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "font::name_of",
      "name": "name_of",
      "module": "font",
      "defined_at": "font/names.rs:2",
      "docs": [
        "Returns the character's Unicode name, or a U+ code point label for a character outside the font."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "c",
          "ty": {
            "t": "scalar",
            "name": "char"
          }
        }
      ],
      "ret": {
        "t": "string"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "font::path",
      "name": "path",
      "module": "font",
      "defined_at": "font/paths.rs:24",
      "docs": [
        "Flattens the character's strokes into one cell-by-cell drawing order.",
        "",
        "```",
        "assert_eq!(mrlyrs::font::path('A')[0], (4, 0));",
        "```"
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "c",
          "ty": {
            "t": "scalar",
            "name": "char"
          }
        }
      ],
      "ret": {
        "t": "vec",
        "item": {
          "t": "tuple",
          "items": [
            {
              "t": "scalar",
              "name": "usize"
            },
            {
              "t": "scalar",
              "name": "usize"
            }
          ]
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "font::paths::penned",
      "name": "penned",
      "module": "font::paths",
      "defined_at": "font/paths.rs:7",
      "docs": [
        "Returns the character's hand-penned strokes from the pen tables, or None outside the font."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "c",
          "ty": {
            "t": "scalar",
            "name": "char"
          }
        }
      ],
      "ret": {
        "t": "option",
        "item": {
          "t": "vec",
          "item": {
            "t": "vec",
            "item": {
              "t": "tuple",
              "items": [
                {
                  "t": "scalar",
                  "name": "usize"
                },
                {
                  "t": "scalar",
                  "name": "usize"
                }
              ]
            }
          }
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "font::pens::all",
      "name": "all",
      "module": "font::pens",
      "defined_at": "font/pens.rs:580",
      "docs": [
        "Returns every pen in font order: uppers, lowers, digits, extras, specials."
      ],
      "owner": null,
      "self_kind": null,
      "params": [],
      "ret": {
        "t": "vec",
        "item": {
          "t": "tuple",
          "items": [
            {
              "t": "scalar",
              "name": "char"
            },
            {
              "t": "vec",
              "item": {
                "t": "string"
              }
            }
          ]
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "font::raster",
      "name": "raster",
      "module": "font",
      "defined_at": "font/raster.rs:74",
      "docs": [
        "Returns the text as a 0/1 grid, its trimmed glyphs one blank column apart.",
        "",
        "```",
        "assert_eq!(mrlyrs::font::raster(\"42\").len(), 5);",
        "assert_eq!(mrlyrs::font::raster(\"(1)\").len(), 7);",
        "```"
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "text",
          "ty": {
            "t": "str"
          }
        }
      ],
      "ret": {
        "t": "vec",
        "item": {
          "t": "vec",
          "item": {
            "t": "scalar",
            "name": "u8"
          }
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "font::raster::Block::width",
      "name": "width",
      "module": "font::raster::Block",
      "defined_at": "font/raster.rs:17",
      "docs": [
        "Reports the block width in columns."
      ],
      "owner": null,
      "self_kind": "ref",
      "params": [],
      "ret": {
        "t": "scalar",
        "name": "usize"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "private"
      }
    },
    {
      "path": "font::specials",
      "name": "specials",
      "module": "font",
      "defined_at": "font/glyph.rs:116",
      "docs": [
        "Builds the four seven-row glyphs: dollar, at, copyright and registered."
      ],
      "owner": null,
      "self_kind": null,
      "params": [],
      "ret": {
        "t": "vec",
        "item": {
          "t": "class",
          "path": "font::Glyph",
          "dim": null
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "font::strokes",
      "name": "strokes",
      "module": "font",
      "defined_at": "font/paths.rs:15",
      "docs": [
        "Returns the character's ordered strokes over its trimmed bitmap, or none for a character outside the font."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "c",
          "ty": {
            "t": "scalar",
            "name": "char"
          }
        }
      ],
      "ret": {
        "t": "vec",
        "item": {
          "t": "vec",
          "item": {
            "t": "tuple",
            "items": [
              {
                "t": "scalar",
                "name": "usize"
              },
              {
                "t": "scalar",
                "name": "usize"
              }
            ]
          }
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "font::supported",
      "name": "supported",
      "module": "font",
      "defined_at": "font/mod.rs:65",
      "docs": [
        "Returns every character in the font, in font order.",
        "",
        "```",
        "let font = mrlyrs::font::supported();",
        "assert_eq!((font.len(), font[0]), (108, 'A'));",
        "```"
      ],
      "owner": null,
      "self_kind": null,
      "params": [],
      "ret": {
        "t": "vec",
        "item": {
          "t": "scalar",
          "name": "char"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "font::trim",
      "name": "trim",
      "module": "font",
      "defined_at": "font/glyph.rs:39",
      "docs": [
        "Cuts blank edge columns from a bitmap, collapsing an all-blank one to a single '0' column; a row shorter than the cut keeps what it has."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "rows",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "string"
            }
          }
        }
      ],
      "ret": {
        "t": "vec",
        "item": {
          "t": "string"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "font::uppers",
      "name": "uppers",
      "module": "font",
      "defined_at": "font/glyph.rs:81",
      "docs": [
        "Builds the twenty-six uppercase glyphs."
      ],
      "owner": null,
      "self_kind": null,
      "params": [],
      "ret": {
        "t": "vec",
        "item": {
          "t": "class",
          "path": "font::Glyph",
          "dim": null
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "gen::Group::all",
      "name": "all",
      "module": "gen",
      "defined_at": "gen/recipe.rs:19",
      "docs": [
        "Returns every Group in canonical order."
      ],
      "owner": "gen::Group",
      "self_kind": null,
      "params": [],
      "ret": {
        "t": "array",
        "item": {
          "t": "enum",
          "path": "gen::Group"
        },
        "len": 5
      },
      "dims": [],
      "trait": null,
      "source": "named_enum",
      "constant": true,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "gen::Group::name",
      "name": "name",
      "module": "gen",
      "defined_at": "gen/recipe.rs:19",
      "docs": [
        "Returns the Group's display name."
      ],
      "owner": "gen::Group",
      "self_kind": "ref",
      "params": [],
      "ret": {
        "t": "ref",
        "mutable": false,
        "lifetime": "'static",
        "item": {
          "t": "str"
        }
      },
      "dims": [],
      "trait": null,
      "source": "named_enum",
      "constant": false,
      "cross": {
        "status": "skip",
        "reason": "&'static return"
      }
    },
    {
      "path": "gen::Parity::all",
      "name": "all",
      "module": "gen",
      "defined_at": "gen/recipe.rs:36",
      "docs": [
        "Returns every Parity in canonical order."
      ],
      "owner": "gen::Parity",
      "self_kind": null,
      "params": [],
      "ret": {
        "t": "array",
        "item": {
          "t": "enum",
          "path": "gen::Parity"
        },
        "len": 3
      },
      "dims": [],
      "trait": null,
      "source": "named_enum",
      "constant": true,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "gen::Parity::keep",
      "name": "keep",
      "module": "gen",
      "defined_at": "gen/recipe.rs:51",
      "docs": [
        "Returns true when the number passes the filter."
      ],
      "owner": "gen::Parity",
      "self_kind": "value",
      "params": [
        {
          "name": "n",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "scalar",
        "name": "bool"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "gen::Parity::name",
      "name": "name",
      "module": "gen",
      "defined_at": "gen/recipe.rs:36",
      "docs": [
        "Returns the Parity's display name."
      ],
      "owner": "gen::Parity",
      "self_kind": "ref",
      "params": [],
      "ret": {
        "t": "ref",
        "mutable": false,
        "lifetime": "'static",
        "item": {
          "t": "str"
        }
      },
      "dims": [],
      "trait": null,
      "source": "named_enum",
      "constant": false,
      "cross": {
        "status": "skip",
        "reason": "&'static return"
      }
    },
    {
      "path": "gen::Tile::check",
      "name": "check",
      "module": "gen",
      "defined_at": "gen/recipe.rs:162",
      "docs": [
        "Checks that the slots, numbers and sizes agree.",
        "",
        "```",
        "use mrlyrs::gen::recipe::{Group, Tile};",
        "assert!(Tile::new(Group::General).check().is_err());",
        "```",
        "",
        "# Errors",
        "",
        "Errs with a terse note for the first broken law: the slot count, a ragged slot list, a",
        "number, rotation, level, flip or factor out of range, or sizes the group does not imply."
      ],
      "owner": "gen::Tile",
      "self_kind": "ref",
      "params": [],
      "ret": {
        "t": "result",
        "item": {
          "t": "unit"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "gen::Tile::degenerate",
      "name": "degenerate",
      "module": "gen",
      "defined_at": "gen/recipe.rs:123",
      "docs": [
        "Returns whether the recipe is a magic tile of one repeated source at one repeated number,",
        "the shape a fractal tile of the same factor and level already draws."
      ],
      "owner": "gen::Tile",
      "self_kind": "ref",
      "params": [],
      "ret": {
        "t": "scalar",
        "name": "bool"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "gen::Tile::max_size",
      "name": "max_size",
      "module": "gen",
      "defined_at": "gen/recipe.rs:118",
      "docs": [
        "Returns the larger of width and height."
      ],
      "owner": "gen::Tile",
      "self_kind": "ref",
      "params": [],
      "ret": {
        "t": "scalar",
        "name": "usize"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "gen::Tile::new",
      "name": "new",
      "module": "gen",
      "defined_at": "gen/recipe.rs:92",
      "docs": [
        "Builds an empty tile in a group.",
        "",
        "```",
        "use mrlyrs::gen::recipe::{Group, Tile};",
        "assert_eq!(Tile::new(Group::General).max_size(), 0);",
        "```"
      ],
      "owner": "gen::Tile",
      "self_kind": null,
      "params": [
        {
          "name": "group",
          "ty": {
            "t": "enum",
            "path": "gen::Group"
          }
        }
      ],
      "ret": {
        "t": "class",
        "path": "gen::Tile",
        "dim": null
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "gen::Tile::resize",
      "name": "resize",
      "module": "gen",
      "defined_at": "gen/recipe.rs:130",
      "docs": [
        "Recomputes the factor and side length the group and numbers imply, zero when they overflow."
      ],
      "owner": "gen::Tile",
      "self_kind": "mut",
      "params": [],
      "ret": {
        "t": "unit"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "gen::Tile::size",
      "name": "size",
      "module": "gen",
      "defined_at": "gen/recipe.rs:112",
      "docs": [
        "Sets the tile's width and height.",
        "",
        "```",
        "use mrlyrs::gen::recipe::{Group, Tile};",
        "assert_eq!(Tile::new(Group::General).size(3, 5).max_size(), 5);",
        "```"
      ],
      "owner": "gen::Tile",
      "self_kind": "value",
      "params": [
        {
          "name": "width",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "height",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "class",
        "path": "gen::Tile",
        "dim": null
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "gen::background",
      "name": "background",
      "module": "gen",
      "defined_at": "gen/mod.rs:53",
      "docs": [
        "Draws one seeded artwork and returns its PNG bytes: a random flat tile under the default recipe",
        "constraints and paint, repeated `width` across and `height` down at one pixel per cell.",
        "",
        "The seed opens one stream, `variation::create` draws its own seed from it, and the paint and",
        "render follow on the same stream, so one seed always paints the same background.",
        "",
        "```",
        "let png = mrlyrs::gen::background(1, 2, 2)?;",
        "assert_eq!(png[..8], [137, 80, 78, 71, 13, 10, 26, 10]);",
        "# Ok::<(), mrlyrs::Error>(())",
        "```",
        "",
        "# Errors",
        "",
        "Errs when the width or the height is zero, or when the artwork will not draw or render."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "seed",
          "ty": {
            "t": "scalar",
            "name": "u64"
          }
        },
        {
          "name": "width",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "height",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "vec",
          "item": {
            "t": "scalar",
            "name": "u8"
          }
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "gen::build::Config2d::default",
      "name": "default",
      "module": "gen::build",
      "defined_at": "gen/draw.rs:25",
      "docs": [
        "Returns the default Config2d."
      ],
      "owner": "gen::build::Config2d",
      "self_kind": null,
      "params": [],
      "ret": {
        "t": "plain",
        "path": "gen::draw::ConfigNd"
      },
      "dims": [],
      "trait": null,
      "source": "default",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "gen::build::Config3d::default",
      "name": "default",
      "module": "gen::build",
      "defined_at": "gen/draw.rs:25",
      "docs": [
        "Returns the default Config3d."
      ],
      "owner": "gen::build::Config3d",
      "self_kind": null,
      "params": [],
      "ret": {
        "t": "plain",
        "path": "gen::draw::ConfigNd"
      },
      "dims": [],
      "trait": null,
      "source": "default",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "gen::build::build_2d",
      "name": "build",
      "module": "gen::build",
      "defined_at": "gen/build.rs:157",
      "docs": [
        "Builds the flat cell the tile describes.",
        "",
        "```",
        "use mrlyrs::core::rng::Rng;",
        "use mrlyrs::gen::build::{build_2d, random_tile_2d};",
        "let mut rng = Rng::new(1);",
        "let tile = random_tile_2d(9, &mut rng)?;",
        "assert_eq!(build_2d(&tile)?.width(), tile.width);",
        "# Ok::<(), mrlyrs::Error>(())",
        "```",
        "",
        "# Errors",
        "",
        "Errs when the tile's slots are ragged, or when a source will not render at its size."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "tile",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "class",
              "path": "gen::Tile",
              "dim": null
            }
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "hand",
          "name": "CellNd",
          "dim": 2
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "gen::build::build_3d",
      "name": "build",
      "module": "gen::build",
      "defined_at": "gen/build.rs:420",
      "docs": [
        "Builds the cube the tile describes.",
        "",
        "# Errors",
        "",
        "Errs when the tile's slots are ragged, or when a source is flat or will not render."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "tile",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "class",
              "path": "gen::Tile",
              "dim": null
            }
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "hand",
          "name": "CellNd",
          "dim": 3
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "gen::build::build_6d",
      "name": "build",
      "module": "gen::build",
      "defined_at": "gen/build.rs:572",
      "docs": [
        "Builds the tile's cube and flattens it through its projection.",
        "",
        "# Errors",
        "",
        "Errs when the cube will not build, or when the projection will not flatten it."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "hex",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "plain",
              "path": "gen::build::HexTile"
            }
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "hand",
          "name": "Cell6d",
          "dim": null
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "gen::build::create_2d",
      "name": "create",
      "module": "gen::build",
      "defined_at": "gen/build.rs:52",
      "docs": [
        "Draws a random flat tile from the stream, rotations from the four quarter-turns.",
        "",
        "# Errors",
        "",
        "Errs when no allowed group fits the size constraints, or the catalog holds no source."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "config",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "plain",
              "path": "gen::draw::ConfigNd"
            }
          }
        },
        {
          "name": "rng",
          "ty": {
            "t": "ref",
            "mutable": true,
            "lifetime": null,
            "item": {
              "t": "hand",
              "name": "Rng",
              "dim": null
            }
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "class",
          "path": "gen::Tile",
          "dim": null
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "gen::build::create_3d",
      "name": "create",
      "module": "gen::build",
      "defined_at": "gen/build.rs:299",
      "docs": [
        "Draws a cube tile from the config with cube orientations drawn from the stream.",
        "",
        "# Errors",
        "",
        "Errs when no allowed group fits the size constraints, or the catalog holds no source."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "config",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "plain",
              "path": "gen::draw::ConfigNd"
            }
          }
        },
        {
          "name": "rng",
          "ty": {
            "t": "ref",
            "mutable": true,
            "lifetime": null,
            "item": {
              "t": "hand",
              "name": "Rng",
              "dim": null
            }
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "class",
          "path": "gen::Tile",
          "dim": null
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "gen::build::create_6d",
      "name": "create",
      "module": "gen::build",
      "defined_at": "gen/build.rs:548",
      "docs": [
        "Draws a cube tile from the config under a projection drawn from the stream.",
        "",
        "# Errors",
        "",
        "Errs when no allowed group fits the size constraints, or the catalog holds no source."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "config",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "plain",
              "path": "gen::draw::ConfigNd"
            }
          }
        },
        {
          "name": "rng",
          "ty": {
            "t": "ref",
            "mutable": true,
            "lifetime": null,
            "item": {
              "t": "hand",
              "name": "Rng",
              "dim": null
            }
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "plain",
          "path": "gen::build::HexTile"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "gen::build::random_tile_2d",
      "name": "random_tile",
      "module": "gen::build",
      "defined_at": "gen/build.rs:61",
      "docs": [
        "Draws a random flat tile up to the given size under the default config.",
        "",
        "# Errors",
        "",
        "Errs when no group fits a tile inside the size, or the catalog holds no source."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "max_size",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "rng",
          "ty": {
            "t": "ref",
            "mutable": true,
            "lifetime": null,
            "item": {
              "t": "hand",
              "name": "Rng",
              "dim": null
            }
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "class",
          "path": "gen::Tile",
          "dim": null
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "gen::build::random_tile_3d",
      "name": "random_tile",
      "module": "gen::build",
      "defined_at": "gen/build.rs:308",
      "docs": [
        "Draws a random cube tile up to the given size.",
        "",
        "# Errors",
        "",
        "Errs when no group fits a tile inside the size, or the catalog holds no source."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "max_size",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "rng",
          "ty": {
            "t": "ref",
            "mutable": true,
            "lifetime": null,
            "item": {
              "t": "hand",
              "name": "Rng",
              "dim": null
            }
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "class",
          "path": "gen::Tile",
          "dim": null
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "gen::build::random_tile_6d",
      "name": "random_tile",
      "module": "gen::build",
      "defined_at": "gen/build.rs:560",
      "docs": [
        "Draws a random cube tile up to the given size under a random projection.",
        "",
        "# Errors",
        "",
        "Errs when no group fits a tile inside the size, or the catalog holds no source."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "max_size",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "rng",
          "ty": {
            "t": "ref",
            "mutable": true,
            "lifetime": null,
            "item": {
              "t": "hand",
              "name": "Rng",
              "dim": null
            }
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "plain",
          "path": "gen::build::HexTile"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "gen::classic_code",
      "name": "classic_code",
      "module": "gen",
      "defined_at": "gen/name.rs:52",
      "docs": [
        "Returns the plane's bang code of a classic design, or None for one outside the plane."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "design",
          "ty": {
            "t": "enum",
            "path": "gen::recipe::Design"
          }
        }
      ],
      "ret": {
        "t": "option",
        "item": {
          "t": "u128"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "gen::classic_code_nd",
      "name": "classic_code_nd",
      "module": "gen",
      "defined_at": "gen/name.rs:39",
      "docs": [
        "Returns the bang code of a named design in a dimension, or None where it has no design."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "design",
          "ty": {
            "t": "enum",
            "path": "gen::recipe::Design"
          }
        },
        {
          "name": "dimension",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "option",
        "item": {
          "t": "u128"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "gen::draw::create",
      "name": "create",
      "module": "gen::draw",
      "defined_at": "gen/draw.rs:230",
      "docs": [
        "Draws a random tile satisfying the config from the stream.",
        "",
        "```",
        "use mrlyrs::core::rng::Rng;",
        "use mrlyrs::gen::draw::{create, ConfigNd};",
        "let mut rng = Rng::new(1);",
        "let tile = create(&ConfigNd::<2>::default(), |_, rng| rng.below(4), &mut rng)?;",
        "assert!((3..=9).contains(&tile.max_size()));",
        "# Ok::<(), mrlyrs::Error>(())",
        "```",
        "",
        "# Errors",
        "",
        "Errs when no allowed group fits the size constraints, or when the catalog holds no source."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "config",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "plain",
              "path": "gen::draw::ConfigNd"
            }
          }
        },
        {
          "name": "rotation",
          "ty": {
            "t": "unknown",
            "text": "unknown type Rotation"
          }
        },
        {
          "name": "rng",
          "ty": {
            "t": "ref",
            "mutable": true,
            "lifetime": null,
            "item": {
              "t": "hand",
              "name": "Rng",
              "dim": null
            }
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "class",
          "path": "gen::Tile",
          "dim": null
        }
      },
      "dims": [
        2,
        3
      ],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "skip",
        "reason": "rotation: unknown type Rotation"
      }
    },
    {
      "path": "gen::draw::random_tile",
      "name": "random_tile",
      "module": "gen::draw",
      "defined_at": "gen/draw.rs:257",
      "docs": [
        "Draws a random tile up to the given size under the default config.",
        "",
        "# Errors",
        "",
        "Errs when no group fits a tile inside the size, or when the catalog holds no source."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "max_size",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "rotation",
          "ty": {
            "t": "unknown",
            "text": "unknown type Rotation"
          }
        },
        {
          "name": "rng",
          "ty": {
            "t": "ref",
            "mutable": true,
            "lifetime": null,
            "item": {
              "t": "hand",
              "name": "Rng",
              "dim": null
            }
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "class",
          "path": "gen::Tile",
          "dim": null
        }
      },
      "dims": [
        2,
        3
      ],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "skip",
        "reason": "rotation: unknown type Rotation"
      }
    },
    {
      "path": "gen::hex_key",
      "name": "hex_key",
      "module": "gen",
      "defined_at": "gen/variation.rs:97",
      "docs": [
        "Draws a hex key of the given length from the stream.",
        "",
        "```",
        "use mrlyrs::core::rng::Rng;",
        "assert_eq!(mrlyrs::gen::variation::hex_key(8, &mut Rng::new(1)).len(), 8);",
        "```"
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "length",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "rng",
          "ty": {
            "t": "ref",
            "mutable": true,
            "lifetime": null,
            "item": {
              "t": "hand",
              "name": "Rng",
              "dim": null
            }
          }
        }
      ],
      "ret": {
        "t": "string"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "gen::name::Slots::default",
      "name": "default",
      "module": "gen::name",
      "defined_at": "gen/name.rs:116",
      "docs": [
        "Returns the default Slots."
      ],
      "owner": "gen::name::Slots",
      "self_kind": null,
      "params": [],
      "ret": {
        "t": "plain",
        "path": "gen::name::Slots"
      },
      "dims": [],
      "trait": null,
      "source": "default",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "gen::name::Tile::checked",
      "name": "checked",
      "module": "gen::name",
      "defined_at": "math/name/mod.rs:35",
      "docs": [
        "Folds a decoded value to its canonical form, or an error for one outside the kind."
      ],
      "owner": "gen::name::Tile",
      "self_kind": "value",
      "params": [],
      "ret": {
        "t": "result",
        "item": {
          "t": "class",
          "path": "gen::name::Tile",
          "dim": null
        }
      },
      "dims": [],
      "trait": "math::name::Named",
      "source": "trait",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "gen::name::Tile::from_file",
      "name": "from_file",
      "module": "gen::name",
      "defined_at": "math/name/mod.rs:62",
      "docs": [
        "Reads a filename back into the value, or an error."
      ],
      "owner": "gen::name::Tile",
      "self_kind": null,
      "params": [
        {
          "name": "text",
          "ty": {
            "t": "str"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "class",
          "path": "gen::name::Tile",
          "dim": null
        }
      },
      "dims": [],
      "trait": "math::name::Named",
      "source": "trait",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "gen::name::Tile::from_json",
      "name": "from_json",
      "module": "gen::name",
      "defined_at": "math/name/mod.rs:41",
      "docs": [
        "Reads a JSON object into its canonical value, or an error naming the broken key."
      ],
      "owner": "gen::name::Tile",
      "self_kind": null,
      "params": [
        {
          "name": "text",
          "ty": {
            "t": "str"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "class",
          "path": "gen::name::Tile",
          "dim": null
        }
      },
      "dims": [],
      "trait": "math::name::Named",
      "source": "trait",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "gen::name::Tile::from_url",
      "name": "from_url",
      "module": "gen::name",
      "defined_at": "math/name/mod.rs:54",
      "docs": [
        "Reads a path and query string back into the value, or an error."
      ],
      "owner": "gen::name::Tile",
      "self_kind": null,
      "params": [
        {
          "name": "text",
          "ty": {
            "t": "str"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "class",
          "path": "gen::name::Tile",
          "dim": null
        }
      },
      "dims": [],
      "trait": "math::name::Named",
      "source": "trait",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "gen::name::Tile::of",
      "name": "of",
      "module": "gen::name",
      "defined_at": "gen/name.rs:205",
      "docs": [
        "Folds a recipe to its name.",
        "",
        "# Errors",
        "",
        "Errs when a source carries no code, or when the recipe's slot lists are ragged."
      ],
      "owner": "gen::name::Tile",
      "self_kind": null,
      "params": [
        {
          "name": "recipe",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "class",
              "path": "gen::Tile",
              "dim": null
            }
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "class",
          "path": "gen::name::Tile",
          "dim": null
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "gen::name::Tile::recipe",
      "name": "recipe",
      "module": "gen::name",
      "defined_at": "gen/name.rs:283",
      "docs": [
        "Builds the recipe the name folds, resized and checked.",
        "",
        "# Errors",
        "",
        "Errs when the keys do not say one group, a code is not in the plane, or the check fails."
      ],
      "owner": "gen::name::Tile",
      "self_kind": "ref",
      "params": [],
      "ret": {
        "t": "result",
        "item": {
          "t": "class",
          "path": "gen::Tile",
          "dim": null
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "gen::name::Tile::to_file",
      "name": "to_file",
      "module": "gen::name",
      "defined_at": "math/name/mod.rs:58",
      "docs": [
        "Prints the kind and the `key=value` pairs joined by underscores, lists in brackets, or an error when the name does not read back."
      ],
      "owner": "gen::name::Tile",
      "self_kind": "ref",
      "params": [],
      "ret": {
        "t": "result",
        "item": {
          "t": "string"
        }
      },
      "dims": [],
      "trait": "math::name::Named",
      "source": "trait",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "gen::name::Tile::to_id",
      "name": "to_id",
      "module": "gen::name",
      "defined_at": "math/name/mod.rs:46",
      "docs": [
        "Prints the first eight hex digits of the sha256 of the canonical JSON."
      ],
      "owner": "gen::name::Tile",
      "self_kind": "ref",
      "params": [],
      "ret": {
        "t": "string"
      },
      "dims": [],
      "trait": "math::name::Named",
      "source": "trait",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "gen::name::Tile::to_json",
      "name": "to_json",
      "module": "gen::name",
      "defined_at": "math/name/mod.rs:37",
      "docs": [
        "Prints the canonical JSON object."
      ],
      "owner": "gen::name::Tile",
      "self_kind": "ref",
      "params": [],
      "ret": {
        "t": "string"
      },
      "dims": [],
      "trait": "math::name::Named",
      "source": "trait",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "gen::name::Tile::to_mrly",
      "name": "to_mrly",
      "module": "gen::name",
      "defined_at": "math/name/mod.rs:66",
      "docs": [
        "Prints the kind and the keys as a line of prose for pages, or an error when the name does not read back."
      ],
      "owner": "gen::name::Tile",
      "self_kind": "ref",
      "params": [],
      "ret": {
        "t": "result",
        "item": {
          "t": "string"
        }
      },
      "dims": [],
      "trait": "math::name::Named",
      "source": "trait",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "gen::name::Tile::to_url",
      "name": "to_url",
      "module": "gen::name",
      "defined_at": "math/name/mod.rs:50",
      "docs": [
        "Prints the kind as a path and the keys as a query string, lists comma-joined, or an error when the name does not read back."
      ],
      "owner": "gen::name::Tile",
      "self_kind": "ref",
      "params": [],
      "ret": {
        "t": "result",
        "item": {
          "t": "string"
        }
      },
      "dims": [],
      "trait": "math::name::Named",
      "source": "trait",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "gen::random_design",
      "name": "random_design",
      "module": "gen",
      "defined_at": "gen/draw.rs:48",
      "docs": [
        "Draws one of the four flat classics from the stream: carpet, net, vertical tree or void."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "rng",
          "ty": {
            "t": "ref",
            "mutable": true,
            "lifetime": null,
            "item": {
              "t": "hand",
              "name": "Rng",
              "dim": null
            }
          }
        }
      ],
      "ret": {
        "t": "enum",
        "path": "gen::recipe::Design"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "gen::random_rotation",
      "name": "random_rotation",
      "module": "gen",
      "defined_at": "gen/draw.rs:54",
      "docs": [
        "Draws a design's turn from the stream: a tree turns 0 or 1, every other design 0 to 3."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "design",
          "ty": {
            "t": "enum",
            "path": "gen::recipe::Design"
          }
        },
        {
          "name": "rng",
          "ty": {
            "t": "ref",
            "mutable": true,
            "lifetime": null,
            "item": {
              "t": "hand",
              "name": "Rng",
              "dim": null
            }
          }
        }
      ],
      "ret": {
        "t": "scalar",
        "name": "u8"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "gen::recipe::Design::all",
      "name": "all",
      "module": "gen::recipe",
      "defined_at": "math/bang/catalog.rs:65",
      "docs": [
        "Returns every Design in canonical order."
      ],
      "owner": "gen::recipe::Design",
      "self_kind": null,
      "params": [],
      "ret": {
        "t": "array",
        "item": {
          "t": "enum",
          "path": "gen::recipe::Design"
        },
        "len": 16
      },
      "dims": [],
      "trait": null,
      "source": "named_enum",
      "constant": true,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "gen::recipe::Design::name",
      "name": "name",
      "module": "gen::recipe",
      "defined_at": "math/bang/catalog.rs:65",
      "docs": [
        "Returns the Design's display name."
      ],
      "owner": "gen::recipe::Design",
      "self_kind": "ref",
      "params": [],
      "ret": {
        "t": "ref",
        "mutable": false,
        "lifetime": "'static",
        "item": {
          "t": "str"
        }
      },
      "dims": [],
      "trait": null,
      "source": "named_enum",
      "constant": false,
      "cross": {
        "status": "skip",
        "reason": "&'static return"
      }
    },
    {
      "path": "gen::recipe::classics",
      "name": "classics",
      "module": "gen::recipe",
      "defined_at": "math/bang/catalog.rs:175",
      "docs": [
        "Returns the classic designs for a dimension."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "dimension",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "vec",
        "item": {
          "t": "enum",
          "path": "gen::recipe::Design"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "gen::recipe::generals",
      "name": "generals",
      "module": "gen::recipe",
      "defined_at": "gen/recipe.rs:237",
      "docs": [
        "Returns every flat size in the range that passes the parity filter."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "min_size",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "max_size",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "parity",
          "ty": {
            "t": "enum",
            "path": "gen::Parity"
          }
        }
      ],
      "ret": {
        "t": "vec",
        "item": {
          "t": "scalar",
          "name": "usize"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "gen::recipe::nestings",
      "name": "nestings",
      "module": "gen::recipe",
      "defined_at": "gen/recipe.rs:312",
      "docs": [
        "Returns every factor list of depth two and beyond whose product lands in the size range."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "min_size",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "max_size",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "parity",
          "ty": {
            "t": "enum",
            "path": "gen::Parity"
          }
        }
      ],
      "ret": {
        "t": "vec",
        "item": {
          "t": "vec",
          "item": {
            "t": "scalar",
            "name": "usize"
          }
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "gen::recipe::powers",
      "name": "powers",
      "module": "gen::recipe",
      "defined_at": "gen/recipe.rs:242",
      "docs": [
        "Returns every factor and level whose power lands in the size range."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "min_size",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "max_size",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "parity",
          "ty": {
            "t": "enum",
            "path": "gen::Parity"
          }
        }
      ],
      "ret": {
        "t": "vec",
        "item": {
          "t": "tuple",
          "items": [
            {
              "t": "scalar",
              "name": "usize"
            },
            {
              "t": "scalar",
              "name": "usize"
            }
          ]
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "gen::recipe::products",
      "name": "products",
      "module": "gen::recipe",
      "defined_at": "gen/recipe.rs:274",
      "docs": [
        "Returns every count-long factor list whose product lands in the size range."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "min_size",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "max_size",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "count",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "parity",
          "ty": {
            "t": "enum",
            "path": "gen::Parity"
          }
        }
      ],
      "ret": {
        "t": "vec",
        "item": {
          "t": "vec",
          "item": {
            "t": "scalar",
            "name": "usize"
          }
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "gen::recipe::size",
      "name": "size",
      "module": "gen::recipe",
      "defined_at": "gen/recipe.rs:267",
      "docs": [
        "Returns the side a factor raised to a level makes, or None when no usize holds it.",
        "",
        "```",
        "assert_eq!(mrlyrs::gen::recipe::size(3, 3), Some(27));",
        "assert_eq!(mrlyrs::gen::recipe::size(3, 4294967298), None);",
        "```"
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "number",
          "ty": {
            "t": "scalar",
            "name": "i64"
          }
        },
        {
          "name": "level",
          "ty": {
            "t": "scalar",
            "name": "i64"
          }
        }
      ],
      "ret": {
        "t": "option",
        "item": {
          "t": "scalar",
          "name": "usize"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "gen::recipe::uniform",
      "name": "uniform",
      "module": "gen::recipe",
      "defined_at": "gen/recipe.rs:226",
      "docs": [
        "Returns whether every item equals the first, vacuously true for an empty or single list.",
        "",
        "```",
        "assert!(mrlyrs::gen::recipe::uniform(&[3, 3, 3]));",
        "assert!(!mrlyrs::gen::recipe::uniform(&[3, 5, 3]));",
        "```"
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "items",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "unknown",
              "text": "generic T"
            }
          }
        }
      ],
      "ret": {
        "t": "scalar",
        "name": "bool"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "skip",
        "reason": "generic over T"
      }
    },
    {
      "path": "gen::tree_mask",
      "name": "tree_mask",
      "module": "gen",
      "defined_at": "gen/build.rs:86",
      "docs": [
        "Builds the mask of a mosaic tile: the two trees of the side, two where they cross.",
        "",
        "```",
        "assert_eq!(mrlyrs::gen::build::tree_mask(3)?.sum(), 12);",
        "# Ok::<(), mrlyrs::Error>(())",
        "```",
        "",
        "# Errors",
        "",
        "Errs when the side will not draw a tree."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "n",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "hand",
          "name": "Tensor",
          "dim": null
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "gen::variation::Config::default",
      "name": "default",
      "module": "gen::variation",
      "defined_at": "gen/variation.rs:43",
      "docs": [
        "Returns the default Config."
      ],
      "owner": "gen::variation::Config",
      "self_kind": null,
      "params": [],
      "ret": {
        "t": "plain",
        "path": "gen::variation::Config"
      },
      "dims": [],
      "trait": null,
      "source": "default",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "gen::variation::File::new",
      "name": "new",
      "module": "gen::variation",
      "defined_at": "gen/variation.rs:23",
      "docs": [
        "Builds a file of the given repetition counts with no PNG bytes."
      ],
      "owner": "gen::variation::File",
      "self_kind": null,
      "params": [
        {
          "name": "width",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "height",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "class",
        "path": "gen::variation::File",
        "dim": null
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "gen::variation::Variation::is_cover",
      "name": "is_cover",
      "module": "gen::variation",
      "defined_at": "gen/variation.rs:79",
      "docs": [
        "Returns whether the edition paints the whole tiled canvas."
      ],
      "owner": "gen::variation::Variation",
      "self_kind": "ref",
      "params": [],
      "ret": {
        "t": "scalar",
        "name": "bool"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "gen::variation::Variation::is_prime",
      "name": "is_prime",
      "module": "gen::variation",
      "defined_at": "gen/variation.rs:86",
      "docs": [
        "Returns whether the edition paints the base cell before tiling."
      ],
      "owner": "gen::variation::Variation",
      "self_kind": "ref",
      "params": [],
      "ret": {
        "t": "scalar",
        "name": "bool"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "gen::variation::create",
      "name": "create",
      "module": "gen::variation",
      "defined_at": "gen/variation.rs:124",
      "docs": [
        "Draws a variation's seed from the stream, then the variation itself on that seed, with a",
        "mask when the edition is Neighbors.",
        "",
        "```",
        "use mrlyrs::core::rng::Rng;",
        "use mrlyrs::gen::variation::{create, Config};",
        "let mut rng = Rng::new(1);",
        "assert_eq!(create(&Config::default(), &mut rng)?.key.len(), 8);",
        "# Ok::<(), mrlyrs::Error>(())",
        "```",
        "",
        "# Errors",
        "",
        "Errs when the tile config draws no tile, or when the Neighbors mask will not draw."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "config",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "plain",
              "path": "gen::variation::Config"
            }
          }
        },
        {
          "name": "rng",
          "ty": {
            "t": "ref",
            "mutable": true,
            "lifetime": null,
            "item": {
              "t": "hand",
              "name": "Rng",
              "dim": null
            }
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "class",
          "path": "gen::variation::Variation",
          "dim": null
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "gen::variation::generate",
      "name": "generate",
      "module": "gen::variation",
      "defined_at": "gen/variation.rs:158",
      "docs": [
        "Builds the variation's base cell and draws its paint from the stream, painting the base",
        "under a prime edition.",
        "",
        "# Errors",
        "",
        "Errs when the tile or its mask will not build, or when the paint will not lay down."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "variation",
          "ty": {
            "t": "class",
            "path": "gen::variation::Variation",
            "dim": null
          }
        },
        {
          "name": "config",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "plain",
              "path": "gen::variation::Config"
            }
          }
        },
        {
          "name": "rng",
          "ty": {
            "t": "ref",
            "mutable": true,
            "lifetime": null,
            "item": {
              "t": "hand",
              "name": "Rng",
              "dim": null
            }
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "class",
          "path": "gen::variation::Variation",
          "dim": null
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "gen::variation::render",
      "name": "render",
      "module": "gen::variation",
      "defined_at": "gen/variation.rs:193",
      "docs": [
        "Renders every file of the variation to PNG at the given scale, scattering a Random edition",
        "from the stream.",
        "",
        "# Errors",
        "",
        "Errs when generate has not run, or when a file will not tile or encode at the scale."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "variation",
          "ty": {
            "t": "class",
            "path": "gen::variation::Variation",
            "dim": null
          }
        },
        {
          "name": "scale",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "rng",
          "ty": {
            "t": "ref",
            "mutable": true,
            "lifetime": null,
            "item": {
              "t": "hand",
              "name": "Rng",
              "dim": null
            }
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "class",
          "path": "gen::variation::Variation",
          "dim": null
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "life::Boundary::all",
      "name": "all",
      "module": "life",
      "defined_at": "life/mod.rs:55",
      "docs": [
        "Returns every Boundary in canonical order."
      ],
      "owner": "life::Boundary",
      "self_kind": null,
      "params": [],
      "ret": {
        "t": "array",
        "item": {
          "t": "enum",
          "path": "life::Boundary"
        },
        "len": 2
      },
      "dims": [],
      "trait": null,
      "source": "named_enum",
      "constant": true,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "life::Boundary::name",
      "name": "name",
      "module": "life",
      "defined_at": "life/mod.rs:55",
      "docs": [
        "Returns the Boundary's display name."
      ],
      "owner": "life::Boundary",
      "self_kind": "ref",
      "params": [],
      "ret": {
        "t": "ref",
        "mutable": false,
        "lifetime": "'static",
        "item": {
          "t": "str"
        }
      },
      "dims": [],
      "trait": null,
      "source": "named_enum",
      "constant": false,
      "cross": {
        "status": "skip",
        "reason": "&'static return"
      }
    },
    {
      "path": "life::Boundary::wrap",
      "name": "wrap",
      "module": "life",
      "defined_at": "life/mod.rs:68",
      "docs": [
        "Returns whether the edges wrap."
      ],
      "owner": "life::Boundary",
      "self_kind": "value",
      "params": [],
      "ret": {
        "t": "scalar",
        "name": "bool"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "life::Config::budget",
      "name": "budget",
      "module": "life",
      "defined_at": "life/models.rs:40",
      "docs": [
        "Returns the largest neighbor count the mask can reach."
      ],
      "owner": "life::Config",
      "self_kind": "ref",
      "params": [],
      "ret": {
        "t": "scalar",
        "name": "usize"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "life::Config::counts",
      "name": "counts",
      "module": "life",
      "defined_at": "life/models.rs:48",
      "docs": [
        "Resolves the birth and survive counts against the mask's budget.",
        "",
        "# Errors",
        "",
        "Errs when a drawn side's sequence will not build inside the budget."
      ],
      "owner": "life::Config",
      "self_kind": "ref",
      "params": [],
      "ret": {
        "t": "result",
        "item": {
          "t": "tuple",
          "items": [
            {
              "t": "vec",
              "item": {
                "t": "scalar",
                "name": "usize"
              }
            },
            {
              "t": "vec",
              "item": {
                "t": "scalar",
                "name": "usize"
              }
            }
          ]
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "life::Config::new",
      "name": "new",
      "module": "life",
      "defined_at": "life/models.rs:28",
      "docs": [
        "Builds a config with a constant boundary, a 64-generation cap, no tiling and no padding."
      ],
      "owner": "life::Config",
      "self_kind": null,
      "params": [
        {
          "name": "mask",
          "ty": {
            "t": "hand",
            "name": "CellNd",
            "dim": 2
          }
        },
        {
          "name": "birth",
          "ty": {
            "t": "class",
            "path": "life::Counts",
            "dim": null
          }
        },
        {
          "name": "survive",
          "ty": {
            "t": "class",
            "path": "life::Counts",
            "dim": null
          }
        }
      ],
      "ret": {
        "t": "class",
        "path": "life::Config",
        "dim": null
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "life::Counts::drawn",
      "name": "drawn",
      "module": "life",
      "defined_at": "life/source.rs:391",
      "docs": [
        "Builds the counts a sequence lays down, keeping zeros and ones on request."
      ],
      "owner": "life::Counts",
      "self_kind": null,
      "params": [
        {
          "name": "seq",
          "ty": {
            "t": "class",
            "path": "life::Source",
            "dim": null
          }
        },
        {
          "name": "zeros",
          "ty": {
            "t": "scalar",
            "name": "bool"
          }
        },
        {
          "name": "ones",
          "ty": {
            "t": "scalar",
            "name": "bool"
          }
        }
      ],
      "ret": {
        "t": "class",
        "path": "life::Counts",
        "dim": null
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "life::Counts::list",
      "name": "list",
      "module": "life",
      "defined_at": "life/source.rs:387",
      "docs": [
        "Spells the counts outright."
      ],
      "owner": "life::Counts",
      "self_kind": null,
      "params": [
        {
          "name": "counts",
          "ty": {
            "t": "vec",
            "item": {
              "t": "scalar",
              "name": "usize"
            }
          }
        }
      ],
      "ret": {
        "t": "class",
        "path": "life::Counts",
        "dim": null
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "life::Counts::values",
      "name": "values",
      "module": "life",
      "defined_at": "life/source.rs:399",
      "docs": [
        "Returns the counts, a drawn side resolved against the mask's neighbor budget.",
        "",
        "# Errors",
        "",
        "Errs when a drawn side's sequence will not build inside the budget."
      ],
      "owner": "life::Counts",
      "self_kind": "ref",
      "params": [
        {
          "name": "budget",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "vec",
          "item": {
            "t": "scalar",
            "name": "usize"
          }
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "life::Fate::all",
      "name": "all",
      "module": "life",
      "defined_at": "life/mod.rs:73",
      "docs": [
        "Returns every Fate in canonical order."
      ],
      "owner": "life::Fate",
      "self_kind": null,
      "params": [],
      "ret": {
        "t": "array",
        "item": {
          "t": "enum",
          "path": "life::Fate"
        },
        "len": 4
      },
      "dims": [],
      "trait": null,
      "source": "named_enum",
      "constant": true,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "life::Fate::name",
      "name": "name",
      "module": "life",
      "defined_at": "life/mod.rs:73",
      "docs": [
        "Returns the Fate's display name."
      ],
      "owner": "life::Fate",
      "self_kind": "ref",
      "params": [],
      "ret": {
        "t": "ref",
        "mutable": false,
        "lifetime": "'static",
        "item": {
          "t": "str"
        }
      },
      "dims": [],
      "trait": null,
      "source": "named_enum",
      "constant": false,
      "cross": {
        "status": "skip",
        "reason": "&'static return"
      }
    },
    {
      "path": "life::Life::last",
      "name": "last",
      "module": "life",
      "defined_at": "life/models.rs:69",
      "docs": [
        "Returns the final grid, or None when the run is empty."
      ],
      "owner": "life::Life",
      "self_kind": "ref",
      "params": [],
      "ret": {
        "t": "option",
        "item": {
          "t": "ref",
          "mutable": false,
          "lifetime": null,
          "item": {
            "t": "hand",
            "name": "CellNd",
            "dim": 2
          }
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "life::Rule::boundary",
      "name": "boundary",
      "module": "life",
      "defined_at": "life/rule.rs:142",
      "docs": [
        "Returns the edge policy the rule runs under."
      ],
      "owner": "life::Rule",
      "self_kind": "ref",
      "params": [],
      "ret": {
        "t": "enum",
        "path": "life::Boundary"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "life::Rule::checked",
      "name": "checked",
      "module": "life",
      "defined_at": "math/name/mod.rs:35",
      "docs": [
        "Folds a decoded value to its canonical form, or an error for one outside the kind."
      ],
      "owner": "life::Rule",
      "self_kind": "value",
      "params": [],
      "ret": {
        "t": "result",
        "item": {
          "t": "class",
          "path": "life::Rule",
          "dim": null
        }
      },
      "dims": [],
      "trait": "math::name::Named",
      "source": "trait",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "life::Rule::config",
      "name": "config",
      "module": "life",
      "defined_at": "life/rule.rs:150",
      "docs": [
        "Builds a life config running this rule over a neighborhood mask."
      ],
      "owner": "life::Rule",
      "self_kind": "ref",
      "params": [
        {
          "name": "mask",
          "ty": {
            "t": "hand",
            "name": "CellNd",
            "dim": 2
          }
        }
      ],
      "ret": {
        "t": "class",
        "path": "life::Config",
        "dim": null
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "life::Rule::from_file",
      "name": "from_file",
      "module": "life",
      "defined_at": "math/name/mod.rs:62",
      "docs": [
        "Reads a filename back into the value, or an error."
      ],
      "owner": "life::Rule",
      "self_kind": null,
      "params": [
        {
          "name": "text",
          "ty": {
            "t": "str"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "class",
          "path": "life::Rule",
          "dim": null
        }
      },
      "dims": [],
      "trait": "math::name::Named",
      "source": "trait",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "life::Rule::from_json",
      "name": "from_json",
      "module": "life",
      "defined_at": "math/name/mod.rs:41",
      "docs": [
        "Reads a JSON object into its canonical value, or an error naming the broken key."
      ],
      "owner": "life::Rule",
      "self_kind": null,
      "params": [
        {
          "name": "text",
          "ty": {
            "t": "str"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "class",
          "path": "life::Rule",
          "dim": null
        }
      },
      "dims": [],
      "trait": "math::name::Named",
      "source": "trait",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "life::Rule::from_url",
      "name": "from_url",
      "module": "life",
      "defined_at": "math/name/mod.rs:54",
      "docs": [
        "Reads a path and query string back into the value, or an error."
      ],
      "owner": "life::Rule",
      "self_kind": null,
      "params": [
        {
          "name": "text",
          "ty": {
            "t": "str"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "class",
          "path": "life::Rule",
          "dim": null
        }
      },
      "dims": [],
      "trait": "math::name::Named",
      "source": "trait",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "life::Rule::new",
      "name": "new",
      "module": "life",
      "defined_at": "life/rule.rs:125",
      "docs": [
        "Builds a rule from its counts and edge policy, listed counts folded to a sorted set."
      ],
      "owner": "life::Rule",
      "self_kind": null,
      "params": [
        {
          "name": "birth",
          "ty": {
            "t": "class",
            "path": "life::Counts",
            "dim": null
          }
        },
        {
          "name": "survive",
          "ty": {
            "t": "class",
            "path": "life::Counts",
            "dim": null
          }
        },
        {
          "name": "wrap",
          "ty": {
            "t": "scalar",
            "name": "bool"
          }
        }
      ],
      "ret": {
        "t": "class",
        "path": "life::Rule",
        "dim": null
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "life::Rule::of",
      "name": "of",
      "module": "life",
      "defined_at": "life/rule.rs:134",
      "docs": [
        "Reads the rule out of a life config."
      ],
      "owner": "life::Rule",
      "self_kind": null,
      "params": [
        {
          "name": "config",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "class",
              "path": "life::Config",
              "dim": null
            }
          }
        }
      ],
      "ret": {
        "t": "class",
        "path": "life::Rule",
        "dim": null
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "life::Rule::to_file",
      "name": "to_file",
      "module": "life",
      "defined_at": "math/name/mod.rs:58",
      "docs": [
        "Prints the kind and the `key=value` pairs joined by underscores, lists in brackets, or an error when the name does not read back."
      ],
      "owner": "life::Rule",
      "self_kind": "ref",
      "params": [],
      "ret": {
        "t": "result",
        "item": {
          "t": "string"
        }
      },
      "dims": [],
      "trait": "math::name::Named",
      "source": "trait",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "life::Rule::to_id",
      "name": "to_id",
      "module": "life",
      "defined_at": "math/name/mod.rs:46",
      "docs": [
        "Prints the first eight hex digits of the sha256 of the canonical JSON."
      ],
      "owner": "life::Rule",
      "self_kind": "ref",
      "params": [],
      "ret": {
        "t": "string"
      },
      "dims": [],
      "trait": "math::name::Named",
      "source": "trait",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "life::Rule::to_json",
      "name": "to_json",
      "module": "life",
      "defined_at": "math/name/mod.rs:37",
      "docs": [
        "Prints the canonical JSON object."
      ],
      "owner": "life::Rule",
      "self_kind": "ref",
      "params": [],
      "ret": {
        "t": "string"
      },
      "dims": [],
      "trait": "math::name::Named",
      "source": "trait",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "life::Rule::to_mrly",
      "name": "to_mrly",
      "module": "life",
      "defined_at": "math/name/mod.rs:66",
      "docs": [
        "Prints the kind and the keys as a line of prose for pages, or an error when the name does not read back."
      ],
      "owner": "life::Rule",
      "self_kind": "ref",
      "params": [],
      "ret": {
        "t": "result",
        "item": {
          "t": "string"
        }
      },
      "dims": [],
      "trait": "math::name::Named",
      "source": "trait",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "life::Rule::to_url",
      "name": "to_url",
      "module": "life",
      "defined_at": "math/name/mod.rs:50",
      "docs": [
        "Prints the kind as a path and the keys as a query string, lists comma-joined, or an error when the name does not read back."
      ],
      "owner": "life::Rule",
      "self_kind": "ref",
      "params": [],
      "ret": {
        "t": "result",
        "item": {
          "t": "string"
        }
      },
      "dims": [],
      "trait": "math::name::Named",
      "source": "trait",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "life::Source::all",
      "name": "all",
      "module": "life",
      "defined_at": "life/source.rs:182",
      "docs": [
        "Returns every fixed sequence, the seeded and coded families excluded."
      ],
      "owner": "life::Source",
      "self_kind": null,
      "params": [],
      "ret": {
        "t": "array",
        "item": {
          "t": "class",
          "path": "life::Source",
          "dim": null
        },
        "len": 23
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "life::Source::designs",
      "name": "designs",
      "module": "life",
      "defined_at": "life/source.rs:221",
      "docs": [
        "Returns the seventeen mrly design families: the grid, the four classics and their antis."
      ],
      "owner": "life::Source",
      "self_kind": null,
      "params": [],
      "ret": {
        "t": "array",
        "item": {
          "t": "class",
          "path": "life::Source",
          "dim": null
        },
        "len": 17
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "life::Source::is_random",
      "name": "is_random",
      "module": "life",
      "defined_at": "life/source.rs:255",
      "docs": [
        "Returns whether the sequence is a seeded random draw."
      ],
      "owner": "life::Source",
      "self_kind": "value",
      "params": [],
      "ret": {
        "t": "scalar",
        "name": "bool"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "life::Source::name",
      "name": "name",
      "module": "life",
      "defined_at": "life/source.rs:81",
      "docs": [
        "Returns the sequence's parseable name, the one string that regenerates it."
      ],
      "owner": "life::Source",
      "self_kind": "value",
      "params": [],
      "ret": {
        "t": "string"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "life::Source::numbers",
      "name": "numbers",
      "module": "life",
      "defined_at": "life/source.rs:210",
      "docs": [
        "Returns the six number sequences, the random one listed under seed zero."
      ],
      "owner": "life::Source",
      "self_kind": null,
      "params": [],
      "ret": {
        "t": "array",
        "item": {
          "t": "class",
          "path": "life::Source",
          "dim": null
        },
        "len": 6
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "life::Source::oeis",
      "name": "oeis",
      "module": "life",
      "defined_at": "life/source.rs:243",
      "docs": [
        "Returns the sequence's OEIS id, or None off the encyclopedia."
      ],
      "owner": "life::Source",
      "self_kind": "value",
      "params": [],
      "ret": {
        "t": "option",
        "item": {
          "t": "string"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "life::Source::parse",
      "name": "parse",
      "module": "life",
      "defined_at": "life/source.rs:116",
      "docs": [
        "Parses a sequence name back to its source.",
        "",
        "# Errors",
        "",
        "Errs when the name is not a known sequence, or a code family carries no plain number."
      ],
      "owner": "life::Source",
      "self_kind": null,
      "params": [
        {
          "name": "name",
          "ty": {
            "t": "str"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "class",
          "path": "life::Source",
          "dim": null
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "life::Source::read",
      "name": "read",
      "module": "life",
      "defined_at": "life/source.rs:160",
      "docs": [
        "Reads a canonical name off the front of the text, returning the tail left over."
      ],
      "owner": "life::Source",
      "self_kind": null,
      "params": [
        {
          "name": "text",
          "ty": {
            "t": "str"
          }
        }
      ],
      "ret": {
        "t": "option",
        "item": {
          "t": "tuple",
          "items": [
            {
              "t": "class",
              "path": "life::Source",
              "dim": null
            },
            {
              "t": "str"
            }
          ]
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "life::affine",
      "name": "affine",
      "module": "life",
      "defined_at": "life/elementary.rs:120",
      "docs": [
        "Returns whether a rule is affine, its algebraic degree at most one."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "rule",
          "ty": {
            "t": "scalar",
            "name": "u8"
          }
        }
      ],
      "ret": {
        "t": "scalar",
        "name": "bool"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "life::animate",
      "name": "animate",
      "module": "life",
      "defined_at": "life/animate.rs:34",
      "docs": [
        "Runs a seed under a config until it fixes, loops or times out, recording every generation.",
        "",
        "```",
        "use mrlyrs::core::tensor::Tensor;",
        "use mrlyrs::life::{animate, moore, Config, Fate};",
        "use mrlyrs::math::two::Cell2d;",
        "let bar = Cell2d::new(Tensor::of(vec![0, 0, 0, 1, 1, 1, 0, 0, 0], vec![3, 3])?)?;",
        "let life = animate(&bar, &Config::new(moore()?, vec![3].into(), vec![2, 3].into()))?;",
        "assert_eq!(life.fate, Fate::Loop);",
        "# Ok::<(), mrlyrs::Error>(())",
        "```",
        "",
        "# Errors",
        "",
        "Errs when the mask will not step the grid, or the drawn counts will not resolve."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "seed",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "hand",
              "name": "CellNd",
              "dim": 2
            }
          }
        },
        {
          "name": "config",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "class",
              "path": "life::Config",
              "dim": null
            }
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "class",
          "path": "life::Life",
          "dim": null
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "life::churn",
      "name": "churn",
      "module": "life",
      "defined_at": "life/metrics.rs:16",
      "docs": [
        "Returns the mean fraction of sites changed between consecutive grids.",
        "",
        "```",
        "use mrlyrs::core::tensor::Tensor;",
        "use mrlyrs::life::churn;",
        "use mrlyrs::math::two::Cell2d;",
        "let flat = Cell2d::new(Tensor::new(vec![2, 2]))?;",
        "let most = Cell2d::new(Tensor::of(vec![1, 1, 1, 0], vec![2, 2])?)?;",
        "assert_eq!(churn(&[flat, most]), 0.75);",
        "# Ok::<(), mrlyrs::Error>(())",
        "```"
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "grids",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "hand",
              "name": "CellNd",
              "dim": 2
            }
          }
        }
      ],
      "ret": {
        "t": "scalar",
        "name": "f64"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "life::corner_bits",
      "name": "corner_bits",
      "module": "life",
      "defined_at": "life/elementary.rs:100",
      "docs": [
        "Returns the eight output bits of a rule, corner `i` at index `i = 4 x0 + 2 x1 + x2`."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "rule",
          "ty": {
            "t": "scalar",
            "name": "u8"
          }
        }
      ],
      "ret": {
        "t": "vec",
        "item": {
          "t": "scalar",
          "name": "u8"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "life::counts",
      "name": "counts",
      "module": "life",
      "defined_at": "life/source.rs:353",
      "docs": [
        "Returns the sequence up to max_neighbors, keeping zeros and ones only on request.",
        "",
        "```",
        "use mrlyrs::life::{counts, Source};",
        "assert_eq!(counts(Source::Binary, 8, false, false)?, vec![2, 4, 8]);",
        "# Ok::<(), mrlyrs::Error>(())",
        "```",
        "",
        "# Errors",
        "",
        "Errs when a design behind the sequence will not build or count."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "seq",
          "ty": {
            "t": "class",
            "path": "life::Source",
            "dim": null
          }
        },
        {
          "name": "max_neighbors",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "include_zeros",
          "ty": {
            "t": "scalar",
            "name": "bool"
          }
        },
        {
          "name": "include_ones",
          "ty": {
            "t": "scalar",
            "name": "bool"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "vec",
          "item": {
            "t": "scalar",
            "name": "usize"
          }
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "life::crop",
      "name": "crop",
      "module": "life",
      "defined_at": "life/crop.rs:10",
      "docs": [
        "Crops a frame sequence to the centred square bounding every cell ever alive.",
        "",
        "# Errors",
        "",
        "Errs when the frames do not share one shape."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "grids",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "hand",
              "name": "CellNd",
              "dim": 2
            }
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "vec",
          "item": {
            "t": "hand",
            "name": "CellNd",
            "dim": 2
          }
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "life::cube_orbit",
      "name": "cube_orbit",
      "module": "life",
      "defined_at": "life/elementary.rs:149",
      "docs": [
        "Returns the rules a rule reaches under the signed axis permutations of the cube, in ascending order."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "rule",
          "ty": {
            "t": "scalar",
            "name": "u8"
          }
        }
      ],
      "ret": {
        "t": "vec",
        "item": {
          "t": "scalar",
          "name": "u8"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "life::design_mask",
      "name": "design_mask",
      "module": "life",
      "defined_at": "life/mask.rs:15",
      "docs": [
        "Builds the base-2 design mask a code names at an odd side grown to the given Kronecker",
        "level, its centre popped.",
        "",
        "# Errors",
        "",
        "Errs when the dimension is not 1 or 2, the side is even, the level is zero, or the side",
        "overflows a usize."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "dimension",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "code",
          "ty": {
            "t": "code"
          }
        },
        {
          "name": "number",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "level",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "hand",
          "name": "Tensor",
          "dim": null
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "life::elementary::output",
      "name": "output",
      "module": "life::elementary",
      "defined_at": "life/elementary.rs:9",
      "docs": [
        "Returns the bit a rule sends the neighbourhood to, reading bit `4l + 2c + r` in Wolfram's numbering off the low bit of each cell."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "rule",
          "ty": {
            "t": "scalar",
            "name": "u8"
          }
        },
        {
          "name": "l",
          "ty": {
            "t": "scalar",
            "name": "u8"
          }
        },
        {
          "name": "c",
          "ty": {
            "t": "scalar",
            "name": "u8"
          }
        },
        {
          "name": "r",
          "ty": {
            "t": "scalar",
            "name": "u8"
          }
        }
      ],
      "ret": {
        "t": "scalar",
        "name": "u8"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "life::entropy",
      "name": "entropy",
      "module": "life",
      "defined_at": "life/metrics.rs:37",
      "docs": [
        "Returns the grid's binary Shannon entropy in millibits.",
        "",
        "```",
        "use mrlyrs::core::tensor::Tensor;",
        "use mrlyrs::life::entropy;",
        "use mrlyrs::math::two::Cell2d;",
        "let half = Cell2d::new(Tensor::of(vec![1, 1, 0, 0], vec![2, 2])?)?;",
        "assert_eq!(entropy(&half), 1000);",
        "# Ok::<(), mrlyrs::Error>(())",
        "```"
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "grid",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "hand",
              "name": "CellNd",
              "dim": 2
            }
          }
        }
      ],
      "ret": {
        "t": "scalar",
        "name": "i64"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "life::frames",
      "name": "frames",
      "module": "life",
      "defined_at": "life/render.rs:27",
      "docs": [
        "Renders grids to white-on-black PNG bytes at a pixel scale.",
        "",
        "```",
        "use mrlyrs::core::tensor::Tensor;",
        "use mrlyrs::life::frames;",
        "use mrlyrs::math::two::Cell2d;",
        "let grid = Cell2d::new(Tensor::of(vec![1, 0, 0, 1], vec![2, 2])?)?;",
        "assert_eq!(frames(&[grid.clone(), grid], 4)?.len(), 2);",
        "# Ok::<(), mrlyrs::Error>(())",
        "```",
        "",
        "# Errors",
        "",
        "Errs when a grid will not encode to PNG at the scale."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "grids",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "hand",
              "name": "CellNd",
              "dim": 2
            }
          }
        },
        {
          "name": "scale",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "vec",
          "item": {
            "t": "vec",
            "item": {
              "t": "scalar",
              "name": "u8"
            }
          }
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "life::gasket",
      "name": "gasket",
      "module": "life",
      "defined_at": "life/elementary.rs:315",
      "docs": [
        "Returns the base-2 plane design a rule's single seed draws, or None when it draws none."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "rule",
          "ty": {
            "t": "scalar",
            "name": "u8"
          }
        }
      ],
      "ret": {
        "t": "option",
        "item": {
          "t": "string"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "life::genus",
      "name": "genus",
      "module": "life",
      "defined_at": "life/elementary.rs:210",
      "docs": [
        "Returns the genus of a rule's cube class: `iso` when it meets a level set, `axis` when it meets an axis-pinned block, else `comp`."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "rule",
          "ty": {
            "t": "scalar",
            "name": "u8"
          }
        }
      ],
      "ret": {
        "t": "string"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "life::heatmap",
      "name": "heatmap",
      "module": "life",
      "defined_at": "life/render.rs:132",
      "docs": [
        "Renders a whole run's cumulative-visit heatmap frames with the heat ramp.",
        "",
        "```",
        "use mrlyrs::core::tensor::Tensor;",
        "use mrlyrs::life::heatmap;",
        "use mrlyrs::math::two::Cell2d;",
        "let grid = Cell2d::new(Tensor::of(vec![1, 0, 0, 1], vec![2, 2])?)?;",
        "assert_eq!(heatmap(&[grid.clone(), grid], 4)?.len(), 2);",
        "# Ok::<(), mrlyrs::Error>(())",
        "```",
        "",
        "# Errors",
        "",
        "Errs when the grids differ in shape, or a frame will not encode at the scale."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "grids",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "hand",
              "name": "CellNd",
              "dim": 2
            }
          }
        },
        {
          "name": "scale",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "vec",
          "item": {
            "t": "vec",
            "item": {
              "t": "scalar",
              "name": "u8"
            }
          }
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "life::history",
      "name": "history",
      "module": "life",
      "defined_at": "life/elementary.rs:68",
      "docs": [
        "Returns the space-time diagram of a seed row, row 0 the seed and then one row per generation.",
        "",
        "```",
        "let run = mrlyrs::life::history(&[0, 0, 1, 0, 0], 90, 2, false).unwrap();",
        "assert_eq!(run.shape, vec![3, 5]);",
        "assert!(mrlyrs::life::history(&[0, 2, 0], 90, 1, false).is_err());",
        "```",
        "",
        "# Errors",
        "",
        "Errs when the row holds a value above one."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "row",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "scalar",
              "name": "u8"
            }
          }
        },
        {
          "name": "rule",
          "ty": {
            "t": "scalar",
            "name": "u8"
          }
        },
        {
          "name": "steps",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "wrap",
          "ty": {
            "t": "scalar",
            "name": "bool"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "hand",
          "name": "Tensor",
          "dim": null
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "life::lambda",
      "name": "lambda",
      "module": "life",
      "defined_at": "life/elementary.rs:110",
      "docs": [
        "Returns Langton's lambda, the popcount over eight."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "rule",
          "ty": {
            "t": "scalar",
            "name": "u8"
          }
        }
      ],
      "ret": {
        "t": "scalar",
        "name": "f64"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "life::lattice_index",
      "name": "lattice_index",
      "module": "life",
      "defined_at": "life/mask.rs:70",
      "docs": [
        "Returns the index of the lattice the mask offsets generate together with the centre, zero when they do not span the dimension."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "mask",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "hand",
              "name": "Tensor",
              "dim": null
            }
          }
        }
      ],
      "ret": {
        "t": "scalar",
        "name": "usize"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "life::mask_offsets",
      "name": "mask_offsets",
      "module": "life",
      "defined_at": "life/mask.rs:48",
      "docs": [
        "Returns the offsets a mask's filled sites take from its centre, the centre itself dropped."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "mask",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "hand",
              "name": "Tensor",
              "dim": null
            }
          }
        }
      ],
      "ret": {
        "t": "vec",
        "item": {
          "t": "vec",
          "item": {
            "t": "scalar",
            "name": "i64"
          }
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "life::moore",
      "name": "moore",
      "module": "life",
      "defined_at": "life/mod.rs:51",
      "docs": [
        "Builds the 3 by 3 Moore mask, every site on but the center.",
        "",
        "# Errors",
        "",
        "Errs when the mask tensor will not make a flat cell."
      ],
      "owner": null,
      "self_kind": null,
      "params": [],
      "ret": {
        "t": "result",
        "item": {
          "t": "hand",
          "name": "CellNd",
          "dim": 2
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "life::movie",
      "name": "movie",
      "module": "life",
      "defined_at": "life/render.rs:52",
      "docs": [
        "Renders grids into one looping black-on-white gif, the delay in hundredths of a second.",
        "",
        "# Errors",
        "",
        "Errs when no grid is given, the grids differ in size, or the gif will not encode."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "grids",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "hand",
              "name": "CellNd",
              "dim": 2
            }
          }
        },
        {
          "name": "scale",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "delay",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "vec",
          "item": {
            "t": "scalar",
            "name": "u8"
          }
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "life::next_grid",
      "name": "next_grid",
      "module": "life",
      "defined_at": "life/step.rs:23",
      "docs": [
        "Advances a grid one generation under birth and survive counts, a neighbor mask and a boundary.",
        "",
        "```",
        "use mrlyrs::core::tensor::Tensor;",
        "use mrlyrs::life::{moore, next_grid, Boundary};",
        "use mrlyrs::math::two::Cell2d;",
        "let bar = Cell2d::new(Tensor::of(vec![0, 0, 0, 1, 1, 1, 0, 0, 0], vec![3, 3])?)?;",
        "let mask = moore()?.types().clone();",
        "let next = next_grid(&bar, &[3], &[2, 3], &mask, Boundary::Constant)?;",
        "assert_eq!(next.types().get(&[0, 1])?, 1);",
        "# Ok::<(), mrlyrs::Error>(())",
        "```",
        "",
        "# Errors",
        "",
        "Errs when the mask will not count the grid's neighbors, an even side for one."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "cell",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "hand",
              "name": "CellNd",
              "dim": 2
            }
          }
        },
        {
          "name": "birth",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "scalar",
              "name": "usize"
            }
          }
        },
        {
          "name": "survive",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "scalar",
              "name": "usize"
            }
          }
        },
        {
          "name": "mask",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "hand",
              "name": "Tensor",
              "dim": null
            }
          }
        },
        {
          "name": "boundary",
          "ty": {
            "t": "enum",
            "path": "life::Boundary"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "hand",
          "name": "CellNd",
          "dim": 2
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "life::npn_class",
      "name": "npn_class",
      "module": "life",
      "defined_at": "life/elementary.rs:169",
      "docs": [
        "Returns the rules a rule reaches under the cube group together with the output complement, its NPN class, in ascending order."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "rule",
          "ty": {
            "t": "scalar",
            "name": "u8"
          }
        }
      ],
      "ret": {
        "t": "vec",
        "item": {
          "t": "scalar",
          "name": "u8"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "life::outer_totalistic",
      "name": "outer_totalistic",
      "module": "life",
      "defined_at": "life/elementary.rs:295",
      "docs": [
        "Returns the birth and survive counts of a rule read outer-totalistically on its two outer cells, or None when it does not read them by count alone."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "rule",
          "ty": {
            "t": "scalar",
            "name": "u8"
          }
        }
      ],
      "ret": {
        "t": "option",
        "item": {
          "t": "tuple",
          "items": [
            {
              "t": "vec",
              "item": {
                "t": "scalar",
                "name": "usize"
              }
            },
            {
              "t": "vec",
              "item": {
                "t": "scalar",
                "name": "usize"
              }
            }
          ]
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "life::popcount",
      "name": "popcount",
      "module": "life",
      "defined_at": "life/elementary.rs:105",
      "docs": [
        "Returns the count of neighbourhoods a rule sends to one."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "rule",
          "ty": {
            "t": "scalar",
            "name": "u8"
          }
        }
      ],
      "ret": {
        "t": "scalar",
        "name": "u32"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "life::render::frame",
      "name": "frame",
      "module": "life::render",
      "defined_at": "life/render.rs:42",
      "docs": [
        "Renders one grid to white-on-black PNG bytes at a pixel scale.",
        "",
        "# Errors",
        "",
        "Errs when the grid will not encode to PNG at the scale."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "grid",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "hand",
              "name": "CellNd",
              "dim": 2
            }
          }
        },
        {
          "name": "scale",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "vec",
          "item": {
            "t": "scalar",
            "name": "u8"
          }
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "life::reversible",
      "name": "reversible",
      "module": "life",
      "defined_at": "life/elementary.rs:264",
      "docs": [
        "Returns whether a rule is reversible, by the pair graph on the de Bruijn nodes pruned to its bi-infinite core."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "rule",
          "ty": {
            "t": "scalar",
            "name": "u8"
          }
        }
      ],
      "ret": {
        "t": "scalar",
        "name": "bool"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "life::rule::counts::deserialize",
      "name": "deserialize",
      "module": "life::rule::counts",
      "defined_at": "life/rule.rs:92",
      "docs": [],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "deserializer",
          "ty": {
            "t": "unknown",
            "text": "generic D"
          }
        }
      ],
      "ret": {
        "t": "unknown",
        "text": "Result < Counts , D :: Error >"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "private"
      }
    },
    {
      "path": "life::rule::counts::read",
      "name": "read",
      "module": "life::rule::counts",
      "defined_at": "life/rule.rs:44",
      "docs": [],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "text",
          "ty": {
            "t": "str"
          }
        }
      ],
      "ret": {
        "t": "option",
        "item": {
          "t": "class",
          "path": "life::Counts",
          "dim": null
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "private"
      }
    },
    {
      "path": "life::rule::counts::serialize",
      "name": "serialize",
      "module": "life::rule::counts",
      "defined_at": "life/rule.rs:57",
      "docs": [],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "counts",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "class",
              "path": "life::Counts",
              "dim": null
            }
          }
        },
        {
          "name": "serializer",
          "ty": {
            "t": "unknown",
            "text": "generic S"
          }
        }
      ],
      "ret": {
        "t": "unknown",
        "text": "Result < S :: Ok , S :: Error >"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "private"
      }
    },
    {
      "path": "life::rule_degree",
      "name": "rule_degree",
      "module": "life",
      "defined_at": "life/elementary.rs:115",
      "docs": [
        "Returns the GF(2) algebraic degree of a rule, minus one for the zero rule."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "rule",
          "ty": {
            "t": "scalar",
            "name": "u8"
          }
        }
      ],
      "ret": {
        "t": "scalar",
        "name": "i32"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "life::rule_name",
      "name": "rule_name",
      "module": "life",
      "defined_at": "life/elementary.rs:129",
      "docs": [
        "Returns the design name a rule carries, `bang dim 3, code <rule>`.",
        "",
        "# Errors",
        "",
        "Errs when the name will not print as a line of prose."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "rule",
          "ty": {
            "t": "scalar",
            "name": "u8"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "string"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "life::single_seed",
      "name": "single_seed",
      "module": "life",
      "defined_at": "life/elementary.rs:86",
      "docs": [
        "Returns the single-seed diagram: one live cell run the given generations on a line padded by `steps` cells beyond the `2 steps + 1` window on each side, cropped back to that window.",
        "",
        "# Errors",
        "",
        "Errs when the diagram's cells do not fill its shape."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "rule",
          "ty": {
            "t": "scalar",
            "name": "u8"
          }
        },
        {
          "name": "steps",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "hand",
          "name": "Tensor",
          "dim": null
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "life::source::sequence",
      "name": "sequence",
      "module": "life::source",
      "defined_at": "life/source.rs:308",
      "docs": [
        "Generates the sequence's values up to the limit.",
        "",
        "# Errors",
        "",
        "Errs when a design behind the sequence will not build or count."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "seq",
          "ty": {
            "t": "class",
            "path": "life::Source",
            "dim": null
          }
        },
        {
          "name": "limit",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "vec",
          "item": {
            "t": "scalar",
            "name": "usize"
          }
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "life::step",
      "name": "step",
      "module": "life",
      "defined_at": "life/elementary.rs:25",
      "docs": [
        "Advances one row one generation, a constant-0 boundary unless the edges wrap.",
        "",
        "# Errors",
        "",
        "Errs when the row holds a value above one."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "row",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "scalar",
              "name": "u8"
            }
          }
        },
        {
          "name": "rule",
          "ty": {
            "t": "scalar",
            "name": "u8"
          }
        },
        {
          "name": "wrap",
          "ty": {
            "t": "scalar",
            "name": "bool"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "vec",
          "item": {
            "t": "scalar",
            "name": "u8"
          }
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "life::surjective",
      "name": "surjective",
      "module": "life",
      "defined_at": "life/elementary.rs:239",
      "docs": [
        "Returns whether a rule is surjective on bi-infinite lines, by the de Bruijn subset walk from the full node set."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "rule",
          "ty": {
            "t": "scalar",
            "name": "u8"
          }
        }
      ],
      "ret": {
        "t": "scalar",
        "name": "bool"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "life::tessellate",
      "name": "tessellate",
      "module": "life",
      "defined_at": "life/crop.rs:75",
      "docs": [
        "Tiles every frame n by n to reach at least min_canvas a side, unchanged when already there.",
        "",
        "# Errors",
        "",
        "Errs when a frame will not tile to the canvas."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "grids",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "hand",
              "name": "CellNd",
              "dim": 2
            }
          }
        },
        {
          "name": "min_canvas",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "vec",
          "item": {
            "t": "hand",
            "name": "CellNd",
            "dim": 2
          }
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "life::wolfram_class",
      "name": "wolfram_class",
      "module": "life",
      "defined_at": "life/elementary.rs:157",
      "docs": [
        "Returns the rules a rule reaches under left-right reflection and conjugation, Wolfram's equivalence, in ascending order."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "rule",
          "ty": {
            "t": "scalar",
            "name": "u8"
          }
        }
      ],
      "ret": {
        "t": "vec",
        "item": {
          "t": "scalar",
          "name": "u8"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::atoms::carpet_2d",
      "name": "carpet_2d",
      "module": "math::atoms",
      "defined_at": "math/atoms.rs:102",
      "docs": [
        "Builds an n by n carpet, on where at most one coordinate is odd.",
        "",
        "```",
        "let seed = mrlyrs::math::atoms::carpet_2d(3);",
        "assert_eq!(seed.sum(), 8);",
        "```"
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "n",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "hand",
        "name": "Tensor",
        "dim": null
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::atoms::carpet_3d",
      "name": "carpet_3d",
      "module": "math::atoms",
      "defined_at": "math/atoms.rs:107",
      "docs": [
        "Builds an n by n by n carpet, on where at most one coordinate is odd."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "n",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "hand",
        "name": "Tensor",
        "dim": null
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::atoms::carpet_nd",
      "name": "carpet_nd",
      "module": "math::atoms",
      "defined_at": "math/atoms.rs:23",
      "docs": [
        "Builds a carpet of the given side at any rank, on where at most one coordinate is odd."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "n",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "rank",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "hand",
        "name": "Tensor",
        "dim": null
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::atoms::dust_2d",
      "name": "dust_2d",
      "module": "math::atoms",
      "defined_at": "math/atoms.rs:167",
      "docs": [
        "Builds an n by n dust, on where both coordinates are even."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "n",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "hand",
        "name": "Tensor",
        "dim": null
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::atoms::dust_3d",
      "name": "dust_3d",
      "module": "math::atoms",
      "defined_at": "math/atoms.rs:172",
      "docs": [
        "Builds an n by n by n dust, on where all three coordinates are even."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "n",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "hand",
        "name": "Tensor",
        "dim": null
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::atoms::dust_nd",
      "name": "dust_nd",
      "module": "math::atoms",
      "defined_at": "math/atoms.rs:50",
      "docs": [
        "Builds a dust of the given side at any rank, on where every coordinate is even."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "n",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "rank",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "hand",
        "name": "Tensor",
        "dim": null
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::atoms::hline_2d",
      "name": "hline_2d",
      "module": "math::atoms",
      "defined_at": "math/atoms.rs:177",
      "docs": [
        "Builds an n by n line, free on axis 1, on along the odd rows."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "n",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "hand",
        "name": "Tensor",
        "dim": null
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::atoms::htree_2d",
      "name": "htree_2d",
      "module": "math::atoms",
      "defined_at": "math/atoms.rs:122",
      "docs": [
        "Builds an n by n tree, free on axis 1, on along the even rows."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "n",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "hand",
        "name": "Tensor",
        "dim": null
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::atoms::line_nd",
      "name": "line_nd",
      "module": "math::atoms",
      "defined_at": "math/atoms.rs:55",
      "docs": [
        "Builds a line of the given side at any rank, odd on every axis but the free one; an axis past the rank frees none."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "n",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "rank",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "axis",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "hand",
        "name": "Tensor",
        "dim": null
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::atoms::net_2d",
      "name": "net_2d",
      "module": "math::atoms",
      "defined_at": "math/atoms.rs:112",
      "docs": [
        "Builds an n by n net, on where at least one coordinate is odd."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "n",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "hand",
        "name": "Tensor",
        "dim": null
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::atoms::net_3d",
      "name": "net_3d",
      "module": "math::atoms",
      "defined_at": "math/atoms.rs:117",
      "docs": [
        "Builds an n by n by n net, on where at least two coordinates are odd."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "n",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "hand",
        "name": "Tensor",
        "dim": null
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::atoms::net_nd",
      "name": "net_nd",
      "module": "math::atoms",
      "defined_at": "math/atoms.rs:28",
      "docs": [
        "Builds a net of the given side at any rank, on where the odd coordinates plus one reach the rank."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "n",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "rank",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "hand",
        "name": "Tensor",
        "dim": null
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::atoms::noise_2d",
      "name": "noise_2d",
      "module": "math::atoms",
      "defined_at": "math/atoms.rs:87",
      "docs": [
        "Builds an n by n tensor where each cell turns on with probability density, drawn from the stream."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "n",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "density",
          "ty": {
            "t": "scalar",
            "name": "f64"
          }
        },
        {
          "name": "rng",
          "ty": {
            "t": "ref",
            "mutable": true,
            "lifetime": null,
            "item": {
              "t": "hand",
              "name": "Rng",
              "dim": null
            }
          }
        }
      ],
      "ret": {
        "t": "hand",
        "name": "Tensor",
        "dim": null
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::atoms::noise_3d",
      "name": "noise_3d",
      "module": "math::atoms",
      "defined_at": "math/atoms.rs:92",
      "docs": [
        "Builds an n by n by n tensor where each cell turns on with probability density, drawn from the stream."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "n",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "density",
          "ty": {
            "t": "scalar",
            "name": "f64"
          }
        },
        {
          "name": "rng",
          "ty": {
            "t": "ref",
            "mutable": true,
            "lifetime": null,
            "item": {
              "t": "hand",
              "name": "Rng",
              "dim": null
            }
          }
        }
      ],
      "ret": {
        "t": "hand",
        "name": "Tensor",
        "dim": null
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::atoms::ones_2d",
      "name": "ones_2d",
      "module": "math::atoms",
      "defined_at": "math/atoms.rs:77",
      "docs": [
        "Builds an n by n tensor of ones."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "n",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "hand",
        "name": "Tensor",
        "dim": null
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::atoms::ones_3d",
      "name": "ones_3d",
      "module": "math::atoms",
      "defined_at": "math/atoms.rs:82",
      "docs": [
        "Builds an n by n by n tensor of ones."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "n",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "hand",
        "name": "Tensor",
        "dim": null
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::atoms::point_2d",
      "name": "point_2d",
      "module": "math::atoms",
      "defined_at": "math/atoms.rs:157",
      "docs": [
        "Builds an n by n point, on where both coordinates are odd."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "n",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "hand",
        "name": "Tensor",
        "dim": null
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::atoms::point_3d",
      "name": "point_3d",
      "module": "math::atoms",
      "defined_at": "math/atoms.rs:162",
      "docs": [
        "Builds an n by n by n point, on where all three coordinates are odd."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "n",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "hand",
        "name": "Tensor",
        "dim": null
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::atoms::point_nd",
      "name": "point_nd",
      "module": "math::atoms",
      "defined_at": "math/atoms.rs:45",
      "docs": [
        "Builds a point of the given side at any rank, on where every coordinate is odd."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "n",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "rank",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "hand",
        "name": "Tensor",
        "dim": null
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::atoms::star_2d",
      "name": "star_2d",
      "module": "math::atoms",
      "defined_at": "math/atoms.rs:202",
      "docs": [
        "Builds an n by n star, on where exactly one coordinate is odd."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "n",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "hand",
        "name": "Tensor",
        "dim": null
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::atoms::star_3d",
      "name": "star_3d",
      "module": "math::atoms",
      "defined_at": "math/atoms.rs:207",
      "docs": [
        "Builds an n by n by n star, on where exactly one coordinate is odd."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "n",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "hand",
        "name": "Tensor",
        "dim": null
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::atoms::star_nd",
      "name": "star_nd",
      "module": "math::atoms",
      "defined_at": "math/atoms.rs:62",
      "docs": [
        "Builds a star of the given side at any rank, on where exactly one coordinate is odd."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "n",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "rank",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "hand",
        "name": "Tensor",
        "dim": null
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::atoms::tree_nd",
      "name": "tree_nd",
      "module": "math::atoms",
      "defined_at": "math/atoms.rs:33",
      "docs": [
        "Builds a tree of the given side at any rank, even on every axis but the free one; an axis past the rank frees none."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "n",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "rank",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "axis",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "hand",
        "name": "Tensor",
        "dim": null
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::atoms::vline_2d",
      "name": "vline_2d",
      "module": "math::atoms",
      "defined_at": "math/atoms.rs:182",
      "docs": [
        "Builds an n by n line, free on axis 0, on along the odd columns."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "n",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "hand",
        "name": "Tensor",
        "dim": null
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::atoms::void_2d",
      "name": "void_2d",
      "module": "math::atoms",
      "defined_at": "math/atoms.rs:147",
      "docs": [
        "Builds an n by n void, on where both coordinates share one parity."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "n",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "hand",
        "name": "Tensor",
        "dim": null
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::atoms::void_3d",
      "name": "void_3d",
      "module": "math::atoms",
      "defined_at": "math/atoms.rs:152",
      "docs": [
        "Builds an n by n by n void, on where all three coordinates share one parity."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "n",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "hand",
        "name": "Tensor",
        "dim": null
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::atoms::void_nd",
      "name": "void_nd",
      "module": "math::atoms",
      "defined_at": "math/atoms.rs:40",
      "docs": [
        "Builds a void of the given side at any rank, on where every coordinate shares one parity."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "n",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "rank",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "hand",
        "name": "Tensor",
        "dim": null
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::atoms::vtree_2d",
      "name": "vtree_2d",
      "module": "math::atoms",
      "defined_at": "math/atoms.rs:127",
      "docs": [
        "Builds an n by n tree, free on axis 0, on along the even columns."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "n",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "hand",
        "name": "Tensor",
        "dim": null
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::atoms::xline_3d",
      "name": "xline_3d",
      "module": "math::atoms",
      "defined_at": "math/atoms.rs:187",
      "docs": [
        "Builds an n by n by n line, free on axis 0, its rods running along x."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "n",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "hand",
        "name": "Tensor",
        "dim": null
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::atoms::xtree_3d",
      "name": "xtree_3d",
      "module": "math::atoms",
      "defined_at": "math/atoms.rs:132",
      "docs": [
        "Builds an n by n by n tree, free on axis 0, its beams running along x."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "n",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "hand",
        "name": "Tensor",
        "dim": null
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::atoms::yline_3d",
      "name": "yline_3d",
      "module": "math::atoms",
      "defined_at": "math/atoms.rs:192",
      "docs": [
        "Builds an n by n by n line, free on axis 1, its rods running along y."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "n",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "hand",
        "name": "Tensor",
        "dim": null
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::atoms::ytree_3d",
      "name": "ytree_3d",
      "module": "math::atoms",
      "defined_at": "math/atoms.rs:137",
      "docs": [
        "Builds an n by n by n tree, free on axis 1, its beams running along y."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "n",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "hand",
        "name": "Tensor",
        "dim": null
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::atoms::zeros_2d",
      "name": "zeros_2d",
      "module": "math::atoms",
      "defined_at": "math/atoms.rs:67",
      "docs": [
        "Builds an n by n tensor of zeros."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "n",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "hand",
        "name": "Tensor",
        "dim": null
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::atoms::zeros_3d",
      "name": "zeros_3d",
      "module": "math::atoms",
      "defined_at": "math/atoms.rs:72",
      "docs": [
        "Builds an n by n by n tensor of zeros."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "n",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "hand",
        "name": "Tensor",
        "dim": null
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::atoms::zline_3d",
      "name": "zline_3d",
      "module": "math::atoms",
      "defined_at": "math/atoms.rs:197",
      "docs": [
        "Builds an n by n by n line, free on axis 2, its rods running along z."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "n",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "hand",
        "name": "Tensor",
        "dim": null
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::atoms::ztree_3d",
      "name": "ztree_3d",
      "module": "math::atoms",
      "defined_at": "math/atoms.rs:142",
      "docs": [
        "Builds an n by n by n tree, free on axis 2, its beams running along z."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "n",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "hand",
        "name": "Tensor",
        "dim": null
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::bang::Design::anf",
      "name": "anf",
      "module": "math::bang",
      "defined_at": "math/bang/universe.rs:238",
      "docs": [
        "Returns the design's algebraic normal form as a string."
      ],
      "owner": "math::bang::Design",
      "self_kind": "ref",
      "params": [],
      "ret": {
        "t": "string"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::bang::Design::degree",
      "name": "degree",
      "module": "math::bang",
      "defined_at": "math/bang/universe.rs:234",
      "docs": [
        "Returns the design's algebraic degree, or -1 for the zero design."
      ],
      "owner": "math::bang::Design",
      "self_kind": "ref",
      "params": [],
      "ret": {
        "t": "scalar",
        "name": "i32"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::bang::Design::name",
      "name": "name",
      "module": "math::bang",
      "defined_at": "math/bang/universe.rs:214",
      "docs": [
        "Returns the design's name as a line of prose, `bang dim 2, code 7`.",
        "",
        "# Errors",
        "",
        "Errors when the design's name does not read back."
      ],
      "owner": "math::bang::Design",
      "self_kind": "ref",
      "params": [],
      "ret": {
        "t": "result",
        "item": {
          "t": "string"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::bang::Design::rule",
      "name": "rule",
      "module": "math::bang",
      "defined_at": "math/bang/universe.rs:222",
      "docs": [
        "Returns the design's filled corners in sorted order."
      ],
      "owner": "math::bang::Design",
      "self_kind": "ref",
      "params": [],
      "ret": {
        "t": "vec",
        "item": {
          "t": "vec",
          "item": {
            "t": "scalar",
            "name": "u8"
          }
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::bang::MagicLayer::new",
      "name": "new",
      "module": "math::bang",
      "defined_at": "math/bang/factory.rs:20",
      "docs": [
        "Pins a design to the side number it renders at."
      ],
      "owner": "math::bang::MagicLayer",
      "self_kind": null,
      "params": [
        {
          "name": "design",
          "ty": {
            "t": "class",
            "path": "math::name::Bang",
            "dim": null
          }
        },
        {
          "name": "number",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "plain",
        "path": "math::bang::MagicLayer"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::bang::Universe::all",
      "name": "all",
      "module": "math::bang",
      "defined_at": "math/bang/universe.rs:293",
      "docs": [
        "Returns every design in code order."
      ],
      "owner": "math::bang::Universe",
      "self_kind": "ref",
      "params": [],
      "ret": {
        "t": "vec",
        "item": {
          "t": "class",
          "path": "math::bang::Design",
          "dim": null
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::bang::Universe::canonical",
      "name": "canonical",
      "module": "math::bang",
      "defined_at": "math/bang/universe.rs:299",
      "docs": [
        "Returns the designs whose codes lead their orbits."
      ],
      "owner": "math::bang::Universe",
      "self_kind": "ref",
      "params": [],
      "ret": {
        "t": "vec",
        "item": {
          "t": "class",
          "path": "math::bang::Design",
          "dim": null
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::bang::Universe::design",
      "name": "design",
      "module": "math::bang",
      "defined_at": "math/bang/universe.rs:282",
      "docs": [
        "Returns the design at a code with its precomputed orbit facts."
      ],
      "owner": "math::bang::Universe",
      "self_kind": "ref",
      "params": [
        {
          "name": "code",
          "ty": {
            "t": "code"
          }
        }
      ],
      "ret": {
        "t": "class",
        "path": "math::bang::Design",
        "dim": null
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::bang::Universe::distinct",
      "name": "distinct",
      "module": "math::bang",
      "defined_at": "math/bang/universe.rs:303",
      "docs": [
        "Returns the number of distinct orbits."
      ],
      "owner": "math::bang::Universe",
      "self_kind": "ref",
      "params": [],
      "ret": {
        "t": "scalar",
        "name": "usize"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::bang::Universe::new",
      "name": "new",
      "module": "math::bang",
      "defined_at": "math/bang/universe.rs:260",
      "docs": [
        "Enumerates every orbit of a dimension from 1 to 4.",
        "",
        "# Errors",
        "",
        "Errors outside dimensions one to four."
      ],
      "owner": "math::bang::Universe",
      "self_kind": null,
      "params": [
        {
          "name": "dimension",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "class",
          "path": "math::bang::Universe",
          "dim": null
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::bang::bang",
      "name": "bang",
      "module": "math::bang",
      "defined_at": "math/bang/universe.rs:322",
      "docs": [
        "Builds the universe of a dimension.",
        "",
        "```",
        "let u = mrlyrs::math::bang::bang(2).unwrap();",
        "assert_eq!(u.total, 16);",
        "assert_eq!(u.distinct(), 6);",
        "```",
        "",
        "# Errors",
        "",
        "Errors outside dimensions one to four."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "dimension",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "class",
          "path": "math::bang::Universe",
          "dim": null
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::bang::baseq::axis_maps",
      "name": "axis_maps",
      "module": "math::bang::baseq",
      "defined_at": "math/bang/baseq.rs:12",
      "docs": [
        "Returns the distinct rotation and reflection maps of a base-q axis."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "base",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "vec",
        "item": {
          "t": "vec",
          "item": {
            "t": "scalar",
            "name": "usize"
          }
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::bang::baseq::bracelets",
      "name": "bracelets",
      "module": "math::bang::baseq",
      "defined_at": "math/bang/baseq.rs:244",
      "docs": [
        "Returns the distinct one-dimensional design counts for bases 1 through max_base.",
        "",
        "# Errors",
        "",
        "Errors when a Burnside average is not whole."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "max_base",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "vec",
          "item": {
            "t": "u128"
          }
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::bang::baseq::canonical",
      "name": "canonical",
      "module": "math::bang::baseq",
      "defined_at": "math/bang/baseq.rs:173",
      "docs": [
        "Returns the least code of the design's orbit.",
        "",
        "# Errors",
        "",
        "Errors on an empty group."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "group",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "vec",
              "item": {
                "t": "scalar",
                "name": "usize"
              }
            }
          }
        },
        {
          "name": "code",
          "ty": {
            "t": "code"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "code"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::bang::baseq::carry",
      "name": "carry",
      "module": "math::bang::baseq",
      "defined_at": "math/bang/baseq.rs:152",
      "docs": [
        "Carries a code through one group element."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "element",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "scalar",
              "name": "usize"
            }
          }
        },
        {
          "name": "code",
          "ty": {
            "t": "code"
          }
        }
      ],
      "ret": {
        "t": "code"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::bang::baseq::class_sequence",
      "name": "class_sequence",
      "module": "math::bang::baseq",
      "defined_at": "math/bang/baseq.rs:266",
      "docs": [
        "Returns the fill-class counts for dimensions 1 through max_dimension.",
        "",
        "```",
        "assert_eq!(mrlyrs::math::bang::baseq::class_sequence(4), vec![4, 12, 64, 700]);",
        "```"
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "max_dimension",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "vec",
        "item": {
          "t": "u128"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::bang::baseq::classes",
      "name": "classes",
      "module": "math::bang::baseq",
      "defined_at": "math/bang/baseq.rs:249",
      "docs": [
        "Counts the fill classes of a dimension, the popcount profiles a base-2 design can have: one more than the corners of each weight, multiplied over the weights, A129824 at the dimension."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "dimension",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "u128"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::bang::baseq::distinct_designs",
      "name": "distinct_designs",
      "module": "math::bang::baseq",
      "defined_at": "math/bang/baseq.rs:101",
      "docs": [
        "Counts base-q designs distinct under symmetry.",
        "",
        "# Errors",
        "",
        "Errors below base one or dimension one, or when the Burnside average is not whole."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "base",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "dimension",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "u128"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::bang::baseq::even_fill_is_balanced",
      "name": "even_fill_is_balanced",
      "module": "math::bang::baseq",
      "defined_at": "math/bang/baseq.rs:288",
      "docs": [
        "Returns the collapsed fill count at an even side number.",
        "",
        "# Errors",
        "",
        "Errors at an odd side number."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "number",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "dimension",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "popcount",
          "ty": {
            "t": "u128"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "u128"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::bang::baseq::fill_from_corners",
      "name": "fill_from_corners",
      "module": "math::bang::baseq",
      "defined_at": "math/bang/baseq.rs:271",
      "docs": [
        "Returns the filled-cell count of a binary design at a side number, folded from its filled corners."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "filled",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "vec",
              "item": {
                "t": "scalar",
                "name": "u8"
              }
            }
          }
        },
        {
          "name": "number",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "dimension",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "u128"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::bang::baseq::group",
      "name": "group",
      "module": "math::bang::baseq",
      "defined_at": "math/bang/baseq.rs:130",
      "docs": [
        "Returns the symmetry group as cell maps, each sending the cell at index `i` to `element[i]`."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "base",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "dimension",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "vec",
        "item": {
          "t": "vec",
          "item": {
            "t": "scalar",
            "name": "usize"
          }
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::bang::baseq::group_order",
      "name": "group_order",
      "module": "math::bang::baseq",
      "defined_at": "math/bang/baseq.rs:28",
      "docs": [
        "Returns the symmetry group order counted from the enumerated axis maps."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "base",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "dimension",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "u128"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::bang::baseq::orbit",
      "name": "orbit",
      "module": "math::bang::baseq",
      "defined_at": "math/bang/baseq.rs:164",
      "docs": [
        "Returns every code a design reaches under the group."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "group",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "vec",
              "item": {
                "t": "scalar",
                "name": "usize"
              }
            }
          }
        },
        {
          "name": "code",
          "ty": {
            "t": "code"
          }
        }
      ],
      "ret": {
        "t": "set",
        "item": {
          "t": "code"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::bang::baseq::predicted_group_order",
      "name": "predicted_group_order",
      "module": "math::bang::baseq",
      "defined_at": "math/bang/baseq.rs:33",
      "docs": [
        "Returns the closed-form group order the axis-map count must match."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "base",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "dimension",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "u128"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::bang::baseq::representatives",
      "name": "representatives",
      "module": "math::bang::baseq",
      "defined_at": "math/bang/baseq.rs:189",
      "docs": [
        "Walks every code of a base and dimension and returns each orbit's least code with the orbit's size.",
        "",
        "```",
        "assert_eq!(mrlyrs::math::bang::baseq::representatives(3, 1).unwrap().len(), 4);",
        "```",
        "",
        "# Errors",
        "",
        "Errors when the cell count passes the walk limit."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "base",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "dimension",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "vec",
          "item": {
            "t": "tuple",
            "items": [
              {
                "t": "code"
              },
              {
                "t": "scalar",
                "name": "usize"
              }
            ]
          }
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::bang::baseq::sequence",
      "name": "sequence",
      "module": "math::bang::baseq",
      "defined_at": "math/bang/baseq.rs:233",
      "docs": [
        "Returns the distinct-design counts for dimensions 1 through max_dimension.",
        "",
        "# Errors",
        "",
        "Errors below base one, or when a Burnside average is not whole."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "base",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "max_dimension",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "vec",
          "item": {
            "t": "u128"
          }
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::bang::baseq::total_designs",
      "name": "total_designs",
      "module": "math::bang::baseq",
      "defined_at": "math/bang/baseq.rs:218",
      "docs": [
        "Returns the raw design count before symmetry, two to the number of cells.",
        "",
        "# Errors",
        "",
        "Errors when the cell count reaches the hundred and twenty-eight bits a u128 holds."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "base",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "dimension",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "u128"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::bang::catalog::antis",
      "name": "antis",
      "module": "math::bang::catalog",
      "defined_at": "math/bang/catalog.rs:183",
      "docs": [
        "Returns the anti designs for a dimension."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "dimension",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "vec",
        "item": {
          "t": "enum",
          "path": "gen::recipe::Design"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::bang::catalog::decimal::deserialize",
      "name": "deserialize",
      "module": "math::bang::catalog::decimal",
      "defined_at": "math/bang/catalog.rs:160",
      "docs": [],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "deserializer",
          "ty": {
            "t": "unknown",
            "text": "generic D"
          }
        }
      ],
      "ret": {
        "t": "unknown",
        "text": "Result < u128 , D :: Error >"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "private"
      }
    },
    {
      "path": "math::bang::catalog::decimal::serialize",
      "name": "serialize",
      "module": "math::bang::catalog::decimal",
      "defined_at": "math/bang/catalog.rs:156",
      "docs": [],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "code",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "u128"
            }
          }
        },
        {
          "name": "serializer",
          "ty": {
            "t": "unknown",
            "text": "generic S"
          }
        }
      ],
      "ret": {
        "t": "unknown",
        "text": "Result < S :: Ok , S :: Error >"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "private"
      }
    },
    {
      "path": "math::bang::code::get",
      "name": "get",
      "module": "math::bang::code",
      "defined_at": "math/bang/code.rs:23",
      "docs": [
        "Returns the bitmask the code carries."
      ],
      "owner": "math::bang::Code",
      "self_kind": "value",
      "params": [],
      "ret": {
        "t": "u128"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": true,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::bang::code_to_corners",
      "name": "code_to_corners",
      "module": "math::bang",
      "defined_at": "math/bang/factory.rs:57",
      "docs": [
        "Unpacks a code into its filled residue corners.",
        "",
        "# Errors",
        "",
        "Errors when the code names a corner the dimension and base do not hold."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "code",
          "ty": {
            "t": "code"
          }
        },
        {
          "name": "dimension",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "base",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "vec",
          "item": {
            "t": "vec",
            "item": {
              "t": "scalar",
              "name": "u8"
            }
          }
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::bang::corners",
      "name": "corners",
      "module": "math::bang",
      "defined_at": "math/bang/universe.rs:34",
      "docs": [
        "Returns the binary corners of a dimension in code order."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "dimension",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "vec",
        "item": {
          "t": "vec",
          "item": {
            "t": "scalar",
            "name": "u8"
          }
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::bang::corners_to_code",
      "name": "corners_to_code",
      "module": "math::bang",
      "defined_at": "math/bang/factory.rs:95",
      "docs": [
        "Packs filled residue corners back into their code."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "filled",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "vec",
              "item": {
                "t": "scalar",
                "name": "u8"
              }
            }
          }
        },
        {
          "name": "dimension",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "base",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "code"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::bang::factory::create",
      "name": "create",
      "module": "math::bang::factory",
      "defined_at": "math/bang/factory.rs:134",
      "docs": [
        "Renders a coded design to a tensor at its side number, dimension, base and fractal level.",
        "",
        "```",
        "use mrlyrs::math::bang::Code;",
        "let menger = mrlyrs::math::bang::factory::create(Code::from(23u64), 3, 3, 2, 1).unwrap();",
        "assert_eq!(menger.shape, vec![3, 3, 3]);",
        "assert_eq!(menger.sum(), 20);",
        "```",
        "",
        "# Errors",
        "",
        "Errors when the code is out of range for the dimension and base."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "code",
          "ty": {
            "t": "code"
          }
        },
        {
          "name": "number",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "dimension",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "base",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "level",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "hand",
          "name": "Tensor",
          "dim": null
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::bang::factory::create_from_corners",
      "name": "create_from_corners",
      "module": "math::bang::factory",
      "defined_at": "math/bang/factory.rs:214",
      "docs": [
        "Renders a design straight from its filled residue corners.",
        "",
        "# Errors",
        "",
        "Errors when a corner does not hold one residue per axis."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "filled",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "vec",
              "item": {
                "t": "scalar",
                "name": "u8"
              }
            }
          }
        },
        {
          "name": "number",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "dimension",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "base",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "level",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "hand",
          "name": "Tensor",
          "dim": null
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::bang::factory::create_named",
      "name": "create_named",
      "module": "math::bang::factory",
      "defined_at": "math/bang/factory.rs:150",
      "docs": [
        "Renders a design from its canonical JSON name.",
        "",
        "# Errors",
        "",
        "Errors for JSON that is not a bang name."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "spec",
          "ty": {
            "t": "str"
          }
        },
        {
          "name": "number",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "level",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "hand",
          "name": "Tensor",
          "dim": null
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::bang::factory::residue_corners",
      "name": "residue_corners",
      "module": "math::bang::factory",
      "defined_at": "math/bang/factory.rs:26",
      "docs": [
        "Returns every base-q residue corner of a dimension in row-major order."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "dimension",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "base",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "vec",
        "item": {
          "t": "vec",
          "item": {
            "t": "scalar",
            "name": "u8"
          }
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::bang::factory::total_codes",
      "name": "total_codes",
      "module": "math::bang::factory",
      "defined_at": "math/bang/factory.rs:42",
      "docs": [
        "Returns the code count of a dimension and base, two to the number of corners.",
        "",
        "# Errors",
        "",
        "Errors when the corner count reaches the hundred and twenty-eight bits a u128 code holds."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "dimension",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "base",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "code"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::bang::levels_code",
      "name": "levels_code",
      "module": "math::bang",
      "defined_at": "math/bang/factory.rs:86",
      "docs": [
        "Returns the code of the design filled wherever a corner's residue sum lands in the levels.",
        "",
        "```",
        "assert_eq!(mrlyrs::math::bang::factory::levels_code(3, 2, &[0, 1]).get(), 23);",
        "assert_eq!(mrlyrs::math::bang::factory::levels_code(2, 2, &[0, 1]).get(), 7);",
        "```"
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "dimension",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "base",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "levels",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "scalar",
              "name": "usize"
            }
          }
        }
      ],
      "ret": {
        "t": "code"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::bang::magic",
      "name": "magic",
      "module": "math::bang",
      "defined_at": "math/bang/factory.rs:171",
      "docs": [
        "Composes the layers into one mixed-design cell by the ordered Kronecker product, first layer outermost.",
        "",
        "A run of one repeated layer is the ordinary self-similar fractal level.",
        "",
        "```",
        "use mrlyrs::math::bang::{magic, MagicLayer};",
        "use mrlyrs::math::name::Bang;",
        "let carpet = MagicLayer::new(Bang::new(7, 2, 2), 3);",
        "let net = MagicLayer::new(Bang::new(14, 2, 2), 7);",
        "let void = MagicLayer::new(Bang::new(9, 2, 2), 5);",
        "assert_eq!(magic(&[carpet, net, void]).unwrap().shape, vec![105, 105]);",
        "```",
        "",
        "# Errors",
        "",
        "Errors below two layers, across dimensions, or on a code out of range."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "layers",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "plain",
              "path": "math::bang::MagicLayer"
            }
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "hand",
          "name": "Tensor",
          "dim": null
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::bang::magic_named",
      "name": "magic_named",
      "module": "math::bang",
      "defined_at": "math/bang/factory.rs:201",
      "docs": [
        "Composes JSON-named layers in order.",
        "",
        "# Errors",
        "",
        "Errors for an object that is not a bang name, or layers that do not compose."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "layers",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "tuple",
              "items": [
                {
                  "t": "str"
                },
                {
                  "t": "scalar",
                  "name": "usize"
                }
              ]
            }
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "hand",
          "name": "Tensor",
          "dim": null
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::bang::sources",
      "name": "sources",
      "module": "math::bang",
      "defined_at": "math/bang/catalog.rs:37",
      "docs": [
        "Builds the tile sources a catalog names at a dimension.",
        "",
        "# Errors",
        "",
        "Errors outside dimensions one to four."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "catalog",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "plain",
              "path": "gen::recipe::Catalog"
            }
          }
        },
        {
          "name": "dimension",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "vec",
          "item": {
            "t": "plain",
            "path": "gen::recipe::Source"
          }
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::bang::symmetries",
      "name": "symmetries",
      "module": "math::bang",
      "defined_at": "math/bang/universe.rs:50",
      "docs": [
        "Returns the full symmetry group as axis permutations paired with flip patterns."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "dimension",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "vec",
        "item": {
          "t": "tuple",
          "items": [
            {
              "t": "vec",
              "item": {
                "t": "scalar",
                "name": "usize"
              }
            },
            {
              "t": "vec",
              "item": {
                "t": "scalar",
                "name": "u8"
              }
            }
          ]
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::bang::total_exposure",
      "name": "total_exposure",
      "module": "math::bang",
      "defined_at": "math/bang/universe.rs:128",
      "docs": [
        "Returns whether no two filled corners of a code sit at Hamming distance one.",
        "",
        "Such a design buries no face at any side and any level, so its surface is six per cell.",
        "",
        "```",
        "use mrlyrs::math::bang::Code;",
        "assert!(mrlyrs::math::bang::universe::total_exposure(Code::from(129u64), 3));",
        "assert!(!mrlyrs::math::bang::universe::total_exposure(Code::from(23u64), 3));",
        "```"
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "code",
          "ty": {
            "t": "code"
          }
        },
        {
          "name": "dimension",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "scalar",
        "name": "bool"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::bang::touches_every_corner",
      "name": "touches_every_corner",
      "module": "math::bang",
      "defined_at": "math/bang/universe.rs:153",
      "docs": [
        "Returns whether a code fills the all-even corner, the rule that touches every grid corner at odd side.",
        "",
        "```",
        "use mrlyrs::math::bang::Code;",
        "assert!(mrlyrs::math::bang::universe::touches_every_corner(Code::from(23u64), 3));",
        "assert!(!mrlyrs::math::bang::universe::touches_every_corner(Code::from(232u64), 3));",
        "```"
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "code",
          "ty": {
            "t": "code"
          }
        },
        {
          "name": "dimension",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "scalar",
        "name": "bool"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::bang::universe::anf",
      "name": "anf",
      "module": "math::bang::universe",
      "defined_at": "math/bang/universe.rs:89",
      "docs": [
        "Returns the algebraic normal form coefficients of a code, one per corner."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "code",
          "ty": {
            "t": "code"
          }
        },
        {
          "name": "dimension",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "vec",
        "item": {
          "t": "scalar",
          "name": "u8"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::bang::universe::anf_string",
      "name": "anf_string",
      "module": "math::bang::universe",
      "defined_at": "math/bang/universe.rs:159",
      "docs": [
        "Formats the algebraic normal form of a code as a sum of monomials."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "code",
          "ty": {
            "t": "code"
          }
        },
        {
          "name": "dimension",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "string"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::bang::universe::apply",
      "name": "apply",
      "module": "math::bang::universe",
      "defined_at": "math/bang/universe.rs:64",
      "docs": [
        "Applies a symmetry element to a corner."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "element",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "tuple",
              "items": [
                {
                  "t": "vec",
                  "item": {
                    "t": "scalar",
                    "name": "usize"
                  }
                },
                {
                  "t": "vec",
                  "item": {
                    "t": "scalar",
                    "name": "u8"
                  }
                }
              ]
            }
          }
        },
        {
          "name": "corner",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "scalar",
              "name": "u8"
            }
          }
        }
      ],
      "ret": {
        "t": "vec",
        "item": {
          "t": "scalar",
          "name": "u8"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::bang::universe::corner_index",
      "name": "corner_index",
      "module": "math::bang::universe",
      "defined_at": "math/bang/universe.rs:45",
      "docs": [
        "Returns the bit position a binary corner occupies in a code."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "corner",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "scalar",
              "name": "u8"
            }
          }
        }
      ],
      "ret": {
        "t": "scalar",
        "name": "usize"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::bang::universe::degree",
      "name": "degree",
      "module": "math::bang::universe",
      "defined_at": "math/bang/universe.rs:107",
      "docs": [
        "Returns the algebraic degree of a code, or -1 for the zero design."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "code",
          "ty": {
            "t": "code"
          }
        },
        {
          "name": "dimension",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "scalar",
        "name": "i32"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::bang::universe::orbit",
      "name": "orbit",
      "module": "math::bang::universe",
      "defined_at": "math/bang/universe.rs:72",
      "docs": [
        "Returns every code a design reaches under the full symmetry group."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "code",
          "ty": {
            "t": "code"
          }
        },
        {
          "name": "dimension",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "set",
        "item": {
          "t": "code"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::bang::universe::permutations",
      "name": "permutations",
      "module": "math::bang::universe",
      "defined_at": "math/bang/universe.rs:7",
      "docs": [
        "Returns every permutation of 0..n in sorted order."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "n",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "vec",
        "item": {
          "t": "vec",
          "item": {
            "t": "scalar",
            "name": "usize"
          }
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::bang::universe_codes",
      "name": "universe_codes",
      "module": "math::bang",
      "defined_at": "math/bang/catalog.rs:13",
      "docs": [
        "Returns the canonical design codes of a dimension, computed once and cached for the process.",
        "",
        "# Errors",
        "",
        "Errors outside dimensions one to four."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "dimension",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "vec",
          "item": {
            "t": "u128"
          }
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::bang::word::Schedule::all",
      "name": "all",
      "module": "math::bang::word",
      "defined_at": "math/bang/word.rs:369",
      "docs": [
        "Returns every Schedule in canonical order."
      ],
      "owner": "math::bang::word::Schedule",
      "self_kind": null,
      "params": [],
      "ret": {
        "t": "array",
        "item": {
          "t": "enum",
          "path": "math::bang::word::Schedule"
        },
        "len": 3
      },
      "dims": [],
      "trait": null,
      "source": "named_enum",
      "constant": true,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::bang::word::Schedule::frequencies",
      "name": "frequencies",
      "module": "math::bang::word",
      "defined_at": "math/bang/word.rs:384",
      "docs": [
        "Returns the letter frequencies the schedule tends to."
      ],
      "owner": "math::bang::word::Schedule",
      "self_kind": "value",
      "params": [],
      "ret": {
        "t": "tuple",
        "items": [
          {
            "t": "scalar",
            "name": "f64"
          },
          {
            "t": "scalar",
            "name": "f64"
          }
        ]
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::bang::word::Schedule::name",
      "name": "name",
      "module": "math::bang::word",
      "defined_at": "math/bang/word.rs:369",
      "docs": [
        "Returns the Schedule's display name."
      ],
      "owner": "math::bang::word::Schedule",
      "self_kind": "ref",
      "params": [],
      "ret": {
        "t": "ref",
        "mutable": false,
        "lifetime": "'static",
        "item": {
          "t": "str"
        }
      },
      "dims": [],
      "trait": null,
      "source": "named_enum",
      "constant": false,
      "cross": {
        "status": "skip",
        "reason": "&'static return"
      }
    },
    {
      "path": "math::bang::word::Schedule::place",
      "name": "place",
      "module": "math::bang::word",
      "defined_at": "math/bang/word.rs:391",
      "docs": [
        "Returns the letter the schedule takes at the place, zero or one."
      ],
      "owner": "math::bang::word::Schedule",
      "self_kind": "value",
      "params": [
        {
          "name": "index",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "scalar",
        "name": "usize"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::bang::word::components",
      "name": "components",
      "module": "math::bang::word",
      "defined_at": "math/bang/word.rs:230",
      "docs": [
        "Counts the 4-connected components of a plane word without drawing it.",
        "",
        "```",
        "use mrlyrs::math::bang::{word, MagicLayer};",
        "use mrlyrs::math::name::Bang;",
        "let domino = MagicLayer::new(Bang::new(3, 2, 2), 2);",
        "let diagonal = MagicLayer::new(Bang::new(6, 2, 2), 2);",
        "assert_eq!(word::components(&[domino.clone(), diagonal.clone()]).unwrap(), 4);",
        "assert_eq!(word::components(&[diagonal, domino]).unwrap(), 2);",
        "```",
        "",
        "# Errors",
        "",
        "Errors on an empty word, or when the component count passes a u128."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "layers",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "plain",
              "path": "math::bang::MagicLayer"
            }
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "u128"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::bang::word::constant_functional",
      "name": "constant_functional",
      "module": "math::bang::word",
      "defined_at": "math/bang/word.rs:356",
      "docs": [
        "Returns the constant-word component functional of a plane word's letter frequencies,",
        "in log two units.",
        "",
        "It reads `sum_c f_c log2 comp(A_c)`, the one linear functional exact on constant words,",
        "which on the plane alphabet at side two is `(f_6 + f_9) log 2`. It is a prediction and not",
        "a theorem: at interior frequency it is refuted on 78 of the 105 letter pairs and exact on 27.",
        "",
        "# Errors",
        "",
        "Errors on an empty word."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "layers",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "plain",
              "path": "math::bang::MagicLayer"
            }
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "scalar",
          "name": "f64"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::bang::word::dimension",
      "name": "dimension",
      "module": "math::bang::word",
      "defined_at": "math/bang/word.rs:300",
      "docs": [
        "Returns the scale dimension of a word, the sum of the log fills over the sum of the log sides.",
        "",
        "```",
        "use mrlyrs::math::bang::{word, MagicLayer};",
        "use mrlyrs::math::name::Bang;",
        "let carpet = MagicLayer::new(Bang::new(7, 2, 2), 3);",
        "let two = word::dimension(&[carpet.clone(), carpet]).unwrap();",
        "assert!((two - 8f64.ln() / 3f64.ln()).abs() < 1e-12);",
        "```",
        "",
        "# Errors",
        "",
        "Errors on an empty word, or one whose letters are all side one."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "layers",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "plain",
              "path": "math::bang::MagicLayer"
            }
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "scalar",
          "name": "f64"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::bang::word::fill",
      "name": "fill",
      "module": "math::bang::word",
      "defined_at": "math/bang/word.rs:276",
      "docs": [
        "Returns the filled cells of a word, the product of its letter fills.",
        "",
        "# Errors",
        "",
        "Errors when the word's fill passes a u128."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "layers",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "plain",
              "path": "math::bang::MagicLayer"
            }
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "u128"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::bang::word::fills",
      "name": "fills",
      "module": "math::bang::word",
      "defined_at": "math/bang/word.rs:248",
      "docs": [
        "Lists the filled cells of every letter, the product of which is the word's fill.",
        "",
        "# Errors",
        "",
        "Errors when a layer's code is out of range."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "layers",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "plain",
              "path": "math::bang::MagicLayer"
            }
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "vec",
          "item": {
            "t": "u128"
          }
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::bang::word::letter",
      "name": "letter",
      "module": "math::bang::word",
      "defined_at": "math/bang/word.rs:104",
      "docs": [
        "Reads one plane letter: its fill, its runs, the rows and columns that wrap into a",
        "neighbouring copy, and its own components.",
        "",
        "```",
        "use mrlyrs::math::bang::{word, MagicLayer};",
        "use mrlyrs::math::name::Bang;",
        "let gasket = word::letter(&MagicLayer::new(Bang::new(7, 2, 2), 2)).unwrap();",
        "assert_eq!((gasket.fill, gasket.components), (3, 1));",
        "assert_eq!((gasket.touch_h, gasket.touch_v), (1, 1));",
        "```",
        "",
        "# Errors",
        "",
        "Errors for a layer that is not a plane reading."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "layer",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "plain",
              "path": "math::bang::MagicLayer"
            }
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "plain",
          "path": "math::bang::word::Letter"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::bang::word::native",
      "name": "native",
      "module": "math::bang::word",
      "defined_at": "math/bang/word.rs:342",
      "docs": [
        "Returns whether every letter renders at its own residue base, the native case where a",
        "periodic word folds to one residue rule at the product base."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "layers",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "plain",
              "path": "math::bang::MagicLayer"
            }
          }
        }
      ],
      "ret": {
        "t": "scalar",
        "name": "bool"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::bang::word::period",
      "name": "period",
      "module": "math::bang::word",
      "defined_at": "math/bang/word.rs:327",
      "docs": [
        "Returns the shortest whole period of the letter list, its own length when no shorter block repeats.",
        "",
        "```",
        "use mrlyrs::math::bang::{word, MagicLayer};",
        "use mrlyrs::math::name::Bang;",
        "let a = MagicLayer::new(Bang::new(7, 2, 2), 3);",
        "let b = MagicLayer::new(Bang::new(9, 2, 2), 5);",
        "assert_eq!(word::period(&[a.clone(), b.clone(), a.clone(), b.clone()]), 2);",
        "assert_eq!(word::period(&[a.clone(), b, a]), 3);",
        "```"
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "layers",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "plain",
              "path": "math::bang::MagicLayer"
            }
          }
        }
      ],
      "ret": {
        "t": "scalar",
        "name": "usize"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::bang::word::prefixes",
      "name": "prefixes",
      "module": "math::bang::word",
      "defined_at": "math/bang/word.rs:190",
      "docs": [
        "Folds a plane word letter by letter and returns the counts at every prefix.",
        "",
        "Each letter folds the component count by its own geometry: a letter with no wrap-around",
        "contact isolates every block, so the count becomes the outer fill times the letter's own",
        "pieces; a connected letter with contacts on one axis merges blocks along that axis alone,",
        "so the count becomes the outer run count; a connected letter with both contacts leaves the",
        "block graph isomorphic to the cell graph and the count unmoved. A letter that is neither",
        "connected nor contact-free both splits and merges and is refused.",
        "",
        "The list stops at the last prefix whose counts fit a u128 rather than wrapping.",
        "",
        "# Errors",
        "",
        "Errors for a letter that neither connects nor stays contact-free."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "layers",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "plain",
              "path": "math::bang::MagicLayer"
            }
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "vec",
          "item": {
            "t": "plain",
            "path": "math::bang::word::Counts"
          }
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::bang::word::rates",
      "name": "rates",
      "module": "math::bang::word",
      "defined_at": "math/bang/word.rs:433",
      "docs": [
        "Returns the prefix rates of a plane word in log two units, the component rate",
        "`(1/L) log2 comp` and the fill rate `(1/L) log2 fill` at every prefix length.",
        "",
        "At interior letter frequency the two meet: the component exponent is order-blind and equals",
        "the fill exponent on every one of the 105 letter pairs but the domino against the full tile.",
        "The list stops at the last prefix whose counts fit a u128.",
        "",
        "# Errors",
        "",
        "Errors for a letter that neither connects nor stays contact-free."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "layers",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "plain",
              "path": "math::bang::MagicLayer"
            }
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "vec",
          "item": {
            "t": "tuple",
            "items": [
              {
                "t": "scalar",
                "name": "f64"
              },
              {
                "t": "scalar",
                "name": "f64"
              }
            ]
          }
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::bang::word::side",
      "name": "side",
      "module": "math::bang::word",
      "defined_at": "math/bang/word.rs:260",
      "docs": [
        "Returns the side of a word, the product of its letter sides.",
        "",
        "# Errors",
        "",
        "Errors when the word's side passes a u128."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "layers",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "plain",
              "path": "math::bang::MagicLayer"
            }
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "u128"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::bang::word::spell",
      "name": "spell",
      "module": "math::bang::word",
      "defined_at": "math/bang/word.rs:411",
      "docs": [
        "Spells the first letters of a schedule over an ordered pair of letters."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "schedule",
          "ty": {
            "t": "enum",
            "path": "math::bang::word::Schedule"
          }
        },
        {
          "name": "pair",
          "ty": {
            "t": "tuple",
            "items": [
              {
                "t": "plain",
                "path": "math::bang::MagicLayer"
              },
              {
                "t": "plain",
                "path": "math::bang::MagicLayer"
              }
            ]
          }
        },
        {
          "name": "length",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "vec",
        "item": {
          "t": "plain",
          "path": "math::bang::MagicLayer"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::bang::word::staircase",
      "name": "staircase",
      "module": "math::bang::word",
      "defined_at": "math/bang/word.rs:466",
      "docs": [
        "Builds the carpet staircase word to the depth, the stacked prefixes `magic(3)`,",
        "then `magic(3,5)`, then `magic(3,5,7)`, and so on.",
        "",
        "The letter at odd side `2j + 1` occurs `depth - j + 1` times in the first `depth` blocks,",
        "so the word holds `depth (depth + 1) / 2` letters and its dimension is the occurrence-weighted",
        "average of the per-letter dimensions.",
        "",
        "```",
        "use mrlyrs::math::bang::word;",
        "assert_eq!(word::staircase(3).unwrap().len(), 6);",
        "let one = word::dimension(&word::staircase(1).unwrap()).unwrap();",
        "assert!((one - 8f64.ln() / 3f64.ln()).abs() < 1e-9);",
        "```",
        "",
        "# Errors",
        "",
        "Errors on an empty block list."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "depth",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "vec",
          "item": {
            "t": "plain",
            "path": "math::bang::MagicLayer"
          }
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::bang::word::thue_morse",
      "name": "thue_morse",
      "module": "math::bang::word",
      "defined_at": "math/bang/word.rs:406",
      "docs": [
        "Returns the Thue-Morse letter at the place, the parity of its binary digit sum.",
        "",
        "```",
        "let word: Vec<usize> = (0..8).map(mrlyrs::math::bang::word::thue_morse).collect();",
        "assert_eq!(word, vec![0, 1, 1, 0, 1, 0, 0, 1]);",
        "```"
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "index",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "scalar",
        "name": "usize"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::cell::census::edges",
      "name": "edges",
      "module": "math::cell::census",
      "defined_at": "math/cell/census.rs:34",
      "docs": [
        "Counts the distinct unit edges the filled sites carry, the edge graph's branches.",
        "",
        "# Errors",
        "",
        "Errors when the cell is neither two- nor three-dimensional."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "cell",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "hand",
              "name": "CellNd",
              "dim": null
            }
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "scalar",
          "name": "usize"
        }
      },
      "dims": [
        2,
        3
      ],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::cell::census::exposure",
      "name": "exposure",
      "module": "math::cell::census",
      "defined_at": "math/cell/census.rs:16",
      "docs": [
        "Counts the faces of filled sites open to emptiness or the border."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "cell",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "hand",
              "name": "CellNd",
              "dim": null
            }
          }
        }
      ],
      "ret": {
        "t": "u128"
      },
      "dims": [
        2,
        3
      ],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::cell::census::fills",
      "name": "fills",
      "module": "math::cell::census",
      "defined_at": "math/cell/census.rs:6",
      "docs": [
        "Counts the filled sites of the cell."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "cell",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "hand",
              "name": "CellNd",
              "dim": null
            }
          }
        }
      ],
      "ret": {
        "t": "scalar",
        "name": "usize"
      },
      "dims": [
        2,
        3
      ],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::cell::census::vertices",
      "name": "vertices",
      "module": "math::cell::census",
      "defined_at": "math/cell/census.rs:25",
      "docs": [
        "Counts the distinct corners the filled sites touch, the edge graph's nodes.",
        "",
        "# Errors",
        "",
        "Errors when the cell is neither two- nor three-dimensional."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "cell",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "hand",
              "name": "CellNd",
              "dim": null
            }
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "scalar",
          "name": "usize"
        }
      },
      "dims": [
        2,
        3
      ],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::cell::census::voids",
      "name": "voids",
      "module": "math::cell::census",
      "defined_at": "math/cell/census.rs:11",
      "docs": [
        "Counts the empty sites of the cell."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "cell",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "hand",
              "name": "CellNd",
              "dim": null
            }
          }
        }
      ],
      "ret": {
        "t": "scalar",
        "name": "usize"
      },
      "dims": [
        2,
        3
      ],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::cell::geometry::merge_reps",
      "name": "merge_reps",
      "module": "math::cell::geometry",
      "defined_at": "math/cell/geometry.rs:11",
      "docs": [
        "Merges same-shaped cells into one block laid out by the per-axis repetition counts.",
        "",
        "# Errors",
        "",
        "Errors when the cells differ in shape or do not fill the arrangement."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "cells",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "hand",
              "name": "CellNd",
              "dim": null
            }
          }
        },
        {
          "name": "reps",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "scalar",
              "name": "usize"
            }
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "hand",
          "name": "CellNd",
          "dim": null
        }
      },
      "dims": [
        2,
        3
      ],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::cell::geometry::perforate",
      "name": "perforate",
      "module": "math::cell::geometry",
      "defined_at": "math/cell/geometry.rs:47",
      "docs": [
        "Writes the value into the cell wherever the tiled mask is nonzero.",
        "",
        "# Errors",
        "",
        "Errors when the mask does not tile the cell."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "mask",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "hand",
              "name": "Tensor",
              "dim": null
            }
          }
        },
        {
          "name": "cell",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "hand",
              "name": "CellNd",
              "dim": null
            }
          }
        },
        {
          "name": "value",
          "ty": {
            "t": "scalar",
            "name": "u8"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "hand",
          "name": "CellNd",
          "dim": null
        }
      },
      "dims": [
        2,
        3
      ],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::cell::grow",
      "name": "grow",
      "module": "math::cell",
      "defined_at": "math/cell/designs.rs:10",
      "docs": [
        "Grows a seed pattern into a cell, deepened to its fractal past level one.",
        "",
        "# Errors",
        "",
        "Errors when the pattern's rank is not N, or the level is below one."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "pattern",
          "ty": {
            "t": "hand",
            "name": "Tensor",
            "dim": null
          }
        },
        {
          "name": "level",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "hand",
          "name": "CellNd",
          "dim": null
        }
      },
      "dims": [
        2,
        3
      ],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::cell::models::anti",
      "name": "anti",
      "module": "math::cell::models",
      "defined_at": "math/cell/models.rs:83",
      "docs": [
        "Inverts the cell."
      ],
      "owner": "math::cell::models::CellNd",
      "self_kind": "value",
      "params": [],
      "ret": {
        "t": "hand",
        "name": "CellNd",
        "dim": null
      },
      "dims": [
        2,
        3
      ],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::cell::models::binarize",
      "name": "binarize",
      "module": "math::cell::models",
      "defined_at": "math/cell/models.rs:120",
      "docs": [
        "Maps each site to one at or above the threshold, zero below."
      ],
      "owner": "math::cell::models::CellNd",
      "self_kind": "value",
      "params": [
        {
          "name": "threshold",
          "ty": {
            "t": "scalar",
            "name": "u8"
          }
        }
      ],
      "ret": {
        "t": "hand",
        "name": "CellNd",
        "dim": null
      },
      "dims": [
        2,
        3
      ],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::cell::models::binarize_otsu",
      "name": "binarize_otsu",
      "module": "math::cell::models",
      "defined_at": "math/cell/models.rs:126",
      "docs": [
        "Binarizes the cell at the threshold Otsu's method picks."
      ],
      "owner": "math::cell::models::CellNd",
      "self_kind": "value",
      "params": [],
      "ret": {
        "t": "hand",
        "name": "CellNd",
        "dim": null
      },
      "dims": [
        2,
        3
      ],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::cell::models::blur",
      "name": "blur",
      "module": "math::cell::models",
      "defined_at": "math/cell/models.rs:136",
      "docs": [
        "Rounds each site to the mean of its masked neighborhood, wrapping on request.",
        "",
        "# Errors",
        "",
        "Errors when the mask does not match the cell's rank."
      ],
      "owner": "math::cell::models::CellNd",
      "self_kind": "value",
      "params": [
        {
          "name": "mask",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "hand",
              "name": "Tensor",
              "dim": null
            }
          }
        },
        {
          "name": "wrap",
          "ty": {
            "t": "scalar",
            "name": "bool"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "hand",
          "name": "CellNd",
          "dim": null
        }
      },
      "dims": [
        2,
        3
      ],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::cell::models::combine",
      "name": "combine",
      "module": "math::cell::models",
      "defined_at": "math/cell/models.rs:152",
      "docs": [
        "Returns the Kronecker product of the two cells."
      ],
      "owner": "math::cell::models::CellNd",
      "self_kind": "ref",
      "params": [
        {
          "name": "other",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "hand",
              "name": "CellNd",
              "dim": null
            }
          }
        }
      ],
      "ret": {
        "t": "hand",
        "name": "CellNd",
        "dim": null
      },
      "dims": [
        2,
        3
      ],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::cell::models::counting_dtype",
      "name": "counting_dtype",
      "module": "math::cell::models",
      "defined_at": "math/cell/models.rs:34",
      "docs": [
        "Returns the narrowest count dtype that fits the mask's popcount."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "mask",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "hand",
              "name": "Tensor",
              "dim": null
            }
          }
        }
      ],
      "ret": {
        "t": "enum",
        "path": "core::Dtype"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::cell::models::depth",
      "name": "depth",
      "module": "math::cell::models",
      "defined_at": "math/cell/models.rs:199",
      "docs": [
        "Returns the size of axis 0, the cube's leading axis."
      ],
      "owner": "math::cell::models::CellNd",
      "self_kind": "ref",
      "params": [],
      "ret": {
        "t": "scalar",
        "name": "usize"
      },
      "dims": [
        3
      ],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::cell::models::dtype_for",
      "name": "dtype_for",
      "module": "math::cell::models",
      "defined_at": "math/cell/models.rs:23",
      "docs": [
        "Returns the narrowest unsigned dtype that holds the peak value.",
        "",
        "```",
        "use mrlyrs::core::tensor::Dtype;",
        "assert_eq!(mrlyrs::math::cell::models::dtype_for(255), Dtype::U8);",
        "assert_eq!(mrlyrs::math::cell::models::dtype_for(256), Dtype::U16);",
        "assert_eq!(mrlyrs::math::cell::models::dtype_for(70000), Dtype::U32);",
        "```"
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "peak",
          "ty": {
            "t": "scalar",
            "name": "i64"
          }
        }
      ],
      "ret": {
        "t": "enum",
        "path": "core::Dtype"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::cell::models::fractal",
      "name": "fractal",
      "module": "math::cell::models",
      "defined_at": "math/cell/models.rs:97",
      "docs": [
        "Deepens the cell into its level-fold fractal.",
        "",
        "# Errors",
        "",
        "Errors below level one."
      ],
      "owner": "math::cell::models::CellNd",
      "self_kind": "value",
      "params": [
        {
          "name": "level",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "hand",
          "name": "CellNd",
          "dim": null
        }
      },
      "dims": [
        2,
        3
      ],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::cell::models::height",
      "name": "height",
      "module": "math::cell::models",
      "defined_at": "math/cell/models.rs:68",
      "docs": [
        "Returns the size of the axis before the last."
      ],
      "owner": "math::cell::models::CellNd",
      "self_kind": "ref",
      "params": [],
      "ret": {
        "t": "scalar",
        "name": "usize"
      },
      "dims": [
        2,
        3
      ],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::cell::models::invert",
      "name": "invert",
      "module": "math::cell::models",
      "defined_at": "math/cell/models.rs:77",
      "docs": [
        "Swaps filled and empty sites."
      ],
      "owner": "math::cell::models::CellNd",
      "self_kind": "value",
      "params": [],
      "ret": {
        "t": "hand",
        "name": "CellNd",
        "dim": null
      },
      "dims": [
        2,
        3
      ],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::cell::models::layers",
      "name": "layers",
      "module": "math::cell::models",
      "defined_at": "math/cell/models.rs:103",
      "docs": [
        "Tags each site with its ring distance from the center."
      ],
      "owner": "math::cell::models::CellNd",
      "self_kind": "value",
      "params": [],
      "ret": {
        "t": "hand",
        "name": "CellNd",
        "dim": null
      },
      "dims": [
        2,
        3
      ],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::cell::models::neighbors",
      "name": "neighbors",
      "module": "math::cell::models",
      "defined_at": "math/cell/models.rs:113",
      "docs": [
        "Tags each site with its count of masked neighbors matching the target, wrapping on request.",
        "",
        "# Errors",
        "",
        "Errors when the mask does not match the cell's rank."
      ],
      "owner": "math::cell::models::CellNd",
      "self_kind": "value",
      "params": [
        {
          "name": "mask",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "hand",
              "name": "Tensor",
              "dim": null
            }
          }
        },
        {
          "name": "target",
          "ty": {
            "t": "scalar",
            "name": "u8"
          }
        },
        {
          "name": "wrap",
          "ty": {
            "t": "scalar",
            "name": "bool"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "hand",
          "name": "CellNd",
          "dim": null
        }
      },
      "dims": [
        2,
        3
      ],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::cell::models::new",
      "name": "new",
      "module": "math::cell::models",
      "defined_at": "math/cell/models.rs:51",
      "docs": [
        "Builds a cell from an N-dimensional tensor of types.",
        "",
        "# Errors",
        "",
        "Errors when the tensor's rank is not N."
      ],
      "owner": "math::cell::models::CellNd",
      "self_kind": null,
      "params": [
        {
          "name": "types",
          "ty": {
            "t": "hand",
            "name": "Tensor",
            "dim": null
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "hand",
          "name": "CellNd",
          "dim": null
        }
      },
      "dims": [
        2,
        3
      ],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::cell::models::orient",
      "name": "orient",
      "module": "math::cell::models",
      "defined_at": "math/cell/models.rs:217",
      "docs": [
        "Turns the cell into one of the 24 cube orientations.",
        "",
        "# Errors",
        "",
        "Errors past orientation twenty-three."
      ],
      "owner": "math::cell::models::CellNd",
      "self_kind": "value",
      "params": [
        {
          "name": "index",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "hand",
          "name": "CellNd",
          "dim": 3
        }
      },
      "dims": [
        3
      ],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::cell::models::pad",
      "name": "pad",
      "module": "math::cell::models",
      "defined_at": "math/cell/models.rs:87",
      "docs": [
        "Wraps the cell in count layers of the given value on every side."
      ],
      "owner": "math::cell::models::CellNd",
      "self_kind": "value",
      "params": [
        {
          "name": "count",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "value",
          "ty": {
            "t": "scalar",
            "name": "u8"
          }
        }
      ],
      "ret": {
        "t": "hand",
        "name": "CellNd",
        "dim": null
      },
      "dims": [
        2,
        3
      ],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::cell::models::paint",
      "name": "paint",
      "module": "math::cell::models",
      "defined_at": "math/cell/models.rs:162",
      "docs": [
        "Colors each site by its type through the mapping in the given mode.",
        "",
        "# Errors",
        "",
        "Errors when the Random mode arrives without a stream to draw from."
      ],
      "owner": "math::cell::models::CellNd",
      "self_kind": "value",
      "params": [
        {
          "name": "mapping",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "map",
              "key": {
                "t": "scalar",
                "name": "u8"
              },
              "value": {
                "t": "vec",
                "item": {
                  "t": "hand",
                  "name": "Color",
                  "dim": null
                }
              }
            }
          }
        },
        {
          "name": "mode",
          "ty": {
            "t": "enum",
            "path": "core::Mode"
          }
        },
        {
          "name": "rng",
          "ty": {
            "t": "option",
            "item": {
              "t": "ref",
              "mutable": true,
              "lifetime": null,
              "item": {
                "t": "hand",
                "name": "Rng",
                "dim": null
              }
            }
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "hand",
          "name": "CellNd",
          "dim": null
        }
      },
      "dims": [
        2,
        3
      ],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::cell::models::perforate",
      "name": "perforate",
      "module": "math::cell::models",
      "defined_at": "math/cell/models.rs:146",
      "docs": [
        "Writes the value wherever the tiled mask is nonzero.",
        "",
        "# Errors",
        "",
        "Errors when the mask does not tile the cell."
      ],
      "owner": "math::cell::models::CellNd",
      "self_kind": "value",
      "params": [
        {
          "name": "mask",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "hand",
              "name": "Tensor",
              "dim": null
            }
          }
        },
        {
          "name": "value",
          "ty": {
            "t": "scalar",
            "name": "u8"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "hand",
          "name": "CellNd",
          "dim": null
        }
      },
      "dims": [
        2,
        3
      ],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::cell::models::rotate",
      "name": "rotate",
      "module": "math::cell::models",
      "defined_at": "math/cell/models.rs:180",
      "docs": [
        "Rotates the cell k quarter turns in the plane.",
        "",
        "# Errors",
        "",
        "Errors for a cell without two axes."
      ],
      "owner": "math::cell::models::CellNd",
      "self_kind": "value",
      "params": [
        {
          "name": "k",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "hand",
          "name": "CellNd",
          "dim": 2
        }
      },
      "dims": [
        2
      ],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::cell::models::rotate",
      "name": "rotate",
      "module": "math::cell::models",
      "defined_at": "math/cell/models.rs:207",
      "docs": [
        "Rotates the cell k quarter turns about the given pair of axes.",
        "",
        "# Errors",
        "",
        "Errors for axes the cell does not hold."
      ],
      "owner": "math::cell::models::CellNd",
      "self_kind": "value",
      "params": [
        {
          "name": "k",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "axes",
          "ty": {
            "t": "tuple",
            "items": [
              {
                "t": "scalar",
                "name": "usize"
              },
              {
                "t": "scalar",
                "name": "usize"
              }
            ]
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "hand",
          "name": "CellNd",
          "dim": 3
        }
      },
      "dims": [
        3
      ],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::cell::models::tile",
      "name": "tile",
      "module": "math::cell::models",
      "defined_at": "math/cell/models.rs:190",
      "docs": [
        "Repeats the cell into a width-by-height array of copies.",
        "",
        "# Errors",
        "",
        "Errors for a cell without two axes."
      ],
      "owner": "math::cell::models::CellNd",
      "self_kind": "value",
      "params": [
        {
          "name": "width",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "height",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "hand",
          "name": "CellNd",
          "dim": 2
        }
      },
      "dims": [
        2
      ],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::cell::models::tile",
      "name": "tile",
      "module": "math::cell::models",
      "defined_at": "math/cell/models.rs:229",
      "docs": [
        "Repeats the cell into a width-by-height-by-depth array of copies.",
        "",
        "# Errors",
        "",
        "Errors for a cell without three axes."
      ],
      "owner": "math::cell::models::CellNd",
      "self_kind": "value",
      "params": [
        {
          "name": "width",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "height",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "depth",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "hand",
          "name": "CellNd",
          "dim": 3
        }
      },
      "dims": [
        3
      ],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::cell::models::types",
      "name": "types",
      "module": "math::cell::models",
      "defined_at": "math/cell/models.rs:73",
      "docs": [
        "Returns the tensor of types."
      ],
      "owner": "math::cell::models::CellNd",
      "self_kind": "ref",
      "params": [],
      "ret": {
        "t": "ref",
        "mutable": false,
        "lifetime": null,
        "item": {
          "t": "hand",
          "name": "Tensor",
          "dim": null
        }
      },
      "dims": [
        2,
        3
      ],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::cell::models::width",
      "name": "width",
      "module": "math::cell::models",
      "defined_at": "math/cell/models.rs:63",
      "docs": [
        "Returns the size of the last axis."
      ],
      "owner": "math::cell::models::CellNd",
      "self_kind": "ref",
      "params": [],
      "ret": {
        "t": "scalar",
        "name": "usize"
      },
      "dims": [
        2,
        3
      ],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::cell::paint",
      "name": "paint",
      "module": "math::cell",
      "defined_at": "math/cell/painter.rs:14",
      "docs": [
        "Colors the cell through the given mapping and mode, defaulting to the standard palette by type.",
        "",
        "# Errors",
        "",
        "Errors when the Random mode arrives without a stream to draw from."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "cell",
          "ty": {
            "t": "hand",
            "name": "CellNd",
            "dim": null
          }
        },
        {
          "name": "custom",
          "ty": {
            "t": "option",
            "item": {
              "t": "ref",
              "mutable": false,
              "lifetime": null,
              "item": {
                "t": "map",
                "key": {
                  "t": "scalar",
                  "name": "u8"
                },
                "value": {
                  "t": "vec",
                  "item": {
                    "t": "hand",
                    "name": "Color",
                    "dim": null
                  }
                }
              }
            }
          }
        },
        {
          "name": "mode",
          "ty": {
            "t": "option",
            "item": {
              "t": "enum",
              "path": "core::Mode"
            }
          }
        },
        {
          "name": "rng",
          "ty": {
            "t": "option",
            "item": {
              "t": "ref",
              "mutable": true,
              "lifetime": null,
              "item": {
                "t": "hand",
                "name": "Rng",
                "dim": null
              }
            }
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "hand",
          "name": "CellNd",
          "dim": null
        }
      },
      "dims": [
        2,
        3
      ],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::cell::serializer::byte_cube",
      "name": "byte_cube",
      "module": "math::cell::serializer",
      "defined_at": "math/cell/serializer.rs:40",
      "docs": [
        "Reads a triply nested JSON array into layers of byte rows.",
        "",
        "# Errors",
        "",
        "Errors when the value is not a cube of bytes."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "value",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "json"
            }
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "vec",
          "item": {
            "t": "vec",
            "item": {
              "t": "vec",
              "item": {
                "t": "scalar",
                "name": "u8"
              }
            }
          }
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::cell::serializer::byte_grid",
      "name": "byte_grid",
      "module": "math::cell::serializer",
      "defined_at": "math/cell/serializer.rs:31",
      "docs": [
        "Reads a nested JSON array into rows of bytes.",
        "",
        "# Errors",
        "",
        "Errors when the value is not a grid of bytes."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "value",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "json"
            }
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "vec",
          "item": {
            "t": "vec",
            "item": {
              "t": "scalar",
              "name": "u8"
            }
          }
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::cell::serializer::color_grid",
      "name": "color_grid",
      "module": "math::cell::serializer",
      "defined_at": "math/cell/serializer.rs:91",
      "docs": [
        "Reads a nested JSON array into rows of four-channel colors.",
        "",
        "# Errors",
        "",
        "Errors when the value is not a grid of RGBA quadruples."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "value",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "json"
            }
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "vec",
          "item": {
            "t": "vec",
            "item": {
              "t": "array",
              "item": {
                "t": "scalar",
                "name": "u8"
              },
              "len": 4
            }
          }
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::cell::serializer::count_cube",
      "name": "count_cube",
      "module": "math::cell::serializer",
      "defined_at": "math/cell/serializer.rs:59",
      "docs": [
        "Reads a triply nested JSON array of counts into one flat run; a count must fit in thirty-two bits.",
        "",
        "# Errors",
        "",
        "Errors when the value is not a cube of counts."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "value",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "json"
            }
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "vec",
          "item": {
            "t": "scalar",
            "name": "i64"
          }
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::cell::serializer::count_grid",
      "name": "count_grid",
      "module": "math::cell::serializer",
      "defined_at": "math/cell/serializer.rs:49",
      "docs": [
        "Reads a nested JSON array of counts into one flat run; a count must fit in thirty-two bits.",
        "",
        "# Errors",
        "",
        "Errors when the value is not a grid of counts."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "value",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "json"
            }
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "vec",
          "item": {
            "t": "scalar",
            "name": "i64"
          }
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::cell::serializer::parse",
      "name": "parse",
      "module": "math::cell::serializer",
      "defined_at": "math/cell/serializer.rs:12",
      "docs": [
        "Parses JSON text into a value tree.",
        "",
        "# Errors",
        "",
        "Errors when the text is not JSON."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "text",
          "ty": {
            "t": "str"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "json"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::cell::serializer::tag_layer",
      "name": "tag_layer",
      "module": "math::cell::serializer",
      "defined_at": "math/cell/serializer.rs:74",
      "docs": [
        "Packs a flat run of counts into a tensor of the shape, at the narrowest dtype that holds them.",
        "",
        "# Errors",
        "",
        "Errors when the counts do not match the shape."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "counts",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "scalar",
              "name": "i64"
            }
          }
        },
        {
          "name": "shape",
          "ty": {
            "t": "vec",
            "item": {
              "t": "scalar",
              "name": "usize"
            }
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "hand",
          "name": "Tensor",
          "dim": null
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::cell::serializer::types_field",
      "name": "types_field",
      "module": "math::cell::serializer",
      "defined_at": "math/cell/serializer.rs:21",
      "docs": [
        "Returns the types field of the data.",
        "",
        "# Errors",
        "",
        "Errors when the types field is missing."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "data",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "json"
            }
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "ref",
          "mutable": false,
          "lifetime": null,
          "item": {
            "t": "json"
          }
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::counts::Exposure::at",
      "name": "at",
      "module": "math::counts",
      "defined_at": "math/counts/surface.rs:119",
      "docs": [
        "Returns the exposed faces of the level-fold Kronecker power, or none past a u128."
      ],
      "owner": "math::counts::Exposure",
      "self_kind": "ref",
      "params": [
        {
          "name": "level",
          "ty": {
            "t": "scalar",
            "name": "u32"
          }
        }
      ],
      "ret": {
        "t": "option",
        "item": {
          "t": "u128"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::counts::Exposure::from_corners",
      "name": "from_corners",
      "module": "math::counts",
      "defined_at": "math/counts/surface.rs:75",
      "docs": [
        "Folds the counts from the filled residue corners at a side number, without rendering the tile.",
        "",
        "An adjacent pair sits at positions `i, i + 1` whose residues are `r, r + 1 mod q`, and a",
        "spanning position pairs residue 0 with the residue of `n - 1`."
      ],
      "owner": "math::counts::Exposure",
      "self_kind": null,
      "params": [
        {
          "name": "filled",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "vec",
              "item": {
                "t": "scalar",
                "name": "u8"
              }
            }
          }
        },
        {
          "name": "number",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "dimension",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "base",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "class",
        "path": "math::counts::Exposure",
        "dim": null
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::counts::Exposure::of_tile",
      "name": "of_tile",
      "module": "math::counts",
      "defined_at": "math/counts/surface.rs:64",
      "docs": [
        "Reads the counts off a rendered tile."
      ],
      "owner": "math::counts::Exposure",
      "self_kind": null,
      "params": [
        {
          "name": "tile",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "hand",
              "name": "Tensor",
              "dim": null
            }
          }
        }
      ],
      "ret": {
        "t": "class",
        "path": "math::counts::Exposure",
        "dim": null
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::counts::Exposure::recurrence",
      "name": "recurrence",
      "module": "math::counts",
      "defined_at": "math/counts/surface.rs:139",
      "docs": [
        "Returns the coefficients `c` of the recurrence `a(L) = c[0] a(L-1) + c[1] a(L-2) + ...` the exposure obeys.",
        "",
        "The roots are `occ` and the distinct nonzero spanning counts, `occ` doubled where a",
        "spanning count equals it."
      ],
      "owner": "math::counts::Exposure",
      "self_kind": "ref",
      "params": [],
      "ret": {
        "t": "vec",
        "item": {
          "t": "i128"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::counts::centered_hexagonal",
      "name": "centered_hexagonal",
      "module": "math::counts",
      "defined_at": "math/counts/six.rs:80",
      "docs": [
        "Returns the centered hexagonal number at the index, the lattice points of a hexagon of side m-1."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "m",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "u128"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::counts::cut_fills",
      "name": "cut_fills",
      "module": "math::counts",
      "defined_at": "math/counts/six.rs:134",
      "docs": [
        "Returns the filled triangle count of the code's cut section at the given level, without rendering it.",
        "",
        "# Errors",
        "",
        "Errors when the code is out of range for a base-2 cube."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "code",
          "ty": {
            "t": "code"
          }
        },
        {
          "name": "number",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "level",
          "ty": {
            "t": "scalar",
            "name": "u32"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "u128"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::counts::cut_voids",
      "name": "cut_voids",
      "module": "math::counts",
      "defined_at": "math/counts/six.rs:175",
      "docs": [
        "Returns the empty triangle count of the code's cut section at the given level.",
        "",
        "# Errors",
        "",
        "Errors when the code is out of range for a base-2 cube."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "code",
          "ty": {
            "t": "code"
          }
        },
        {
          "name": "number",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "level",
          "ty": {
            "t": "scalar",
            "name": "u32"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "u128"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::counts::dimension",
      "name": "dimension",
      "module": "math::counts",
      "defined_at": "math/counts/counting.rs:129",
      "docs": [
        "Returns the code's fractal dimension, the log of its one-level fill over the log of number.",
        "",
        "# Errors",
        "",
        "Errors when the code is out of range for the dimension and base."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "code",
          "ty": {
            "t": "code"
          }
        },
        {
          "name": "number",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "base_dimension",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "base",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "scalar",
          "name": "f64"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::counts::edges_of_tile",
      "name": "edges_of_tile",
      "module": "math::counts",
      "defined_at": "math/counts/surface.rs:196",
      "docs": [
        "Returns the branch count of the tile's level-fold Kronecker power, fitted to its two-term",
        "recurrence over four powers, or none past a u128.",
        "",
        "```",
        "let carpet = mrlyrs::math::atoms::carpet_2d(3);",
        "assert_eq!(mrlyrs::math::counts::edges_of_tile(&carpet, 2), Some(88));",
        "```"
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "tile",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "hand",
              "name": "Tensor",
              "dim": null
            }
          }
        },
        {
          "name": "level",
          "ty": {
            "t": "scalar",
            "name": "u32"
          }
        }
      ],
      "ret": {
        "t": "option",
        "item": {
          "t": "u128"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::counts::exposure",
      "name": "exposure",
      "module": "math::counts",
      "defined_at": "math/counts/surface.rs:233",
      "docs": [
        "Returns the exposed face count of the code's fractal in any dimension at the given level, folded from its corners.",
        "",
        "# Errors",
        "",
        "Errors when the code is out of range, or the exposure passes a hundred and twenty-eight bits."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "code",
          "ty": {
            "t": "code"
          }
        },
        {
          "name": "number",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "dimension",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "level",
          "ty": {
            "t": "scalar",
            "name": "u32"
          }
        },
        {
          "name": "base",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "u128"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::counts::exposure_of_tile",
      "name": "exposure_of_tile",
      "module": "math::counts",
      "defined_at": "math/counts/surface.rs:170",
      "docs": [
        "Returns the exposed face count of the tile's level-fold Kronecker power in closed form, or none past a u128.",
        "",
        "```",
        "use mrlyrs::math::bang::Code;",
        "let carpet = mrlyrs::math::bang::factory::create(Code::from(7u64), 3, 2, 2, 1).unwrap();",
        "let perimeter: Vec<u128> = (1..5).map(|level| mrlyrs::math::counts::exposure_of_tile(&carpet, level).unwrap()).collect();",
        "assert_eq!(perimeter, [16, 80, 496, 3536]);",
        "```"
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "tile",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "hand",
              "name": "Tensor",
              "dim": null
            }
          }
        },
        {
          "name": "level",
          "ty": {
            "t": "scalar",
            "name": "u32"
          }
        }
      ],
      "ret": {
        "t": "option",
        "item": {
          "t": "u128"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::counts::exposure_recurrence",
      "name": "exposure_recurrence",
      "module": "math::counts",
      "defined_at": "math/counts/surface.rs:181",
      "docs": [
        "Returns the coefficients of the recurrence the tile's exposure obeys.",
        "",
        "```",
        "use mrlyrs::math::bang::Code;",
        "let sponge = mrlyrs::math::bang::factory::create(Code::from(23u64), 3, 3, 2, 1).unwrap();",
        "assert_eq!(mrlyrs::math::counts::exposure_recurrence(&sponge), [28, -160]);",
        "```"
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "tile",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "hand",
              "name": "Tensor",
              "dim": null
            }
          }
        }
      ],
      "ret": {
        "t": "vec",
        "item": {
          "t": "i128"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::counts::fill",
      "name": "fill",
      "module": "math::counts",
      "defined_at": "math/counts/counting.rs:49",
      "docs": [
        "Returns the filled cell count of the code's fractal at the given level, without rendering it.",
        "",
        "```",
        "use mrlyrs::math::bang::Code;",
        "assert_eq!(mrlyrs::math::counts::fill(Code::from(7u64), 3, 2, 2, 2).unwrap(), 64);",
        "```",
        "",
        "# Errors",
        "",
        "Errors when the code is out of range for the dimension and base."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "code",
          "ty": {
            "t": "code"
          }
        },
        {
          "name": "number",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "dimension",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "level",
          "ty": {
            "t": "scalar",
            "name": "u32"
          }
        },
        {
          "name": "base",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "u128"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::counts::fill_from_corners",
      "name": "fill_from_corners",
      "module": "math::counts",
      "defined_at": "math/counts/counting.rs:20",
      "docs": [
        "Sums each corner's position products into a base fill and raises it to the level."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "filled",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "vec",
              "item": {
                "t": "scalar",
                "name": "u8"
              }
            }
          }
        },
        {
          "name": "number",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "_dimension",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "level",
          "ty": {
            "t": "scalar",
            "name": "u32"
          }
        },
        {
          "name": "base",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "u128"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::counts::grid",
      "name": "grid",
      "module": "math::counts",
      "defined_at": "math/counts/counting.rs:15",
      "docs": [
        "Returns the total cells of the grid, number to the dimension, to the level."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "number",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "dimension",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "level",
          "ty": {
            "t": "scalar",
            "name": "u32"
          }
        }
      ],
      "ret": {
        "t": "u128"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::counts::ladder::cap",
      "name": "cap",
      "module": "math::counts::ladder",
      "defined_at": "math/counts/ladder.rs:399",
      "docs": [
        "The widest dimension the exact carry arithmetic reaches at the base.",
        "",
        "The sign is the heaviest reading: it walks the characteristic polynomial at `f_D/q` with the",
        "denominators cleared, so its running value climbs like `f_D^(D/2)` and a hundred and twenty-eight",
        "bits run out at dimension fifteen in base three and dimension eleven in base five.",
        "",
        "```",
        "assert_eq!(mrlyrs::math::counts::ladder::cap(3).unwrap(), 15);",
        "assert_eq!(mrlyrs::math::counts::ladder::cap(5).unwrap(), 11);",
        "```",
        "",
        "# Errors",
        "",
        "Errors at an even base under three, or past the dimension the ladder reaches."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "base",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "scalar",
          "name": "usize"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::counts::ladder::carry_matrix",
      "name": "carry_matrix",
      "module": "math::counts::ladder",
      "defined_at": "math/counts/ladder.rs:124",
      "docs": [
        "The carry matrix over the reachable carries `|c| <= (D-1)/2`, rows indexed by the carry out.",
        "",
        "A level of the design adds one base-`q` digit per coordinate, so the height of the central",
        "diagonal hyperplane moves by a digit sum `s` and a carry `c -> (c + mD - s)/q` with `m` the",
        "middle digit; the map contracts onto this window from every start.",
        "",
        "# Errors",
        "",
        "Errors at an even base under three, or a dimension outside two to the ceiling."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "base",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "dimension",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "vec",
          "item": {
            "t": "vec",
            "item": {
              "t": "i128"
            }
          }
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::counts::ladder::characteristic",
      "name": "characteristic",
      "module": "math::counts::ladder",
      "defined_at": "math/counts/ladder.rs:213",
      "docs": [
        "The monic characteristic polynomial of a square integer matrix, highest power first.",
        "",
        "Faddeev-LeVerrier in exact integers: every division lands whole, so no fraction is ever needed",
        "and the answer is the recurrence's coefficients up to sign.",
        "",
        "```",
        "let block = mrlyrs::math::counts::ladder::even_block(3, 3).unwrap();",
        "assert_eq!(mrlyrs::math::counts::ladder::characteristic(&block).unwrap(), vec![1, -9, 12]);",
        "```",
        "",
        "# Errors",
        "",
        "Errors when the walk leaves a remainder, or a coefficient passes an i128."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "rows",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "vec",
              "item": {
                "t": "i128"
              }
            }
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "vec",
          "item": {
            "t": "i128"
          }
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::counts::ladder::determinant",
      "name": "determinant",
      "module": "math::counts::ladder",
      "defined_at": "math/counts/ladder.rs:245",
      "docs": [
        "The determinant of a square integer matrix, read off its characteristic polynomial.",
        "",
        "```",
        "let block = mrlyrs::math::counts::ladder::even_block(3, 3).unwrap();",
        "assert_eq!(mrlyrs::math::counts::ladder::determinant(&block).unwrap(), 12);",
        "```",
        "",
        "# Errors",
        "",
        "Errors when the walk leaves a remainder, or a coefficient passes an i128."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "rows",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "vec",
              "item": {
                "t": "i128"
              }
            }
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "i128"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::counts::ladder::digit_polynomial",
      "name": "digit_polynomial",
      "module": "math::counts::ladder",
      "defined_at": "math/counts/ladder.rs:72",
      "docs": [
        "The digit polynomial of the base-`q` middle-digit design in dimension `D`, lowest power first.",
        "",
        "The design keeps the cells whose digit vector has at most one coordinate equal to the middle",
        "digit, so its weight generating function is `A(t)^(D-1) (A(t) + D t^m)`, with `A` the sum of",
        "every digit power but the middle one. At base three that factors as",
        "`(1 + t^2)^(D-1) (1 + D t + t^2)`, and the sum of the coefficients is the fill.",
        "",
        "```",
        "assert_eq!(mrlyrs::math::counts::ladder::digit_polynomial(3, 3).unwrap(), vec![1, 3, 3, 6, 3, 3, 1]);",
        "```",
        "",
        "# Errors",
        "",
        "Errors at an even base under three, or a dimension outside two to the ceiling."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "base",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "dimension",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "vec",
          "item": {
            "t": "i128"
          }
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::counts::ladder::even_block",
      "name": "even_block",
      "module": "math::counts::ladder",
      "defined_at": "math/counts/ladder.rs:151",
      "docs": [
        "The reflection-even block of the carry matrix, of size `ceil(D/2)`.",
        "",
        "The digit polynomial is palindromic, so the reflection `c -> -c` commutes with the carry map",
        "and splits it; the even half carries the central count and its characteristic polynomial is",
        "the recurrence the counts obey.",
        "",
        "```",
        "assert_eq!(mrlyrs::math::counts::ladder::even_block(3, 3).unwrap(), vec![vec![6, 6], vec![1, 3]]);",
        "```",
        "",
        "# Errors",
        "",
        "Errors at an even base under three, or a dimension outside two to the ceiling."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "base",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "dimension",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "vec",
          "item": {
            "t": "vec",
            "item": {
              "t": "i128"
            }
          }
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::counts::ladder::fill",
      "name": "fill",
      "module": "math::counts::ladder",
      "defined_at": "math/counts/ladder.rs:95",
      "docs": [
        "The count of level-one cells the design keeps, `f_D = (q - 1)^(D-1) (q - 1 + D)`.",
        "",
        "```",
        "assert_eq!(mrlyrs::math::counts::ladder::fill(3, 3).unwrap(), 20);",
        "assert_eq!(mrlyrs::math::counts::ladder::fill(5, 3).unwrap(), 112);",
        "```",
        "",
        "# Errors",
        "",
        "Errors at an even base under three, a dimension outside two to the ceiling, or a product past an i128."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "base",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "dimension",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "i128"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::counts::ladder::ladder",
      "name": "ladder",
      "module": "math::counts::ladder",
      "defined_at": "math/counts/ladder.rs:271",
      "docs": [
        "The counts `a_D(L)` of level-`L` cells meeting the central diagonal hyperplane, from `L = 0`.",
        "",
        "The count is the top-left entry of the `L`-th power of the even block. The walk stops early",
        "when the next count would pass a hundred and twenty-eight bits, so the answer runs as far as",
        "exact integers reach and no further.",
        "",
        "```",
        "let terms = mrlyrs::math::counts::ladder::ladder(3, 3, 6).unwrap();",
        "assert_eq!(terms, vec![1, 6, 42, 306, 2250, 16578, 122202]);",
        "```",
        "",
        "# Errors",
        "",
        "Errors at an even base under three, or a dimension outside two to the ceiling."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "base",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "dimension",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "levels",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "vec",
          "item": {
            "t": "i128"
          }
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::counts::ladder::perron",
      "name": "perron",
      "module": "math::counts::ladder",
      "defined_at": "math/counts/ladder.rs:315",
      "docs": [
        "The Perron root of a nonnegative square integer matrix.",
        "",
        "The characteristic polynomial is rescaled by the largest row sum, which bounds the root above,",
        "then the largest sign change on the unit interval is hunted on a grid and closed by bisection,",
        "the same walk the recurrence growth reader takes.",
        "",
        "```",
        "let block = mrlyrs::math::counts::ladder::even_block(3, 3).unwrap();",
        "let root = mrlyrs::math::counts::ladder::perron(&block).unwrap();",
        "assert!((root - (9.0 + 33f64.sqrt()) / 2.0).abs() < 1e-9);",
        "```",
        "",
        "# Errors",
        "",
        "Errors when the block has no positive row sum, or no root inside its bound."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "rows",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "vec",
              "item": {
                "t": "i128"
              }
            }
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "scalar",
          "name": "f64"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::counts::ladder::sign",
      "name": "sign",
      "module": "math::counts::ladder",
      "defined_at": "math/counts/ladder.rs:367",
      "docs": [
        "The sign of `log_q rho_D - (log_q f_D - 1)`, the slice sign law's reading, in exact integers.",
        "",
        "The characteristic polynomial is evaluated at `f_D/q` with the denominators cleared, so the",
        "answer is a comparison of whole numbers and never a rounding. The law reads `(-1)^(D+1)`: the",
        "slice exponent stands above the solid's dimension less one at odd `D` and below it at even `D`.",
        "",
        "```",
        "assert_eq!(mrlyrs::math::counts::ladder::sign(3, 3).unwrap(), 1);",
        "assert_eq!(mrlyrs::math::counts::ladder::sign(3, 4).unwrap(), -1);",
        "```",
        "",
        "# Errors",
        "",
        "Errors at an even base under three, a dimension outside two to the ceiling, or a term past an i128."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "base",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "dimension",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "scalar",
          "name": "i32"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::counts::ladder::spectral_ratio",
      "name": "spectral_ratio",
      "module": "math::counts::ladder",
      "defined_at": "math/counts/ladder.rs:464",
      "docs": [
        "The Perron root over the modulus of the second eigenvalue, or none where the block is one wide.",
        "",
        "Power iteration finds the leading pair, Hotelling deflation takes it out and a second walk,",
        "reprojected every sweep so rounding cannot bring the leader back, reads the runner up. At base",
        "three the ratio falls to `(D + 2)/(D - 2)`, so no fixed spectral gap survives the dimensions.",
        "",
        "# Errors",
        "",
        "Errors at an even base under three, or a dimension outside two to the ceiling."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "base",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "dimension",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "option",
          "item": {
            "t": "scalar",
            "name": "f64"
          }
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::counts::ladder::trace",
      "name": "trace",
      "module": "math::counts::ladder",
      "defined_at": "math/counts/ladder.rs:179",
      "docs": [
        "The trace of a square integer matrix.",
        "",
        "```",
        "let block = mrlyrs::math::counts::ladder::even_block(3, 3).unwrap();",
        "assert_eq!(mrlyrs::math::counts::ladder::trace(&block), 9);",
        "```"
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "rows",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "vec",
              "item": {
                "t": "i128"
              }
            }
          }
        }
      ],
      "ret": {
        "t": "i128"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::counts::limit",
      "name": "limit",
      "module": "math::counts",
      "defined_at": "math/counts/counting.rs:114",
      "docs": [
        "Returns the fill ratio the code walks toward as the side number grows, reduced.",
        "",
        "The ratio is the corner count over the corner slots, so it is always rational: the",
        "carpet holds three corners of four and the sponge four of eight.",
        "",
        "```",
        "use mrlyrs::math::bang::Code;",
        "assert_eq!(mrlyrs::math::counts::limit(Code::from(7u64), 2, 1, 2).unwrap(), (3, 4));",
        "assert_eq!(mrlyrs::math::counts::limit(Code::from(7u64), 2, 2, 2).unwrap(), (9, 16));",
        "```",
        "",
        "# Errors",
        "",
        "Errors when the code is out of range, or the limit overflows at this level."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "code",
          "ty": {
            "t": "code"
          }
        },
        {
          "name": "dimension",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "level",
          "ty": {
            "t": "scalar",
            "name": "u32"
          }
        },
        {
          "name": "base",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "tuple",
          "items": [
            {
              "t": "u128"
            },
            {
              "t": "u128"
            }
          ]
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::counts::pairs",
      "name": "pairs",
      "module": "math::counts",
      "defined_at": "math/counts/surface.rs:24",
      "docs": [
        "Counts, per axis, the adjacent filled pairs and the cross positions whose two end cells are both filled.",
        "",
        "A level deeper, each adjacent pair buries one face per spanning position of the block, and the",
        "spanning positions of the block multiply level by level, so the exposure closes."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "tile",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "hand",
              "name": "Tensor",
              "dim": null
            }
          }
        }
      ],
      "ret": {
        "t": "vec",
        "item": {
          "t": "tuple",
          "items": [
            {
              "t": "u128"
            },
            {
              "t": "u128"
            }
          ]
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::counts::positions",
      "name": "positions",
      "module": "math::counts",
      "defined_at": "math/counts/counting.rs:7",
      "docs": [
        "Counts the indices below number that equal residue modulo base."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "residue",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "number",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "base",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "u128"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::counts::pro_fills",
      "name": "pro_fills",
      "module": "math::counts",
      "defined_at": "math/counts/six.rs:100",
      "docs": [
        "Returns the filled triangle count of the code's pro projection at the given level, without rendering it.",
        "",
        "# Errors",
        "",
        "Errors when the code is out of range for a base-2 cube."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "code",
          "ty": {
            "t": "code"
          }
        },
        {
          "name": "number",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "level",
          "ty": {
            "t": "scalar",
            "name": "u32"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "u128"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::counts::pro_voids",
      "name": "pro_voids",
      "module": "math::counts",
      "defined_at": "math/counts/six.rs:125",
      "docs": [
        "Returns the empty triangle count of the code's pro projection at the given level.",
        "",
        "# Errors",
        "",
        "Errors when the code is out of range for a base-2 cube."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "code",
          "ty": {
            "t": "code"
          }
        },
        {
          "name": "number",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "level",
          "ty": {
            "t": "scalar",
            "name": "u32"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "u128"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::counts::profile_of_tile",
      "name": "profile_of_tile",
      "module": "math::counts",
      "defined_at": "math/counts/diagonal.rs:41",
      "docs": [
        "Counts the filled cells of the tile's level-fold power on every diagonal plane `x_1 + ... + x_D = s`.",
        "",
        "The count is the coefficient of the digit polynomial, the level-fold product of the tile's",
        "weight sums, so no cell of the power is ever built; the tile must be a hypercube.",
        "",
        "```",
        "use mrlyrs::math::bang::Code;",
        "let gasket = mrlyrs::math::bang::factory::create(Code::from(126u64), 2, 3, 2, 1).unwrap();",
        "let counts = mrlyrs::math::counts::profile_of_tile(&gasket, 4).unwrap();",
        "assert_eq!(counts[15..=30].iter().copied().collect::<Vec<u128>>(), vec![81u128; 16]);",
        "```",
        "",
        "# Errors",
        "",
        "Errors for a tile that is not a hypercube, a level below one, a side past the widest, or counts past a u128."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "tile",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "hand",
              "name": "Tensor",
              "dim": null
            }
          }
        },
        {
          "name": "level",
          "ty": {
            "t": "scalar",
            "name": "u32"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "vec",
          "item": {
            "t": "u128"
          }
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::counts::ratio",
      "name": "ratio",
      "module": "math::counts",
      "defined_at": "math/counts/counting.rs:68",
      "docs": [
        "Returns the filled fraction of the grid, or 0.0 for an empty grid.",
        "",
        "# Errors",
        "",
        "Errors when the code is out of range for the dimension and base."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "code",
          "ty": {
            "t": "code"
          }
        },
        {
          "name": "number",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "dimension",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "level",
          "ty": {
            "t": "scalar",
            "name": "u32"
          }
        },
        {
          "name": "base",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "scalar",
          "name": "f64"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::counts::rational",
      "name": "rational",
      "module": "math::counts",
      "defined_at": "math/counts/counting.rs:86",
      "docs": [
        "Returns the exact filled fraction as a fraction of fill over grid, reduced.",
        "",
        "```",
        "use mrlyrs::math::bang::Code;",
        "assert_eq!(mrlyrs::math::counts::rational(Code::from(7u64), 3, 2, 2, 2).unwrap(), (64, 81));",
        "```",
        "",
        "# Errors",
        "",
        "Errors when the code is out of range for the dimension and base."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "code",
          "ty": {
            "t": "code"
          }
        },
        {
          "name": "number",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "dimension",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "level",
          "ty": {
            "t": "scalar",
            "name": "u32"
          }
        },
        {
          "name": "base",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "tuple",
          "items": [
            {
              "t": "u128"
            },
            {
              "t": "u128"
            }
          ]
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::counts::six::grid_triangles",
      "name": "grid_triangles",
      "module": "math::counts::six",
      "defined_at": "math/counts/six.rs:8",
      "docs": [
        "Returns the triangles of the full hexagon with side number to the level."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "number",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "level",
          "ty": {
            "t": "scalar",
            "name": "u32"
          }
        }
      ],
      "ret": {
        "t": "u128"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::counts::six::solid_slice_boundary",
      "name": "solid_slice_boundary",
      "module": "math::counts::six",
      "defined_at": "math/counts/six.rs:54",
      "docs": [
        "Returns the boundary edge count of the solid slice, defined for odd number.",
        "",
        "# Errors",
        "",
        "Errors at an even side number."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "number",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "u128"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::counts::six::solid_slice_core_edges",
      "name": "solid_slice_core_edges",
      "module": "math::counts::six",
      "defined_at": "math/counts/six.rs:34",
      "docs": [
        "Returns the core edge count of the solid slice, defined for odd number.",
        "",
        "# Errors",
        "",
        "Errors at an even side number."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "number",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "u128"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::counts::six::solid_slice_core_nodes",
      "name": "solid_slice_core_nodes",
      "module": "math::counts::six",
      "defined_at": "math/counts/six.rs:24",
      "docs": [
        "Returns the core node count of the solid slice, defined for odd number.",
        "",
        "# Errors",
        "",
        "Errors at an even side number."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "number",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "u128"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::counts::six::solid_slice_edges",
      "name": "solid_slice_edges",
      "module": "math::counts::six",
      "defined_at": "math/counts/six.rs:90",
      "docs": [
        "Returns the distinct triangle-edge count of the solid slice, defined for odd number.",
        "",
        "# Errors",
        "",
        "Errors at an even side number."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "number",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "u128"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::counts::six::solid_slice_interior",
      "name": "solid_slice_interior",
      "module": "math::counts::six",
      "defined_at": "math/counts/six.rs:74",
      "docs": [
        "Returns the interior edge count of the solid slice, defined for odd number.",
        "",
        "# Errors",
        "",
        "Errors at an even side number."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "number",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "u128"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::counts::six::solid_slice_triangles",
      "name": "solid_slice_triangles",
      "module": "math::counts::six",
      "defined_at": "math/counts/six.rs:44",
      "docs": [
        "Returns the triangle count of the solid slice, defined for odd number.",
        "",
        "# Errors",
        "",
        "Errors at an even side number."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "number",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "u128"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::counts::six::solid_slice_vertices",
      "name": "solid_slice_vertices",
      "module": "math::counts::six",
      "defined_at": "math/counts/six.rs:64",
      "docs": [
        "Returns the vertex count of the solid slice, defined for odd number.",
        "",
        "# Errors",
        "",
        "Errors at an even side number."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "number",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "u128"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::counts::surface",
      "name": "surface",
      "module": "math::counts",
      "defined_at": "math/counts/surface.rs:252",
      "docs": [
        "Returns the exposed face count of the code's 3D fractal at the given level.",
        "",
        "# Errors",
        "",
        "Errors when the code is out of range, or the exposure passes a hundred and twenty-eight bits."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "code",
          "ty": {
            "t": "code"
          }
        },
        {
          "name": "number",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "level",
          "ty": {
            "t": "scalar",
            "name": "u32"
          }
        },
        {
          "name": "base",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "u128"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::counts::void",
      "name": "void",
      "module": "math::counts",
      "defined_at": "math/counts/counting.rs:59",
      "docs": [
        "Returns the empty cell count, grid minus fill.",
        "",
        "# Errors",
        "",
        "Errors when the code is out of range for the dimension and base."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "code",
          "ty": {
            "t": "code"
          }
        },
        {
          "name": "number",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "dimension",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "level",
          "ty": {
            "t": "scalar",
            "name": "u32"
          }
        },
        {
          "name": "base",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "u128"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::graph::Layout::energy",
      "name": "energy",
      "module": "math::graph",
      "defined_at": "math/graph/layout.rs:175",
      "docs": [
        "Returns the mean net force per node in units of `k` after the last tick."
      ],
      "owner": "math::graph::Layout",
      "self_kind": "ref",
      "params": [],
      "ret": {
        "t": "scalar",
        "name": "f64"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::graph::Layout::from_network",
      "name": "from_network",
      "module": "math::graph",
      "defined_at": "math/graph/layout.rs:90",
      "docs": [
        "Starts a layout from a network's own positions and branches.",
        "",
        "# Errors",
        "",
        "Errors when a branch names a node the network does not hold."
      ],
      "owner": "math::graph::Layout",
      "self_kind": null,
      "params": [
        {
          "name": "network",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "class",
              "path": "math::graph::Network",
              "dim": null
            }
          }
        },
        {
          "name": "seed",
          "ty": {
            "t": "scalar",
            "name": "u64"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "class",
          "path": "math::graph::Layout",
          "dim": null
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::graph::Layout::ideal",
      "name": "ideal",
      "module": "math::graph",
      "defined_at": "math/graph/layout.rs:108",
      "docs": [
        "Returns the ideal branch length `k`."
      ],
      "owner": "math::graph::Layout",
      "self_kind": "ref",
      "params": [],
      "ret": {
        "t": "scalar",
        "name": "f64"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::graph::Layout::moved",
      "name": "moved",
      "module": "math::graph",
      "defined_at": "math/graph/layout.rs:179",
      "docs": [
        "Returns the mean distance a node moved in the last tick."
      ],
      "owner": "math::graph::Layout",
      "self_kind": "ref",
      "params": [],
      "ret": {
        "t": "scalar",
        "name": "f64"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::graph::Layout::new",
      "name": "new",
      "module": "math::graph",
      "defined_at": "math/graph/layout.rs:44",
      "docs": [
        "Starts a layout from flat positions, `dim` floats per node, and the branch pairs.",
        "",
        "# Errors",
        "",
        "Errors when a branch points off the list, or the positions are not dim floats a node."
      ],
      "owner": "math::graph::Layout",
      "self_kind": null,
      "params": [
        {
          "name": "positions",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "scalar",
              "name": "f64"
            }
          }
        },
        {
          "name": "branches",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "tuple",
              "items": [
                {
                  "t": "scalar",
                  "name": "usize"
                },
                {
                  "t": "scalar",
                  "name": "usize"
                }
              ]
            }
          }
        },
        {
          "name": "dim",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "seed",
          "ty": {
            "t": "scalar",
            "name": "u64"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "class",
          "path": "math::graph::Layout",
          "dim": null
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::graph::Layout::nodes",
      "name": "nodes",
      "module": "math::graph",
      "defined_at": "math/graph/layout.rs:104",
      "docs": [
        "Returns the node count."
      ],
      "owner": "math::graph::Layout",
      "self_kind": "ref",
      "params": [],
      "ret": {
        "t": "scalar",
        "name": "usize"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::graph::Layout::positions",
      "name": "positions",
      "module": "math::graph",
      "defined_at": "math/graph/layout.rs:171",
      "docs": [
        "Returns the positions, `dim` floats per node."
      ],
      "owner": "math::graph::Layout",
      "self_kind": "ref",
      "params": [],
      "ret": {
        "t": "slice",
        "mutable": false,
        "item": {
          "t": "scalar",
          "name": "f64"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::graph::Layout::step",
      "name": "step",
      "module": "math::graph",
      "defined_at": "math/graph/layout.rs:121",
      "docs": [
        "Runs the ticks and returns the energy left: the mean net force per node in units of `k`."
      ],
      "owner": "math::graph::Layout",
      "self_kind": "mut",
      "params": [
        {
          "name": "ticks",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "scalar",
        "name": "f64"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::graph::Layout::temperature",
      "name": "temperature",
      "module": "math::graph",
      "defined_at": "math/graph/layout.rs:112",
      "docs": [
        "Returns the cap on one node's move in the next tick."
      ],
      "owner": "math::graph::Layout",
      "self_kind": "ref",
      "params": [],
      "ret": {
        "t": "scalar",
        "name": "f64"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::graph::Layout::ticks",
      "name": "ticks",
      "module": "math::graph",
      "defined_at": "math/graph/layout.rs:117",
      "docs": [
        "Returns the ticks stepped so far."
      ],
      "owner": "math::graph::Layout",
      "self_kind": "ref",
      "params": [],
      "ret": {
        "t": "scalar",
        "name": "usize"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::graph::Network::add_branch",
      "name": "add_branch",
      "module": "math::graph",
      "defined_at": "math/graph/models.rs:67",
      "docs": [
        "Appends a branch between two node indices.",
        "",
        "# Errors",
        "",
        "Errors when either index is out of range."
      ],
      "owner": "math::graph::Network",
      "self_kind": "mut",
      "params": [
        {
          "name": "parent",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "child",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "radius",
          "ty": {
            "t": "scalar",
            "name": "f64"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "unit"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::graph::Network::add_node",
      "name": "add_node",
      "module": "math::graph",
      "defined_at": "math/graph/models.rs:50",
      "docs": [
        "Appends a node at the position and returns its index.",
        "",
        "# Errors",
        "",
        "Errors on a dimension mismatch."
      ],
      "owner": "math::graph::Network",
      "self_kind": "mut",
      "params": [
        {
          "name": "position",
          "ty": {
            "t": "vec",
            "item": {
              "t": "scalar",
              "name": "f64"
            }
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "scalar",
          "name": "usize"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::graph::Network::adjacency",
      "name": "adjacency",
      "module": "math::graph",
      "defined_at": "math/graph/models.rs:104",
      "docs": [
        "Returns the undirected neighbor lists of every node.",
        "",
        "# Errors",
        "",
        "Errors when a branch names a node the network does not hold."
      ],
      "owner": "math::graph::Network",
      "self_kind": "ref",
      "params": [],
      "ret": {
        "t": "result",
        "item": {
          "t": "map",
          "key": {
            "t": "scalar",
            "name": "usize"
          },
          "value": {
            "t": "vec",
            "item": {
              "t": "scalar",
              "name": "usize"
            }
          }
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::graph::Network::degree",
      "name": "degree",
      "module": "math::graph",
      "defined_at": "math/graph/models.rs:84",
      "docs": [
        "Returns each node's branch count, indexed like the node list.",
        "",
        "# Errors",
        "",
        "Errors when a branch names a node the network does not hold."
      ],
      "owner": "math::graph::Network",
      "self_kind": "ref",
      "params": [],
      "ret": {
        "t": "result",
        "item": {
          "t": "vec",
          "item": {
            "t": "scalar",
            "name": "usize"
          }
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::graph::Network::new",
      "name": "new",
      "module": "math::graph",
      "defined_at": "math/graph/models.rs:38",
      "docs": [
        "Builds an empty network of the given dimension."
      ],
      "owner": "math::graph::Network",
      "self_kind": null,
      "params": [
        {
          "name": "dim",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "class",
        "path": "math::graph::Network",
        "dim": null
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::graph::census",
      "name": "census",
      "module": "math::graph",
      "defined_at": "math/graph/census.rs:280",
      "docs": [
        "Takes the full census of a network.",
        "",
        "```",
        "let mut net = mrlyrs::math::graph::Network::new(2);",
        "net.add_node(vec![0.0, 0.0]).unwrap();",
        "net.add_node(vec![3.0, 4.0]).unwrap();",
        "assert_eq!(mrlyrs::math::graph::census(&net).unwrap().components, 2);",
        "```",
        "",
        "# Errors",
        "",
        "Errors when a branch names a node the network does not hold."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "network",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "class",
              "path": "math::graph::Network",
              "dim": null
            }
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "plain",
          "path": "math::graph::Census"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::graph::components",
      "name": "components",
      "module": "math::graph",
      "defined_at": "math/graph/census.rs:91",
      "docs": [
        "Counts the connected components of the network.",
        "",
        "# Errors",
        "",
        "Errors when a branch names a node the network does not hold."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "network",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "class",
              "path": "math::graph::Network",
              "dim": null
            }
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "scalar",
          "name": "usize"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::graph::core_graph",
      "name": "core_graph",
      "module": "math::graph",
      "defined_at": "math/graph/extract.rs:32",
      "docs": [
        "Extracts the network of filled sites joined to their axis neighbors.",
        "",
        "# Errors",
        "",
        "Errors off two and three dimensions."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "grid",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "hand",
              "name": "Tensor",
              "dim": null
            }
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "class",
          "path": "math::graph::Network",
          "dim": null
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::graph::edge_graph",
      "name": "edge_graph",
      "module": "math::graph",
      "defined_at": "math/graph/extract.rs:79",
      "docs": [
        "Extracts the network of corners and edges outlining every filled site.",
        "",
        "# Errors",
        "",
        "Errors off two and three dimensions."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "grid",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "hand",
              "name": "Tensor",
              "dim": null
            }
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "class",
          "path": "math::graph::Network",
          "dim": null
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::graph::fractal_dimension",
      "name": "fractal_dimension",
      "module": "math::graph",
      "defined_at": "math/graph/census.rs:192",
      "docs": [
        "Estimates the box-counting dimension of the node cloud over a ladder of halving boxes, one rung per sample."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "network",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "class",
              "path": "math::graph::Network",
              "dim": null
            }
          }
        },
        {
          "name": "samples",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "scalar",
        "name": "f64"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::graph::junctions",
      "name": "junctions",
      "module": "math::graph",
      "defined_at": "math/graph/census.rs:79",
      "docs": [
        "Counts the nodes of degree three or more.",
        "",
        "# Errors",
        "",
        "Errors when a branch names a node the network does not hold."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "network",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "class",
              "path": "math::graph::Network",
              "dim": null
            }
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "scalar",
          "name": "usize"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::graph::largest_component",
      "name": "largest_component",
      "module": "math::graph",
      "defined_at": "math/graph/census.rs:132",
      "docs": [
        "Extracts the largest connected piece as a network of its own, branches re-indexed.",
        "",
        "Ties go to the piece whose lowest node index comes first. An empty network comes back empty.",
        "",
        "```",
        "let mut net = mrlyrs::math::graph::Network::new(1);",
        "for i in 0..3 { net.add_node(vec![i as f64]).unwrap(); }",
        "net.add_branch(0, 1, 1.0).unwrap();",
        "assert_eq!(mrlyrs::math::graph::largest_component(&net).unwrap().nodes.len(), 2);",
        "```",
        "",
        "# Errors",
        "",
        "Errors when a branch names a node the network does not hold."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "network",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "class",
              "path": "math::graph::Network",
              "dim": null
            }
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "class",
          "path": "math::graph::Network",
          "dim": null
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::graph::roles",
      "name": "roles",
      "module": "math::graph",
      "defined_at": "math/graph/census.rs:52",
      "docs": [
        "Tags every node by its degree, indexed like the node list.",
        "",
        "```",
        "let mut net = mrlyrs::math::graph::Network::new(2);",
        "net.add_node(vec![0.0, 0.0]).unwrap();",
        "net.add_node(vec![1.0, 0.0]).unwrap();",
        "net.add_branch(0, 1, 1.0).unwrap();",
        "assert_eq!(mrlyrs::math::graph::roles(&net).unwrap(), vec![mrlyrs::math::graph::Role::Tip; 2]);",
        "```",
        "",
        "# Errors",
        "",
        "Errors when a branch names a node the network does not hold."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "network",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "class",
              "path": "math::graph::Network",
              "dim": null
            }
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "vec",
          "item": {
            "t": "enum",
            "path": "math::graph::Role"
          }
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::graph::tips",
      "name": "tips",
      "module": "math::graph",
      "defined_at": "math/graph/census.rs:70",
      "docs": [
        "Counts the nodes of degree one.",
        "",
        "# Errors",
        "",
        "Errors when a branch names a node the network does not hold."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "network",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "class",
              "path": "math::graph::Network",
              "dim": null
            }
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "scalar",
          "name": "usize"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::graph::total_length",
      "name": "total_length",
      "module": "math::graph",
      "defined_at": "math/graph/census.rs:10",
      "docs": [
        "Sums the straight-line lengths of every branch."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "network",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "class",
              "path": "math::graph::Network",
              "dim": null
            }
          }
        }
      ],
      "ret": {
        "t": "scalar",
        "name": "f64"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::graph::tunnel_graph",
      "name": "tunnel_graph",
      "module": "math::graph",
      "defined_at": "math/graph/extract.rs:70",
      "docs": [
        "Extracts the core graph of the inverted grid, joining empty sites instead.",
        "",
        "# Errors",
        "",
        "Errors off two and three dimensions."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "grid",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "hand",
              "name": "Tensor",
              "dim": null
            }
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "class",
          "path": "math::graph::Network",
          "dim": null
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::moire::Field::as_f64",
      "name": "as_f64",
      "module": "math::moire",
      "defined_at": "math/moire/field.rs:52",
      "docs": [
        "Returns the samples widened to f64."
      ],
      "owner": "math::moire::Field",
      "self_kind": "ref",
      "params": [],
      "ret": {
        "t": "vec",
        "item": {
          "t": "scalar",
          "name": "f64"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::moire::Field::from_data",
      "name": "from_data",
      "module": "math::moire",
      "defined_at": "math/moire/field.rs:26",
      "docs": [
        "Wraps row-major samples of the given side.",
        "",
        "# Errors",
        "",
        "Errors when the count is not the side squared."
      ],
      "owner": "math::moire::Field",
      "self_kind": null,
      "params": [
        {
          "name": "data",
          "ty": {
            "t": "vec",
            "item": {
              "t": "scalar",
              "name": "f32"
            }
          }
        },
        {
          "name": "size",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "class",
          "path": "math::moire::Field",
          "dim": null
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::moire::Field::max",
      "name": "max",
      "module": "math::moire",
      "defined_at": "math/moire/field.rs:41",
      "docs": [
        "Returns the largest sample."
      ],
      "owner": "math::moire::Field",
      "self_kind": "ref",
      "params": [],
      "ret": {
        "t": "scalar",
        "name": "f32"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::moire::Field::mean",
      "name": "mean",
      "module": "math::moire",
      "defined_at": "math/moire/field.rs:45",
      "docs": [
        "Returns the mean sample, or zero for an empty field."
      ],
      "owner": "math::moire::Field",
      "self_kind": "ref",
      "params": [],
      "ret": {
        "t": "scalar",
        "name": "f64"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::moire::Field::min",
      "name": "min",
      "module": "math::moire",
      "defined_at": "math/moire/field.rs:37",
      "docs": [
        "Returns the smallest sample."
      ],
      "owner": "math::moire::Field",
      "self_kind": "ref",
      "params": [],
      "ret": {
        "t": "scalar",
        "name": "f32"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::moire::Field::new",
      "name": "new",
      "module": "math::moire",
      "defined_at": "math/moire/field.rs:15",
      "docs": [
        "Builds a zeroed field of the given side."
      ],
      "owner": "math::moire::Field",
      "self_kind": null,
      "params": [
        {
          "name": "size",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "class",
        "path": "math::moire::Field",
        "dim": null
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::moire::Field::normalized",
      "name": "normalized",
      "module": "math::moire",
      "defined_at": "math/moire/field.rs:56",
      "docs": [
        "Returns the samples scaled into 0..1, symmetric about zero on request."
      ],
      "owner": "math::moire::Field",
      "self_kind": "ref",
      "params": [
        {
          "name": "symmetric",
          "ty": {
            "t": "scalar",
            "name": "bool"
          }
        }
      ],
      "ret": {
        "t": "vec",
        "item": {
          "t": "scalar",
          "name": "f32"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::moire::Layer::new",
      "name": "new",
      "module": "math::moire",
      "defined_at": "math/moire/layer.rs:25",
      "docs": [
        "Builds a layer at level 1 on a 512-pixel square lattice."
      ],
      "owner": "math::moire::Layer",
      "self_kind": null,
      "params": [
        {
          "name": "spec",
          "ty": {
            "t": "plain",
            "path": "math::moire::Spec"
          }
        },
        {
          "name": "number",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "plain",
        "path": "math::moire::Layer"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::moire::Preset::carpet",
      "name": "carpet",
      "module": "math::moire",
      "defined_at": "math/moire/presets.rs:70",
      "docs": [
        "The carpet stack: every base-three corner but the centre, summed over odd scales."
      ],
      "owner": "math::moire::Preset",
      "self_kind": null,
      "params": [
        {
          "name": "limit",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "class",
        "path": "math::moire::Preset",
        "dim": null
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::moire::Preset::field",
      "name": "field",
      "module": "math::moire",
      "defined_at": "math/moire/presets.rs:82",
      "docs": [
        "Samples the preset into a square field of the given side.",
        "",
        "# Errors",
        "",
        "Errors when the preset's code is out of range."
      ],
      "owner": "math::moire::Preset",
      "self_kind": "ref",
      "params": [
        {
          "name": "size",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "class",
          "path": "math::moire::Field",
          "dim": null
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::moire::Preset::heatmap",
      "name": "heatmap",
      "module": "math::moire",
      "defined_at": "math/moire/presets.rs:43",
      "docs": [
        "The parity heatmap: odd scales of the low corner summed on the square lattice."
      ],
      "owner": "math::moire::Preset",
      "self_kind": null,
      "params": [
        {
          "name": "limit",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "class",
        "path": "math::moire::Preset",
        "dim": null
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::moire::Preset::hive",
      "name": "hive",
      "module": "math::moire",
      "defined_at": "math/moire/presets.rs:62",
      "docs": [
        "The hive: the parity heatmap sampled on the hexagonal lattice."
      ],
      "owner": "math::moire::Preset",
      "self_kind": null,
      "params": [
        {
          "name": "limit",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "class",
        "path": "math::moire::Preset",
        "dim": null
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::moire::Preset::weave",
      "name": "weave",
      "module": "math::moire",
      "defined_at": "math/moire/presets.rs:54",
      "docs": [
        "The parity weave: the same odd scales folded to their parity instead of summed."
      ],
      "owner": "math::moire::Preset",
      "self_kind": null,
      "params": [
        {
          "name": "limit",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "class",
        "path": "math::moire::Preset",
        "dim": null
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::moire::Spec::new",
      "name": "new",
      "module": "math::moire",
      "defined_at": "math/moire/mod.rs:58",
      "docs": [
        "Builds a spec from a code, base and dimension."
      ],
      "owner": "math::moire::Spec",
      "self_kind": null,
      "params": [
        {
          "name": "code",
          "ty": {
            "t": "u128"
          }
        },
        {
          "name": "base",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "dimension",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "plain",
        "path": "math::moire::Spec"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::moire::Volume::at",
      "name": "at",
      "module": "math::moire",
      "defined_at": "math/moire/volume.rs:77",
      "docs": [
        "Reads the sample at a voxel."
      ],
      "owner": "math::moire::Volume",
      "self_kind": "ref",
      "params": [
        {
          "name": "x",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "y",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "z",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "scalar",
        "name": "f32"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::moire::Volume::count",
      "name": "count",
      "module": "math::moire",
      "defined_at": "math/moire/volume.rs:101",
      "docs": [
        "Counts the samples at or above the level."
      ],
      "owner": "math::moire::Volume",
      "self_kind": "ref",
      "params": [
        {
          "name": "level",
          "ty": {
            "t": "scalar",
            "name": "f32"
          }
        }
      ],
      "ret": {
        "t": "scalar",
        "name": "usize"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::moire::Volume::from_data",
      "name": "from_data",
      "module": "math::moire",
      "defined_at": "math/moire/volume.rs:62",
      "docs": [
        "Wraps x-major samples of the side.",
        "",
        "# Errors",
        "",
        "Errors when the count is not the side cubed."
      ],
      "owner": "math::moire::Volume",
      "self_kind": null,
      "params": [
        {
          "name": "data",
          "ty": {
            "t": "vec",
            "item": {
              "t": "scalar",
              "name": "f32"
            }
          }
        },
        {
          "name": "size",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "class",
          "path": "math::moire::Volume",
          "dim": null
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::moire::Volume::max",
      "name": "max",
      "module": "math::moire",
      "defined_at": "math/moire/volume.rs:73",
      "docs": [
        "Returns the largest sample."
      ],
      "owner": "math::moire::Volume",
      "self_kind": "ref",
      "params": [],
      "ret": {
        "t": "scalar",
        "name": "f32"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::moire::Volume::min",
      "name": "min",
      "module": "math::moire",
      "defined_at": "math/moire/volume.rs:69",
      "docs": [
        "Returns the smallest sample."
      ],
      "owner": "math::moire::Volume",
      "self_kind": "ref",
      "params": [],
      "ret": {
        "t": "scalar",
        "name": "f32"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::moire::Volume::new",
      "name": "new",
      "module": "math::moire",
      "defined_at": "math/moire/volume.rs:51",
      "docs": [
        "Builds a zeroed volume of the side."
      ],
      "owner": "math::moire::Volume",
      "self_kind": null,
      "params": [
        {
          "name": "size",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "class",
        "path": "math::moire::Volume",
        "dim": null
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::moire::Volume::plane",
      "name": "plane",
      "module": "math::moire",
      "defined_at": "math/moire/volume.rs:105",
      "docs": [
        "Samples the plane of the frame on an out by out window: the values row by row, and one byte per pixel saying whether it lies inside the cube."
      ],
      "owner": "math::moire::Volume",
      "self_kind": "ref",
      "params": [
        {
          "name": "frame",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "plain",
              "path": "math::moire::Frame"
            }
          }
        },
        {
          "name": "out",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "tuple",
        "items": [
          {
            "t": "vec",
            "item": {
              "t": "scalar",
              "name": "f32"
            }
          },
          {
            "t": "vec",
            "item": {
              "t": "scalar",
              "name": "u8"
            }
          }
        ]
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::moire::Volume::sample",
      "name": "sample",
      "module": "math::moire",
      "defined_at": "math/moire/volume.rs:81",
      "docs": [
        "Reads the voxel a point of the unit cube falls in, or zero outside it."
      ],
      "owner": "math::moire::Volume",
      "self_kind": "ref",
      "params": [
        {
          "name": "p",
          "ty": {
            "t": "array",
            "item": {
              "t": "scalar",
              "name": "f64"
            },
            "len": 3
          }
        }
      ],
      "ret": {
        "t": "option",
        "item": {
          "t": "scalar",
          "name": "f32"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::moire::Volume::solid",
      "name": "solid",
      "module": "math::moire",
      "defined_at": "math/moire/volume.rs:93",
      "docs": [
        "Thresholds into a byte tensor: one where a sample reaches the level, zero below."
      ],
      "owner": "math::moire::Volume",
      "self_kind": "ref",
      "params": [
        {
          "name": "level",
          "ty": {
            "t": "scalar",
            "name": "f32"
          }
        }
      ],
      "ret": {
        "t": "hand",
        "name": "Tensor",
        "dim": null
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::moire::all",
      "name": "all",
      "module": "math::moire",
      "defined_at": "math/moire/presets.rs:96",
      "docs": [
        "Returns every preset stacked up to the given scale."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "limit",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "vec",
        "item": {
          "t": "class",
          "path": "math::moire::Preset",
          "dim": null
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::moire::frame",
      "name": "frame",
      "module": "math::moire",
      "defined_at": "math/moire/volume.rs:136",
      "docs": [
        "Frames the plane normal to the direction, at the offset from zero to one across the box along it; the window is the smallest square holding every section on that normal.",
        "",
        "# Errors",
        "",
        "Errors on a zero normal."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "normal",
          "ty": {
            "t": "array",
            "item": {
              "t": "scalar",
              "name": "f64"
            },
            "len": 3
          }
        },
        {
          "name": "offset",
          "ty": {
            "t": "scalar",
            "name": "f64"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "plain",
          "path": "math::moire::Frame"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::moire::layer",
      "name": "layer",
      "module": "math::moire",
      "defined_at": "math/moire/layer.rs:42",
      "docs": [
        "Samples a design over the pixel grid into a boolean mask.",
        "",
        "# Errors",
        "",
        "Errors below dimension two, or on a code out of range."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "params",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "plain",
              "path": "math::moire::Layer"
            }
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "vec",
          "item": {
            "t": "scalar",
            "name": "bool"
          }
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::moire::named",
      "name": "named",
      "module": "math::moire",
      "defined_at": "math/moire/presets.rs:116",
      "docs": [
        "Returns the preset the name picks.",
        "",
        "```",
        "let preset = mrlyrs::math::moire::presets::named(\"heatmap\", 9).unwrap();",
        "assert_eq!(preset.numbers, vec![1, 3, 5, 7, 9]);",
        "assert!(mrlyrs::math::moire::presets::named(\"soup\", 9).is_err());",
        "```",
        "",
        "# Errors",
        "",
        "Errors for a name that is not heatmap, weave, hive or carpet."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "name",
          "ty": {
            "t": "str"
          }
        },
        {
          "name": "limit",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "class",
          "path": "math::moire::Preset",
          "dim": null
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::moire::pairs::correlation",
      "name": "correlation",
      "module": "math::moire::pairs",
      "defined_at": "math/moire/pairs.rs:29",
      "docs": [
        "Returns the exact Pearson correlation of the flat carpet layers at two scales, area-weighted on their lcm grid.",
        "",
        "A layer at scale n is lit where the row and the column of the n by n grid are not both odd.",
        "The correlation is exactly zero when the two odd scales are coprime, and zero by convention below scale two, where a layer is constant.",
        "",
        "```",
        "assert_eq!(mrlyrs::math::moire::pairs::correlation(3, 5), 0.0);",
        "assert!(mrlyrs::math::moire::pairs::correlation(3, 9) > 0.0);",
        "```"
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "m",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "n",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "scalar",
        "name": "f64"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::moire::pairs::sampled",
      "name": "sampled",
      "module": "math::moire::pairs",
      "defined_at": "math/moire/pairs.rs:106",
      "docs": [
        "Returns the Pearson correlation of two rendered carpet layers on their lcm grid, sampled rather than integrated.",
        "",
        "# Errors",
        "",
        "Errors when either scale is zero."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "m",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "n",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "scalar",
          "name": "f64"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::moire::pairs::witness",
      "name": "witness",
      "module": "math::moire::pairs",
      "defined_at": "math/moire/pairs.rs:78",
      "docs": [
        "Puts an odd scale of three or more on trial against every earlier odd scale.",
        "",
        "```",
        "let trial = mrlyrs::math::moire::pairs::witness(9).unwrap();",
        "assert_eq!((trial.scales, trial.at, trial.prime), (vec![3, 5, 7], 3, false));",
        "```",
        "",
        "# Errors",
        "",
        "Errors for a scale that is not odd and three or more."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "scale",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "plain",
          "path": "math::moire::pairs::Witness"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::moire::render",
      "name": "render",
      "module": "math::moire",
      "defined_at": "math/moire/render.rs:10",
      "docs": [
        "Quantizes a field into colored levels and encodes PNG bytes.",
        "",
        "# Errors",
        "",
        "Errors at scale zero."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "field",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "class",
              "path": "math::moire::Field",
              "dim": null
            }
          }
        },
        {
          "name": "colorizer",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "plain",
              "path": "core::Colorizer"
            }
          }
        },
        {
          "name": "levels",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "symmetric",
          "ty": {
            "t": "scalar",
            "name": "bool"
          }
        },
        {
          "name": "invert",
          "ty": {
            "t": "scalar",
            "name": "bool"
          }
        },
        {
          "name": "scale",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "vec",
          "item": {
            "t": "scalar",
            "name": "u8"
          }
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::moire::sample::axes",
      "name": "axes",
      "module": "math::moire::sample",
      "defined_at": "math/moire/sample.rs:6",
      "docs": [
        "Returns the two lattice coordinates of each pixel centre along a row."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "size",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "lattice",
          "ty": {
            "t": "enum",
            "path": "math::moire::Lattice"
          }
        },
        {
          "name": "row",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "tuple",
        "items": [
          {
            "t": "vec",
            "item": {
              "t": "scalar",
              "name": "f64"
            }
          },
          {
            "t": "vec",
            "item": {
              "t": "scalar",
              "name": "f64"
            }
          }
        ]
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::moire::sample::membership",
      "name": "membership",
      "module": "math::moire::sample",
      "defined_at": "math/moire/sample.rs:33",
      "docs": [
        "Unpacks a code into its residue-corner truth table.",
        "",
        "# Errors",
        "",
        "Errors when the code is out of range for the dimension and base."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "code",
          "ty": {
            "t": "u128"
          }
        },
        {
          "name": "base",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "dimension",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "vec",
          "item": {
            "t": "scalar",
            "name": "bool"
          }
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::moire::sample::pack",
      "name": "pack",
      "module": "math::moire::sample",
      "defined_at": "math/moire/sample.rs:49",
      "docs": [
        "Folds residues into a base-q index of the truth table."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "residues",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "scalar",
              "name": "usize"
            }
          }
        },
        {
          "name": "base",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "scalar",
        "name": "usize"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::moire::stack",
      "name": "stack",
      "module": "math::moire",
      "defined_at": "math/moire/stack.rs:42",
      "docs": [
        "Layers one design at several side numbers into a field under the chosen combine.",
        "",
        "```",
        "use mrlyrs::math::moire::{stack, Combine, Lattice, Spec};",
        "let field = stack(Spec::new(7, 2, 2), &[3, 5], Combine::Sum, 1, Lattice::Square, 16, &[]).unwrap();",
        "assert_eq!(field.data.len(), 256);",
        "```",
        "",
        "# Errors",
        "",
        "Errors below dimension two, or on a code out of range."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "spec",
          "ty": {
            "t": "plain",
            "path": "math::moire::Spec"
          }
        },
        {
          "name": "numbers",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "scalar",
              "name": "usize"
            }
          }
        },
        {
          "name": "combine",
          "ty": {
            "t": "enum",
            "path": "math::moire::Combine"
          }
        },
        {
          "name": "level",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "lattice",
          "ty": {
            "t": "enum",
            "path": "math::moire::Lattice"
          }
        },
        {
          "name": "size",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "slices",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "scalar",
              "name": "f64"
            }
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "class",
          "path": "math::moire::Field",
          "dim": null
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::moire::stack_codes",
      "name": "stack_codes",
      "module": "math::moire",
      "defined_at": "math/moire/stack.rs:73",
      "docs": [
        "Sums layers of several designs at one side number into a field.",
        "",
        "# Errors",
        "",
        "Errors below dimension two, or on a code out of range."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "specs",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "plain",
              "path": "math::moire::Spec"
            }
          }
        },
        {
          "name": "number",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "level",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "lattice",
          "ty": {
            "t": "enum",
            "path": "math::moire::Lattice"
          }
        },
        {
          "name": "size",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "slices",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "scalar",
              "name": "f64"
            }
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "class",
          "path": "math::moire::Field",
          "dim": null
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::moire::volume",
      "name": "volume",
      "module": "math::moire",
      "defined_at": "math/moire/volume.rs:214",
      "docs": [
        "Layers one cube design at several side numbers into a volume under the chosen combine.",
        "",
        "# Errors",
        "",
        "Errors at size zero, or on a code out of range."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "spec",
          "ty": {
            "t": "plain",
            "path": "math::moire::Spec"
          }
        },
        {
          "name": "numbers",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "scalar",
              "name": "usize"
            }
          }
        },
        {
          "name": "combine",
          "ty": {
            "t": "enum",
            "path": "math::moire::Combine"
          }
        },
        {
          "name": "level",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "size",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "class",
          "path": "math::moire::Volume",
          "dim": null
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::name::Bang::cells",
      "name": "cells",
      "module": "math::name",
      "defined_at": "math/name/bang.rs:85",
      "docs": [
        "Returns the number of digits the code addresses.",
        "",
        "# Errors",
        "",
        "Errors below dimension one, below base two, or past the u128 code space."
      ],
      "owner": "math::name::Bang",
      "self_kind": "ref",
      "params": [],
      "ret": {
        "t": "result",
        "item": {
          "t": "scalar",
          "name": "u32"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::name::Bang::checked",
      "name": "checked",
      "module": "math::name",
      "defined_at": "math/name/mod.rs:35",
      "docs": [
        "Folds a decoded value to its canonical form, or an error for one outside the kind."
      ],
      "owner": "math::name::Bang",
      "self_kind": "value",
      "params": [],
      "ret": {
        "t": "result",
        "item": {
          "t": "class",
          "path": "math::name::Bang",
          "dim": null
        }
      },
      "dims": [],
      "trait": "math::name::Named",
      "source": "trait",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::name::Bang::from_file",
      "name": "from_file",
      "module": "math::name",
      "defined_at": "math/name/mod.rs:62",
      "docs": [
        "Reads a filename back into the value, or an error."
      ],
      "owner": "math::name::Bang",
      "self_kind": null,
      "params": [
        {
          "name": "text",
          "ty": {
            "t": "str"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "class",
          "path": "math::name::Bang",
          "dim": null
        }
      },
      "dims": [],
      "trait": "math::name::Named",
      "source": "trait",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::name::Bang::from_json",
      "name": "from_json",
      "module": "math::name",
      "defined_at": "math/name/mod.rs:41",
      "docs": [
        "Reads a JSON object into its canonical value, or an error naming the broken key."
      ],
      "owner": "math::name::Bang",
      "self_kind": null,
      "params": [
        {
          "name": "text",
          "ty": {
            "t": "str"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "class",
          "path": "math::name::Bang",
          "dim": null
        }
      },
      "dims": [],
      "trait": "math::name::Named",
      "source": "trait",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::name::Bang::from_url",
      "name": "from_url",
      "module": "math::name",
      "defined_at": "math/name/mod.rs:54",
      "docs": [
        "Reads a path and query string back into the value, or an error."
      ],
      "owner": "math::name::Bang",
      "self_kind": null,
      "params": [
        {
          "name": "text",
          "ty": {
            "t": "str"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "class",
          "path": "math::name::Bang",
          "dim": null
        }
      },
      "dims": [],
      "trait": "math::name::Named",
      "source": "trait",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::name::Bang::new",
      "name": "new",
      "module": "math::name",
      "defined_at": "math/name/bang.rs:70",
      "docs": [
        "Pins a code to its dimension and base on the square lattice."
      ],
      "owner": "math::name::Bang",
      "self_kind": null,
      "params": [
        {
          "name": "code",
          "ty": {
            "t": "u128"
          }
        },
        {
          "name": "dim",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "base",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "class",
        "path": "math::name::Bang",
        "dim": null
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::name::Bang::to_file",
      "name": "to_file",
      "module": "math::name",
      "defined_at": "math/name/mod.rs:58",
      "docs": [
        "Prints the kind and the `key=value` pairs joined by underscores, lists in brackets, or an error when the name does not read back."
      ],
      "owner": "math::name::Bang",
      "self_kind": "ref",
      "params": [],
      "ret": {
        "t": "result",
        "item": {
          "t": "string"
        }
      },
      "dims": [],
      "trait": "math::name::Named",
      "source": "trait",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::name::Bang::to_id",
      "name": "to_id",
      "module": "math::name",
      "defined_at": "math/name/mod.rs:46",
      "docs": [
        "Prints the first eight hex digits of the sha256 of the canonical JSON."
      ],
      "owner": "math::name::Bang",
      "self_kind": "ref",
      "params": [],
      "ret": {
        "t": "string"
      },
      "dims": [],
      "trait": "math::name::Named",
      "source": "trait",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::name::Bang::to_json",
      "name": "to_json",
      "module": "math::name",
      "defined_at": "math/name/mod.rs:37",
      "docs": [
        "Prints the canonical JSON object."
      ],
      "owner": "math::name::Bang",
      "self_kind": "ref",
      "params": [],
      "ret": {
        "t": "string"
      },
      "dims": [],
      "trait": "math::name::Named",
      "source": "trait",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::name::Bang::to_mrly",
      "name": "to_mrly",
      "module": "math::name",
      "defined_at": "math/name/mod.rs:66",
      "docs": [
        "Prints the kind and the keys as a line of prose for pages, or an error when the name does not read back."
      ],
      "owner": "math::name::Bang",
      "self_kind": "ref",
      "params": [],
      "ret": {
        "t": "result",
        "item": {
          "t": "string"
        }
      },
      "dims": [],
      "trait": "math::name::Named",
      "source": "trait",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::name::Bang::to_url",
      "name": "to_url",
      "module": "math::name",
      "defined_at": "math/name/mod.rs:50",
      "docs": [
        "Prints the kind as a path and the keys as a query string, lists comma-joined, or an error when the name does not read back."
      ],
      "owner": "math::name::Bang",
      "self_kind": "ref",
      "params": [],
      "ret": {
        "t": "result",
        "item": {
          "t": "string"
        }
      },
      "dims": [],
      "trait": "math::name::Named",
      "source": "trait",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::name::Lattice::default",
      "name": "default",
      "module": "math::name",
      "defined_at": "math/name/bang.rs:10",
      "docs": [
        "Returns the default Lattice."
      ],
      "owner": "math::name::Lattice",
      "self_kind": null,
      "params": [],
      "ret": {
        "t": "enum",
        "path": "math::name::Lattice"
      },
      "dims": [],
      "trait": null,
      "source": "default",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::name::Lattice::is_square",
      "name": "is_square",
      "module": "math::name",
      "defined_at": "math/name/bang.rs:20",
      "docs": [
        "Returns whether this is the square lattice."
      ],
      "owner": "math::name::Lattice",
      "self_kind": "ref",
      "params": [],
      "ret": {
        "t": "scalar",
        "name": "bool"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::name::Lattice::units",
      "name": "units",
      "module": "math::name",
      "defined_at": "math/name/bang.rs:24",
      "docs": [
        "Returns the number of unit directions a twist may pick from."
      ],
      "owner": "math::name::Lattice",
      "self_kind": "value",
      "params": [],
      "ret": {
        "t": "scalar",
        "name": "usize"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::name::Sequence::checked",
      "name": "checked",
      "module": "math::name",
      "defined_at": "math/name/mod.rs:35",
      "docs": [
        "Folds a decoded value to its canonical form, or an error for one outside the kind."
      ],
      "owner": "math::name::Sequence",
      "self_kind": "value",
      "params": [],
      "ret": {
        "t": "result",
        "item": {
          "t": "class",
          "path": "math::name::Sequence",
          "dim": null
        }
      },
      "dims": [],
      "trait": "math::name::Named",
      "source": "trait",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::name::Sequence::design",
      "name": "design",
      "module": "math::name",
      "defined_at": "math/name/sequence.rs:74",
      "docs": [
        "Returns the design pinned to its dimension and base."
      ],
      "owner": "math::name::Sequence",
      "self_kind": "ref",
      "params": [],
      "ret": {
        "t": "class",
        "path": "math::name::Bang",
        "dim": null
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::name::Sequence::from_file",
      "name": "from_file",
      "module": "math::name",
      "defined_at": "math/name/mod.rs:62",
      "docs": [
        "Reads a filename back into the value, or an error."
      ],
      "owner": "math::name::Sequence",
      "self_kind": null,
      "params": [
        {
          "name": "text",
          "ty": {
            "t": "str"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "class",
          "path": "math::name::Sequence",
          "dim": null
        }
      },
      "dims": [],
      "trait": "math::name::Named",
      "source": "trait",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::name::Sequence::from_json",
      "name": "from_json",
      "module": "math::name",
      "defined_at": "math/name/mod.rs:41",
      "docs": [
        "Reads a JSON object into its canonical value, or an error naming the broken key."
      ],
      "owner": "math::name::Sequence",
      "self_kind": null,
      "params": [
        {
          "name": "text",
          "ty": {
            "t": "str"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "class",
          "path": "math::name::Sequence",
          "dim": null
        }
      },
      "dims": [],
      "trait": "math::name::Named",
      "source": "trait",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::name::Sequence::from_url",
      "name": "from_url",
      "module": "math::name",
      "defined_at": "math/name/mod.rs:54",
      "docs": [
        "Reads a path and query string back into the value, or an error."
      ],
      "owner": "math::name::Sequence",
      "self_kind": null,
      "params": [
        {
          "name": "text",
          "ty": {
            "t": "str"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "class",
          "path": "math::name::Sequence",
          "dim": null
        }
      },
      "dims": [],
      "trait": "math::name::Named",
      "source": "trait",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::name::Sequence::new",
      "name": "new",
      "module": "math::name",
      "defined_at": "math/name/sequence.rs:63",
      "docs": [
        "Pins a design's reading to its measure and axis."
      ],
      "owner": "math::name::Sequence",
      "self_kind": null,
      "params": [
        {
          "name": "code",
          "ty": {
            "t": "u128"
          }
        },
        {
          "name": "dim",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "base",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "measure",
          "ty": {
            "t": "str"
          }
        },
        {
          "name": "axis",
          "ty": {
            "t": "str"
          }
        }
      ],
      "ret": {
        "t": "class",
        "path": "math::name::Sequence",
        "dim": null
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::name::Sequence::to_file",
      "name": "to_file",
      "module": "math::name",
      "defined_at": "math/name/mod.rs:58",
      "docs": [
        "Prints the kind and the `key=value` pairs joined by underscores, lists in brackets, or an error when the name does not read back."
      ],
      "owner": "math::name::Sequence",
      "self_kind": "ref",
      "params": [],
      "ret": {
        "t": "result",
        "item": {
          "t": "string"
        }
      },
      "dims": [],
      "trait": "math::name::Named",
      "source": "trait",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::name::Sequence::to_id",
      "name": "to_id",
      "module": "math::name",
      "defined_at": "math/name/mod.rs:46",
      "docs": [
        "Prints the first eight hex digits of the sha256 of the canonical JSON."
      ],
      "owner": "math::name::Sequence",
      "self_kind": "ref",
      "params": [],
      "ret": {
        "t": "string"
      },
      "dims": [],
      "trait": "math::name::Named",
      "source": "trait",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::name::Sequence::to_json",
      "name": "to_json",
      "module": "math::name",
      "defined_at": "math/name/mod.rs:37",
      "docs": [
        "Prints the canonical JSON object."
      ],
      "owner": "math::name::Sequence",
      "self_kind": "ref",
      "params": [],
      "ret": {
        "t": "string"
      },
      "dims": [],
      "trait": "math::name::Named",
      "source": "trait",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::name::Sequence::to_mrly",
      "name": "to_mrly",
      "module": "math::name",
      "defined_at": "math/name/mod.rs:66",
      "docs": [
        "Prints the kind and the keys as a line of prose for pages, or an error when the name does not read back."
      ],
      "owner": "math::name::Sequence",
      "self_kind": "ref",
      "params": [],
      "ret": {
        "t": "result",
        "item": {
          "t": "string"
        }
      },
      "dims": [],
      "trait": "math::name::Named",
      "source": "trait",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::name::Sequence::to_url",
      "name": "to_url",
      "module": "math::name",
      "defined_at": "math/name/mod.rs:50",
      "docs": [
        "Prints the kind as a path and the keys as a query string, lists comma-joined, or an error when the name does not read back."
      ],
      "owner": "math::name::Sequence",
      "self_kind": "ref",
      "params": [],
      "ret": {
        "t": "result",
        "item": {
          "t": "string"
        }
      },
      "dims": [],
      "trait": "math::name::Named",
      "source": "trait",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::name::Word::bases",
      "name": "bases",
      "module": "math::name",
      "defined_at": "math/name/word.rs:48",
      "docs": [
        "Returns the base of every letter, 2 where the name says nothing."
      ],
      "owner": "math::name::Word",
      "self_kind": "ref",
      "params": [],
      "ret": {
        "t": "vec",
        "item": {
          "t": "scalar",
          "name": "usize"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::name::Word::checked",
      "name": "checked",
      "module": "math::name",
      "defined_at": "math/name/mod.rs:35",
      "docs": [
        "Folds a decoded value to its canonical form, or an error for one outside the kind."
      ],
      "owner": "math::name::Word",
      "self_kind": "value",
      "params": [],
      "ret": {
        "t": "result",
        "item": {
          "t": "class",
          "path": "math::name::Word",
          "dim": null
        }
      },
      "dims": [],
      "trait": "math::name::Named",
      "source": "trait",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::name::Word::from_file",
      "name": "from_file",
      "module": "math::name",
      "defined_at": "math/name/mod.rs:62",
      "docs": [
        "Reads a filename back into the value, or an error."
      ],
      "owner": "math::name::Word",
      "self_kind": null,
      "params": [
        {
          "name": "text",
          "ty": {
            "t": "str"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "class",
          "path": "math::name::Word",
          "dim": null
        }
      },
      "dims": [],
      "trait": "math::name::Named",
      "source": "trait",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::name::Word::from_json",
      "name": "from_json",
      "module": "math::name",
      "defined_at": "math/name/mod.rs:41",
      "docs": [
        "Reads a JSON object into its canonical value, or an error naming the broken key."
      ],
      "owner": "math::name::Word",
      "self_kind": null,
      "params": [
        {
          "name": "text",
          "ty": {
            "t": "str"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "class",
          "path": "math::name::Word",
          "dim": null
        }
      },
      "dims": [],
      "trait": "math::name::Named",
      "source": "trait",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::name::Word::from_url",
      "name": "from_url",
      "module": "math::name",
      "defined_at": "math/name/mod.rs:54",
      "docs": [
        "Reads a path and query string back into the value, or an error."
      ],
      "owner": "math::name::Word",
      "self_kind": null,
      "params": [
        {
          "name": "text",
          "ty": {
            "t": "str"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "class",
          "path": "math::name::Word",
          "dim": null
        }
      },
      "dims": [],
      "trait": "math::name::Named",
      "source": "trait",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::name::Word::letters",
      "name": "letters",
      "module": "math::name",
      "defined_at": "math/name/word.rs:54",
      "docs": [
        "Returns every letter as a design pinned to the word's dimension and its own base."
      ],
      "owner": "math::name::Word",
      "self_kind": "ref",
      "params": [],
      "ret": {
        "t": "vec",
        "item": {
          "t": "class",
          "path": "math::name::Bang",
          "dim": null
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::name::Word::new",
      "name": "new",
      "module": "math::name",
      "defined_at": "math/name/word.rs:37",
      "docs": [
        "Pins an ordered letter list at base 2.",
        "",
        "# Errors",
        "",
        "Errors below two letters, or outside the code range."
      ],
      "owner": "math::name::Word",
      "self_kind": null,
      "params": [
        {
          "name": "dim",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "letters",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "tuple",
              "items": [
                {
                  "t": "u128"
                },
                {
                  "t": "scalar",
                  "name": "usize"
                }
              ]
            }
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "class",
          "path": "math::name::Word",
          "dim": null
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::name::Word::to_file",
      "name": "to_file",
      "module": "math::name",
      "defined_at": "math/name/mod.rs:58",
      "docs": [
        "Prints the kind and the `key=value` pairs joined by underscores, lists in brackets, or an error when the name does not read back."
      ],
      "owner": "math::name::Word",
      "self_kind": "ref",
      "params": [],
      "ret": {
        "t": "result",
        "item": {
          "t": "string"
        }
      },
      "dims": [],
      "trait": "math::name::Named",
      "source": "trait",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::name::Word::to_id",
      "name": "to_id",
      "module": "math::name",
      "defined_at": "math/name/mod.rs:46",
      "docs": [
        "Prints the first eight hex digits of the sha256 of the canonical JSON."
      ],
      "owner": "math::name::Word",
      "self_kind": "ref",
      "params": [],
      "ret": {
        "t": "string"
      },
      "dims": [],
      "trait": "math::name::Named",
      "source": "trait",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::name::Word::to_json",
      "name": "to_json",
      "module": "math::name",
      "defined_at": "math/name/mod.rs:37",
      "docs": [
        "Prints the canonical JSON object."
      ],
      "owner": "math::name::Word",
      "self_kind": "ref",
      "params": [],
      "ret": {
        "t": "string"
      },
      "dims": [],
      "trait": "math::name::Named",
      "source": "trait",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::name::Word::to_mrly",
      "name": "to_mrly",
      "module": "math::name",
      "defined_at": "math/name/mod.rs:66",
      "docs": [
        "Prints the kind and the keys as a line of prose for pages, or an error when the name does not read back."
      ],
      "owner": "math::name::Word",
      "self_kind": "ref",
      "params": [],
      "ret": {
        "t": "result",
        "item": {
          "t": "string"
        }
      },
      "dims": [],
      "trait": "math::name::Named",
      "source": "trait",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::name::Word::to_url",
      "name": "to_url",
      "module": "math::name",
      "defined_at": "math/name/mod.rs:50",
      "docs": [
        "Prints the kind as a path and the keys as a query string, lists comma-joined, or an error when the name does not read back."
      ],
      "owner": "math::name::Word",
      "self_kind": "ref",
      "params": [],
      "ret": {
        "t": "result",
        "item": {
          "t": "string"
        }
      },
      "dims": [],
      "trait": "math::name::Named",
      "source": "trait",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::press::Press::add",
      "name": "add",
      "module": "math::press",
      "defined_at": "math/press.rs:311",
      "docs": [
        "Adds a weighted number to its usage bucket."
      ],
      "owner": "math::press::Press",
      "self_kind": "mut",
      "params": [
        {
          "name": "number",
          "ty": {
            "t": "u128"
          }
        },
        {
          "name": "weight",
          "ty": {
            "t": "i128"
          }
        }
      ],
      "ret": {
        "t": "unit"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::press::Press::new",
      "name": "new",
      "module": "math::press",
      "defined_at": "math/press.rs:296",
      "docs": [
        "Builds an empty press over every design of the dimension and base.",
        "",
        "```",
        "use mrlyrs::math::bang::Code;",
        "let mut press = mrlyrs::math::press::Press::new(2, 2).unwrap();",
        "press.add(6, 1);",
        "assert_eq!((press.total(Code::from(6u64)), press.total(Code::from(1u64))), (1, 0));",
        "```",
        "",
        "# Errors",
        "",
        "Errors past twenty corners, where the bucket table would leave a million rows."
      ],
      "owner": "math::press::Press",
      "self_kind": null,
      "params": [
        {
          "name": "dimension",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "base",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "class",
          "path": "math::press::Press",
          "dim": null
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::press::Press::total",
      "name": "total",
      "module": "math::press",
      "defined_at": "math/press.rs:315",
      "docs": [
        "Returns the total weight the design at a code has collected."
      ],
      "owner": "math::press::Press",
      "self_kind": "ref",
      "params": [
        {
          "name": "code",
          "ty": {
            "t": "code"
          }
        }
      ],
      "ret": {
        "t": "i128"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::press::Press::totals",
      "name": "totals",
      "module": "math::press",
      "defined_at": "math/press.rs:326",
      "docs": [
        "Returns every design's total in code order by one subset-sum transform."
      ],
      "owner": "math::press::Press",
      "self_kind": "ref",
      "params": [],
      "ret": {
        "t": "vec",
        "item": {
          "t": "i128"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::press::containing",
      "name": "containing",
      "module": "math::press",
      "defined_at": "math/press.rs:90",
      "docs": [
        "Returns the number of designs of the dimension and base that contain the number.",
        "",
        "A design contains the number exactly when it fills every used corner, so the count",
        "is two to the free corners, and the average membership over all designs is one over",
        "two to the distinct-vector count.",
        "",
        "```",
        "assert_eq!(mrlyrs::math::press::containing(6, 2, 2).unwrap(), 4);",
        "```",
        "",
        "# Errors",
        "",
        "Errors when the dimension and base reach a hundred and twenty-eight corners."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "number",
          "ty": {
            "t": "u128"
          }
        },
        {
          "name": "dimension",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "base",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "u128"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::press::coordinates",
      "name": "coordinates",
      "module": "math::press",
      "defined_at": "math/press.rs:103",
      "docs": [
        "Splits a number into its dimension coordinates, one base digit peeled per axis in parallel.",
        "",
        "```",
        "assert_eq!(mrlyrs::math::press::coordinates(6, 2, 2).unwrap(), vec![1, 2]);",
        "```",
        "",
        "# Errors",
        "",
        "Errors when the dimension and base reach a hundred and twenty-eight corners."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "number",
          "ty": {
            "t": "u128"
          }
        },
        {
          "name": "dimension",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "base",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "vec",
          "item": {
            "t": "u128"
          }
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::press::count_below",
      "name": "count_below",
      "module": "math::press",
      "defined_at": "math/press.rs:233",
      "docs": [
        "Counts the members of a design below the limit.",
        "",
        "```",
        "use mrlyrs::math::bang::Code;",
        "assert_eq!(mrlyrs::math::press::count_below(Code::from(0b0111u64), 2, 2, 27).unwrap(), 18);",
        "```",
        "",
        "# Errors",
        "",
        "Errors when the dimension and base reach a hundred and twenty-eight corners."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "code",
          "ty": {
            "t": "code"
          }
        },
        {
          "name": "dimension",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "base",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "limit",
          "ty": {
            "t": "u128"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "u128"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::press::distinct",
      "name": "distinct",
      "module": "math::press",
      "defined_at": "math/press.rs:73",
      "docs": [
        "Returns the count of distinct digit vectors the number uses.",
        "",
        "# Errors",
        "",
        "Errors when the dimension and base reach a hundred and twenty-eight corners."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "number",
          "ty": {
            "t": "u128"
          }
        },
        {
          "name": "dimension",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "base",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "scalar",
          "name": "u32"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::press::interleave",
      "name": "interleave",
      "module": "math::press",
      "defined_at": "math/press.rs:125",
      "docs": [
        "Weaves dimension coordinates back into their single interleaved number.",
        "",
        "# Errors",
        "",
        "Errors on an empty coordinate list, past a hundred and twenty-seven corners, or when the woven number passes a u128."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "coords",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "u128"
            }
          }
        },
        {
          "name": "base",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "u128"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::press::layer_table",
      "name": "layer_table",
      "module": "math::press",
      "defined_at": "math/press.rs:351",
      "docs": [
        "Returns the allowed digit table of one magic layer, one flag per cell of its tile.",
        "",
        "A cell is allowed when its coordinate residues form a filled corner, which is the",
        "tile the layer renders read as a digit alphabet.",
        "",
        "# Errors",
        "",
        "Errors when a layer's code is out of range."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "layer",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "plain",
              "path": "math::bang::MagicLayer"
            }
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "vec",
          "item": {
            "t": "scalar",
            "name": "bool"
          }
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::press::member",
      "name": "member",
      "module": "math::press",
      "defined_at": "math/press.rs:64",
      "docs": [
        "Returns whether every digit vector of the number lies in the design.",
        "",
        "This is the scalar membership rule of the sequence press: the number's base",
        "`base` to the dimension digits, read as residue corners, must all be filled.",
        "At dimension one it is the classic restricted-digit set.",
        "",
        "```",
        "use mrlyrs::math::bang::Code;",
        "let members: Vec<u128> = (0..30).filter(|&n| mrlyrs::math::press::member(Code::from(0b0111u64), n, 2, 2).unwrap()).collect();",
        "assert_eq!(members, vec![0, 1, 2, 4, 5, 6, 8, 9, 10, 16, 17, 18, 20, 21, 22, 24, 25, 26]);",
        "```",
        "",
        "# Errors",
        "",
        "Errors when the dimension and base reach a hundred and twenty-eight corners."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "code",
          "ty": {
            "t": "code"
          }
        },
        {
          "name": "number",
          "ty": {
            "t": "u128"
          }
        },
        {
          "name": "dimension",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "base",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "scalar",
          "name": "bool"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::press::members",
      "name": "members",
      "module": "math::press",
      "defined_at": "math/press.rs:165",
      "docs": [
        "Returns the first members of a design in ascending order.",
        "",
        "Stops early where the next member would pass a hundred and twenty-eight bits.",
        "",
        "```",
        "use mrlyrs::math::bang::Code;",
        "assert_eq!(mrlyrs::math::press::members(Code::from(0b10u64), 1, 2, 5).unwrap(), vec![1, 3, 7, 15, 31]);",
        "```",
        "",
        "# Errors",
        "",
        "Errors when the dimension and base reach a hundred and twenty-eight corners."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "code",
          "ty": {
            "t": "code"
          }
        },
        {
          "name": "dimension",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "base",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "count",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "vec",
          "item": {
            "t": "u128"
          }
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::press::profile",
      "name": "profile",
      "module": "math::press",
      "defined_at": "math/press.rs:516",
      "docs": [
        "Returns the diagonal slice profile of one design pressed to a fractal level.",
        "",
        "# Errors",
        "",
        "Errors below level one, or on a code out of range."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "code",
          "ty": {
            "t": "code"
          }
        },
        {
          "name": "dimension",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "base",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "level",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "vec",
          "item": {
            "t": "u128"
          }
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::press::usage",
      "name": "usage",
      "module": "math::press",
      "defined_at": "math/press.rs:32",
      "docs": [
        "Returns the corner-usage mask of a number, one bit per digit vector its expansion uses.",
        "",
        "A number is read in base `base` to the power of the dimension, so each digit is one",
        "residue corner of the design cube, and zero uses exactly the zero corner.",
        "",
        "```",
        "assert_eq!(mrlyrs::math::press::usage(0, 2, 2).unwrap().get(), 1);",
        "assert_eq!(mrlyrs::math::press::usage(6, 2, 2).unwrap().get(), 0b0110);",
        "```",
        "",
        "# Errors",
        "",
        "Errors when the dimension and base reach a hundred and twenty-eight corners."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "number",
          "ty": {
            "t": "u128"
          }
        },
        {
          "name": "dimension",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "base",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "code"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::press::word_count",
      "name": "word_count",
      "module": "math::press",
      "defined_at": "math/press.rs:389",
      "docs": [
        "Counts the members of a magic word from its layer fills, without enumeration.",
        "",
        "# Errors",
        "",
        "Errors when a layer's code is out of range."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "layers",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "plain",
              "path": "math::bang::MagicLayer"
            }
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "u128"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::press::word_member",
      "name": "word_member",
      "module": "math::press",
      "defined_at": "math/press.rs:406",
      "docs": [
        "Returns whether the number lies in the magic word's composed design.",
        "",
        "The number is read in the word's mixed radix, one digit per layer with the first",
        "layer most significant, and every digit must land on an allowed cell of its tile.",
        "A number past the word's domain is an error.",
        "",
        "# Errors",
        "",
        "Errors on a code out of range, or a number past the word's domain."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "layers",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "plain",
              "path": "math::bang::MagicLayer"
            }
          }
        },
        {
          "name": "number",
          "ty": {
            "t": "u128"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "scalar",
          "name": "bool"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::press::word_members",
      "name": "word_members",
      "module": "math::press",
      "defined_at": "math/press.rs:429",
      "docs": [
        "Enumerates every member of the magic word in ascending order.",
        "",
        "The member count is the product of the layer fills, so measure with `word_count`",
        "before pressing a word too rich to hold.",
        "",
        "# Errors",
        "",
        "Errors when a layer's code is out of range."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "layers",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "plain",
              "path": "math::bang::MagicLayer"
            }
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "vec",
          "item": {
            "t": "u128"
          }
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::press::word_profile",
      "name": "word_profile",
      "module": "math::press",
      "defined_at": "math/press.rs:477",
      "docs": [
        "Returns the diagonal slice profile of a magic word by the substitution product.",
        "",
        "The profile of a tile lists, per coordinate sum, its filled cells, and the profile",
        "of a Kronecker word is the product of its layer profiles with strides, so no cell",
        "of the composed design is ever enumerated.",
        "",
        "# Errors",
        "",
        "Errors when a layer's code is out of range."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "layers",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "plain",
              "path": "math::bang::MagicLayer"
            }
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "vec",
          "item": {
            "t": "u128"
          }
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::roulette::Nodes::default",
      "name": "default",
      "module": "math::roulette",
      "defined_at": "math/roulette.rs:14",
      "docs": [
        "Returns the default Nodes."
      ],
      "owner": "math::roulette::Nodes",
      "self_kind": null,
      "params": [],
      "ret": {
        "t": "class",
        "path": "math::roulette::Nodes",
        "dim": null
      },
      "dims": [],
      "trait": null,
      "source": "default",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::roulette::Nodes::pair",
      "name": "pair",
      "module": "math::roulette",
      "defined_at": "math/roulette.rs:35",
      "docs": [
        "How often the curves `i` and `j` cross, either order, and zero when they are one curve."
      ],
      "owner": "math::roulette::Nodes",
      "self_kind": "ref",
      "params": [
        {
          "name": "i",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "j",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "scalar",
        "name": "usize"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::roulette::Nodes::paired",
      "name": "paired",
      "module": "math::roulette",
      "defined_at": "math/roulette.rs:49",
      "docs": [
        "Every crossing of two curves."
      ],
      "owner": "math::roulette::Nodes",
      "self_kind": "ref",
      "params": [],
      "ret": {
        "t": "scalar",
        "name": "usize"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::roulette::Nodes::selved",
      "name": "selved",
      "module": "math::roulette",
      "defined_at": "math/roulette.rs:44",
      "docs": [
        "Every self crossing."
      ],
      "owner": "math::roulette::Nodes",
      "self_kind": "ref",
      "params": [],
      "ret": {
        "t": "scalar",
        "name": "usize"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::roulette::Nodes::total",
      "name": "total",
      "module": "math::roulette",
      "defined_at": "math/roulette.rs:54",
      "docs": [
        "Every crossing, self and pair together, which counts a node where `n` branches meet `n(n - 1)/2` times; `points` is the count of distinct nodes and the two agree exactly when `crowded` is zero."
      ],
      "owner": "math::roulette::Nodes",
      "self_kind": "ref",
      "params": [],
      "ret": {
        "t": "scalar",
        "name": "usize"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::roulette::nodes",
      "name": "nodes",
      "module": "math::roulette",
      "defined_at": "math/roulette.rs:71",
      "docs": [
        "Counts the nodes of the roulette the pencils draw on the track: `mrlyrs::math::spirograph::trace` at `samples` points a pencil, every pair of polyline segments tested for a proper crossing by orientation signs on a grid of buckets, and crossings within `tol` of the picture's longer side read as one node. A pair of segments is counted in one bucket alone, the first they share, so no crossing is counted twice; the sign of an orientation is `side`, exact for any endpoints whose two differences are exact, which two `f32` endpoints are while the picture's coordinates keep their exponents within 29 of one another, as these pictures do. A seat at the wheel's centre draws one circle `b` times over and the count is meaningless there, the passes crossing one another as the sampling wanders.",
        "",
        "```",
        "use mrlyrs::math::spirograph::{pencils, track};",
        "let seats = pencils(&[1, 0, 0, 1], 2, 2, \"fill\", 0.5, 0.0, 1).unwrap();",
        "let path = track(\"in\", 3, 1, 4, 1).unwrap();",
        "assert_eq!(mrlyrs::math::roulette::nodes(&path, &seats, 600, 4e-4).unwrap().total(), 6);",
        "```",
        "",
        "# Errors",
        "",
        "Errors on an empty pencil list, under three samples, a tolerance outside zero to one, or a trace with no extent."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "track",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "plain",
              "path": "math::spirograph::Track"
            }
          }
        },
        {
          "name": "pencils",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "plain",
              "path": "math::spirograph::Pencil"
            }
          }
        },
        {
          "name": "samples",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "tol",
          "ty": {
            "t": "scalar",
            "name": "f64"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "class",
          "path": "math::roulette::Nodes",
          "dim": null
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::roulette::side",
      "name": "side",
      "module": "math::roulette",
      "defined_at": "math/roulette.rs:228",
      "docs": [
        "Which side of the line from `a` to `b` the point `c` lies: plus one to the left, minus one to the right, zero on it. The sign is exact whenever the two differences `b - a` and `c - a` are exact, whatever the size of the products: the determinant is taken by the fused multiply-add identity of Kahan, whose error is at most twice the rounding unit times the determinant itself, so it can neither flip a sign nor invent one."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "a",
          "ty": {
            "t": "array",
            "item": {
              "t": "scalar",
              "name": "f64"
            },
            "len": 2
          }
        },
        {
          "name": "b",
          "ty": {
            "t": "array",
            "item": {
              "t": "scalar",
              "name": "f64"
            },
            "len": 2
          }
        },
        {
          "name": "c",
          "ty": {
            "t": "array",
            "item": {
              "t": "scalar",
              "name": "f64"
            },
            "len": 2
          }
        }
      ],
      "ret": {
        "t": "scalar",
        "name": "i32"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::roulette::spread",
      "name": "spread",
      "module": "math::roulette",
      "defined_at": "math/roulette.rs:170",
      "docs": [
        "One pencil for every distinct curve, the coincidence law read on the exact seats when `exact` says the seats carry no jitter: the first pencil of each family, in the order they came in. On a circle the seats fall into classes under the rotation group of order `gcd(b, 4)`, which is the clause `mrlyrs::math::spirograph::distinct` and `mrlyrs::math::spirograph::representatives` read; on a line and on a polygon every distinct seat draws its own curve, two seats of one radius on a line drawing translates of one shape and never one curve."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "track",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "plain",
              "path": "math::spirograph::Track"
            }
          }
        },
        {
          "name": "pencils",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "plain",
              "path": "math::spirograph::Pencil"
            }
          }
        },
        {
          "name": "exact",
          "ty": {
            "t": "scalar",
            "name": "bool"
          }
        }
      ],
      "ret": {
        "t": "vec",
        "item": {
          "t": "plain",
          "path": "math::spirograph::Pencil"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::rules::render",
      "name": "render",
      "module": "math::rules",
      "defined_at": "math/rules.rs:19",
      "docs": [
        "Builds a hypercube of the given side and rank, marking each cell whose coordinate residues are in the filled list.",
        "",
        "```",
        "let carpet: Vec<Vec<u8>> = vec![vec![0, 0], vec![0, 1], vec![1, 0]];",
        "let t = mrlyrs::math::rules::render(&carpet, 3, 2, 2).unwrap();",
        "assert_eq!(t.bytes().unwrap(), vec![1, 1, 1, 1, 0, 1, 1, 1, 1]);",
        "```",
        "",
        "# Errors",
        "",
        "Errors when the number, the dimension or the base is below one."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "filled",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "vec",
              "item": {
                "t": "scalar",
                "name": "u8"
              }
            }
          }
        },
        {
          "name": "number",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "dimension",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "base",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "hand",
          "name": "Tensor",
          "dim": null
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::rules::tree_axes",
      "name": "tree_axes",
      "module": "math::rules",
      "defined_at": "math/rules.rs:44",
      "docs": [
        "Returns every axis but the free one."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "dimension",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "free_axis",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "vec",
        "item": {
          "t": "scalar",
          "name": "usize"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::shape::Frac::minus",
      "name": "minus",
      "module": "math::shape",
      "defined_at": "math/shape.rs:59",
      "docs": [
        "Returns the exact difference.",
        "",
        "# Errors",
        "",
        "Errors when the reduced result passes an i64."
      ],
      "owner": "math::shape::Frac",
      "self_kind": "value",
      "params": [
        {
          "name": "other",
          "ty": {
            "t": "class",
            "path": "math::shape::Frac",
            "dim": null
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "class",
          "path": "math::shape::Frac",
          "dim": null
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::shape::Frac::new",
      "name": "new",
      "module": "math::shape",
      "defined_at": "math/shape.rs:36",
      "docs": [
        "Builds the reduced fraction num over den.",
        "",
        "# Errors",
        "",
        "Errors on a zero denominator."
      ],
      "owner": "math::shape::Frac",
      "self_kind": null,
      "params": [
        {
          "name": "num",
          "ty": {
            "t": "scalar",
            "name": "i64"
          }
        },
        {
          "name": "den",
          "ty": {
            "t": "scalar",
            "name": "i64"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "class",
          "path": "math::shape::Frac",
          "dim": null
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::shape::Frac::plus",
      "name": "plus",
      "module": "math::shape",
      "defined_at": "math/shape.rs:48",
      "docs": [
        "Returns the exact sum.",
        "",
        "# Errors",
        "",
        "Errors when the reduced result passes an i64."
      ],
      "owner": "math::shape::Frac",
      "self_kind": "value",
      "params": [
        {
          "name": "other",
          "ty": {
            "t": "class",
            "path": "math::shape::Frac",
            "dim": null
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "class",
          "path": "math::shape::Frac",
          "dim": null
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::shape::Frac::times",
      "name": "times",
      "module": "math::shape",
      "defined_at": "math/shape.rs:70",
      "docs": [
        "Returns the exact product.",
        "",
        "# Errors",
        "",
        "Errors when the reduced result passes an i64."
      ],
      "owner": "math::shape::Frac",
      "self_kind": "value",
      "params": [
        {
          "name": "other",
          "ty": {
            "t": "class",
            "path": "math::shape::Frac",
            "dim": null
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "class",
          "path": "math::shape::Frac",
          "dim": null
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::shape::Frac::whole",
      "name": "whole",
      "module": "math::shape",
      "defined_at": "math/shape.rs:40",
      "docs": [
        "Wraps an integer as a fraction over one."
      ],
      "owner": "math::shape::Frac",
      "self_kind": null,
      "params": [
        {
          "name": "num",
          "ty": {
            "t": "scalar",
            "name": "i64"
          }
        }
      ],
      "ret": {
        "t": "class",
        "path": "math::shape::Frac",
        "dim": null
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::shape::Region::flip",
      "name": "flip",
      "module": "math::shape",
      "defined_at": "math/shape.rs:130",
      "docs": [
        "Swaps In and Out, keeping Cut."
      ],
      "owner": "math::shape::Region",
      "self_kind": "value",
      "params": [],
      "ret": {
        "t": "enum",
        "path": "math::shape::Region"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::shape::census",
      "name": "census",
      "module": "math::shape",
      "defined_at": "math/shape.rs:484",
      "docs": [
        "Tallies the design's cells and filled cells per region of the shape.",
        "",
        "# Errors",
        "",
        "Errors when the shape's exact scale passes an i64."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "shape",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "plain",
              "path": "math::shape::Shape"
            }
          }
        },
        {
          "name": "types",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "hand",
              "name": "Tensor",
              "dim": null
            }
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "plain",
          "path": "math::shape::ShapeCensus"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::shape::classify",
      "name": "classify",
      "module": "math::shape",
      "defined_at": "math/shape.rs:207",
      "docs": [
        "Places one lattice cell relative to the shape, exactly, with no floats.",
        "",
        "The cell at the index occupies the closed box from the index to the index plus one on each axis, and the shape's unit-box coordinates are scaled by the side.",
        "",
        "A polytope is judged wall by wall: Out means some wall excludes the cell, In means every wall contains it, and Cut means neither - so a cell that touches each wall's feasible side separately reads Cut even when the wall intersection misses it, a conservative call that never mislabels In or Out.",
        "",
        "# Errors",
        "",
        "Errors when the shape's exact scale passes an i64."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "shape",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "plain",
              "path": "math::shape::Shape"
            }
          }
        },
        {
          "name": "side",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "index",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "scalar",
              "name": "usize"
            }
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "enum",
          "path": "math::shape::Region"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::shape::crop",
      "name": "crop",
      "module": "math::shape",
      "defined_at": "math/shape.rs:387",
      "docs": [
        "Zeroes every cell of the design outside the shape, keeping Cut cells on request; anti-crop is Shape::Anti.",
        "",
        "```",
        "use mrlyrs::math::shape::{crop, named, Frac};",
        "let solid = mrlyrs::math::atoms::ones_2d(9);",
        "let disc = named(\"ball\", 2, Frac::new(1, 2).unwrap()).unwrap();",
        "assert_eq!(crop(&solid, &disc, true).unwrap().sum(), 77);",
        "```",
        "",
        "# Errors",
        "",
        "Errors when the shape's exact scale passes an i64."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "types",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "hand",
              "name": "Tensor",
              "dim": null
            }
          }
        },
        {
          "name": "shape",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "plain",
              "path": "math::shape::Shape"
            }
          }
        },
        {
          "name": "keep_cut",
          "ty": {
            "t": "scalar",
            "name": "bool"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "hand",
          "name": "Tensor",
          "dim": null
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::shape::crossing_shell",
      "name": "crossing_shell",
      "module": "math::shape",
      "defined_at": "math/shape.rs:614",
      "docs": [
        "Lists the level-`level` boxes the circle of radius `radius` crosses, in the arc's own order.",
        "",
        "A box `X` of side `number^level` is crossed when its near corner lies in the closed disc and its far corner outside it, `|X| <= radius / number^level < |X + 1|`, so the level is the whole grid's crossing shell read at that real radius. The columns telescope, the low row of one column being the high row of the next, so the walk is one pass over `floor(radius / number^level) + 1` columns and every comparison is on integers. The order runs along the arc, the first coordinate rising while the second falls, which is why a parent's children are contiguous among its own."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "radius",
          "ty": {
            "t": "scalar",
            "name": "u64"
          }
        },
        {
          "name": "number",
          "ty": {
            "t": "scalar",
            "name": "u64"
          }
        },
        {
          "name": "level",
          "ty": {
            "t": "scalar",
            "name": "u32"
          }
        }
      ],
      "ret": {
        "t": "vec",
        "item": {
          "t": "tuple",
          "items": [
            {
              "t": "scalar",
              "name": "u64"
            },
            {
              "t": "scalar",
              "name": "u64"
            }
          ]
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::shape::crossing_tree",
      "name": "crossing_tree",
      "module": "math::shape",
      "defined_at": "math/shape.rs:643",
      "docs": [
        "Builds the whole crossing tree of one radius, pruned by the seats the design keeps.",
        "",
        "The depth is the least level whose grid holds the circle inside one box, so the tree is rooted there and its leaves are the `2 * radius + 1` crossed cells. `keep` reads the design's level-one tile row-major, one flag per seat, and a box is live when every seat from the root down to it is kept, so the live leaves are exactly the crossed cells the design fills."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "radius",
          "ty": {
            "t": "scalar",
            "name": "u64"
          }
        },
        {
          "name": "number",
          "ty": {
            "t": "scalar",
            "name": "u64"
          }
        },
        {
          "name": "keep",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "scalar",
              "name": "bool"
            }
          }
        }
      ],
      "ret": {
        "t": "plain",
        "path": "math::shape::Shell"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::shape::named",
      "name": "named",
      "module": "math::shape",
      "defined_at": "math/shape.rs:353",
      "docs": [
        "Builds a named shape of the dimension, centered at one half on every axis.",
        "",
        "Regular hexagons and equilateral triangles have irrational walls in the grid frame, so they are excluded on purpose rather than approximated.",
        "",
        "# Errors",
        "",
        "Errors for an unknown name, or one whose walls are irrational on the grid."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "name",
          "ty": {
            "t": "str"
          }
        },
        {
          "name": "dimension",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "radius",
          "ty": {
            "t": "class",
            "path": "math::shape::Frac",
            "dim": null
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "plain",
          "path": "math::shape::Shape"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::shape::radial_census",
      "name": "radial_census",
      "module": "math::shape",
      "defined_at": "math/shape.rs:536",
      "docs": [
        "Counts a design's filled cells against every integer radius about one centre, in exact integer arithmetic.",
        "",
        "Cell centres sit at the index plus one half, so every length is doubled and the centre is given in those doubled units: the lattice corner is zero on each axis and the grid centre is the side. Entry r of the result holds the filled cells whose centre lies within radius r, the filled cells whose whole cell lies within it, and the filled cells the sphere of radius r crosses; squared distances are compared as integers and never as floats.",
        "",
        "The tallies are prefix sums over one pass of the grid: each cell lands in the smallest radius that sees it, the smallest that swallows it and the smallest that clears it, and the columns are summed afterwards."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "types",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "hand",
              "name": "Tensor",
              "dim": null
            }
          }
        },
        {
          "name": "centre",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "scalar",
              "name": "i64"
            }
          }
        },
        {
          "name": "r_max",
          "ty": {
            "t": "scalar",
            "name": "u64"
          }
        }
      ],
      "ret": {
        "t": "vec",
        "item": {
          "t": "plain",
          "path": "math::shape::RadialCounts"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::shape::refine",
      "name": "refine",
      "module": "math::shape",
      "defined_at": "math/shape.rs:408",
      "docs": [
        "Replicates each design cell base to the extra per axis and keeps a sub-cell only where its own region passes.",
        "",
        "# Errors",
        "",
        "Errors below base one, or past the cell ceiling."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "types",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "hand",
              "name": "Tensor",
              "dim": null
            }
          }
        },
        {
          "name": "shape",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "plain",
              "path": "math::shape::Shape"
            }
          }
        },
        {
          "name": "base",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "extra",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "keep_cut",
          "ty": {
            "t": "scalar",
            "name": "bool"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "hand",
          "name": "Tensor",
          "dim": null
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::shape::regions",
      "name": "regions",
      "module": "math::shape",
      "defined_at": "math/shape.rs:230",
      "docs": [
        "Classifies every cell of the grid, packing Out, Cut and In as 0, 1 and 2; the first extent sets the lattice side.",
        "",
        "# Errors",
        "",
        "Errors when the shape's exact scale passes an i64."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "shape",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "plain",
              "path": "math::shape::Shape"
            }
          }
        },
        {
          "name": "dims",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "scalar",
              "name": "usize"
            }
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "hand",
          "name": "Tensor",
          "dim": null
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::shape::shapes",
      "name": "shapes",
      "module": "math::shape",
      "defined_at": "math/shape.rs:249",
      "docs": [
        "Lists the named shapes of a dimension."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "dimension",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "vec",
        "item": {
          "t": "string"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::six::anti",
      "name": "anti",
      "module": "math::six",
      "defined_at": "math/six/models.rs:44",
      "docs": [
        "Swaps every fill triangle for a void and back."
      ],
      "owner": "math::six::Cell6d",
      "self_kind": "value",
      "params": [],
      "ret": {
        "t": "hand",
        "name": "Cell6d",
        "dim": null
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::six::binarize",
      "name": "binarize",
      "module": "math::six",
      "defined_at": "math/six/models.rs:57",
      "docs": [
        "Maps each triangle to one at or above the threshold, zero below."
      ],
      "owner": "math::six::Cell6d",
      "self_kind": "value",
      "params": [
        {
          "name": "threshold",
          "ty": {
            "t": "scalar",
            "name": "u8"
          }
        }
      ],
      "ret": {
        "t": "hand",
        "name": "Cell6d",
        "dim": null
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::six::binarize_otsu",
      "name": "binarize_otsu",
      "module": "math::six",
      "defined_at": "math/six/models.rs:64",
      "docs": [
        "Binarizes the triangles at the threshold Otsu's method picks."
      ],
      "owner": "math::six::Cell6d",
      "self_kind": "value",
      "params": [],
      "ret": {
        "t": "hand",
        "name": "Cell6d",
        "dim": null
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::six::blank",
      "name": "blank",
      "module": "math::six",
      "defined_at": "math/six/geometry.rs:86",
      "docs": [
        "Builds a hexagon of the given radius, fill inside and void outside.",
        "",
        "```",
        "use mrlyrs::math::six::{blank, Orientation};",
        "let hex = blank(2, Orientation::Horizontal, 1, 0).unwrap();",
        "assert_eq!(hex.types().shape, vec![4, 7]);",
        "```",
        "",
        "# Errors",
        "",
        "Errors below radius one."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "radius",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "orient",
          "ty": {
            "t": "enum",
            "path": "math::six::Orientation"
          }
        },
        {
          "name": "fill",
          "ty": {
            "t": "scalar",
            "name": "u8"
          }
        },
        {
          "name": "void",
          "ty": {
            "t": "scalar",
            "name": "u8"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "hand",
          "name": "CellNd",
          "dim": 2
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::six::blur",
      "name": "blur",
      "module": "math::six",
      "defined_at": "math/six/models.rs:75",
      "docs": [
        "Rounds each triangle to the mean of its masked neighborhood, wrapping on request.",
        "",
        "# Errors",
        "",
        "Errors when the mask does not match the cell's rank."
      ],
      "owner": "math::six::Cell6d",
      "self_kind": "value",
      "params": [
        {
          "name": "mask",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "hand",
              "name": "Tensor",
              "dim": null
            }
          }
        },
        {
          "name": "wrap",
          "ty": {
            "t": "scalar",
            "name": "bool"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "hand",
          "name": "Cell6d",
          "dim": null
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::six::census",
      "name": "census",
      "module": "math::six",
      "defined_at": "math/six/census.rs:89",
      "docs": [
        "Tallies a cell's triangles, corners and edges, counting the backdrop only on request."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "cell",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "hand",
              "name": "Cell6d",
              "dim": null
            }
          }
        },
        {
          "name": "include_grid",
          "ty": {
            "t": "scalar",
            "name": "bool"
          }
        }
      ],
      "ret": {
        "t": "plain",
        "path": "math::six::Census"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::six::components",
      "name": "components",
      "module": "math::six",
      "defined_at": "math/six/topology.rs:50",
      "docs": [
        "Counts the connected pieces of the fill, triangles joined across shared edges.",
        "",
        "```",
        "let slice = mrlyrs::math::six::cut(&mrlyrs::math::three::carpet(5, 1).unwrap()).unwrap();",
        "assert_eq!(mrlyrs::math::six::topology::components(&slice).unwrap(), 7);",
        "```",
        "",
        "# Errors",
        "",
        "Errors when a triangle index falls outside the sheet."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "cell",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "hand",
              "name": "Cell6d",
              "dim": null
            }
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "scalar",
          "name": "usize"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::six::cut",
      "name": "cut",
      "module": "math::six",
      "defined_at": "math/six/geometry.rs:291",
      "docs": [
        "Slices a cube through its center across the main diagonal into a hexagon.",
        "",
        "# Errors",
        "",
        "Errors for a cell that is not a cube."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "cell",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "hand",
              "name": "CellNd",
              "dim": 3
            }
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "hand",
          "name": "Cell6d",
          "dim": null
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::six::cut_design",
      "name": "cut_design",
      "module": "math::six",
      "defined_at": "math/six/designs.rs:30",
      "docs": [
        "Builds the coded 3d design and slices its central hexagon.",
        "",
        "# Errors",
        "",
        "Errors when the code is out of range, or the level is below one."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "code",
          "ty": {
            "t": "code"
          }
        },
        {
          "name": "number",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "level",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "base",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "hand",
          "name": "Cell6d",
          "dim": null
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::six::east",
      "name": "east",
      "module": "math::six",
      "defined_at": "math/six/renderer.rs:30",
      "docs": [
        "The three corners of the east-pointing triangle at the grid column and row."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "x",
          "ty": {
            "t": "scalar",
            "name": "i64"
          }
        },
        {
          "name": "y",
          "ty": {
            "t": "scalar",
            "name": "i64"
          }
        }
      ],
      "ret": {
        "t": "array",
        "item": {
          "t": "tuple",
          "items": [
            {
              "t": "scalar",
              "name": "i64"
            },
            {
              "t": "scalar",
              "name": "i64"
            }
          ]
        },
        "len": 3
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::six::euler",
      "name": "euler",
      "module": "math::six",
      "defined_at": "math/six/census.rs:127",
      "docs": [
        "Returns the Euler characteristic of the cell's mesh, counting the backdrop only on request."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "cell",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "hand",
              "name": "Cell6d",
              "dim": null
            }
          }
        },
        {
          "name": "include_grid",
          "ty": {
            "t": "scalar",
            "name": "bool"
          }
        }
      ],
      "ret": {
        "t": "scalar",
        "name": "i64"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::six::fills",
      "name": "fills",
      "module": "math::six",
      "defined_at": "math/six/census.rs:122",
      "docs": [
        "Counts the filled triangles of the cell.",
        "",
        "```",
        "use mrlyrs::math::six::{blank, Cell6d, Orientation, Projection, FILL, VOID};",
        "let hex = blank(2, Orientation::Horizontal, FILL, VOID).unwrap();",
        "let cell = Cell6d::new(hex, Projection::Cut, Orientation::Horizontal, 0);",
        "assert_eq!(mrlyrs::math::six::census::fills(&cell), 24);",
        "```"
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "cell",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "hand",
              "name": "Cell6d",
              "dim": null
            }
          }
        }
      ],
      "ret": {
        "t": "scalar",
        "name": "usize"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::six::fills_only",
      "name": "fills_only",
      "module": "math::six",
      "defined_at": "math/six/census.rs:132",
      "docs": [
        "Tallies only the filled triangles, leaving the voids and the backdrop out of the mesh."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "cell",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "hand",
              "name": "Cell6d",
              "dim": null
            }
          }
        }
      ],
      "ret": {
        "t": "plain",
        "path": "math::six::Census"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::six::framed",
      "name": "framed",
      "module": "math::six",
      "defined_at": "math/six/geometry.rs:485",
      "docs": [
        "Backs a cell onto a backdrop whose longer axis matches its orientation, leaving every triangle where it stood.",
        "",
        "A renderer reads a sheet's orientation off its frame, so a tall sheet of wide hexagons would draw every triangle on its side; the spare columns or rows are backdrop and reach neither the census nor the picture.",
        "",
        "# Errors",
        "",
        "Errors when the backdrop does not take the cell's triangles."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "cell",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "hand",
              "name": "Cell6d",
              "dim": null
            }
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "hand",
          "name": "Cell6d",
          "dim": null
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::six::from_json",
      "name": "from_json",
      "module": "math::six",
      "defined_at": "math/six/serializer.rs:37",
      "docs": [
        "Parses a cell from JSON, defaulting any missing projection metadata.",
        "",
        "# Errors",
        "",
        "Errors when the text is not a hex cell."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "text",
          "ty": {
            "t": "str"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "hand",
          "name": "Cell6d",
          "dim": null
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::six::giant",
      "name": "giant",
      "module": "math::six",
      "defined_at": "math/six/topology.rs:59",
      "docs": [
        "Returns the triangle count of the fill's largest connected piece.",
        "",
        "# Errors",
        "",
        "Errors when a triangle index falls outside the sheet."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "cell",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "hand",
              "name": "Cell6d",
              "dim": null
            }
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "scalar",
          "name": "usize"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::six::giant_network",
      "name": "giant_network",
      "module": "math::six",
      "defined_at": "math/six/topology.rs:71",
      "docs": [
        "Returns the largest connected piece of the filled-triangle network as a network of its own.",
        "",
        "# Errors",
        "",
        "Errors when a triangle index falls outside the sheet."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "cell",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "hand",
              "name": "Cell6d",
              "dim": null
            }
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "class",
          "path": "math::graph::Network",
          "dim": null
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::six::height",
      "name": "height",
      "module": "math::six",
      "defined_at": "math/six/models.rs:40",
      "docs": [
        "Returns the grid height in triangles."
      ],
      "owner": "math::six::Cell6d",
      "self_kind": "ref",
      "params": [],
      "ret": {
        "t": "scalar",
        "name": "usize"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::six::holes",
      "name": "holes",
      "module": "math::six",
      "defined_at": "math/six/topology.rs:98",
      "docs": [
        "Counts the holes of the fill, its piece count less the Euler number of the filled sub-mesh.",
        "",
        "```",
        "let slice = mrlyrs::math::six::cut(&mrlyrs::math::three::carpet(3, 1).unwrap()).unwrap();",
        "assert_eq!(mrlyrs::math::six::topology::holes(&slice).unwrap(), 1);",
        "```",
        "",
        "# Errors",
        "",
        "Errors when a triangle index falls outside the sheet."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "cell",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "hand",
              "name": "Cell6d",
              "dim": null
            }
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "scalar",
          "name": "usize"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::six::is_cube",
      "name": "is_cube",
      "module": "math::six",
      "defined_at": "math/six/geometry.rs:36",
      "docs": [
        "Returns whether the cell's three sides are equal."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "cell",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "hand",
              "name": "CellNd",
              "dim": 3
            }
          }
        }
      ],
      "ret": {
        "t": "scalar",
        "name": "bool"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::six::is_hex",
      "name": "is_hex",
      "module": "math::six",
      "defined_at": "math/six/geometry.rs:42",
      "docs": [
        "Returns whether the cell's width, height and parity frame a hexagon."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "cell",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "hand",
              "name": "CellNd",
              "dim": 2
            }
          }
        }
      ],
      "ret": {
        "t": "scalar",
        "name": "bool"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::six::iso",
      "name": "iso",
      "module": "math::six",
      "defined_at": "math/six/geometry.rs:183",
      "docs": [
        "Projects a cube into the isometric hexagon of top, left and right faces.",
        "",
        "# Errors",
        "",
        "Errors for a cell that is not a cube."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "cell",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "hand",
              "name": "CellNd",
              "dim": 3
            }
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "hand",
          "name": "Cell6d",
          "dim": null
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::six::iso_design",
      "name": "iso_design",
      "module": "math::six",
      "defined_at": "math/six/designs.rs:12",
      "docs": [
        "Builds the coded 3d design and projects it isometrically.",
        "",
        "# Errors",
        "",
        "Errors when the code is out of range, or the level is below one."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "code",
          "ty": {
            "t": "code"
          }
        },
        {
          "name": "number",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "level",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "base",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "hand",
          "name": "Cell6d",
          "dim": null
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::six::new",
      "name": "new",
      "module": "math::six",
      "defined_at": "math/six/models.rs:22",
      "docs": [
        "Builds a cell from its four parts."
      ],
      "owner": "math::six::Cell6d",
      "self_kind": null,
      "params": [
        {
          "name": "cell",
          "ty": {
            "t": "hand",
            "name": "CellNd",
            "dim": 2
          }
        },
        {
          "name": "projection",
          "ty": {
            "t": "enum",
            "path": "math::six::Projection"
          }
        },
        {
          "name": "orientation",
          "ty": {
            "t": "enum",
            "path": "math::six::Orientation"
          }
        },
        {
          "name": "start",
          "ty": {
            "t": "scalar",
            "name": "u8"
          }
        }
      ],
      "ret": {
        "t": "hand",
        "name": "Cell6d",
        "dim": null
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::six::north",
      "name": "north",
      "module": "math::six",
      "defined_at": "math/six/renderer.rs:20",
      "docs": [
        "The three corners of the north-pointing triangle at the grid column and row."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "x",
          "ty": {
            "t": "scalar",
            "name": "i64"
          }
        },
        {
          "name": "y",
          "ty": {
            "t": "scalar",
            "name": "i64"
          }
        }
      ],
      "ret": {
        "t": "array",
        "item": {
          "t": "tuple",
          "items": [
            {
              "t": "scalar",
              "name": "i64"
            },
            {
              "t": "scalar",
              "name": "i64"
            }
          ]
        },
        "len": 3
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::six::orientation",
      "name": "orientation",
      "module": "math::six",
      "defined_at": "math/six/geometry.rs:65",
      "docs": [
        "Returns the orientation a hexagon's width and height imply.",
        "",
        "# Errors",
        "",
        "Errors when the width and the height are equal."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "width",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "height",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "enum",
          "path": "math::six::Orientation"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::six::pad",
      "name": "pad",
      "module": "math::six",
      "defined_at": "math/six/geometry.rs:133",
      "docs": [
        "Wraps a hexagonal cell in k rings of the given value, carrying colors and tags along.",
        "",
        "# Errors",
        "",
        "Errors for a cell that is not a hexagon."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "cell",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "hand",
              "name": "Cell6d",
              "dim": null
            }
          }
        },
        {
          "name": "k",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "value",
          "ty": {
            "t": "scalar",
            "name": "u8"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "hand",
          "name": "Cell6d",
          "dim": null
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::six::paint",
      "name": "paint",
      "module": "math::six",
      "defined_at": "math/six/painter.rs:14",
      "docs": [
        "Colors each triangle by its type through the custom or default mapping in the given or type mode.",
        "",
        "# Errors",
        "",
        "Errors when the Random mode arrives without a stream to draw from."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "cell",
          "ty": {
            "t": "hand",
            "name": "Cell6d",
            "dim": null
          }
        },
        {
          "name": "custom",
          "ty": {
            "t": "option",
            "item": {
              "t": "ref",
              "mutable": false,
              "lifetime": null,
              "item": {
                "t": "map",
                "key": {
                  "t": "scalar",
                  "name": "u8"
                },
                "value": {
                  "t": "vec",
                  "item": {
                    "t": "hand",
                    "name": "Color",
                    "dim": null
                  }
                }
              }
            }
          }
        },
        {
          "name": "mode",
          "ty": {
            "t": "option",
            "item": {
              "t": "enum",
              "path": "core::Mode"
            }
          }
        },
        {
          "name": "rng",
          "ty": {
            "t": "option",
            "item": {
              "t": "ref",
              "mutable": true,
              "lifetime": null,
              "item": {
                "t": "hand",
                "name": "Rng",
                "dim": null
              }
            }
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "hand",
          "name": "Cell6d",
          "dim": null
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::six::perforate",
      "name": "perforate",
      "module": "math::six",
      "defined_at": "math/six/models.rs:86",
      "docs": [
        "Writes the value wherever the tiled mask is nonzero.",
        "",
        "# Errors",
        "",
        "Errors when the mask does not tile the cell."
      ],
      "owner": "math::six::Cell6d",
      "self_kind": "value",
      "params": [
        {
          "name": "mask",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "hand",
              "name": "Tensor",
              "dim": null
            }
          }
        },
        {
          "name": "value",
          "ty": {
            "t": "scalar",
            "name": "u8"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "hand",
          "name": "Cell6d",
          "dim": null
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::six::png",
      "name": "png",
      "module": "math::six",
      "defined_at": "math/six/renderer.rs:484",
      "docs": [
        "Rasters a cell's triangles to PNG bytes at the given scale, stroked and padded when an outline is given.",
        "",
        "# Errors",
        "",
        "Errors when nothing renders, when the scale is zero or when the encoder refuses the size."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "cell",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "hand",
              "name": "Cell6d",
              "dim": null
            }
          }
        },
        {
          "name": "scale",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "outline",
          "ty": {
            "t": "option",
            "item": {
              "t": "hand",
              "name": "Color",
              "dim": null
            }
          }
        },
        {
          "name": "width",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "vec",
          "item": {
            "t": "scalar",
            "name": "u8"
          }
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::six::pro",
      "name": "pro",
      "module": "math::six",
      "defined_at": "math/six/geometry.rs:225",
      "docs": [
        "Projects a cube's three facing sides into a hexagon of fills and voids.",
        "",
        "# Errors",
        "",
        "Errors for a cell that is not a cube."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "cell",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "hand",
              "name": "CellNd",
              "dim": 3
            }
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "hand",
          "name": "Cell6d",
          "dim": null
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::six::pro_design",
      "name": "pro_design",
      "module": "math::six",
      "defined_at": "math/six/designs.rs:21",
      "docs": [
        "Builds the coded 3d design and projects its facing sides.",
        "",
        "# Errors",
        "",
        "Errors when the code is out of range, or the level is below one."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "code",
          "ty": {
            "t": "code"
          }
        },
        {
          "name": "number",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "level",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "base",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "hand",
          "name": "Cell6d",
          "dim": null
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::six::radial",
      "name": "radial",
      "module": "math::six",
      "defined_at": "math/six/geometry.rs:559",
      "docs": [
        "Tessellates a hexagonal cell over the disc mask of the given radius.",
        "",
        "# Errors",
        "",
        "Errors for a cell that is not a hexagon."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "cell",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "hand",
              "name": "Cell6d",
              "dim": null
            }
          }
        },
        {
          "name": "radius",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "hand",
          "name": "CellNd",
          "dim": 2
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::six::radial_crop",
      "name": "radial_crop",
      "module": "math::six",
      "defined_at": "math/six/geometry.rs:573",
      "docs": [
        "Crops the interlocking overhang off a disc tiled at the given radius and tile size.",
        "",
        "# Errors",
        "",
        "Errors when the width and the height are equal."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "cell",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "hand",
              "name": "CellNd",
              "dim": 2
            }
          }
        },
        {
          "name": "radius",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "size",
          "ty": {
            "t": "tuple",
            "items": [
              {
                "t": "scalar",
                "name": "usize"
              },
              {
                "t": "scalar",
                "name": "usize"
              }
            ]
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "hand",
          "name": "CellNd",
          "dim": 2
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::six::radial_mask",
      "name": "radial_mask",
      "module": "math::six",
      "defined_at": "math/six/geometry.rs:521",
      "docs": [
        "Builds the disc mask of cells within hex distance radius of the center."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "radius",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "orient",
          "ty": {
            "t": "enum",
            "path": "math::six::Orientation"
          }
        }
      ],
      "ret": {
        "t": "hand",
        "name": "Tensor",
        "dim": null
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::six::raster",
      "name": "raster",
      "module": "math::six",
      "defined_at": "math/six/raster.rs:13",
      "docs": [
        "Rasterizes a hex cell's fills on a square of the side at the true hex aspect, one for a fill triangle and zero elsewhere.",
        "",
        "# Errors",
        "",
        "Errors at size zero, for a cell that is not a hexagon, or when nothing is filled."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "cell",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "hand",
              "name": "Cell6d",
              "dim": null
            }
          }
        },
        {
          "name": "size",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "vec",
          "item": {
            "t": "scalar",
            "name": "f32"
          }
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::six::rect_png",
      "name": "rect_png",
      "module": "math::six",
      "defined_at": "math/six/renderer.rs:495",
      "docs": [
        "Rasters the hexagon tiled three by three and cropped to one interlocking rectangle to PNG bytes.",
        "",
        "# Errors",
        "",
        "Errors for a cell that is not a hexagon, when the scale is zero or when the encoder refuses the size."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "cell",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "hand",
              "name": "Cell6d",
              "dim": null
            }
          }
        },
        {
          "name": "scale",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "start",
          "ty": {
            "t": "option",
            "item": {
              "t": "scalar",
              "name": "usize"
            }
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "vec",
          "item": {
            "t": "scalar",
            "name": "u8"
          }
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::six::rect_svg",
      "name": "rect_svg",
      "module": "math::six",
      "defined_at": "math/six/renderer.rs:221",
      "docs": [
        "Renders the hexagon tiled three by three and cropped to one interlocking rectangle as an SVG string.",
        "",
        "# Errors",
        "",
        "Errors for a cell that is not a hexagon, or when nothing renders."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "cell",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "hand",
              "name": "Cell6d",
              "dim": null
            }
          }
        },
        {
          "name": "scale",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "start",
          "ty": {
            "t": "option",
            "item": {
              "t": "scalar",
              "name": "usize"
            }
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "string"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::six::rim_holes",
      "name": "rim_holes",
      "module": "math::six",
      "defined_at": "math/six/topology.rs:108",
      "docs": [
        "Counts the void regions the rim never reaches, the second route to the hole count.",
        "",
        "# Errors",
        "",
        "Errors when a triangle index falls outside the sheet."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "cell",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "hand",
              "name": "Cell6d",
              "dim": null
            }
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "scalar",
          "name": "usize"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::six::skin",
      "name": "skin",
      "module": "math::six",
      "defined_at": "math/six/geometry.rs:467",
      "docs": [
        "Recodes an isometric projection's top, left and right faces as plain fills, so a census reads its visible skin as one figure.",
        "",
        "The other two projections already speak in fills and voids and come back untouched."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "cell",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "hand",
              "name": "Cell6d",
              "dim": null
            }
          }
        }
      ],
      "ret": {
        "t": "hand",
        "name": "Cell6d",
        "dim": null
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::six::slice_core_graph",
      "name": "slice_core_graph",
      "module": "math::six",
      "defined_at": "math/six/graph.rs:52",
      "docs": [
        "Builds the network of filled triangles joined by shared edges.",
        "",
        "# Errors",
        "",
        "Errors when a triangle index falls outside the sheet."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "cell",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "hand",
              "name": "Cell6d",
              "dim": null
            }
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "class",
          "path": "math::graph::Network",
          "dim": null
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::six::slice_dual_graph",
      "name": "slice_dual_graph",
      "module": "math::six",
      "defined_at": "math/six/graph.rs:70",
      "docs": [
        "Builds the network of fill and void triangles joined by shared edges.",
        "",
        "# Errors",
        "",
        "Errors when a triangle index falls outside the sheet."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "cell",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "hand",
              "name": "Cell6d",
              "dim": null
            }
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "class",
          "path": "math::graph::Network",
          "dim": null
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::six::slice_edge_graph",
      "name": "slice_edge_graph",
      "module": "math::six",
      "defined_at": "math/six/graph.rs:79",
      "docs": [
        "Builds the corner-and-edge network of the triangles matching the value, or of every fill and void.",
        "",
        "# Errors",
        "",
        "Errors when a triangle index falls outside the sheet."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "cell",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "hand",
              "name": "Cell6d",
              "dim": null
            }
          }
        },
        {
          "name": "value",
          "ty": {
            "t": "option",
            "item": {
              "t": "scalar",
              "name": "u8"
            }
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "class",
          "path": "math::graph::Network",
          "dim": null
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::six::slice_tunnel_graph",
      "name": "slice_tunnel_graph",
      "module": "math::six",
      "defined_at": "math/six/graph.rs:61",
      "docs": [
        "Builds the network of void triangles joined by shared edges, the pore network of the slice.",
        "",
        "# Errors",
        "",
        "Errors when a triangle index falls outside the sheet."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "cell",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "hand",
              "name": "Cell6d",
              "dim": null
            }
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "class",
          "path": "math::graph::Network",
          "dim": null
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::six::south",
      "name": "south",
      "module": "math::six",
      "defined_at": "math/six/renderer.rs:25",
      "docs": [
        "The three corners of the south-pointing triangle at the grid column and row."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "x",
          "ty": {
            "t": "scalar",
            "name": "i64"
          }
        },
        {
          "name": "y",
          "ty": {
            "t": "scalar",
            "name": "i64"
          }
        }
      ],
      "ret": {
        "t": "array",
        "item": {
          "t": "tuple",
          "items": [
            {
              "t": "scalar",
              "name": "i64"
            },
            {
              "t": "scalar",
              "name": "i64"
            }
          ]
        },
        "len": 3
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::six::spectral_exponent",
      "name": "spectral_exponent",
      "module": "math::six",
      "defined_at": "math/six/topology.rs:80",
      "docs": [
        "Reads the spectral dimension of the giant piece: twice the low-window log-log slope of the normalised Laplacian's integrated density of states.",
        "",
        "# Errors",
        "",
        "Errors when the giant piece is too small to fit an exponent."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "cell",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "hand",
              "name": "Cell6d",
              "dim": null
            }
          }
        },
        {
          "name": "window",
          "ty": {
            "t": "scalar",
            "name": "f64"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "scalar",
          "name": "f64"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::six::star::Branch::constant",
      "name": "constant",
      "module": "math::six::star",
      "defined_at": "math/six/star.rs:128",
      "docs": [
        "The constant the ladder converges on, `C` at even `L` and `C + 1/8` at odd `L`."
      ],
      "owner": "math::six::star::Branch",
      "self_kind": "value",
      "params": [],
      "ret": {
        "t": "scalar",
        "name": "f64"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::six::star::Branch::name",
      "name": "name",
      "module": "math::six::star",
      "defined_at": "math/six/star.rs:133",
      "docs": [
        "The name of the branch."
      ],
      "owner": "math::six::star::Branch",
      "self_kind": "value",
      "params": [],
      "ret": {
        "t": "string"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::six::star::Branch::of",
      "name": "of",
      "module": "math::six::star",
      "defined_at": "math/six/star.rs:110",
      "docs": [
        "The branch of a layer count."
      ],
      "owner": "math::six::star::Branch",
      "self_kind": null,
      "params": [
        {
          "name": "layers",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "enum",
        "path": "math::six::star::Branch"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::six::star::Branch::residual",
      "name": "residual",
      "module": "math::six::star",
      "defined_at": "math/six/star.rs:119",
      "docs": [
        "The exact `1/L^2` coefficient at even `L`, absent at odd `L`."
      ],
      "owner": "math::six::star::Branch",
      "self_kind": "value",
      "params": [],
      "ret": {
        "t": "option",
        "item": {
          "t": "scalar",
          "name": "f64"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::six::star::Share::reduced",
      "name": "reduced",
      "module": "math::six::star",
      "defined_at": "math/six/star.rs:22",
      "docs": [
        "The share in lowest terms, numerator then denominator."
      ],
      "owner": "math::six::star::Share",
      "self_kind": "value",
      "params": [],
      "ret": {
        "t": "tuple",
        "items": [
          {
            "t": "scalar",
            "name": "i64"
          },
          {
            "t": "scalar",
            "name": "i64"
          }
        ]
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::six::star::Share::value",
      "name": "value",
      "module": "math::six::star",
      "defined_at": "math/six/star.rs:17",
      "docs": [
        "The share as a real number."
      ],
      "owner": "math::six::star::Share",
      "self_kind": "value",
      "params": [],
      "ret": {
        "t": "scalar",
        "name": "f64"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::six::star::Star::arm",
      "name": "arm",
      "module": "math::six::star",
      "defined_at": "math/six/star.rs:264",
      "docs": [
        "The exact ink share of the band of half-width `W` cells about the arm `x = y` at odd `n`.",
        "",
        "At `W = 0` the band is the arm itself, the `2n` cells of the diameter, whose share is the",
        "closed form of [`arm_law`].",
        "",
        "```",
        "use mrlyrs::math::six::star::{arm_law, Star};",
        "assert_eq!(Star::new(23).unwrap().arm(9, 0).unwrap(), arm_law(9).unwrap());",
        "```",
        "",
        "# Errors",
        "",
        "Errors at an even layer number."
      ],
      "owner": "math::six::star::Star",
      "self_kind": "ref",
      "params": [
        {
          "name": "number",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "half",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "class",
          "path": "math::six::star::Share",
          "dim": null
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::six::star::Star::cell",
      "name": "cell",
      "module": "math::six::star",
      "defined_at": "math/six/star.rs:201",
      "docs": [
        "The ink of the cut cell at column `x` and even height `z` of the layer at odd `n`.",
        "",
        "The answer is absent where the plane `x + y + z = 6n - 2` leaves the cube, which is what draws",
        "the hexagon's own edge."
      ],
      "owner": "math::six::star::Star",
      "self_kind": "ref",
      "params": [
        {
          "name": "number",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "x",
          "ty": {
            "t": "scalar",
            "name": "i64"
          }
        },
        {
          "name": "z",
          "ty": {
            "t": "scalar",
            "name": "i64"
          }
        }
      ],
      "ret": {
        "t": "option",
        "item": {
          "t": "scalar",
          "name": "bool"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::six::star::Star::excesses",
      "name": "excesses",
      "module": "math::six::star",
      "defined_at": "math/six/star.rs:292",
      "docs": [
        "The per-layer excess of the star band over the hexagon across the first `L` odd layers.",
        "",
        "# Errors",
        "",
        "Errors below one layer, or at an even layer number."
      ],
      "owner": "math::six::star::Star",
      "self_kind": "ref",
      "params": [
        {
          "name": "layers",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "half",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "vec",
          "item": {
            "t": "scalar",
            "name": "f64"
          }
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::six::star::Star::hexagon",
      "name": "hexagon",
      "module": "math::six::star",
      "defined_at": "math/six/star.rs:222",
      "docs": [
        "The exact ink share of the whole hexagonal cut at odd `n`, the background the star is read against.",
        "",
        "The rows are the `2n` even heights `z`, and each runs over the `x` the plane leaves inside the",
        "cube. The fill depends on `x` only through `x mod 8`, so a row is counted in eight steps and",
        "the whole layer in `O(n)`.",
        "",
        "```",
        "use mrlyrs::math::six::star::Star;",
        "assert_eq!(Star::new(23).unwrap().hexagon(3).unwrap().reduced(), (7, 9));",
        "```",
        "",
        "# Errors",
        "",
        "Errors at an even layer number."
      ],
      "owner": "math::six::star::Star",
      "self_kind": "ref",
      "params": [
        {
          "name": "number",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "class",
          "path": "math::six::star::Share",
          "dim": null
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::six::star::Star::new",
      "name": "new",
      "module": "math::six::star",
      "defined_at": "math/six/star.rs:181",
      "docs": [
        "Reads the star of a base-2 space code, the carpet being `23`.",
        "",
        "# Errors",
        "",
        "Errors when the code is out of range for a base-2 cube."
      ],
      "owner": "math::six::star::Star",
      "self_kind": null,
      "params": [
        {
          "name": "code",
          "ty": {
            "t": "u128"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "class",
          "path": "math::six::star::Star",
          "dim": null
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::six::star::arm_law",
      "name": "arm_law",
      "module": "math::six::star",
      "defined_at": "math/six/star.rs:58",
      "docs": [
        "The closed form of the star arm's ink at odd `n`, `1/2 + chi_8(n)/(2n)`, as `n + chi_8(n)` cells of `2n`.",
        "",
        "The arm `x = y` of the cut is a diameter of `2n` cells with no width to choose, and on it the two",
        "block parities agree, so the space rule collapses to `floor(x/4)` even and the inked count is",
        "`f(3n) - f(n) = n + chi_8(n)` with `f(m) = 4 floor(m/8) + min(m mod 8, 4)`.",
        "",
        "```",
        "use mrlyrs::math::six::star::arm_law;",
        "assert_eq!(arm_law(7).unwrap().reduced(), (4, 7));",
        "```",
        "",
        "# Errors",
        "",
        "Errors at an even layer number."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "number",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "class",
          "path": "math::six::star::Share",
          "dim": null
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::six::star::chi8",
      "name": "chi8",
      "module": "math::six::star",
      "defined_at": "math/six/star.rs:40",
      "docs": [
        "The real character mod 8 of `Q(sqrt 2)`: `+1` at `n = 1, 7`, `-1` at `n = 3, 5`, zero at even `n`.",
        "",
        "```",
        "use mrlyrs::math::six::star::chi8;",
        "assert_eq!([chi8(1), chi8(3), chi8(5), chi8(7), chi8(4)], [1, -1, -1, 1, 0]);",
        "```"
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "number",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "scalar",
        "name": "i64"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::six::star::constant",
      "name": "constant",
      "module": "math::six::star",
      "defined_at": "math/six/star.rs:73",
      "docs": [
        "The constant beside the decay, `ln(1 + sqrt 2)/(2 sqrt 2) - G/8 - gamma/4 - (ln 2)/2`.",
        "",
        "Every limb is a closed form the subtraction of the two ink laws hands over: the character part is",
        "`L(1, chi_8)/2` by the class number formula for `Q(sqrt 2)`, the square tail is `-G/8` with `G`",
        "Catalan's constant, and the harmonic tail carries `-gamma/4 - (ln 2)/2`."
      ],
      "owner": null,
      "self_kind": null,
      "params": [],
      "ret": {
        "t": "scalar",
        "name": "f64"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::six::star::decay",
      "name": "decay",
      "module": "math::six::star",
      "defined_at": "math/six/star.rs:317",
      "docs": [
        "The decay read off the per-layer excesses at a layer count, the slope taken from `L/2` to `L`.",
        "",
        "At `W = 0` and even `L` the reading is `L * excess_L = -(ln L)/4 + C + O(1/L^2)`, so the slope",
        "settles on `-1/4` and the residual on the branch's exact `1/L^2` coefficient. The sliding window",
        "carries a residue trap: the per-layer excess opens on a term in the ink law's character whose sum",
        "vanishes at even `L` alone, so a window from `L/2` to `L` cancels it only when `L` is divisible by",
        "four. At `L = 2 mod 4` the half is odd and the window converges somewhere else entirely, so the",
        "slope is refused there rather than reported wrong.",
        "",
        "# Errors",
        "",
        "Errors below two layers, or past the excesses read."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "excesses",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "scalar",
              "name": "f64"
            }
          }
        },
        {
          "name": "layers",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "plain",
          "path": "math::six::star::Decay"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::six::star::width_law",
      "name": "width_law",
      "module": "math::six::star",
      "defined_at": "math/six/star.rs:91",
      "docs": [
        "The cell-frame decay coefficient of a band of half-width `W` cells, `-(K + b)/(4(2K + 1))` for `K = floor(W/2)`.",
        "",
        "`b` is the block parity of the band edge, one when `floor(K/2)` is even and zero when it is odd.",
        "The band's per-layer excess is `kappa chi + (m + q chi_8(n))/n + chi/(8 n^2)`, and summing the",
        "`1/n` term over the first `L` odd layers hands this coefficient as `m/2`, so it is a theorem and",
        "not a fit. At even `W` it reads `-(W + 2b)/(8(W + 1))` and at odd `W` it reads",
        "`-(W - 1 + 2b)/(8W)`, since `x - y` is even on the cut and an odd width is never a new band:",
        "`W = 1` returns the arm's `-1/4` and `W = 3` returns `-1/6`. As `W` grows it tends to `-1/8`.",
        "",
        "```",
        "use mrlyrs::math::six::star::width_law;",
        "assert_eq!([width_law(0), width_law(2), width_law(4)], [-0.25, -1.0 / 6.0, -0.1]);",
        "assert_eq!([width_law(1), width_law(3)], [width_law(0), width_law(2)]);",
        "```"
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "half",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "scalar",
        "name": "f64"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::six::svg",
      "name": "svg",
      "module": "math::six",
      "defined_at": "math/six/renderer.rs:201",
      "docs": [
        "Renders a cell's triangles to an SVG string at the given scale, stroked and padded when an outline is given.",
        "",
        "# Errors",
        "",
        "Errors when nothing renders."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "cell",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "hand",
              "name": "Cell6d",
              "dim": null
            }
          }
        },
        {
          "name": "scale",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "outline",
          "ty": {
            "t": "option",
            "item": {
              "t": "hand",
              "name": "Color",
              "dim": null
            }
          }
        },
        {
          "name": "width",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "start",
          "ty": {
            "t": "option",
            "item": {
              "t": "scalar",
              "name": "usize"
            }
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "string"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::six::tessellate",
      "name": "tessellate",
      "module": "math::six",
      "defined_at": "math/six/geometry.rs:345",
      "docs": [
        "Stamps a hexagonal cell at every set mask entry into one interlocking sheet, colors and tags included.",
        "",
        "# Errors",
        "",
        "Errors for a cell that is not a hexagon."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "cell",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "hand",
              "name": "Cell6d",
              "dim": null
            }
          }
        },
        {
          "name": "mask",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "hand",
              "name": "Tensor",
              "dim": null
            }
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "hand",
          "name": "CellNd",
          "dim": 2
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::six::tile",
      "name": "tile",
      "module": "math::six",
      "defined_at": "math/six/geometry.rs:409",
      "docs": [
        "Tessellates a hexagonal cell over a full width-by-height mask.",
        "",
        "# Errors",
        "",
        "Errors for a cell that is not a hexagon."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "cell",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "hand",
              "name": "Cell6d",
              "dim": null
            }
          }
        },
        {
          "name": "width",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "height",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "hand",
          "name": "CellNd",
          "dim": 2
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::six::tile_cell",
      "name": "tile_cell",
      "module": "math::six",
      "defined_at": "math/six/geometry.rs:447",
      "docs": [
        "Tessellates a hexagon over a full width-by-height mask and returns the sheet as a projected cell, cropped to the interlocking rectangle on request.",
        "",
        "The sheet keeps the tile's projection and orientation. A crop slides the triangle grid by the interlocking step on both axes, so the start parity flips whenever that step is odd; without the flip every triangle in the sheet points the wrong way.",
        "",
        "# Errors",
        "",
        "Errors for a cell that is not a hexagon."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "cell",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "hand",
              "name": "Cell6d",
              "dim": null
            }
          }
        },
        {
          "name": "width",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "height",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "crop",
          "ty": {
            "t": "scalar",
            "name": "bool"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "hand",
          "name": "Cell6d",
          "dim": null
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::six::tile_crop",
      "name": "tile_crop",
      "module": "math::six",
      "defined_at": "math/six/geometry.rs:435",
      "docs": [
        "Crops one interlocking step off each side of a sheet tiled at the given size.",
        "",
        "# Errors",
        "",
        "Errors when the width and the height are equal."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "cell",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "hand",
              "name": "CellNd",
              "dim": 2
            }
          }
        },
        {
          "name": "size",
          "ty": {
            "t": "tuple",
            "items": [
              {
                "t": "scalar",
                "name": "usize"
              },
              {
                "t": "scalar",
                "name": "usize"
              }
            ]
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "hand",
          "name": "CellNd",
          "dim": 2
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::six::tile_step",
      "name": "tile_step",
      "module": "math::six",
      "defined_at": "math/six/geometry.rs:422",
      "docs": [
        "Returns the interlocking step, in triangle columns and rows, that a sheet of hexagons of the given width and height loses off each side when cropped.",
        "",
        "```",
        "assert_eq!(mrlyrs::math::six::tile_step((11, 6)).unwrap(), (2, 3));",
        "```",
        "",
        "# Errors",
        "",
        "Errors when the width and the height are equal."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "size",
          "ty": {
            "t": "tuple",
            "items": [
              {
                "t": "scalar",
                "name": "usize"
              },
              {
                "t": "scalar",
                "name": "usize"
              }
            ]
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "tuple",
          "items": [
            {
              "t": "scalar",
              "name": "usize"
            },
            {
              "t": "scalar",
              "name": "usize"
            }
          ]
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::six::to_json",
      "name": "to_json",
      "module": "math::six",
      "defined_at": "math/six/serializer.rs:24",
      "docs": [
        "Serializes a cell and its projection metadata to JSON."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "cell",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "hand",
              "name": "Cell6d",
              "dim": null
            }
          }
        }
      ],
      "ret": {
        "t": "string"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::six::triangles",
      "name": "triangles",
      "module": "math::six",
      "defined_at": "math/six/renderer.rs:97",
      "docs": [
        "Folds a cell into colored screen triangles, dropping the transparent ones, at the cell's start parity or the given override.",
        "",
        "# Errors",
        "",
        "Errors for a cell that is not a hexagon."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "cell",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "hand",
              "name": "Cell6d",
              "dim": null
            }
          }
        },
        {
          "name": "start",
          "ty": {
            "t": "option",
            "item": {
              "t": "scalar",
              "name": "usize"
            }
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "vec",
          "item": {
            "t": "tuple",
            "items": [
              {
                "t": "array",
                "item": {
                  "t": "tuple",
                  "items": [
                    {
                      "t": "scalar",
                      "name": "i64"
                    },
                    {
                      "t": "scalar",
                      "name": "i64"
                    }
                  ]
                },
                "len": 3
              },
              {
                "t": "array",
                "item": {
                  "t": "scalar",
                  "name": "u8"
                },
                "len": 4
              }
            ]
          }
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::six::west",
      "name": "west",
      "module": "math::six",
      "defined_at": "math/six/renderer.rs:35",
      "docs": [
        "The three corners of the west-pointing triangle at the grid column and row."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "x",
          "ty": {
            "t": "scalar",
            "name": "i64"
          }
        },
        {
          "name": "y",
          "ty": {
            "t": "scalar",
            "name": "i64"
          }
        }
      ],
      "ret": {
        "t": "array",
        "item": {
          "t": "tuple",
          "items": [
            {
              "t": "scalar",
              "name": "i64"
            },
            {
              "t": "scalar",
              "name": "i64"
            }
          ]
        },
        "len": 3
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::six::width",
      "name": "width",
      "module": "math::six",
      "defined_at": "math/six/models.rs:36",
      "docs": [
        "Returns the grid width in triangles."
      ],
      "owner": "math::six::Cell6d",
      "self_kind": "ref",
      "params": [],
      "ret": {
        "t": "scalar",
        "name": "usize"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::spectrum::clusters",
      "name": "clusters",
      "module": "math::spectrum",
      "defined_at": "math/spectrum.rs:241",
      "docs": [
        "Groups eigenvalues into runs split by consecutive gaps above the tolerance, each run its mean and its size.",
        "",
        "```",
        "let groups = mrlyrs::math::spectrum::clusters(&[0.0, 1e-15, 2.0], 1e-9).unwrap();",
        "assert_eq!(groups.len(), 2);",
        "assert_eq!(groups[0].1, 2);",
        "```",
        "",
        "# Errors",
        "",
        "Errors on a NaN."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "eigenvalues",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "scalar",
              "name": "f64"
            }
          }
        },
        {
          "name": "tolerance",
          "ty": {
            "t": "scalar",
            "name": "f64"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "vec",
          "item": {
            "t": "tuple",
            "items": [
              {
                "t": "scalar",
                "name": "f64"
              },
              {
                "t": "scalar",
                "name": "usize"
              }
            ]
          }
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::spectrum::laplacian",
      "name": "laplacian",
      "module": "math::spectrum",
      "defined_at": "math/spectrum.rs:181",
      "docs": [
        "Builds the Laplacian of a network, the combinatorial `D - A` or the normalised `I - D^-1/2 A D^-1/2`.",
        "",
        "Self-loops are ignored and the degrees are the adjacency row sums. Errors when a",
        "node carries no branch and the normalised form is asked for.",
        "",
        "# Errors",
        "",
        "Errors when a node carries no branch under the normalised reading."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "network",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "class",
              "path": "math::graph::Network",
              "dim": null
            }
          }
        },
        {
          "name": "normalised",
          "ty": {
            "t": "scalar",
            "name": "bool"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "vec",
          "item": {
            "t": "vec",
            "item": {
              "t": "scalar",
              "name": "f64"
            }
          }
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::spectrum::laplacian_spectrum",
      "name": "laplacian_spectrum",
      "module": "math::spectrum",
      "defined_at": "math/spectrum.rs:224",
      "docs": [
        "Returns the ascending Laplacian spectrum of a network, combinatorial or normalised.",
        "",
        "```",
        "let mut net = mrlyrs::math::graph::Network::new(1);",
        "net.add_node(vec![0.0]).unwrap();",
        "net.add_node(vec![1.0]).unwrap();",
        "net.add_branch(0, 1, 1.0).unwrap();",
        "let values = mrlyrs::math::spectrum::laplacian_spectrum(&net, true).unwrap();",
        "assert!(values[0].abs() < 1e-12 && (values[1] - 2.0).abs() < 1e-12);",
        "```",
        "",
        "# Errors",
        "",
        "Errors when a node carries no branch, or the spectrum is not a number."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "network",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "class",
              "path": "math::graph::Network",
              "dim": null
            }
          }
        },
        {
          "name": "normalised",
          "ty": {
            "t": "scalar",
            "name": "bool"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "vec",
          "item": {
            "t": "scalar",
            "name": "f64"
          }
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::spectrum::multiplicity",
      "name": "multiplicity",
      "module": "math::spectrum",
      "defined_at": "math/spectrum.rs:260",
      "docs": [
        "Counts the eigenvalues within the tolerance of a value."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "eigenvalues",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "scalar",
              "name": "f64"
            }
          }
        },
        {
          "name": "value",
          "ty": {
            "t": "scalar",
            "name": "f64"
          }
        },
        {
          "name": "tolerance",
          "ty": {
            "t": "scalar",
            "name": "f64"
          }
        }
      ],
      "ret": {
        "t": "scalar",
        "name": "usize"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::spectrum::spectral_exponent",
      "name": "spectral_exponent",
      "module": "math::spectrum",
      "defined_at": "math/spectrum.rs:327",
      "docs": [
        "Reads the spectral exponent: twice the log-log slope of the integrated density of states over its low window."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "eigenvalues",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "scalar",
              "name": "f64"
            }
          }
        },
        {
          "name": "window",
          "ty": {
            "t": "scalar",
            "name": "f64"
          }
        }
      ],
      "ret": {
        "t": "option",
        "item": {
          "t": "scalar",
          "name": "f64"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::spectrum::spectral_fit",
      "name": "spectral_fit",
      "module": "math::spectrum",
      "defined_at": "math/spectrum.rs:300",
      "docs": [
        "Fits the low window of the integrated density of states in log-log: the intercept, the slope and the fitted count.",
        "",
        "The points come from `spectral_points` and the first `max(floor(window * total), 3)` of",
        "them are fitted by least squares. Returns `None` when fewer than two points remain."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "eigenvalues",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "scalar",
              "name": "f64"
            }
          }
        },
        {
          "name": "window",
          "ty": {
            "t": "scalar",
            "name": "f64"
          }
        }
      ],
      "ret": {
        "t": "option",
        "item": {
          "t": "tuple",
          "items": [
            {
              "t": "scalar",
              "name": "f64"
            },
            {
              "t": "scalar",
              "name": "f64"
            },
            {
              "t": "scalar",
              "name": "usize"
            }
          ]
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::spectrum::spectral_points",
      "name": "spectral_points",
      "module": "math::spectrum",
      "defined_at": "math/spectrum.rs:277",
      "docs": [
        "Builds the integrated density of states as points, each an eigenvalue and its rank fraction.",
        "",
        "The eigenvalues are clamped at zero and sorted, exactly equal neighbours collapse to one",
        "point at the run's last index over the total count, and points at or below `1e-12` drop.",
        "",
        "```",
        "let points = mrlyrs::math::spectrum::spectral_points(&[0.0, 0.5, 0.5, 2.0]);",
        "assert_eq!(points.len(), 2);",
        "assert!((points[0].1 - 0.75).abs() < 1e-12);",
        "```"
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "eigenvalues",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "scalar",
              "name": "f64"
            }
          }
        }
      ],
      "ret": {
        "t": "vec",
        "item": {
          "t": "tuple",
          "items": [
            {
              "t": "scalar",
              "name": "f64"
            },
            {
              "t": "scalar",
              "name": "f64"
            }
          ]
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::spectrum::symmetric_eigenvalues",
      "name": "symmetric_eigenvalues",
      "module": "math::spectrum",
      "defined_at": "math/spectrum.rs:147",
      "docs": [
        "Returns the eigenvalues of a dense real symmetric matrix in ascending order.",
        "",
        "The matrix is reduced to tridiagonal form by Householder reflections and then",
        "diagonalised by implicit QL with Wilkinson shifts. Errors on a matrix that is",
        "not square or whose entries disagree across the diagonal by more than `1e-12`.",
        "",
        "```",
        "let m = vec![vec![2.0, 1.0], vec![1.0, 2.0]];",
        "let values = mrlyrs::math::spectrum::symmetric_eigenvalues(&m).unwrap();",
        "assert!((values[0] - 1.0).abs() < 1e-12 && (values[1] - 3.0).abs() < 1e-12);",
        "```",
        "",
        "# Errors",
        "",
        "Errors on a matrix that is not square or not symmetric, or a spectrum that is not a number."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "matrix",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "vec",
              "item": {
                "t": "scalar",
                "name": "f64"
              }
            }
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "vec",
          "item": {
            "t": "scalar",
            "name": "f64"
          }
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::spin::Blend::fold",
      "name": "fold",
      "module": "math::spin",
      "defined_at": "math/spin.rs:179",
      "docs": [
        "Merges one site's copies into the blended value."
      ],
      "owner": "math::spin::Blend",
      "self_kind": "value",
      "params": [
        {
          "name": "values",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "scalar",
              "name": "f32"
            }
          }
        }
      ],
      "ret": {
        "t": "scalar",
        "name": "f32"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::spin::Blend::named",
      "name": "named",
      "module": "math::spin",
      "defined_at": "math/spin.rs:166",
      "docs": [
        "Reads a blend by name: mean, sum, union, meet, parity or difference."
      ],
      "owner": "math::spin::Blend",
      "self_kind": null,
      "params": [
        {
          "name": "name",
          "ty": {
            "t": "str"
          }
        }
      ],
      "ret": {
        "t": "option",
        "item": {
          "t": "enum",
          "path": "math::spin::Blend"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::spin::arcs",
      "name": "arcs",
      "module": "math::spin",
      "defined_at": "math/spin.rs:25",
      "docs": [
        "The arcs of the circle of the radius about the raster's centre: each as its start angle, end angle and the value of the one cell it lies in, zero outside.",
        "",
        "```",
        "let arcs = mrlyrs::math::spin::arcs(&[1.0, 1.0, 1.0, 1.0], 2, 0.5).unwrap();",
        "assert!(arcs.iter().all(|arc| arc.2 == 1.0));",
        "```",
        "",
        "# Errors",
        "",
        "Errors when the sample count is not the side squared."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "data",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "scalar",
              "name": "f32"
            }
          }
        },
        {
          "name": "size",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "radius",
          "ty": {
            "t": "scalar",
            "name": "f64"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "vec",
          "item": {
            "t": "tuple",
            "items": [
              {
                "t": "scalar",
                "name": "f64"
              },
              {
                "t": "scalar",
                "name": "f64"
              },
              {
                "t": "scalar",
                "name": "f32"
              }
            ]
          }
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::spin::harmonics",
      "name": "harmonics",
      "module": "math::spin",
      "defined_at": "math/spin.rs:98",
      "docs": [
        "The circular-harmonic power of a raster: for every order `m` up to the last, the energy `sum |c_m(r)|^2 2 pi r dr` of its `m`-th harmonic over rings radii, each ring's coefficient exact from its arcs.",
        "",
        "# Errors",
        "",
        "Errors when the sample count is not the side squared."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "data",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "scalar",
              "name": "f32"
            }
          }
        },
        {
          "name": "size",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "rings",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "orders",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "vec",
          "item": {
            "t": "scalar",
            "name": "f64"
          }
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::spin::mass",
      "name": "mass",
      "module": "math::spin",
      "defined_at": "math/spin.rs:296",
      "docs": [
        "The mass a profile carries, the trapezoid integral of `2 pi r F(r)` in cells of the raster it came from."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "profile",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "scalar",
              "name": "f32"
            }
          }
        },
        {
          "name": "size",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "scalar",
        "name": "f64"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::spin::mass_within",
      "name": "mass_within",
      "module": "math::spin",
      "defined_at": "math/spin.rs:315",
      "docs": [
        "The mass a profile carries inside the radius, the trapezoid integral of `2 pi r F(r)` from the centre out, in cells of the raster it came from.",
        "",
        "```",
        "let solid = vec![1.0; 64];",
        "let rings = mrlyrs::math::spin::profile(&solid, 8, 4000).unwrap();",
        "let inner = mrlyrs::math::spin::mass_within(&rings, 8, 3.0);",
        "assert!((inner / (9.0 * std::f64::consts::PI) - 1.0).abs() < 1e-3);",
        "```"
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "profile",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "scalar",
              "name": "f32"
            }
          }
        },
        {
          "name": "size",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "radius",
          "ty": {
            "t": "scalar",
            "name": "f64"
          }
        }
      ],
      "ret": {
        "t": "scalar",
        "name": "f64"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::spin::petals",
      "name": "petals",
      "module": "math::spin",
      "defined_at": "math/spin.rs:140",
      "docs": [
        "The petals a full radial stack of the copies shows on a design of the rotation order: their least common multiple."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "copies",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "order",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "scalar",
        "name": "usize"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::spin::profile",
      "name": "profile",
      "module": "math::spin",
      "defined_at": "math/spin.rs:261",
      "docs": [
        "The ring profile: the circle means at steps radii spaced evenly from the centre to the corner circle.",
        "",
        "# Errors",
        "",
        "Errors when the sample count is not the side squared."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "data",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "scalar",
              "name": "f32"
            }
          }
        },
        {
          "name": "size",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "steps",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "vec",
          "item": {
            "t": "scalar",
            "name": "f32"
          }
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::spin::radial",
      "name": "radial",
      "module": "math::spin",
      "defined_at": "math/spin.rs:201",
      "docs": [
        "Stacks a raster radially: copies turned by multiples of the step, in turns, about the centre and merged by the blend, on an output raster of the side whose inscribed circle is the source's corner circle, every pixel the mean of samples by samples points.",
        "",
        "# Errors",
        "",
        "Errors when the sample count is not the side squared."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "data",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "scalar",
              "name": "f32"
            }
          }
        },
        {
          "name": "size",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "out",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "copies",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "step",
          "ty": {
            "t": "scalar",
            "name": "f64"
          }
        },
        {
          "name": "blend",
          "ty": {
            "t": "enum",
            "path": "math::spin::Blend"
          }
        },
        {
          "name": "samples",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "vec",
          "item": {
            "t": "scalar",
            "name": "f32"
          }
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::spin::reach",
      "name": "reach",
      "module": "math::spin",
      "defined_at": "math/spin.rs:11",
      "docs": [
        "The radius of the corner circle of a square raster of the side, the last radius a profile reads."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "size",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "scalar",
        "name": "f64"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::spin::ring",
      "name": "ring",
      "module": "math::spin",
      "defined_at": "math/spin.rs:85",
      "docs": [
        "The exact mean of a square raster over the circle of the radius about its centre, each cell read as a constant and the outside as zero.",
        "",
        "```",
        "let solid = vec![1.0; 16];",
        "assert!((mrlyrs::math::spin::ring(&solid, 4, 1.0).unwrap() - 1.0).abs() < 1e-12);",
        "assert!(mrlyrs::math::spin::ring(&solid, 4, 3.0).unwrap().abs() < 1e-12);",
        "```",
        "",
        "# Errors",
        "",
        "Errors when the sample count is not the side squared."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "data",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "scalar",
              "name": "f32"
            }
          }
        },
        {
          "name": "size",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "radius",
          "ty": {
            "t": "scalar",
            "name": "f64"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "scalar",
          "name": "f64"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::spin::turns",
      "name": "turns",
      "module": "math::spin",
      "defined_at": "math/spin.rs:129",
      "docs": [
        "The rotation order a harmonic power spectrum reveals: the gcd of the orders carrying more than a ten-thousandth of the power, the share pixel aliasing stays under, or zero when none does."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "power",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "scalar",
              "name": "f64"
            }
          }
        }
      ],
      "ret": {
        "t": "scalar",
        "name": "usize"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::spin::wheel",
      "name": "wheel",
      "module": "math::spin",
      "defined_at": "math/spin.rs:270",
      "docs": [
        "The wheel: a profile spread over a square raster of the side, the corner circle it ends on drawn as the inscribed circle, every pixel reading the profile at its own radius."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "profile",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "scalar",
              "name": "f32"
            }
          }
        },
        {
          "name": "size",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "vec",
        "item": {
          "t": "scalar",
          "name": "f32"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::spirograph::Seats::default",
      "name": "default",
      "module": "math::spirograph",
      "defined_at": "math/spirograph.rs:49",
      "docs": [
        "Returns the default Seats."
      ],
      "owner": "math::spirograph::Seats",
      "self_kind": null,
      "params": [],
      "ret": {
        "t": "plain",
        "path": "math::spirograph::Seats"
      },
      "dims": [],
      "trait": null,
      "source": "default",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::spirograph::cell",
      "name": "cell",
      "module": "math::spirograph",
      "defined_at": "math/spirograph.rs:131",
      "docs": [
        "The side of one cell in wheel radii at a reach, the number the page needs to draw the tile on the wheel."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "width",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "height",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "reach",
          "ty": {
            "t": "scalar",
            "name": "f64"
          }
        }
      ],
      "ret": {
        "t": "scalar",
        "name": "f64"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::spirograph::cover",
      "name": "cover",
      "module": "math::spirograph",
      "defined_at": "math/spirograph.rs:618",
      "docs": [
        "The shape between the walls of a circle roulette, on a raster of `side` by `side` pixels over the disc, row zero at the top and the ordinate falling down the rows. Every distinct curve under the coincidence law is drawn once as a polyline of at least `samples` points, and of enough points that consecutive points land in one pixel or in two of the eight that touch, so the polylines make a wall no four-connected flood crosses. One flood starts from every pixel of the raster's edge, the fluid poured from outside; one starts from the centre pixel, the fluid poured at the centre, and is empty when the centre is a wall or the outside already reached it; the shape is the rest of the disc, pockets included. `covered` is the shape's share of the disc's pixels, the wall's own pixels counted in and reported apart as `wall`, and `hole` is the centre flood's share. `winding` is the mean signed winding number of the disc's pixel centres, read off crossings of the same polylines by scanline and never off a flood, and `areas` is the closed form it converges to, the distinct curves' `signed_area` summed over the disc's area: the pair checks the polylines and the raster against Green's theorem and never the floods, which are guarded instead by the sample spacing of at most half a pixel, which makes the wall eight-connected and a four-connected flood unable to cross it. Every share carries a boundary error of the order of the polylines' length times the pixel side over the disc's area.",
        "",
        "# Errors",
        "",
        "Errors on a line or a polygon track, a raster side out of range, under two samples, or past the point cap."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "track",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "plain",
              "path": "math::spirograph::Track"
            }
          }
        },
        {
          "name": "pencils",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "plain",
              "path": "math::spirograph::Pencil"
            }
          }
        },
        {
          "name": "exact",
          "ty": {
            "t": "scalar",
            "name": "bool"
          }
        },
        {
          "name": "samples",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "side",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "plain",
          "path": "math::spirograph::Cover"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::spirograph::disc",
      "name": "disc",
      "module": "math::spirograph",
      "defined_at": "math/spirograph.rs:597",
      "docs": [
        "The disc a circle roulette sits in: the wheel's centre turns on a circle of radius `rho`, and a seat `d` from the wheel's centre puts the pencil at `|z|^2 = rho^2 + d^2 + 2 rho d cos(a t / b -+ arg p)`, whose phase runs over `a` full turns, so that curve lies in the closed annulus from `abs(rho - d)` to `rho + d` and attains both bounds. The whole roulette therefore never leaves the disc of radius `rho + max d` and enters no disc of radius under `min abs(rho - d)`, the least over the seats and not the outermost seat's own, since seats on both sides of `rho` each keep their own inner radius. Refuses a line or a polygon track, whose roulette need not close and has no wall.",
        "",
        "# Errors",
        "",
        "Errors on a line or a polygon track."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "track",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "plain",
              "path": "math::spirograph::Track"
            }
          }
        },
        {
          "name": "pencils",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "plain",
              "path": "math::spirograph::Pencil"
            }
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "plain",
          "path": "math::spirograph::Disc"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::spirograph::distinct",
      "name": "distinct",
      "module": "math::spirograph",
      "defined_at": "math/spirograph.rs:459",
      "docs": [
        "How many classes `representatives` finds: the distinct curves on a circle track, the shapes up to a shift along a line track, one class per pencil on a polygon and under jitter."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "track",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "plain",
              "path": "math::spirograph::Track"
            }
          }
        },
        {
          "name": "pencils",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "plain",
              "path": "math::spirograph::Pencil"
            }
          }
        },
        {
          "name": "exact",
          "ty": {
            "t": "scalar",
            "name": "bool"
          }
        }
      ],
      "ret": {
        "t": "scalar",
        "name": "usize"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::spirograph::frame",
      "name": "frame",
      "module": "math::spirograph",
      "defined_at": "math/spirograph.rs:502",
      "docs": [
        "The box the whole picture sits in: the centre path and the track, padded by the wheel's radius or the farthest seat, whichever reaches further."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "track",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "plain",
              "path": "math::spirograph::Track"
            }
          }
        },
        {
          "name": "pencils",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "plain",
              "path": "math::spirograph::Pencil"
            }
          }
        }
      ],
      "ret": {
        "t": "array",
        "item": {
          "t": "scalar",
          "name": "f64"
        },
        "len": 4
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::spirograph::nodes",
      "name": "nodes",
      "module": "math::spirograph",
      "defined_at": "math/spirograph.rs:529",
      "docs": [
        "The crossings of the whole roulette on a circle track, the generic count, with `R/r = a/b` in lowest terms. Write `|p|` for a seat's distance from the wheel's centre in wheel radii and `A` for the centre path's radius in the same units, `(a - b)/b` inside and `(a + b)/b` outside. Every seat must lie strictly inside the window `0 < |p| < min(1, A)`, which three hypotheses cut: `|p| > 0`, since a seat at the wheel's centre draws the centre circle `b` times over and never crosses; `|p| < 1`, the loop threshold, past which a curve loops; and `|p| < A`, the seat threshold, where the seat reaches the centre path, which comes before the loop threshold on every inside track with `a < 2b` and never bites outside. Inside that window two distinct curves cross exactly `2ab` times, one curve crosses itself `a(b - 1)` times, and `k` distinct curves cross `2ab k(k - 1) / 2 + k a (b - 1)` times, the design entering only through `k`. `exact` reads the coincidence law on the seats, as `distinct` does. `None` on a line or a polygon track, and `None` when any seat leaves the window, where neither count is the law's. At isolated reaches some crossings merge, so the count holds for the generic reach."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "track",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "plain",
              "path": "math::spirograph::Track"
            }
          }
        },
        {
          "name": "pencils",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "plain",
              "path": "math::spirograph::Pencil"
            }
          }
        },
        {
          "name": "exact",
          "ty": {
            "t": "scalar",
            "name": "bool"
          }
        }
      ],
      "ret": {
        "t": "option",
        "item": {
          "t": "scalar",
          "name": "u64"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::spirograph::pencils",
      "name": "pencils",
      "module": "math::spirograph",
      "defined_at": "math/spirograph.rs:63",
      "docs": [
        "Seats one pencil per chosen site of a byte grid: `fill` the filled cells, `void` the empty ones, `both`, or `corners` the corners of the filled cells, each once. The tile is scaled so its circumradius is `reach` wheel radii, and `jitter` moves every seat by up to that fraction of a cell each way, seeded.",
        "",
        "# Errors",
        "",
        "Errors on a grid that is not width by height, a reach or jitter out of range, or a mode that is not fill, void, both or corners."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "types",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "scalar",
              "name": "u8"
            }
          }
        },
        {
          "name": "width",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "height",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "mode",
          "ty": {
            "t": "str"
          }
        },
        {
          "name": "reach",
          "ty": {
            "t": "scalar",
            "name": "f64"
          }
        },
        {
          "name": "jitter",
          "ty": {
            "t": "scalar",
            "name": "f64"
          }
        },
        {
          "name": "seed",
          "ty": {
            "t": "scalar",
            "name": "u32"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "vec",
          "item": {
            "t": "plain",
            "path": "math::spirograph::Pencil"
          }
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::spirograph::point",
      "name": "point",
      "module": "math::spirograph",
      "defined_at": "math/spirograph.rs:420",
      "docs": [
        "Where a pencil is after `s` of path length: the centre plus the seat turned with the wheel."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "track",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "plain",
              "path": "math::spirograph::Track"
            }
          }
        },
        {
          "name": "pencil",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "plain",
              "path": "math::spirograph::Pencil"
            }
          }
        },
        {
          "name": "s",
          "ty": {
            "t": "scalar",
            "name": "f64"
          }
        }
      ],
      "ret": {
        "t": "tuple",
        "items": [
          {
            "t": "scalar",
            "name": "f64"
          },
          {
            "t": "scalar",
            "name": "f64"
          }
        ]
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::spirograph::pose",
      "name": "pose",
      "module": "math::spirograph",
      "defined_at": "math/spirograph.rs:396",
      "docs": [
        "The wheel's centre after `s` of path length."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "track",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "plain",
              "path": "math::spirograph::Track"
            }
          }
        },
        {
          "name": "s",
          "ty": {
            "t": "scalar",
            "name": "f64"
          }
        }
      ],
      "ret": {
        "t": "tuple",
        "items": [
          {
            "t": "scalar",
            "name": "f64"
          },
          {
            "t": "scalar",
            "name": "f64"
          }
        ]
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::spirograph::representatives",
      "name": "representatives",
      "module": "math::spirograph",
      "defined_at": "math/spirograph.rs:464",
      "docs": [
        "One pencil per class, the first index of every class in the order the pencils were seated. On a circle track the classes are the distinct curves, by the coincidence law on exact seats: two pencils draw one curve iff a rotation of a full turn over the ratio's denominator carries one seat to the other, which the square lattice allows only by half turns when the denominator is even and by quarter turns when four divides it. On a line track the classes are the seat radii, and those are shapes up to a shift, not curves: turning a seat by `gamma` slides its whole ribbon `gamma` wheel radii along the line while the ribbon's period is a full turn of the wheel, so two seats of one radius draw translates of one shape and share no point unless the seats are equal. On a polygon every pencil is its own class, and so is every pencil under jitter."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "track",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "plain",
              "path": "math::spirograph::Track"
            }
          }
        },
        {
          "name": "pencils",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "plain",
              "path": "math::spirograph::Pencil"
            }
          }
        },
        {
          "name": "exact",
          "ty": {
            "t": "scalar",
            "name": "bool"
          }
        }
      ],
      "ret": {
        "t": "vec",
        "item": {
          "t": "scalar",
          "name": "usize"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::spirograph::seats",
      "name": "seats",
      "module": "math::spirograph",
      "defined_at": "math/spirograph.rs:136",
      "docs": [
        "Counts the pencils by kind."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "pencils",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "plain",
              "path": "math::spirograph::Pencil"
            }
          }
        }
      ],
      "ret": {
        "t": "plain",
        "path": "math::spirograph::Seats"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::spirograph::signed_area",
      "name": "signed_area",
      "module": "math::spirograph",
      "defined_at": "math/spirograph.rs:584",
      "docs": [
        "The signed area one pencil's closed trochoid sweeps over the whole track, counterclockwise positive and counted with multiplicity, so it is the winding number integrated over the plane: `pi b rho (rho - d^2/r)` inside and `pi b rho (rho + d^2/r)` outside, with `rho` the centre circle's radius `R -+ r`, `d = r |p|` the seat's distance from the wheel's centre and `R/r = a/b` in lowest terms. Green's theorem on `z(t) = rho e^(i t) + p r e^(-+ i (rho/r) t)` gives it, and the cross terms carry `e^(-+ i a t / b)` over `b` centre turns and integrate to zero. No hypothesis on the seat: loops are counted with their sign. `None` off a circle track, where the roulette need not close."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "track",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "plain",
              "path": "math::spirograph::Track"
            }
          }
        },
        {
          "name": "pencil",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "plain",
              "path": "math::spirograph::Pencil"
            }
          }
        }
      ],
      "ret": {
        "t": "option",
        "item": {
          "t": "scalar",
          "name": "f64"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::spirograph::trace",
      "name": "trace",
      "module": "math::spirograph",
      "defined_at": "math/spirograph.rs:436",
      "docs": [
        "Traces every pencil along the whole track at `samples` evenly spaced path lengths, first and last included: pencil by pencil, sample by sample, x then y.",
        "",
        "# Errors",
        "",
        "Errors under two samples, or past the point cap."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "track",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "plain",
              "path": "math::spirograph::Track"
            }
          }
        },
        {
          "name": "pencils",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "plain",
              "path": "math::spirograph::Pencil"
            }
          }
        },
        {
          "name": "samples",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "vec",
          "item": {
            "t": "scalar",
            "name": "f32"
          }
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::spirograph::track",
      "name": "track",
      "module": "math::spirograph",
      "defined_at": "math/spirograph.rs:266",
      "docs": [
        "Lays a track: `line` a straight line under the wheel for `laps` turns; `in` and `out` a circle of radius `ring` with the wheel inside or outside, closing after the reduced denominator of `ring` over `wheel` orbits; `polyin` and `polyout` a regular polygon of `sides` sides and circumradius `ring` for `laps` laps.",
        "",
        "# Errors",
        "",
        "Errors on a radius or lap count out of range, a wheel that does not fit its ring, or a kind that is not line, in, out, polyin or polyout."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "kind",
          "ty": {
            "t": "str"
          }
        },
        {
          "name": "ring",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "wheel",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "sides",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "laps",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "plain",
          "path": "math::spirograph::Track"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::spirograph::turn",
      "name": "turn",
      "module": "math::spirograph",
      "defined_at": "math/spirograph.rs:410",
      "docs": [
        "The wheel's turn after `s` of path length, in radians: `side` times `s` over the wheel's radius."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "track",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "plain",
              "path": "math::spirograph::Track"
            }
          }
        },
        {
          "name": "s",
          "ty": {
            "t": "scalar",
            "name": "f64"
          }
        }
      ],
      "ret": {
        "t": "scalar",
        "name": "f64"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::three::Vec3::cross",
      "name": "cross",
      "module": "math::three",
      "defined_at": "math/three/faces.rs:50",
      "docs": [
        "Returns the cross product, perpendicular to both vectors.",
        "",
        "```",
        "use mrlyrs::math::three::Vec3;",
        "let n = Vec3::new(1.0, 0.0, 0.0).cross(Vec3::new(0.0, 1.0, 0.0));",
        "assert_eq!(n, Vec3::new(0.0, 0.0, 1.0));",
        "```"
      ],
      "owner": "math::three::Vec3",
      "self_kind": "value",
      "params": [
        {
          "name": "o",
          "ty": {
            "t": "class",
            "path": "math::three::Vec3",
            "dim": null
          }
        }
      ],
      "ret": {
        "t": "class",
        "path": "math::three::Vec3",
        "dim": null
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::three::Vec3::dot",
      "name": "dot",
      "module": "math::three",
      "defined_at": "math/three/faces.rs:40",
      "docs": [
        "Returns the dot product of the two vectors."
      ],
      "owner": "math::three::Vec3",
      "self_kind": "value",
      "params": [
        {
          "name": "o",
          "ty": {
            "t": "class",
            "path": "math::three::Vec3",
            "dim": null
          }
        }
      ],
      "ret": {
        "t": "scalar",
        "name": "f32"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::three::Vec3::new",
      "name": "new",
      "module": "math::three",
      "defined_at": "math/three/faces.rs:32",
      "docs": [
        "Builds a vector from its components."
      ],
      "owner": "math::three::Vec3",
      "self_kind": null,
      "params": [
        {
          "name": "x",
          "ty": {
            "t": "scalar",
            "name": "f32"
          }
        },
        {
          "name": "y",
          "ty": {
            "t": "scalar",
            "name": "f32"
          }
        },
        {
          "name": "z",
          "ty": {
            "t": "scalar",
            "name": "f32"
          }
        }
      ],
      "ret": {
        "t": "class",
        "path": "math::three::Vec3",
        "dim": null
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::three::Vec3::scale",
      "name": "scale",
      "module": "math::three",
      "defined_at": "math/three/faces.rs:36",
      "docs": [
        "Multiplies every component by the scalar."
      ],
      "owner": "math::three::Vec3",
      "self_kind": "value",
      "params": [
        {
          "name": "s",
          "ty": {
            "t": "scalar",
            "name": "f32"
          }
        }
      ],
      "ret": {
        "t": "class",
        "path": "math::three::Vec3",
        "dim": null
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::three::carpet",
      "name": "carpet",
      "module": "math::three",
      "defined_at": "math/three/designs.rs:79",
      "docs": [
        "Builds the Menger sponge, filled where at most one coordinate is odd, at the given level.",
        "",
        "```",
        "let sponge = mrlyrs::math::three::carpet(3, 1).unwrap();",
        "assert_eq!(sponge.types().sum(), 20);",
        "```",
        "",
        "# Errors",
        "",
        "Errors below level one."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "number",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "level",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "hand",
          "name": "CellNd",
          "dim": 3
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::three::census",
      "name": "census",
      "module": "math::three",
      "defined_at": "math/three/census.rs:126",
      "docs": [
        "Tallies a cell's sites, its exposed surface and its Euler characteristic in one reading.",
        "",
        "```",
        "let tally = mrlyrs::math::three::census::census(&mrlyrs::math::three::carpet(3, 1).unwrap()).unwrap();",
        "assert_eq!((tally.fills, tally.voids, tally.surface), (20, 7, 72));",
        "assert_eq!((tally.vertices, tally.edges, tally.faces, tally.euler), (64, 144, 96, -4));",
        "```",
        "",
        "# Errors",
        "",
        "Errors when the edge network cannot be lifted from the cube."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "cell",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "hand",
              "name": "CellNd",
              "dim": 3
            }
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "plain",
          "path": "math::three::Census"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::three::core_graph",
      "name": "core_graph",
      "module": "math::three",
      "defined_at": "math/cell/graph.rs:11",
      "docs": [
        "Extracts the network of filled sites joined to their axis neighbors.",
        "",
        "# Errors",
        "",
        "Errors when the cell is neither two- nor three-dimensional."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "cell",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "hand",
              "name": "CellNd",
              "dim": null
            }
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "class",
          "path": "math::graph::Network",
          "dim": null
        }
      },
      "dims": [
        2,
        3
      ],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::three::create",
      "name": "create",
      "module": "math::three",
      "defined_at": "math/three/designs.rs:21",
      "docs": [
        "Builds the cube the universe code names, deepened to the given fractal level.",
        "",
        "# Errors",
        "",
        "Errors when the code is out of range, or the level is below one."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "code",
          "ty": {
            "t": "code"
          }
        },
        {
          "name": "number",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "level",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "base",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "hand",
          "name": "CellNd",
          "dim": 3
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::three::diagonal_slice",
      "name": "slice",
      "module": "math::three",
      "defined_at": "math/three/diagonal.rs:122",
      "docs": [
        "Lists the filled cells on the diagonal plane `x + y + z = height`, as `x, y, z` triples.",
        "",
        "```",
        "use mrlyrs::math::bang::Code;",
        "assert_eq!(mrlyrs::math::three::diagonal_slice(Code::from(126u64), 2, 3, 2, 10).unwrap().len(), 27);",
        "```",
        "",
        "# Errors",
        "",
        "Errors when the code is out of range, or the level is below one."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "code",
          "ty": {
            "t": "code"
          }
        },
        {
          "name": "number",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "level",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "base",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "height",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "vec",
          "item": {
            "t": "array",
            "item": {
              "t": "scalar",
              "name": "u32"
            },
            "len": 3
          }
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::three::diagonal_svg",
      "name": "svg",
      "module": "math::three",
      "defined_at": "math/three/diagonal.rs:171",
      "docs": [
        "Draws the given diagonal slices as one circle per cell, coloured by height slot and top-scale corner.",
        "",
        "The frame is tight around the projected points and carries no background, so the drawing sits on",
        "whatever the page is.",
        "",
        "# Errors",
        "",
        "Errors when the code is out of range, the level is below one, or nothing renders."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "code",
          "ty": {
            "t": "code"
          }
        },
        {
          "name": "number",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "level",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "base",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "heights",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "scalar",
              "name": "usize"
            }
          }
        },
        {
          "name": "scale",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "string"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::three::dust",
      "name": "dust",
      "module": "math::three",
      "defined_at": "math/three/designs.rs:142",
      "docs": [
        "Builds the dust cube, filled where every coordinate is even, at the given level.",
        "",
        "# Errors",
        "",
        "Errors below level one."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "number",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "level",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "hand",
          "name": "CellNd",
          "dim": 3
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::three::edge_graph",
      "name": "edge_graph",
      "module": "math::three",
      "defined_at": "math/cell/graph.rs:20",
      "docs": [
        "Extracts the network of corners and edges outlining every filled site.",
        "",
        "# Errors",
        "",
        "Errors when the cell is neither two- nor three-dimensional."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "cell",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "hand",
              "name": "CellNd",
              "dim": null
            }
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "class",
          "path": "math::graph::Network",
          "dim": null
        }
      },
      "dims": [
        2,
        3
      ],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::three::euler",
      "name": "euler",
      "module": "math::three",
      "defined_at": "math/three/census.rs:109",
      "docs": [
        "Returns the Euler characteristic of the filled complex, vertices less edges plus faces less sites.",
        "",
        "One for a solid block, and one less than twice the genus below zero for a tunnelled one.",
        "",
        "```",
        "assert_eq!(mrlyrs::math::three::census::euler(&mrlyrs::math::three::ones(2, 1).unwrap()).unwrap(), 1);",
        "assert_eq!(mrlyrs::math::three::census::euler(&mrlyrs::math::three::carpet(3, 1).unwrap()).unwrap(), -4);",
        "```",
        "",
        "# Errors",
        "",
        "Errors when the edge network cannot be lifted from the cube."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "cell",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "hand",
              "name": "CellNd",
              "dim": 3
            }
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "scalar",
          "name": "i64"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::three::extrude",
      "name": "extrude",
      "module": "math::three",
      "defined_at": "math/three/geometry.rs:149",
      "docs": [
        "Lifts a flat cell into a cube by repeating it depth times along a new axis, colors and tags with it.",
        "",
        "This is the inverse of slice: every slice of the lift on that axis is the flat cell again.",
        "",
        "```",
        "let flat = mrlyrs::math::two::carpet(3, 2).unwrap();",
        "let cube = mrlyrs::math::three::extrude(&flat, 0, 4).unwrap();",
        "assert_eq!(cube.depth(), 4);",
        "assert_eq!(mrlyrs::math::three::slice(&cube, 0, 3).unwrap(), flat);",
        "```",
        "",
        "# Errors",
        "",
        "Errors when the axis is not 0, 1 or 2, or the depth is below one."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "cell",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "hand",
              "name": "CellNd",
              "dim": 2
            }
          }
        },
        {
          "name": "axis",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "depth",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "hand",
          "name": "CellNd",
          "dim": 3
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::three::extrude_cube",
      "name": "extrude_cube",
      "module": "math::three",
      "defined_at": "math/three/geometry.rs:173",
      "docs": [
        "Repeats every plane of a cube depth times along its leading axis, colors and tags with it.",
        "",
        "```",
        "let stack = mrlyrs::math::three::extrude_cube(&mrlyrs::math::three::carpet(3, 1).unwrap(), 2).unwrap();",
        "assert_eq!(stack.types().shape, vec![6, 3, 3]);",
        "assert_eq!(stack.types().sum(), 40);",
        "```",
        "",
        "# Errors",
        "",
        "Errors when the depth is below one."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "cell",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "hand",
              "name": "CellNd",
              "dim": 3
            }
          }
        },
        {
          "name": "depth",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "hand",
          "name": "CellNd",
          "dim": 3
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::three::faces",
      "name": "faces",
      "module": "math::three",
      "defined_at": "math/three/census.rs:72",
      "docs": [
        "Returns the count of unit faces the filled sites touch, a face shared by two sites counted once.",
        "",
        "Surface counts only the faces open to void; this counts every face of the complex.",
        "",
        "```",
        "let block = mrlyrs::math::three::ones(2, 1).unwrap();",
        "assert_eq!(mrlyrs::math::three::census::faces(&block), 36);",
        "assert_eq!(mrlyrs::math::three::census::surface(&block), 24);",
        "```"
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "cell",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "hand",
              "name": "CellNd",
              "dim": 3
            }
          }
        }
      ],
      "ret": {
        "t": "scalar",
        "name": "usize"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::three::fills",
      "name": "fills",
      "module": "math::three",
      "defined_at": "math/three/census.rs:29",
      "docs": [
        "Returns the count of filled sites."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "cell",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "hand",
              "name": "CellNd",
              "dim": 3
            }
          }
        }
      ],
      "ret": {
        "t": "scalar",
        "name": "usize"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::three::from_corners",
      "name": "from_corners",
      "module": "math::three",
      "defined_at": "math/three/designs.rs:30",
      "docs": [
        "Builds a cube from its corner patterns, deepened to the given fractal level.",
        "",
        "# Errors",
        "",
        "Errors when a corner does not fit the dimension and base, or the level is below one."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "corners",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "vec",
              "item": {
                "t": "scalar",
                "name": "u8"
              }
            }
          }
        },
        {
          "name": "number",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "level",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "base",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "hand",
          "name": "CellNd",
          "dim": 3
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::three::from_json",
      "name": "from_json",
      "module": "math::three",
      "defined_at": "math/three/serializer.rs:75",
      "docs": [
        "Parses a cell from its JSON, colors and tags included.",
        "",
        "# Errors",
        "",
        "Errors when the text is not a cube."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "text",
          "ty": {
            "t": "str"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "hand",
          "name": "CellNd",
          "dim": 3
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::three::from_strings",
      "name": "from_strings",
      "module": "math::three",
      "defined_at": "math/three/serializer.rs:113",
      "docs": [
        "Builds a cube from one string of digits per row, grouped plane by plane.",
        "",
        "# Errors",
        "",
        "Errors when the planes are empty, ragged, or hold anything but digits."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "data",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "vec",
              "item": {
                "t": "string"
              }
            }
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "hand",
          "name": "CellNd",
          "dim": 3
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::three::hidden",
      "name": "hidden",
      "module": "math::three",
      "defined_at": "math/three/census.rs:59",
      "docs": [
        "Returns the count of faces buried between two filled sites, six per site less the exposed surface.",
        "",
        "```",
        "let block = mrlyrs::math::three::ones(2, 1).unwrap();",
        "assert_eq!(mrlyrs::math::three::census::hidden(&block), 24);",
        "```"
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "cell",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "hand",
              "name": "CellNd",
              "dim": 3
            }
          }
        }
      ],
      "ret": {
        "t": "u128"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::three::level_set",
      "name": "level_set",
      "module": "math::three",
      "defined_at": "math/three/designs.rs:197",
      "docs": [
        "Builds the cube filled wherever the residue sum lands in the levels, at the given level.",
        "",
        "Carpet, net and void are the three presets of this one engine: the levels are all a",
        "symmetric cube design ever names.",
        "",
        "```",
        "let sponge = mrlyrs::math::three::level_set(3, &[0, 1], 1, 2).unwrap();",
        "assert_eq!(sponge, mrlyrs::math::three::carpet(3, 1).unwrap());",
        "```",
        "",
        "# Errors",
        "",
        "Errors below level one."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "number",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "levels",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "scalar",
              "name": "usize"
            }
          }
        },
        {
          "name": "level",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "base",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "hand",
          "name": "CellNd",
          "dim": 3
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::three::magic",
      "name": "magic",
      "module": "math::three",
      "defined_at": "math/cell/geometry.rs:23",
      "docs": [
        "Folds two or more cells into one by chained Kronecker combination.",
        "",
        "# Errors",
        "",
        "Errors when the cells differ in shape."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "cells",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "hand",
              "name": "CellNd",
              "dim": null
            }
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "hand",
          "name": "CellNd",
          "dim": null
        }
      },
      "dims": [
        2,
        3
      ],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::three::manhattan_layers",
      "name": "manhattan_layers",
      "module": "math::three",
      "defined_at": "math/three/geometry.rs:193",
      "docs": [
        "Tags every site with its Manhattan distance from the cube's center, the diamond shells.",
        "",
        "The cell's own layers count Chebyshev shells, which are boxes; these are octahedra."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "cell",
          "ty": {
            "t": "hand",
            "name": "CellNd",
            "dim": 3
          }
        }
      ],
      "ret": {
        "t": "hand",
        "name": "CellNd",
        "dim": 3
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::three::merge",
      "name": "merge",
      "module": "math::three",
      "defined_at": "math/three/geometry.rs:49",
      "docs": [
        "Merges the cells into one cube arranged width by height by depth.",
        "",
        "# Errors",
        "",
        "Errors when the cells differ in shape or do not fill the arrangement."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "cells",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "hand",
              "name": "CellNd",
              "dim": 3
            }
          }
        },
        {
          "name": "width",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "height",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "depth",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "hand",
          "name": "CellNd",
          "dim": 3
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::three::mosaic",
      "name": "mosaic",
      "module": "math::three",
      "defined_at": "math/cell/geometry.rs:35",
      "docs": [
        "Builds a cell by placing at each mask site the cell its value indexes.",
        "",
        "# Errors",
        "",
        "Errors when the mask and the cells do not fit one another."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "mask",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "hand",
              "name": "Tensor",
              "dim": null
            }
          }
        },
        {
          "name": "cells",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "hand",
              "name": "CellNd",
              "dim": null
            }
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "hand",
          "name": "CellNd",
          "dim": null
        }
      },
      "dims": [
        2,
        3
      ],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::three::named",
      "name": "named",
      "module": "math::three",
      "defined_at": "math/three/designs.rs:208",
      "docs": [
        "Builds the cube the name picks, deepened to the given fractal level.",
        "",
        "# Errors",
        "",
        "Errors for a design that is not 3d, or a level below one."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "design",
          "ty": {
            "t": "enum",
            "path": "gen::recipe::Design"
          }
        },
        {
          "name": "number",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "level",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "hand",
          "name": "CellNd",
          "dim": 3
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::three::net",
      "name": "net",
      "module": "math::three",
      "defined_at": "math/three/designs.rs:88",
      "docs": [
        "Builds the net cube, filled where at least two coordinates are odd, at the given level.",
        "",
        "# Errors",
        "",
        "Errors below level one."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "number",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "level",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "hand",
          "name": "CellNd",
          "dim": 3
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::three::noise",
      "name": "noise",
      "module": "math::three",
      "defined_at": "math/three/designs.rs:65",
      "docs": [
        "Builds a cube whose every site turns on with probability density, at the given level.",
        "",
        "# Errors",
        "",
        "Errors below level one."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "number",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "level",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "density",
          "ty": {
            "t": "scalar",
            "name": "f64"
          }
        },
        {
          "name": "rng",
          "ty": {
            "t": "ref",
            "mutable": true,
            "lifetime": null,
            "item": {
              "t": "hand",
              "name": "Rng",
              "dim": null
            }
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "hand",
          "name": "CellNd",
          "dim": 3
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::three::ones",
      "name": "ones",
      "module": "math::three",
      "defined_at": "math/three/designs.rs:56",
      "docs": [
        "Builds the solid cube at the given size and level.",
        "",
        "# Errors",
        "",
        "Errors below level one."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "number",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "level",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "hand",
          "name": "CellNd",
          "dim": 3
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::three::orientations",
      "name": "orientations",
      "module": "math::three",
      "defined_at": "math/three/geometry.rs:12",
      "docs": [
        "Returns the 24 rotation triples that reach each distinct cube orientation."
      ],
      "owner": null,
      "self_kind": null,
      "params": [],
      "ret": {
        "t": "vec",
        "item": {
          "t": "tuple",
          "items": [
            {
              "t": "scalar",
              "name": "usize"
            },
            {
              "t": "scalar",
              "name": "usize"
            },
            {
              "t": "scalar",
              "name": "usize"
            }
          ]
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::three::point",
      "name": "point",
      "module": "math::three",
      "defined_at": "math/three/designs.rs:133",
      "docs": [
        "Builds the point cube, filled where every coordinate is odd, at the given level.",
        "",
        "# Errors",
        "",
        "Errors below level one."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "number",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "level",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "hand",
          "name": "CellNd",
          "dim": 3
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::three::profile",
      "name": "profile",
      "module": "math::three",
      "defined_at": "math/three/diagonal.rs:98",
      "docs": [
        "Counts the filled cells on every diagonal plane `x + y + z = s`, for `s` in `0..=3*(side - 1)`.",
        "",
        "The count is the coefficient of the digit polynomial, the product over the scales of the",
        "pattern's weight sums, so no cell of the solid is ever built.",
        "",
        "```",
        "use mrlyrs::math::bang::Code;",
        "let counts = mrlyrs::math::three::profile(Code::from(126u64), 2, 4, 2).unwrap();",
        "assert_eq!(counts[15..=30].iter().copied().collect::<Vec<u128>>(), vec![81u128; 16]);",
        "```",
        "",
        "# Errors",
        "",
        "Errors when the code is out of range, or the level is below one."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "code",
          "ty": {
            "t": "code"
          }
        },
        {
          "name": "number",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "level",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "base",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "vec",
          "item": {
            "t": "u128"
          }
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::three::project",
      "name": "project",
      "module": "math::three",
      "defined_at": "math/three/diagonal.rs:150",
      "docs": [
        "Projects a cell down the `(1,1,1)` axis: `u = (x - y)/sqrt 2`, `v = (x + y - 2z)/sqrt 6`."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "point",
          "ty": {
            "t": "array",
            "item": {
              "t": "scalar",
              "name": "u32"
            },
            "len": 3
          }
        }
      ],
      "ret": {
        "t": "tuple",
        "items": [
          {
            "t": "scalar",
            "name": "f64"
          },
          {
            "t": "scalar",
            "name": "f64"
          }
        ]
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::three::quads",
      "name": "quads",
      "module": "math::three",
      "defined_at": "math/three/faces.rs:69",
      "docs": [
        "Returns one outward quad per exposed face, scaled into the unit box."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "cell",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "hand",
              "name": "CellNd",
              "dim": 3
            }
          }
        }
      ],
      "ret": {
        "t": "vec",
        "item": {
          "t": "plain",
          "path": "math::three::Quad"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::three::shadow",
      "name": "shadow",
      "module": "math::three",
      "defined_at": "math/three/diagonal.rs:156",
      "docs": [
        "Returns the integer shadow `(x - y, x + y - 2z)`, the projection with its irrational scales dropped."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "point",
          "ty": {
            "t": "array",
            "item": {
              "t": "scalar",
              "name": "u32"
            },
            "len": 3
          }
        }
      ],
      "ret": {
        "t": "tuple",
        "items": [
          {
            "t": "scalar",
            "name": "i64"
          },
          {
            "t": "scalar",
            "name": "i64"
          }
        ]
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::three::slice",
      "name": "slice",
      "module": "math::three",
      "defined_at": "math/three/geometry.rs:102",
      "docs": [
        "Takes the flat cell left when one axis of the cube is fixed at an index, colors and tags with it.",
        "",
        "```",
        "let sponge = mrlyrs::math::three::carpet(3, 2).unwrap();",
        "let front = mrlyrs::math::three::slice(&sponge, 2, 0).unwrap();",
        "assert_eq!(front, mrlyrs::math::two::carpet(3, 2).unwrap());",
        "```",
        "",
        "# Errors",
        "",
        "Errors when the axis or the index is past the cube."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "cell",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "hand",
              "name": "CellNd",
              "dim": 3
            }
          }
        },
        {
          "name": "axis",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "index",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "hand",
          "name": "CellNd",
          "dim": 2
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::three::special",
      "name": "special",
      "module": "math::three",
      "defined_at": "math/three/geometry.rs:58",
      "docs": [
        "Orients a copy of the cell by each mask value and merges them in the mask's shape.",
        "",
        "# Errors",
        "",
        "Errors when the mask is not 3d, or holds a value past twenty-three."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "mask",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "hand",
              "name": "Tensor",
              "dim": null
            }
          }
        },
        {
          "name": "cell",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "hand",
              "name": "CellNd",
              "dim": 3
            }
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "hand",
          "name": "CellNd",
          "dim": 3
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::three::star",
      "name": "star",
      "module": "math::three",
      "defined_at": "math/three/designs.rs:178",
      "docs": [
        "Builds the star cube, filled where exactly one coordinate is odd, at the given level.",
        "",
        "# Errors",
        "",
        "Errors below level one."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "number",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "level",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "hand",
          "name": "CellNd",
          "dim": 3
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::three::support",
      "name": "support",
      "module": "math::three",
      "defined_at": "math/three/diagonal.rs:104",
      "docs": [
        "Returns the first and last height a profile fills, or none when the design is empty."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "counts",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "u128"
            }
          }
        }
      ],
      "ret": {
        "t": "option",
        "item": {
          "t": "tuple",
          "items": [
            {
              "t": "scalar",
              "name": "usize"
            },
            {
              "t": "scalar",
              "name": "usize"
            }
          ]
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::three::surface",
      "name": "surface",
      "module": "math::three",
      "defined_at": "math/three/census.rs:49",
      "docs": [
        "Returns the count of filled faces exposed to void or the outside.",
        "",
        "```",
        "let sponge = mrlyrs::math::three::carpet(3, 1).unwrap();",
        "assert_eq!(mrlyrs::math::three::census::surface(&sponge), 72);",
        "```"
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "cell",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "hand",
              "name": "CellNd",
              "dim": 3
            }
          }
        }
      ],
      "ret": {
        "t": "u128"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::three::text",
      "name": "text",
      "module": "math::three",
      "defined_at": "math/three/renderer.rs:14",
      "docs": [
        "Renders the cube as rows of glyphs, plane after plane, or of digits where no glyph is mapped.",
        "",
        "```",
        "let cell = mrlyrs::math::three::carpet(3, 1).unwrap();",
        "let rows = mrlyrs::math::three::text(&cell, None);",
        "assert_eq!(rows.len(), 9);",
        "assert_eq!(&rows[..3], [\"111\", \"101\", \"111\"]);",
        "```"
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "cell",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "hand",
              "name": "CellNd",
              "dim": 3
            }
          }
        },
        {
          "name": "glyphs",
          "ty": {
            "t": "option",
            "item": {
              "t": "ref",
              "mutable": false,
              "lifetime": null,
              "item": {
                "t": "map",
                "key": {
                  "t": "scalar",
                  "name": "u8"
                },
                "value": {
                  "t": "string"
                }
              }
            }
          }
        }
      ],
      "ret": {
        "t": "vec",
        "item": {
          "t": "string"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::three::to_json",
      "name": "to_json",
      "module": "math::three",
      "defined_at": "math/three/serializer.rs:51",
      "docs": [
        "Serializes the cell's shape and types to JSON, with colors and tags when present."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "cell",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "hand",
              "name": "CellNd",
              "dim": 3
            }
          }
        }
      ],
      "ret": {
        "t": "string"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::three::to_obj",
      "name": "to_obj",
      "module": "math::three",
      "defined_at": "math/three/renderer.rs:38",
      "docs": [
        "Writes the cube's exposed quads as a Wavefront OBJ, one shared vertex per corner.",
        "",
        "```",
        "let obj = mrlyrs::math::three::to_obj(&mrlyrs::math::three::carpet(3, 1).unwrap());",
        "assert_eq!(obj.lines().filter(|line| line.starts_with(\"v \")).count(), 64);",
        "assert_eq!(obj.lines().filter(|line| line.starts_with(\"f \")).count(), 72);",
        "```"
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "cell",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "hand",
              "name": "CellNd",
              "dim": 3
            }
          }
        }
      ],
      "ret": {
        "t": "string"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::three::to_strings",
      "name": "to_strings",
      "module": "math::three",
      "defined_at": "math/three/serializer.rs:96",
      "docs": [
        "Unrolls the cube into one string of digits per row, grouped plane by plane.",
        "",
        "```",
        "let rows = mrlyrs::math::three::to_strings(&mrlyrs::math::three::carpet(3, 1).unwrap());",
        "assert_eq!(rows[0], [\"111\", \"101\", \"111\"]);",
        "```"
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "cell",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "hand",
              "name": "CellNd",
              "dim": 3
            }
          }
        }
      ],
      "ret": {
        "t": "vec",
        "item": {
          "t": "vec",
          "item": {
            "t": "string"
          }
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::three::tunnel_graph",
      "name": "tunnel_graph",
      "module": "math::three",
      "defined_at": "math/cell/graph.rs:29",
      "docs": [
        "Extracts the network of empty sites joined to their axis neighbors.",
        "",
        "# Errors",
        "",
        "Errors when the cell is neither two- nor three-dimensional."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "cell",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "hand",
              "name": "CellNd",
              "dim": null
            }
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "class",
          "path": "math::graph::Network",
          "dim": null
        }
      },
      "dims": [
        2,
        3
      ],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::three::void",
      "name": "void",
      "module": "math::three",
      "defined_at": "math/three/designs.rs:124",
      "docs": [
        "Builds the checkerboard cube, filled where all coordinate parities agree, at the given level.",
        "",
        "# Errors",
        "",
        "Errors below level one."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "number",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "level",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "hand",
          "name": "CellNd",
          "dim": 3
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::three::voids",
      "name": "voids",
      "module": "math::three",
      "defined_at": "math/three/census.rs:34",
      "docs": [
        "Returns the count of empty sites."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "cell",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "hand",
              "name": "CellNd",
              "dim": 3
            }
          }
        }
      ],
      "ret": {
        "t": "scalar",
        "name": "usize"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::three::volume",
      "name": "volume",
      "module": "math::three",
      "defined_at": "math/three/census.rs:39",
      "docs": [
        "Returns the filled-site count, the cube's volume."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "cell",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "hand",
              "name": "CellNd",
              "dim": 3
            }
          }
        }
      ],
      "ret": {
        "t": "scalar",
        "name": "usize"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::three::wires",
      "name": "wires",
      "module": "math::three",
      "defined_at": "math/three/faces.rs:172",
      "docs": [
        "Returns the cell's edge-graph segments, scaled into the unit box."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "cell",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "hand",
              "name": "CellNd",
              "dim": 3
            }
          }
        }
      ],
      "ret": {
        "t": "vec",
        "item": {
          "t": "array",
          "item": {
            "t": "class",
            "path": "math::three::Vec3",
            "dim": null
          },
          "len": 2
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::three::xline",
      "name": "xline",
      "module": "math::three",
      "defined_at": "math/three/designs.rs:151",
      "docs": [
        "Builds the cube of rods along the x axis at the given size and level.",
        "",
        "# Errors",
        "",
        "Errors below level one."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "number",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "level",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "hand",
          "name": "CellNd",
          "dim": 3
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::three::xtree",
      "name": "xtree",
      "module": "math::three",
      "defined_at": "math/three/designs.rs:97",
      "docs": [
        "Builds the cube of beams along the x axis at the given size and level.",
        "",
        "# Errors",
        "",
        "Errors below level one."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "number",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "level",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "hand",
          "name": "CellNd",
          "dim": 3
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::three::yline",
      "name": "yline",
      "module": "math::three",
      "defined_at": "math/three/designs.rs:160",
      "docs": [
        "Builds the cube of rods along the y axis at the given size and level.",
        "",
        "# Errors",
        "",
        "Errors below level one."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "number",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "level",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "hand",
          "name": "CellNd",
          "dim": 3
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::three::ytree",
      "name": "ytree",
      "module": "math::three",
      "defined_at": "math/three/designs.rs:106",
      "docs": [
        "Builds the cube of beams along the y axis at the given size and level.",
        "",
        "# Errors",
        "",
        "Errors below level one."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "number",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "level",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "hand",
          "name": "CellNd",
          "dim": 3
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::three::zeros",
      "name": "zeros",
      "module": "math::three",
      "defined_at": "math/three/designs.rs:47",
      "docs": [
        "Builds the all-void cube at the given size and level.",
        "",
        "# Errors",
        "",
        "Errors below level one."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "number",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "level",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "hand",
          "name": "CellNd",
          "dim": 3
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::three::zline",
      "name": "zline",
      "module": "math::three",
      "defined_at": "math/three/designs.rs:169",
      "docs": [
        "Builds the cube of rods along the z axis at the given size and level.",
        "",
        "# Errors",
        "",
        "Errors below level one."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "number",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "level",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "hand",
          "name": "CellNd",
          "dim": 3
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::three::ztree",
      "name": "ztree",
      "module": "math::three",
      "defined_at": "math/three/designs.rs:115",
      "docs": [
        "Builds the cube of beams along the z axis at the given size and level.",
        "",
        "# Errors",
        "",
        "Errors below level one."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "number",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "level",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "hand",
          "name": "CellNd",
          "dim": 3
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::tourbillon::eyes",
      "name": "eyes",
      "module": "math::tourbillon",
      "defined_at": "math/tourbillon.rs:92",
      "docs": [
        "The angles a quarter turn shares with itself: ninety a over q for every q up to the cap and every a from zero to four q coprime to it, sorted by angle.",
        "",
        "The odd carpet is unchanged by a quarter turn, so two layers whose angles agree modulo ninety stand on one exact lattice of nodes and the stack stops moving there.",
        "",
        "```",
        "let list = mrlyrs::math::tourbillon::eyes(2);",
        "assert_eq!(list.len(), 9);",
        "assert_eq!(list[1].angle, 45.0);",
        "```"
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "qmax",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "vec",
        "item": {
          "t": "plain",
          "path": "math::tourbillon::Eye"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::tourbillon::field",
      "name": "field",
      "module": "math::tourbillon",
      "defined_at": "math/tourbillon.rs:483",
      "docs": [
        "Spins the odd parity carpets at the scales one, three, five up to the top into one stack on a square of the size, every layer turned about the centre by its own angle and masked to the inscribed disc, so every pixel sees every layer.",
        "",
        "The schedule is unspun, degrees, golden, primes, random or gaussian, the layer set is odd, primes, squarefree or prime powers, the weights are plain, mobius or harmonic, the render mode is cells, edges or corners and the blend is mean, sum, union, meet, parity or difference. The weights are scaled to average magnitude one and apply only under the linear blends, so mean is paper coverage and sum is the inked layer count. Sites outside the disc are NaN.",
        "",
        "# Errors",
        "",
        "Errors at a raster or top out of range, or for a schedule, set, weights or blend name the stack does not know."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "top",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "size",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "schedule",
          "ty": {
            "t": "str"
          }
        },
        {
          "name": "increment",
          "ty": {
            "t": "scalar",
            "name": "f64"
          }
        },
        {
          "name": "set",
          "ty": {
            "t": "str"
          }
        },
        {
          "name": "weights",
          "ty": {
            "t": "str"
          }
        },
        {
          "name": "mode",
          "ty": {
            "t": "str"
          }
        },
        {
          "name": "blend",
          "ty": {
            "t": "str"
          }
        },
        {
          "name": "seed",
          "ty": {
            "t": "scalar",
            "name": "u32"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "vec",
          "item": {
            "t": "scalar",
            "name": "f32"
          }
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::tourbillon::layers",
      "name": "layers",
      "module": "math::tourbillon",
      "defined_at": "math/tourbillon.rs:212",
      "docs": [
        "The layers of a stack: every scale one, three, five up to the top the set keeps, each with its weight and its angle.",
        "",
        "The schedule is unspun, degrees, golden, primes, random or gaussian, the layer set is odd, primes, squarefree or prime powers and the weights are plain, mobius or harmonic. The weights are rescaled so their magnitudes sum to the layer count, so the mean blend stays paper coverage and the sum blend stays the inked layer count.",
        "",
        "# Errors",
        "",
        "Errors at an even top or one out of range, or for a schedule, set or weights name the stack does not know."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "top",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "schedule",
          "ty": {
            "t": "str"
          }
        },
        {
          "name": "increment",
          "ty": {
            "t": "scalar",
            "name": "f64"
          }
        },
        {
          "name": "set",
          "ty": {
            "t": "str"
          }
        },
        {
          "name": "weights",
          "ty": {
            "t": "str"
          }
        },
        {
          "name": "seed",
          "ty": {
            "t": "scalar",
            "name": "u32"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "vec",
          "item": {
            "t": "plain",
            "path": "math::tourbillon::Layer"
          }
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::tourbillon::period",
      "name": "period",
      "module": "math::tourbillon",
      "defined_at": "math/tourbillon.rs:116",
      "docs": [
        "The least whole number of increments that closes a quarter turn, none once the count passes the cap.",
        "",
        "```",
        "assert_eq!(mrlyrs::math::tourbillon::period(18.0), Some(5));",
        "assert_eq!(mrlyrs::math::tourbillon::period(1.0), Some(90));",
        "```"
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "increment",
          "ty": {
            "t": "scalar",
            "name": "f64"
          }
        }
      ],
      "ret": {
        "t": "option",
        "item": {
          "t": "scalar",
          "name": "usize"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::tourbillon::sharing",
      "name": "sharing",
      "module": "math::tourbillon",
      "defined_at": "math/tourbillon.rs:133",
      "docs": [
        "The angle classes of a stack read a quarter turn apart: how many the layers fall in, and how many layer pairs share one."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "list",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "plain",
              "path": "math::tourbillon::Layer"
            }
          }
        }
      ],
      "ret": {
        "t": "tuple",
        "items": [
          {
            "t": "scalar",
            "name": "usize"
          },
          {
            "t": "scalar",
            "name": "usize"
          }
        ]
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::tourbillon::stack",
      "name": "stack",
      "module": "math::tourbillon",
      "defined_at": "math/tourbillon.rs:377",
      "docs": [
        "Rasters the layers onto a square of the size, every one turned about the centre by its own angle and masked to the inscribed disc, then merged site by site.",
        "",
        "The render mode is cells, the lit squares of the carpet, edges, the boundaries between its cells, or corners, the vertices of its lit squares. The weights ride on the layers under the linear blends only. Sites outside the disc are NaN.",
        "",
        "# Errors",
        "",
        "Errors for a mode that is not cells, edges or corners, or a raster past the site budget."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "list",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "plain",
              "path": "math::tourbillon::Layer"
            }
          }
        },
        {
          "name": "size",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "mode",
          "ty": {
            "t": "str"
          }
        },
        {
          "name": "blend",
          "ty": {
            "t": "enum",
            "path": "math::spin::Blend"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "vec",
          "item": {
            "t": "scalar",
            "name": "f32"
          }
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::tourbillon::stats",
      "name": "stats",
      "module": "math::tourbillon",
      "defined_at": "math/tourbillon.rs:508",
      "docs": [
        "Reads a spun stack against the schedule that made it: the layer count, the first eight scales and angles, the mean and RMS contrast over the disc, that contrast times the root of the layer count, the exact centre value, whether the blend carries the weights, the span the raster covers and the brightest three sites.",
        "",
        "The centre is computed from the layers at the exact half-half point, never sampled off the raster, so no turn of the layers moves it.",
        "",
        "# Errors",
        "",
        "Errors when the field is not size by size, or a name the stack does not know."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "field",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "scalar",
              "name": "f32"
            }
          }
        },
        {
          "name": "size",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "top",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "schedule",
          "ty": {
            "t": "str"
          }
        },
        {
          "name": "increment",
          "ty": {
            "t": "scalar",
            "name": "f64"
          }
        },
        {
          "name": "set",
          "ty": {
            "t": "str"
          }
        },
        {
          "name": "weights",
          "ty": {
            "t": "str"
          }
        },
        {
          "name": "blend",
          "ty": {
            "t": "str"
          }
        },
        {
          "name": "seed",
          "ty": {
            "t": "scalar",
            "name": "u32"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "plain",
          "path": "math::tourbillon::Stats"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::two::capacity",
      "name": "capacity",
      "module": "math::two",
      "defined_at": "math/two/payload.rs:33",
      "docs": [
        "Returns the payload bytes the cell's filled sites can hold, its length header paid for.",
        "",
        "```",
        "let cell = mrlyrs::math::two::carpet(3, 3).unwrap();",
        "assert_eq!(mrlyrs::math::two::payload::capacity(&cell), 60);",
        "```"
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "cell",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "hand",
              "name": "CellNd",
              "dim": 2
            }
          }
        }
      ],
      "ret": {
        "t": "scalar",
        "name": "usize"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::two::carpet",
      "name": "carpet",
      "module": "math::two",
      "defined_at": "math/two/designs.rs:136",
      "docs": [
        "Builds the carpet fractal, its seed pierced at every odd-odd site, deepened to the level.",
        "",
        "```",
        "let cell = mrlyrs::math::two::carpet(3, 2).unwrap();",
        "assert_eq!((cell.width(), mrlyrs::math::two::fills(&cell)), (9, 64));",
        "```",
        "",
        "# Errors",
        "",
        "Errors below level one."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "number",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "level",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "hand",
          "name": "CellNd",
          "dim": 2
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::two::census",
      "name": "census",
      "module": "math::two",
      "defined_at": "math/two/census.rs:70",
      "docs": [
        "Takes the cell's full census in one reading.",
        "",
        "```",
        "let cell = mrlyrs::math::two::carpet(3, 1).unwrap();",
        "let census = mrlyrs::math::two::census::census(&cell).unwrap();",
        "assert_eq!((census.fills, census.voids, census.perimeter), (8, 1, 16));",
        "assert_eq!((census.vertices, census.edges, census.euler), (16, 24, 0));",
        "```",
        "",
        "# Errors",
        "",
        "Errors when the edge network cannot be lifted from the cell."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "cell",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "hand",
              "name": "CellNd",
              "dim": 2
            }
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "plain",
          "path": "math::two::Census"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::two::create",
      "name": "create",
      "module": "math::two",
      "defined_at": "math/two/designs.rs:25",
      "docs": [
        "Builds the design a universe code names, deepened to the level and rotated by quarter-turns.",
        "",
        "# Errors",
        "",
        "Errors when the code is out of range, or the level is below one."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "code",
          "ty": {
            "t": "code"
          }
        },
        {
          "name": "number",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "level",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "rotation",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "base",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "hand",
          "name": "CellNd",
          "dim": 2
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::two::dust",
      "name": "dust",
      "module": "math::two",
      "defined_at": "math/two/designs.rs:190",
      "docs": [
        "Builds the dust fractal, its seed on at every even-even site, deepened to the level.",
        "",
        "# Errors",
        "",
        "Errors below level one."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "number",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "level",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "hand",
          "name": "CellNd",
          "dim": 2
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::two::embed",
      "name": "embed",
      "module": "math::two",
      "defined_at": "math/two/payload.rs:42",
      "docs": [
        "Writes the payload over the cell's filled sites, repeating it until every site is spoken for.",
        "",
        "# Errors",
        "",
        "Errors when the payload needs more sites than the cell carries."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "cell",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "hand",
              "name": "CellNd",
              "dim": 2
            }
          }
        },
        {
          "name": "payload",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "scalar",
              "name": "u8"
            }
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "hand",
          "name": "CellNd",
          "dim": 2
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::two::euler",
      "name": "euler",
      "module": "math::two",
      "defined_at": "math/two/census.rs:53",
      "docs": [
        "Returns the Euler characteristic of the filled sites, vertices less edges plus faces.",
        "",
        "```",
        "let solid = mrlyrs::math::two::ones(4, 1).unwrap();",
        "assert_eq!(mrlyrs::math::two::census::euler(&solid).unwrap(), 1);",
        "let ring = mrlyrs::math::two::carpet(3, 1).unwrap();",
        "assert_eq!(mrlyrs::math::two::census::euler(&ring).unwrap(), 0);",
        "```",
        "",
        "# Errors",
        "",
        "Errors when the edge network cannot be lifted from the cell."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "cell",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "hand",
              "name": "CellNd",
              "dim": 2
            }
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "scalar",
          "name": "i64"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::two::extract",
      "name": "extract",
      "module": "math::two",
      "defined_at": "math/two/payload.rs:64",
      "docs": [
        "Reads the payload back, the plain cell naming the sites the carried one wrote over.",
        "",
        "# Errors",
        "",
        "Errors when the two cells differ in shape, or the header does not fit."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "carrier",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "hand",
              "name": "CellNd",
              "dim": 2
            }
          }
        },
        {
          "name": "carried",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "hand",
              "name": "CellNd",
              "dim": 2
            }
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "vec",
          "item": {
            "t": "scalar",
            "name": "u8"
          }
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::two::fills",
      "name": "fills",
      "module": "math::two",
      "defined_at": "math/two/census.rs:27",
      "docs": [
        "Counts the filled sites of the cell."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "cell",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "hand",
              "name": "CellNd",
              "dim": 2
            }
          }
        }
      ],
      "ret": {
        "t": "scalar",
        "name": "usize"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::two::from_corners",
      "name": "from_corners",
      "module": "math::two",
      "defined_at": "math/two/designs.rs:40",
      "docs": [
        "Builds the design straight from its filled residue corners, deepened to the level and rotated by quarter-turns.",
        "",
        "# Errors",
        "",
        "Errors when a corner does not fit the dimension and base, or the level is below one."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "corners",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "vec",
              "item": {
                "t": "scalar",
                "name": "u8"
              }
            }
          }
        },
        {
          "name": "number",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "level",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "rotation",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "base",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "hand",
          "name": "CellNd",
          "dim": 2
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::two::from_json",
      "name": "from_json",
      "module": "math::two",
      "defined_at": "math/two/serializer.rs:62",
      "docs": [
        "Restores a cell from its JSON string, colors and tags included.",
        "",
        "# Errors",
        "",
        "Errors when the text is not a flat cell."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "text",
          "ty": {
            "t": "str"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "hand",
          "name": "CellNd",
          "dim": 2
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::two::from_strings",
      "name": "from_strings",
      "module": "math::two",
      "defined_at": "math/two/serializer.rs:82",
      "docs": [
        "Builds a cell from rows of digits, the inverse of the text rendering.",
        "",
        "# Errors",
        "",
        "Errors when a row is empty, ragged, or holds anything but decimal digits."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "rows",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "string"
            }
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "hand",
          "name": "CellNd",
          "dim": 2
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::two::hline",
      "name": "hline",
      "module": "math::two",
      "defined_at": "math/two/designs.rs:199",
      "docs": [
        "Builds the hline fractal, its seed striped along odd rows, deepened to the level.",
        "",
        "# Errors",
        "",
        "Errors below level one."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "number",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "level",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "hand",
          "name": "CellNd",
          "dim": 2
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::two::htree",
      "name": "htree",
      "module": "math::two",
      "defined_at": "math/two/designs.rs:154",
      "docs": [
        "Builds the htree fractal, its seed striped along even rows, deepened to the level.",
        "",
        "# Errors",
        "",
        "Errors below level one."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "number",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "level",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "hand",
          "name": "CellNd",
          "dim": 2
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::two::level_set",
      "name": "level_set",
      "module": "math::two",
      "defined_at": "math/two/designs.rs:67",
      "docs": [
        "Builds the level-set design, filling every residue corner whose digits sum to a named level.",
        "",
        "```",
        "let n = 5;",
        "assert_eq!(",
        "    mrlyrs::math::two::level_set(n, &[0, 1], 1, 0, 2).unwrap(),",
        "    mrlyrs::math::two::carpet(n, 1).unwrap()",
        ");",
        "```",
        "",
        "# Errors",
        "",
        "Errors below level one."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "number",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "levels",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "scalar",
              "name": "usize"
            }
          }
        },
        {
          "name": "level",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "rotation",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "base",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "hand",
          "name": "CellNd",
          "dim": 2
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::two::mask",
      "name": "mask",
      "module": "math::two",
      "defined_at": "math/two/geometry.rs:116",
      "docs": [
        "Tiles the mask over the shape and crops it, the perforation pattern itself.",
        "",
        "# Errors",
        "",
        "Errors when the mask or the shape is not two-axis, or the mask is empty."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "mask",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "hand",
              "name": "Tensor",
              "dim": null
            }
          }
        },
        {
          "name": "shape",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "scalar",
              "name": "usize"
            }
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "hand",
          "name": "Tensor",
          "dim": null
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::two::merge",
      "name": "merge",
      "module": "math::two",
      "defined_at": "math/two/geometry.rs:50",
      "docs": [
        "Merges same-shaped cells into one block of the given width and height in cells, colors and tags kept.",
        "",
        "# Errors",
        "",
        "Errors on an empty list, a wrong cell count, or cells of different shapes."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "cells",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "hand",
              "name": "CellNd",
              "dim": 2
            }
          }
        },
        {
          "name": "width",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "height",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "hand",
          "name": "CellNd",
          "dim": 2
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::two::named",
      "name": "named",
      "module": "math::two",
      "defined_at": "math/two/designs.rs:82",
      "docs": [
        "Builds the design the name picks, deepened to the level and rotated by quarter-turns.",
        "",
        "# Errors",
        "",
        "Errors for a design that is not 2d, or a level below one."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "design",
          "ty": {
            "t": "enum",
            "path": "gen::recipe::Design"
          }
        },
        {
          "name": "number",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "level",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "rotation",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "hand",
          "name": "CellNd",
          "dim": 2
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::two::net",
      "name": "net",
      "module": "math::two",
      "defined_at": "math/two/designs.rs:145",
      "docs": [
        "Builds the net fractal, its seed on wherever a coordinate is odd, deepened to the level.",
        "",
        "# Errors",
        "",
        "Errors below level one."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "number",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "level",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "hand",
          "name": "CellNd",
          "dim": 2
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::two::noise",
      "name": "noise",
      "module": "math::two",
      "defined_at": "math/two/designs.rs:122",
      "docs": [
        "Builds a random cell, each seed site drawn on with probability density, deepened to the level.",
        "",
        "# Errors",
        "",
        "Errors below level one."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "number",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "level",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "density",
          "ty": {
            "t": "scalar",
            "name": "f64"
          }
        },
        {
          "name": "rng",
          "ty": {
            "t": "ref",
            "mutable": true,
            "lifetime": null,
            "item": {
              "t": "hand",
              "name": "Rng",
              "dim": null
            }
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "hand",
          "name": "CellNd",
          "dim": 2
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::two::ones",
      "name": "ones",
      "module": "math::two",
      "defined_at": "math/two/designs.rs:113",
      "docs": [
        "Builds an all-filled cell of the given size and level.",
        "",
        "# Errors",
        "",
        "Errors below level one."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "number",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "level",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "hand",
          "name": "CellNd",
          "dim": 2
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::two::payload::frame",
      "name": "frame",
      "module": "math::two::payload",
      "defined_at": "math/two/payload.rs:19",
      "docs": [
        "The five by five mask a carried mosaic lays its four tiles out under."
      ],
      "owner": null,
      "self_kind": null,
      "params": [],
      "ret": {
        "t": "hand",
        "name": "Tensor",
        "dim": null
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::two::perimeter",
      "name": "perimeter",
      "module": "math::two",
      "defined_at": "math/two/census.rs:37",
      "docs": [
        "Counts the faces of filled sites open to emptiness or the border."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "cell",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "hand",
              "name": "CellNd",
              "dim": 2
            }
          }
        }
      ],
      "ret": {
        "t": "u128"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::two::png",
      "name": "png",
      "module": "math::two",
      "defined_at": "math/two/renderer.rs:127",
      "docs": [
        "Renders the cell to PNG bytes at the given pixel scale, stroked and padded when an outline is given.",
        "",
        "# Errors",
        "",
        "Errors when the encoder refuses the cell's size or scale."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "cell",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "hand",
              "name": "CellNd",
              "dim": 2
            }
          }
        },
        {
          "name": "scale",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "outline",
          "ty": {
            "t": "option",
            "item": {
              "t": "hand",
              "name": "Color",
              "dim": null
            }
          }
        },
        {
          "name": "width",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "shape",
          "ty": {
            "t": "enum",
            "path": "math::two::Shape"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "vec",
          "item": {
            "t": "scalar",
            "name": "u8"
          }
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::two::point",
      "name": "point",
      "module": "math::two",
      "defined_at": "math/two/designs.rs:181",
      "docs": [
        "Builds the point fractal, its seed on at every odd-odd site, deepened to the level.",
        "",
        "# Errors",
        "",
        "Errors below level one."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "number",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "level",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "hand",
          "name": "CellNd",
          "dim": 2
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::two::read",
      "name": "read",
      "module": "math::two",
      "defined_at": "math/two/payload.rs:109",
      "docs": [
        "Reads the payload back from a framed sheet, the plain fourth cell naming the sites.",
        "",
        "# Errors",
        "",
        "Errors when the sheet is not five carriers across and down."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "sheet",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "hand",
              "name": "CellNd",
              "dim": 2
            }
          }
        },
        {
          "name": "carrier",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "hand",
              "name": "CellNd",
              "dim": 2
            }
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "vec",
          "item": {
            "t": "scalar",
            "name": "u8"
          }
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::two::sheet",
      "name": "sheet",
      "module": "math::two",
      "defined_at": "math/two/payload.rs:93",
      "docs": [
        "Builds the framed sheet of four same-sized cells, the fourth carrying the payload.",
        "",
        "# Errors",
        "",
        "Errors when the payload needs more sites than the carrier holds."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "cells",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "array",
              "item": {
                "t": "hand",
                "name": "CellNd",
                "dim": 2
              },
              "len": 4
            }
          }
        },
        {
          "name": "payload",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "scalar",
              "name": "u8"
            }
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "hand",
          "name": "CellNd",
          "dim": 2
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::two::special",
      "name": "special",
      "module": "math::two",
      "defined_at": "math/two/geometry.rs:84",
      "docs": [
        "Tiles quarter-turned copies of the cell as the 2d mask directs.",
        "",
        "# Errors",
        "",
        "Errors when the mask is not 2d, or holds a rotation past three."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "mask",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "hand",
              "name": "Tensor",
              "dim": null
            }
          }
        },
        {
          "name": "cell",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "hand",
              "name": "CellNd",
              "dim": 2
            }
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "hand",
          "name": "CellNd",
          "dim": 2
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::two::star",
      "name": "star",
      "module": "math::two",
      "defined_at": "math/two/designs.rs:217",
      "docs": [
        "Builds the star fractal, its seed on where exactly one coordinate is odd, deepened to the level.",
        "",
        "# Errors",
        "",
        "Errors below level one."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "number",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "level",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "hand",
          "name": "CellNd",
          "dim": 2
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::two::svg",
      "name": "svg",
      "module": "math::two",
      "defined_at": "math/two/renderer.rs:213",
      "docs": [
        "Renders the cell to an SVG string at the given scale, stroked and padded when an outline is given.",
        "",
        "```",
        "let cell = mrlyrs::math::two::carpet(3, 1).unwrap();",
        "let sheet = mrlyrs::math::two::svg(&cell, 1, None, 1, mrlyrs::math::two::Shape::Square);",
        "assert_eq!(sheet.len(), 698);",
        "```"
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "cell",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "hand",
              "name": "CellNd",
              "dim": 2
            }
          }
        },
        {
          "name": "scale",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "outline",
          "ty": {
            "t": "option",
            "item": {
              "t": "hand",
              "name": "Color",
              "dim": null
            }
          }
        },
        {
          "name": "width",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "shape",
          "ty": {
            "t": "enum",
            "path": "math::two::Shape"
          }
        }
      ],
      "ret": {
        "t": "string"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::two::text",
      "name": "text",
      "module": "math::two",
      "defined_at": "math/two/renderer.rs:39",
      "docs": [
        "Renders the cell as rows of glyphs, or of digits where no glyph is mapped.",
        "",
        "```",
        "let cell = mrlyrs::math::two::carpet(3, 1).unwrap();",
        "assert_eq!(mrlyrs::math::two::text(&cell, None), vec![\"111\", \"101\", \"111\"]);",
        "```"
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "cell",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "hand",
              "name": "CellNd",
              "dim": 2
            }
          }
        },
        {
          "name": "glyphs",
          "ty": {
            "t": "option",
            "item": {
              "t": "ref",
              "mutable": false,
              "lifetime": null,
              "item": {
                "t": "map",
                "key": {
                  "t": "scalar",
                  "name": "u8"
                },
                "value": {
                  "t": "string"
                }
              }
            }
          }
        }
      ],
      "ret": {
        "t": "vec",
        "item": {
          "t": "string"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::two::to_3d",
      "name": "to_3d",
      "module": "math::two",
      "defined_at": "math/two/geometry.rs:106",
      "docs": [
        "Lifts the flat cell into a cube one site deep, colors and tags with it.",
        "",
        "```",
        "let flat = mrlyrs::math::two::carpet(3, 2).unwrap();",
        "let solid = mrlyrs::math::two::to_3d(&flat);",
        "assert_eq!(mrlyrs::math::three::slice(&solid, 0, 0).unwrap(), flat);",
        "```"
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "cell",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "hand",
              "name": "CellNd",
              "dim": 2
            }
          }
        }
      ],
      "ret": {
        "t": "hand",
        "name": "CellNd",
        "dim": 3
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::two::to_json",
      "name": "to_json",
      "module": "math::two",
      "defined_at": "math/two/serializer.rs:37",
      "docs": [
        "Serializes the cell to a JSON string of its types, with colors and tags when present.",
        "",
        "```",
        "let cell = mrlyrs::math::two::carpet(3, 1).unwrap();",
        "let text = mrlyrs::math::two::to_json(&cell);",
        "assert_eq!(mrlyrs::math::two::from_json(&text).unwrap(), cell);",
        "```"
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "cell",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "hand",
              "name": "CellNd",
              "dim": 2
            }
          }
        }
      ],
      "ret": {
        "t": "string"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::two::vline",
      "name": "vline",
      "module": "math::two",
      "defined_at": "math/two/designs.rs:208",
      "docs": [
        "Builds the vline fractal, its seed striped along odd columns, deepened to the level.",
        "",
        "# Errors",
        "",
        "Errors below level one."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "number",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "level",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "hand",
          "name": "CellNd",
          "dim": 2
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::two::void",
      "name": "void",
      "module": "math::two",
      "defined_at": "math/two/designs.rs:172",
      "docs": [
        "Builds the void fractal, its seed a checkerboard on even parity, deepened to the level.",
        "",
        "# Errors",
        "",
        "Errors below level one."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "number",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "level",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "hand",
          "name": "CellNd",
          "dim": 2
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::two::voids",
      "name": "voids",
      "module": "math::two",
      "defined_at": "math/two/census.rs:32",
      "docs": [
        "Counts the empty sites of the cell."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "cell",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "hand",
              "name": "CellNd",
              "dim": 2
            }
          }
        }
      ],
      "ret": {
        "t": "scalar",
        "name": "usize"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::two::vtree",
      "name": "vtree",
      "module": "math::two",
      "defined_at": "math/two/designs.rs:163",
      "docs": [
        "Builds the vtree fractal, its seed striped along even columns, deepened to the level.",
        "",
        "# Errors",
        "",
        "Errors below level one."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "number",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "level",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "hand",
          "name": "CellNd",
          "dim": 2
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "math::two::zeros",
      "name": "zeros",
      "module": "math::two",
      "defined_at": "math/two/designs.rs:104",
      "docs": [
        "Builds an all-empty cell of the given size and level.",
        "",
        "# Errors",
        "",
        "Errors below level one."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "number",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "level",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "hand",
          "name": "CellNd",
          "dim": 2
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::apollonian::Circle::centre",
      "name": "centre",
      "module": "num::apollonian",
      "defined_at": "num/apollonian.rs:40",
      "docs": [
        "The centre, none on a line."
      ],
      "owner": "num::apollonian::Circle",
      "self_kind": "value",
      "params": [],
      "ret": {
        "t": "option",
        "item": {
          "t": "tuple",
          "items": [
            {
              "t": "scalar",
              "name": "f64"
            },
            {
              "t": "scalar",
              "name": "f64"
            }
          ]
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::apollonian::Circle::is_line",
      "name": "is_line",
      "module": "num::apollonian",
      "defined_at": "num/apollonian.rs:30",
      "docs": [
        "Whether the circle is a line."
      ],
      "owner": "num::apollonian::Circle",
      "self_kind": "value",
      "params": [],
      "ret": {
        "t": "scalar",
        "name": "bool"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::apollonian::Circle::radius",
      "name": "radius",
      "module": "num::apollonian",
      "defined_at": "num/apollonian.rs:35",
      "docs": [
        "The radius, none on a line."
      ],
      "owner": "num::apollonian::Circle",
      "self_kind": "value",
      "params": [],
      "ret": {
        "t": "option",
        "item": {
          "t": "scalar",
          "name": "f64"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::apollonian::form",
      "name": "form",
      "module": "num::apollonian",
      "defined_at": "num/apollonian.rs:64",
      "docs": [
        "The bilinear form `B(u, v) = (sum u)(sum v) - 2 sum u v` that the reflection preserves.",
        "",
        "```",
        "use mrlyrs::num::apollonian::form;",
        "assert_eq!(form([-1, 2, 2, 3], [-1, 2, 2, 3]), 0);",
        "assert_eq!(form([0, 1, -1, 0], [0, 1, -1, 0]), -4);",
        "```"
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "u",
          "ty": {
            "t": "array",
            "item": {
              "t": "scalar",
              "name": "i64"
            },
            "len": 4
          }
        },
        {
          "name": "v",
          "ty": {
            "t": "array",
            "item": {
              "t": "scalar",
              "name": "i64"
            },
            "len": 4
          }
        }
      ],
      "ret": {
        "t": "i128"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::apollonian::frame",
      "name": "frame",
      "module": "num::apollonian",
      "defined_at": "num/apollonian.rs:235",
      "docs": [
        "The box the packing is drawn in: one period of the strip, or the box of the circle that contains a bounded packing."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "p",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "plain",
              "path": "num::apollonian::Packing"
            }
          }
        }
      ],
      "ret": {
        "t": "array",
        "item": {
          "t": "scalar",
          "name": "f64"
        },
        "len": 4
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::apollonian::grow",
      "name": "grow",
      "module": "num::apollonian",
      "defined_at": "num/apollonian.rs:178",
      "docs": [
        "Grows the named packing to the curvature cap, one circle per node of the reflection tree and the root quadruple excluded, so `circles.len()` is the census `N(T)`. On the strip only the two root swaps that replace a line are taken, which are exactly the two that stay inside one period.",
        "",
        "# Errors",
        "",
        "Errs at a name outside [`ROOTS`], and at a curvature cap outside two through [`CURVATURE_CAP`]."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "name",
          "ty": {
            "t": "str"
          }
        },
        {
          "name": "cap",
          "ty": {
            "t": "scalar",
            "name": "i64"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "plain",
          "path": "num::apollonian::Packing"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::apollonian::is_ford",
      "name": "is_ford",
      "module": "num::apollonian",
      "defined_at": "num/apollonian.rs:274",
      "docs": [
        "Whether the circle is the Ford circle over its own tangency point: curvature `2 b^2` and abscissa `2 a b` at the reduced `a/b`."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "c",
          "ty": {
            "t": "class",
            "path": "num::apollonian::Circle",
            "dim": null
          }
        }
      ],
      "ret": {
        "t": "scalar",
        "name": "bool"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::apollonian::on_line",
      "name": "on_line",
      "module": "num::apollonian",
      "defined_at": "num/apollonian.rs:269",
      "docs": [
        "Whether the circle has positive curvature and is tangent to the line `y = 0`, which in these coordinates reads `k > 0` and `k y = 1`: the curvature guard is what excludes the line `y = 1`, which is `(0, 0, 1)`."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "c",
          "ty": {
            "t": "class",
            "path": "num::apollonian::Circle",
            "dim": null
          }
        }
      ],
      "ret": {
        "t": "scalar",
        "name": "bool"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::apollonian::reflect",
      "name": "reflect",
      "module": "num::apollonian",
      "defined_at": "num/apollonian.rs:83",
      "docs": [
        "Reflects the circle at the seat through the other three, `v' = 2(v_1 + v_2 + v_3) - v` on all three coordinates at once, which is the second root of the Descartes quadratic and needs no square root."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "q",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "array",
              "item": {
                "t": "class",
                "path": "num::apollonian::Circle",
                "dim": null
              },
              "len": 4
            }
          }
        },
        {
          "name": "at",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "class",
        "path": "num::apollonian::Circle",
        "dim": null
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::apollonian::root",
      "name": "root",
      "module": "num::apollonian",
      "defined_at": "num/apollonian.rs:122",
      "docs": [
        "The named root quadruple: `strip` is the two lines a unit apart holding the circles at `0` and `1`, and the rest are bounded packings named by their four curvatures.",
        "",
        "```",
        "use mrlyrs::num::apollonian::{root, sound};",
        "for name in mrlyrs::num::apollonian::ROOTS {",
        "    assert!(sound(&root(name).unwrap()));",
        "}",
        "```",
        "",
        "# Errors",
        "",
        "Errs at a name outside [`ROOTS`]."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "name",
          "ty": {
            "t": "str"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "array",
          "item": {
            "t": "class",
            "path": "num::apollonian::Circle",
            "dim": null
          },
          "len": 4
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::apollonian::shadow",
      "name": "shadow",
      "module": "num::apollonian",
      "defined_at": "num/apollonian.rs:329",
      "docs": [
        "Reads the Farey stack of the order against the packing: the nodes lit inside the open period against the tangency points of the line-tangent circles of curvature at most `2 Q^2`, and the brightness `floor(Q/b)` summed on the nodes against `Q(Q + 1)/2`. Off the strip there is no line and every count is zero.",
        "",
        "# Errors",
        "",
        "Errs at an order outside one through [`ORDER_CAP`]."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "p",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "plain",
              "path": "num::apollonian::Packing"
            }
          }
        },
        {
          "name": "order",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "plain",
          "path": "num::apollonian::Shadow"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::apollonian::sound",
      "name": "sound",
      "module": "num::apollonian",
      "defined_at": "num/apollonian.rs:72",
      "docs": [
        "Whether the quadruple carries all six exact invariants: Descartes `B(k, k) = 0`, the position half `B(k, kx) = B(k, ky) = B(kx, ky) = 0`, and the frame `B(kx, kx) = B(ky, ky) = -4`."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "q",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "array",
              "item": {
                "t": "class",
                "path": "num::apollonian::Circle",
                "dim": null
              },
              "len": 4
            }
          }
        }
      ],
      "ret": {
        "t": "scalar",
        "name": "bool"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::apollonian::swap",
      "name": "swap",
      "module": "num::apollonian",
      "defined_at": "num/apollonian.rs:100",
      "docs": [
        "The quadruple with the circle at the seat replaced by its reflection."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "q",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "array",
              "item": {
                "t": "class",
                "path": "num::apollonian::Circle",
                "dim": null
              },
              "len": 4
            }
          }
        },
        {
          "name": "at",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "array",
        "item": {
          "t": "class",
          "path": "num::apollonian::Circle",
          "dim": null
        },
        "len": 4
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::apollonian::touches",
      "name": "touches",
      "module": "num::apollonian",
      "defined_at": "num/apollonian.rs:283",
      "docs": [
        "The tangency points on the line `y = 0`, ascending: one per circle of the packing with `k y = 1`, the root excluded. Empty off the strip."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "p",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "plain",
              "path": "num::apollonian::Packing"
            }
          }
        }
      ],
      "ret": {
        "t": "vec",
        "item": {
          "t": "plain",
          "path": "num::apollonian::Touch"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::automaton::Automaton::abscissa",
      "name": "abscissa",
      "module": "num::automaton",
      "defined_at": "num/automaton.rs:283",
      "docs": [
        "Returns the abscissa `alpha = log_q rho`, with `rho` the exact Perron root of [`crate::num::memory::perron`].",
        "",
        "The series converges absolutely on `Re s > alpha`. The bracket of [`Automaton::perron`] is a bound and not the root, so it is not read here.",
        "",
        "```",
        "let jordan = mrlyrs::num::memory::Rule::new(1, 2, 13).unwrap();",
        "let ladder = mrlyrs::num::automaton::Automaton::new(&jordan).unwrap();",
        "assert_eq!(ladder.abscissa(), 0.0);",
        "```"
      ],
      "owner": "num::automaton::Automaton",
      "self_kind": "ref",
      "params": [],
      "ret": {
        "t": "scalar",
        "name": "f64"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::automaton::Automaton::base",
      "name": "base",
      "module": "num::automaton",
      "defined_at": "num/automaton.rs:237",
      "docs": [
        "Returns the base `q = 2^D`."
      ],
      "owner": "num::automaton::Automaton",
      "self_kind": "ref",
      "params": [],
      "ret": {
        "t": "scalar",
        "name": "u64"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::automaton::Automaton::cofactor",
      "name": "cofactor",
      "module": "num::automaton",
      "defined_at": "num/automaton.rs:766",
      "docs": [
        "Returns the matrix Lyndon cofactor `Z_W(s) = det(I - q^(-s) T) zeta_W(s)` and the bound it is known to.",
        "",
        "The scalar `1 - k q^(-s)` becomes the determinant, and the cofactor is carried as `det(I - q^(-s) T) D_(P-1)(s) + 1^T adj(I - q^(-s) T) N(s)` with `N` the ladder numerator, so it is read on the whole `m = 0` pole comb where `zeta_W` itself is singular.",
        "",
        "# Errors",
        "",
        "Errs when the tolerance is out of reach."
      ],
      "owner": "num::automaton::Automaton",
      "self_kind": "ref",
      "params": [
        {
          "name": "s",
          "ty": {
            "t": "class",
            "path": "num::zeta::Complex",
            "dim": null
          }
        },
        {
          "name": "tolerance",
          "ty": {
            "t": "scalar",
            "name": "f64"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "tuple",
          "items": [
            {
              "t": "class",
              "path": "num::zeta::Complex",
              "dim": null
            },
            {
              "t": "scalar",
              "name": "f64"
            }
          ]
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::automaton::Automaton::denominator",
      "name": "denominator",
      "module": "num::automaton",
      "defined_at": "num/automaton.rs:677",
      "docs": [
        "Returns the coefficients `c_0 .. c_n` of `det(I - x T) = sum c_i x^i`, the ladder denominator read as a polynomial in `x = q^(-s)`.",
        "",
        "The roots in `x` are the reciprocals of the nonzero eigenvalues of `T`, so the poles of `zeta_W` sit at `s = log_q lambda_i - m + (arg lambda_i + 2 pi j) i / log q`: one comb per distinct eigenvalue, offset by the eigenvalue's argument.",
        "",
        "```",
        "let golden = mrlyrs::num::memory::Rule::new(1, 2, 7).unwrap();",
        "let ladder = mrlyrs::num::automaton::Automaton::new(&golden).unwrap();",
        "let coefficients = ladder.denominator();",
        "assert!((coefficients[1] + 1.0).abs() < 1e-12 && (coefficients[2] + 1.0).abs() < 1e-12);",
        "```"
      ],
      "owner": "num::automaton::Automaton",
      "self_kind": "ref",
      "params": [],
      "ret": {
        "t": "vec",
        "item": {
          "t": "scalar",
          "name": "f64"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::automaton::Automaton::matrix",
      "name": "matrix",
      "module": "num::automaton",
      "defined_at": "num/automaton.rs:258",
      "docs": [
        "Returns the transfer matrix `T = Gamma_0` the ladder runs on, the transpose of [`crate::num::memory::transfer`], entry `(u', u)` counting the letters carrying `u` to `u'`.",
        "",
        "```",
        "let golden = mrlyrs::num::memory::Rule::new(1, 2, 7).unwrap();",
        "let ladder = mrlyrs::num::automaton::Automaton::new(&golden).unwrap();",
        "assert_eq!(ladder.matrix(), vec![vec![1.0, 1.0], vec![1.0, 0.0]]);",
        "```"
      ],
      "owner": "num::automaton::Automaton",
      "self_kind": "ref",
      "params": [],
      "ret": {
        "t": "vec",
        "item": {
          "t": "vec",
          "item": {
            "t": "scalar",
            "name": "f64"
          }
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::automaton::Automaton::new",
      "name": "new",
      "module": "num::automaton",
      "defined_at": "num/automaton.rs:89",
      "docs": [
        "Builds the ladder of a rule, choosing the peel depth.",
        "",
        "```",
        "let golden = mrlyrs::num::memory::Rule::new(1, 2, 7).unwrap();",
        "let ladder = mrlyrs::num::automaton::Automaton::new(&golden).unwrap();",
        "assert_eq!(ladder.states(), 2);",
        "assert!((ladder.abscissa() - 0.694_241_913_630_617_4).abs() < 1e-15);",
        "```",
        "",
        "# Errors",
        "",
        "Errs when the rule accepts no element with a nonzero leading digit, or when its peel overruns the exact integers."
      ],
      "owner": "num::automaton::Automaton",
      "self_kind": null,
      "params": [
        {
          "name": "rule",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "class",
              "path": "num::memory::Rule",
              "dim": null
            }
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "class",
          "path": "num::automaton::Automaton",
          "dim": null
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::automaton::Automaton::peel",
      "name": "peel",
      "module": "num::automaton",
      "defined_at": "num/automaton.rs:247",
      "docs": [
        "Returns the peel depth `P`."
      ],
      "owner": "num::automaton::Automaton",
      "self_kind": "ref",
      "params": [],
      "ret": {
        "t": "scalar",
        "name": "usize"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::automaton::Automaton::period",
      "name": "period",
      "module": "num::automaton",
      "defined_at": "num/automaton.rs:292",
      "docs": [
        "Returns the pole spacing `2 pi / log q`."
      ],
      "owner": "num::automaton::Automaton",
      "self_kind": "ref",
      "params": [],
      "ret": {
        "t": "scalar",
        "name": "f64"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::automaton::Automaton::perron",
      "name": "perron",
      "module": "num::automaton",
      "defined_at": "num/automaton.rs:270",
      "docs": [
        "Returns the Collatz-Wielandt bracket `(low, high)` of the Perron root of the transfer matrix, the ratios the ladder divides with.",
        "",
        "For any nonnegative `T` and any `v > 0`, `min_u (T v)_u / v_u <= rho <= max_u (T v)_u / v_u`, so the pair brackets the root with no primitivity hypothesis; the guide is `v = (I + T)^m 1` for `m` sixty, or fewer when the entries would overrun the exponent range.",
        "The ends carry a relative `1e-14` allowance of the same measured kind as [`ROUNDING`] and are not a rounding-certified interval, and the bracket is loose exactly when `T` is defective: at code `13` and `k = 2`, a Jordan block of root `1`, the upper end is `64/62`. Only the upper end is load bearing, as the `theta < 1` test that opens the Neumann branch; the root itself is [`crate::num::memory::perron`]."
      ],
      "owner": "num::automaton::Automaton",
      "self_kind": "ref",
      "params": [],
      "ret": {
        "t": "tuple",
        "items": [
          {
            "t": "scalar",
            "name": "f64"
          },
          {
            "t": "scalar",
            "name": "f64"
          }
        ]
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::automaton::Automaton::residue",
      "name": "residue",
      "module": "num::automaton",
      "defined_at": "num/automaton.rs:793",
      "docs": [
        "Returns the residue of `zeta_W` at a simple pole `w0` of the resolvent and the bound it is known to.",
        "",
        "At such a point the resolvent is `adj(I - x T) / det(I - x T)` with `x = q^(-w)`, so the residue is `1^T adj(I - x0 T) N(w0)` over `-x0 log q det'(x0)`: the adjugate is the spectral projector in polynomial form, and no eigenvector is solved for.",
        "The head term `det(I - q^(-s) T) D_(P-1)(s)` is dropped, since the determinant vanishes at the pole.",
        "",
        "# Errors",
        "",
        "Errs when the tolerance is out of reach, or when `w0` is not a simple root of `det(I - q^(-w) T)`."
      ],
      "owner": "num::automaton::Automaton",
      "self_kind": "ref",
      "params": [
        {
          "name": "w0",
          "ty": {
            "t": "class",
            "path": "num::zeta::Complex",
            "dim": null
          }
        },
        {
          "name": "tolerance",
          "ty": {
            "t": "scalar",
            "name": "f64"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "tuple",
          "items": [
            {
              "t": "class",
              "path": "num::zeta::Complex",
              "dim": null
            },
            {
              "t": "scalar",
              "name": "f64"
            }
          ]
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::automaton::Automaton::rule",
      "name": "rule",
      "module": "num::automaton",
      "defined_at": "num/automaton.rs:232",
      "docs": [
        "Returns the rule."
      ],
      "owner": "num::automaton::Automaton",
      "self_kind": "ref",
      "params": [],
      "ret": {
        "t": "class",
        "path": "num::memory::Rule",
        "dim": null
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::automaton::Automaton::states",
      "name": "states",
      "module": "num::automaton",
      "defined_at": "num/automaton.rs:242",
      "docs": [
        "Returns the state count `q^(k-1)`."
      ],
      "owner": "num::automaton::Automaton",
      "self_kind": "ref",
      "params": [],
      "ret": {
        "t": "scalar",
        "name": "usize"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::automaton::Automaton::with_peel",
      "name": "with_peel",
      "module": "num::automaton",
      "defined_at": "num/automaton.rs:120",
      "docs": [
        "Builds the ladder at an explicit peel depth, at least the rule width and at least two.",
        "",
        "```",
        "let full = mrlyrs::num::memory::Rule::full(1, 2).unwrap();",
        "let ladder = mrlyrs::num::automaton::Automaton::with_peel(&full, 7).unwrap();",
        "assert_eq!(ladder.peel(), 7);",
        "assert_eq!(ladder.abscissa(), 1.0);",
        "```",
        "",
        "# Errors",
        "",
        "Errs when the rule accepts no such element, and at a peel depth under the rule width or two, or past the exact integers."
      ],
      "owner": "num::automaton::Automaton",
      "self_kind": null,
      "params": [
        {
          "name": "rule",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "class",
              "path": "num::memory::Rule",
              "dim": null
            }
          }
        },
        {
          "name": "peel",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "class",
          "path": "num::automaton::Automaton",
          "dim": null
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::automaton::Automaton::zeta",
      "name": "zeta",
      "module": "num::automaton",
      "defined_at": "num/automaton.rs:751",
      "docs": [
        "Returns `zeta_W(s)` and the bound it is known to.",
        "",
        "The bound is the propagated truncation bound, carried entrywise as a nonnegative vector through `(I - q^(-w) T)^(-1)`, plus [`ROUNDING`] times the scale the ladder carries, which is a measured allowance and not a proof.",
        "Right of the abscissa the inverse is majorised by its Neumann series, `sum_i (q^(-Re w) T)^i`, which is entrywise nonnegative and needs no norm and no primitivity; left of it the bound runs through the computed inverse certified by its own residual, `abs(C) (y + norm(y) r/(1-r) 1)` with `r = norm(I - (I - q^(-w) T) C)`, and the module raises rather than return when `r >= 1`.",
        "",
        "```",
        "let full = mrlyrs::num::memory::Rule::full(1, 2).unwrap();",
        "let ladder = mrlyrs::num::automaton::Automaton::new(&full).unwrap();",
        "let s = mrlyrs::num::zeta::Complex::new(2.0, 0.0);",
        "let (value, bound) = ladder.zeta(s, 1e-10).unwrap();",
        "assert!((value.re - std::f64::consts::PI * std::f64::consts::PI / 6.0).abs() < bound);",
        "```",
        "",
        "# Errors",
        "",
        "Errs when the tolerance is out of reach, or when a level of the walk sits on a pole of the resolvent."
      ],
      "owner": "num::automaton::Automaton",
      "self_kind": "ref",
      "params": [
        {
          "name": "s",
          "ty": {
            "t": "class",
            "path": "num::zeta::Complex",
            "dim": null
          }
        },
        {
          "name": "tolerance",
          "ty": {
            "t": "scalar",
            "name": "f64"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "tuple",
          "items": [
            {
              "t": "class",
              "path": "num::zeta::Complex",
              "dim": null
            },
            {
              "t": "scalar",
              "name": "f64"
            }
          ]
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::blend::add",
      "name": "add",
      "module": "num::blend",
      "defined_at": "num/blend.rs:7",
      "docs": [
        "Adds two sequences term by term over their shared length."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "a",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "i128"
            }
          }
        },
        {
          "name": "b",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "i128"
            }
          }
        }
      ],
      "ret": {
        "t": "vec",
        "item": {
          "t": "i128"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::blend::cauchy",
      "name": "cauchy",
      "module": "num::blend",
      "defined_at": "num/blend.rs:26",
      "docs": [
        "Convolves two sequences, keeping the exact prefix their shared length affords.",
        "",
        "# Errors",
        "",
        "Errs when a term passes a signed hundred and twenty-eight bits."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "a",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "i128"
            }
          }
        },
        {
          "name": "b",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "i128"
            }
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "vec",
          "item": {
            "t": "i128"
          }
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::blend::characteristic",
      "name": "characteristic",
      "module": "num::blend",
      "defined_at": "num/blend.rs:327",
      "docs": [
        "Returns the monic characteristic polynomial of a recurrence, highest power first."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "coefficients",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "tuple",
              "items": [
                {
                  "t": "i128"
                },
                {
                  "t": "i128"
                }
              ]
            }
          }
        }
      ],
      "ret": {
        "t": "vec",
        "item": {
          "t": "tuple",
          "items": [
            {
              "t": "i128"
            },
            {
              "t": "i128"
            }
          ]
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::blend::decimate",
      "name": "decimate",
      "module": "num::blend",
      "defined_at": "num/blend.rs:56",
      "docs": [
        "Keeps every step-th term from the offset onward.",
        "",
        "# Errors",
        "",
        "Errs at a step of zero."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "a",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "i128"
            }
          }
        },
        {
          "name": "step",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "offset",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "vec",
          "item": {
            "t": "i128"
          }
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::blend::delta",
      "name": "delta",
      "module": "num::blend",
      "defined_at": "num/blend.rs:64",
      "docs": [
        "Returns the first differences of a sequence, one term shorter."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "a",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "i128"
            }
          }
        }
      ],
      "ret": {
        "t": "vec",
        "item": {
          "t": "i128"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::blend::growth",
      "name": "growth",
      "module": "num::blend",
      "defined_at": "num/blend.rs:341",
      "docs": [
        "Returns the largest positive real root of a recurrence's characteristic polynomial, the growth rate, or a not-a-number where no real root lands.",
        "",
        "A simple root lands at machine precision; a repeated root lands to a few decimals only.",
        "",
        "```",
        "let rate = mrlyrs::num::blend::growth(&[(1, 1), (1, 1)]);",
        "assert!((rate - 1.618033988749895).abs() < 1e-12);",
        "```"
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "coefficients",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "tuple",
              "items": [
                {
                  "t": "i128"
                },
                {
                  "t": "i128"
                }
              ]
            }
          }
        }
      ],
      "ret": {
        "t": "scalar",
        "name": "f64"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::blend::hadamard",
      "name": "hadamard",
      "module": "num::blend",
      "defined_at": "num/blend.rs:17",
      "docs": [
        "Multiplies two sequences term by term over their shared length."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "a",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "i128"
            }
          }
        },
        {
          "name": "b",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "i128"
            }
          }
        }
      ],
      "ret": {
        "t": "vec",
        "item": {
          "t": "i128"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::blend::recurrence",
      "name": "recurrence",
      "module": "num::blend",
      "defined_at": "num/blend.rs:301",
      "docs": [
        "Finds the smallest linear constant-coefficient recurrence that fits every supplied term.",
        "",
        "The coefficients come back as reduced fractions with the newest term first, so a",
        "result of one and one twice is the Fibonacci rule. The hunt runs modulo three",
        "primes, rebuilds the rationals by remainder reconstruction, and verifies the rule",
        "on every term before answering; too few terms to trust an order returns nothing,",
        "and the zero sequence returns the empty rule.",
        "",
        "```",
        "let fib = vec![0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89];",
        "assert_eq!(mrlyrs::num::blend::recurrence(&fib), Some(vec![(1, 1), (1, 1)]));",
        "```"
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "terms",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "i128"
            }
          }
        }
      ],
      "ret": {
        "t": "option",
        "item": {
          "t": "vec",
          "item": {
            "t": "tuple",
            "items": [
              {
                "t": "i128"
              },
              {
                "t": "i128"
              }
            ]
          }
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::blend::scale",
      "name": "scale",
      "module": "num::blend",
      "defined_at": "num/blend.rs:91",
      "docs": [
        "Multiplies every term of a sequence by the factor."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "a",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "i128"
            }
          }
        },
        {
          "name": "factor",
          "ty": {
            "t": "i128"
          }
        }
      ],
      "ret": {
        "t": "vec",
        "item": {
          "t": "i128"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::blend::shift",
      "name": "shift",
      "module": "num::blend",
      "defined_at": "num/blend.rs:47",
      "docs": [
        "Drops the first terms of a sequence."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "a",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "i128"
            }
          }
        },
        {
          "name": "count",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "vec",
        "item": {
          "t": "i128"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::blend::sigma",
      "name": "sigma",
      "module": "num::blend",
      "defined_at": "num/blend.rs:73",
      "docs": [
        "Returns the partial sums of a sequence.",
        "",
        "# Errors",
        "",
        "Errs when a partial sum passes a signed hundred and twenty-eight bits."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "a",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "i128"
            }
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "vec",
          "item": {
            "t": "i128"
          }
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::blend::sub",
      "name": "sub",
      "module": "num::blend",
      "defined_at": "num/blend.rs:12",
      "docs": [
        "Subtracts the second sequence from the first over their shared length."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "a",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "i128"
            }
          }
        },
        {
          "name": "b",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "i128"
            }
          }
        }
      ],
      "ret": {
        "t": "vec",
        "item": {
          "t": "i128"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::boolean::is_balanced",
      "name": "is_balanced",
      "module": "num::boolean",
      "defined_at": "num/boolean.rs:43",
      "docs": [
        "Reports whether the packed function outputs one on exactly half of its inputs."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "code",
          "ty": {
            "t": "u128"
          }
        },
        {
          "name": "n",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "scalar",
        "name": "bool"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::boolean::nonlinearity",
      "name": "nonlinearity",
      "module": "num::boolean",
      "defined_at": "num/boolean.rs:30",
      "docs": [
        "Returns how far the packed function sits from every affine function, zero when it is one.",
        "",
        "```",
        "assert_eq!(mrlyrs::num::boolean::nonlinearity(0b0110, 2), 0);",
        "assert_eq!(mrlyrs::num::boolean::nonlinearity(0b1000, 2), 1);",
        "```"
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "code",
          "ty": {
            "t": "u128"
          }
        },
        {
          "name": "n",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "scalar",
        "name": "i64"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::boolean::sac",
      "name": "sac",
      "module": "num::boolean",
      "defined_at": "num/boolean.rs:49",
      "docs": [
        "Returns the mean chance that flipping one input bit flips the output, 0.5 at full avalanche."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "code",
          "ty": {
            "t": "u128"
          }
        },
        {
          "name": "n",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "scalar",
        "name": "f64"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::boolean::walsh_spectrum",
      "name": "walsh_spectrum",
      "module": "num::boolean",
      "defined_at": "num/boolean.rs:2",
      "docs": [
        "Returns the Walsh spectrum of an n-input boolean function packed as a truth-table code."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "code",
          "ty": {
            "t": "u128"
          }
        },
        {
          "name": "n",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "vec",
        "item": {
          "t": "scalar",
          "name": "i64"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::design::digits_of",
      "name": "digits_of",
      "module": "num::design",
      "defined_at": "num/design.rs:29",
      "docs": [
        "Returns the digits a bitmask names inside the base, ascending.",
        "",
        "```",
        "assert_eq!(mrlyrs::num::design::digits_of(0b1011, 10), vec![0, 1, 3]);",
        "```"
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "mask",
          "ty": {
            "t": "scalar",
            "name": "u32"
          }
        },
        {
          "name": "base",
          "ty": {
            "t": "scalar",
            "name": "u64"
          }
        }
      ],
      "ret": {
        "t": "vec",
        "item": {
          "t": "scalar",
          "name": "u64"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::design::echo_series",
      "name": "echo_series",
      "module": "num::design",
      "defined_at": "num/design.rs:125",
      "docs": [
        "Returns the density echo, the sum of mu(n) A_F(n)/n over the whole numbers up to each grid point divided by x to the exponent, sieving the Mobius values to the largest element."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "values",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "scalar",
              "name": "u64"
            }
          }
        },
        {
          "name": "log_x",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "scalar",
              "name": "f64"
            }
          }
        },
        {
          "name": "exponent",
          "ty": {
            "t": "scalar",
            "name": "f64"
          }
        }
      ],
      "ret": {
        "t": "vec",
        "item": {
          "t": "scalar",
          "name": "f64"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::design::elements",
      "name": "elements",
      "module": "num::design",
      "defined_at": "num/design.rs:38",
      "docs": [
        "Returns the elements of the digit design below the base raised to the depth, ascending: the whole numbers of at most that many base digits, every digit drawn from the set and the leading digit nonzero.",
        "",
        "```",
        "assert_eq!(mrlyrs::num::design::elements(3, &[0, 1], 3), vec![1, 3, 4, 9, 10, 12, 13]);",
        "```"
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "base",
          "ty": {
            "t": "scalar",
            "name": "u64"
          }
        },
        {
          "name": "digits",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "scalar",
              "name": "u64"
            }
          }
        },
        {
          "name": "depth",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "vec",
        "item": {
          "t": "scalar",
          "name": "u64"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::design::log_grid",
      "name": "log_grid",
      "module": "num::design",
      "defined_at": "num/design.rs:94",
      "docs": [
        "Returns the log grid uniform over the span of the elements, from the log of the first to the log of the last."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "values",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "scalar",
              "name": "u64"
            }
          }
        },
        {
          "name": "samples",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "vec",
        "item": {
          "t": "scalar",
          "name": "f64"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::design::median_floor",
      "name": "median_floor",
      "module": "num::design",
      "defined_at": "num/design.rs:193",
      "docs": [
        "Returns the running median of the power over a window of the given width, the window clamped at the ends."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "power",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "scalar",
              "name": "f64"
            }
          }
        },
        {
          "name": "width",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "vec",
        "item": {
          "t": "scalar",
          "name": "f64"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::design::meter",
      "name": "meter",
      "module": "num::design",
      "defined_at": "num/design.rs:83",
      "docs": [
        "Returns the running design Mobius meter, the partial sums of the Mobius values along the elements.",
        "",
        "```",
        "assert_eq!(mrlyrs::num::design::meter(&[1, -1, -1, 0, -1]), vec![1, 0, -1, -1, -2]);",
        "```"
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "mu",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "scalar",
              "name": "i8"
            }
          }
        }
      ],
      "ret": {
        "t": "vec",
        "item": {
          "t": "scalar",
          "name": "i64"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::design::nearest",
      "name": "nearest",
      "module": "num::design",
      "defined_at": "num/design.rs:267",
      "docs": [
        "Returns the distance from the ordinate to the nearest entry of the list, infinite when the list is empty."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "value",
          "ty": {
            "t": "scalar",
            "name": "f64"
          }
        },
        {
          "name": "list",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "scalar",
              "name": "f64"
            }
          }
        }
      ],
      "ret": {
        "t": "scalar",
        "name": "f64"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::design::peaks",
      "name": "peaks",
      "module": "num::design",
      "defined_at": "num/design.rs:228",
      "docs": [
        "Returns the bins inside the band that rise above both neighbours and clear the score threshold, strongest first.",
        "",
        "# Errors",
        "",
        "Errs when the axis holds fewer bins than the score."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "gamma",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "scalar",
              "name": "f64"
            }
          }
        },
        {
          "name": "score",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "scalar",
              "name": "f64"
            }
          }
        },
        {
          "name": "band",
          "ty": {
            "t": "tuple",
            "items": [
              {
                "t": "scalar",
                "name": "f64"
              },
              {
                "t": "scalar",
                "name": "f64"
              }
            ]
          }
        },
        {
          "name": "threshold",
          "ty": {
            "t": "scalar",
            "name": "f64"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "vec",
          "item": {
            "t": "scalar",
            "name": "usize"
          }
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::design::pole_lattice",
      "name": "pole_lattice",
      "module": "num::design",
      "defined_at": "num/design.rs:255",
      "docs": [
        "Returns the design's pole lattice below the top, the ordinates 2 pi j over log q of the poles its Dirichlet series carries.",
        "",
        "```",
        "let lines = mrlyrs::num::design::pole_lattice(3, 13.0);",
        "assert_eq!(format!(\"{:.4} {:.4} {}\", lines[0], lines[1], lines.len()), \"5.7192 11.4384 2\");",
        "```"
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "base",
          "ty": {
            "t": "scalar",
            "name": "u64"
          }
        },
        {
          "name": "top",
          "ty": {
            "t": "scalar",
            "name": "f64"
          }
        }
      ],
      "ret": {
        "t": "vec",
        "item": {
          "t": "scalar",
          "name": "f64"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::design::resample",
      "name": "resample",
      "module": "num::design",
      "defined_at": "num/design.rs:109",
      "docs": [
        "Reads the running meter at every point of the log grid and divides by x to the exponent."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "values",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "scalar",
              "name": "u64"
            }
          }
        },
        {
          "name": "running",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "scalar",
              "name": "i64"
            }
          }
        },
        {
          "name": "exponent",
          "ty": {
            "t": "scalar",
            "name": "f64"
          }
        },
        {
          "name": "log_x",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "scalar",
              "name": "f64"
            }
          }
        }
      ],
      "ret": {
        "t": "vec",
        "item": {
          "t": "scalar",
          "name": "f64"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::design::score",
      "name": "score",
      "module": "num::design",
      "defined_at": "num/design.rs:214",
      "docs": [
        "Returns the power over its local median floor, the score a peak is read against."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "power",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "scalar",
              "name": "f64"
            }
          }
        },
        {
          "name": "width",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "vec",
        "item": {
          "t": "scalar",
          "name": "f64"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::design::size",
      "name": "size",
      "module": "num::design",
      "defined_at": "num/design.rs:63",
      "docs": [
        "Returns the count of elements the design holds at the depth, the length [`elements`] returns without building them.",
        "",
        "```",
        "assert_eq!(mrlyrs::num::design::size(&[0, 1], 20), 1048575);",
        "```"
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "digits",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "scalar",
              "name": "u64"
            }
          }
        },
        {
          "name": "depth",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "u128"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::design::spectrum",
      "name": "spectrum",
      "module": "num::design",
      "defined_at": "num/design.rs:162",
      "docs": [
        "Returns the frequency axis and the power spectrum of the series: the mean removed, a Hann window laid on, a real transform taken, and bin j read as the ordinate 2 pi j over the log range.",
        "",
        "# Errors",
        "",
        "Errs when the log grid holds fewer points than the series."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "log_x",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "scalar",
              "name": "f64"
            }
          }
        },
        {
          "name": "series",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "scalar",
              "name": "f64"
            }
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "tuple",
          "items": [
            {
              "t": "vec",
              "item": {
                "t": "scalar",
                "name": "f64"
              }
            },
            {
              "t": "vec",
              "item": {
                "t": "scalar",
                "name": "f64"
              }
            }
          ]
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::design::upper_rms",
      "name": "upper_rms",
      "module": "num::design",
      "defined_at": "num/design.rs:274",
      "docs": [
        "Returns the root mean square of the upper half of the series, the size the echo and the meter are compared at."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "series",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "scalar",
              "name": "f64"
            }
          }
        }
      ],
      "ret": {
        "t": "scalar",
        "name": "f64"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::factor::aliquot",
      "name": "aliquot",
      "module": "num::factor",
      "defined_at": "num/factor.rs:143",
      "docs": [
        "Returns the sum of the proper divisors of the number, its divisor sum less itself, zero for zero and for one."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "number",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "scalar",
        "name": "usize"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::factor::coprime",
      "name": "coprime",
      "module": "num::factor",
      "defined_at": "num/factor.rs:28",
      "docs": [
        "Returns whether two numbers share no divisor above one."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "a",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "b",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "scalar",
        "name": "bool"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::factor::divisors",
      "name": "divisors",
      "module": "num::factor",
      "defined_at": "num/factor.rs:111",
      "docs": [
        "Builds every divisor of a wide number from its factorization, ascending, empty for zero.",
        "",
        "The width is the one the factorization needs, so a caller on the pointer width casts at its own call.",
        "",
        "```",
        "assert_eq!(mrlyrs::num::factor::divisors(12), vec![1, 2, 3, 4, 6, 12]);",
        "```"
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "number",
          "ty": {
            "t": "scalar",
            "name": "u64"
          }
        }
      ],
      "ret": {
        "t": "vec",
        "item": {
          "t": "scalar",
          "name": "u64"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::factor::factorial",
      "name": "factorial",
      "module": "num::factor",
      "defined_at": "num/factor.rs:45",
      "docs": [
        "Returns the factorial of the number, the product of one through it, erring past thirty-four."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "number",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "u128"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::factor::factorize",
      "name": "factorize",
      "module": "num::factor",
      "defined_at": "num/factor.rs:97",
      "docs": [
        "Returns the prime and exponent pairs of the number in ascending primes, by trial division on the six-step wheel.",
        "",
        "```",
        "assert_eq!(mrlyrs::num::factor::factorize(240), vec![(2, 4), (3, 1), (5, 1)]);",
        "```"
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "number",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "vec",
        "item": {
          "t": "tuple",
          "items": [
            {
              "t": "scalar",
              "name": "usize"
            },
            {
              "t": "scalar",
              "name": "u32"
            }
          ]
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::factor::factorize_wide",
      "name": "factorize_wide",
      "module": "num::factor",
      "defined_at": "num/factor.rs:72",
      "docs": [
        "Returns the prime and exponent pairs of a wide number in ascending primes, by trial division on the six-step wheel.",
        "",
        "```",
        "assert_eq!(mrlyrs::num::factor::factorize_wide(999_999_999_989), vec![(999_999_999_989, 1)]);",
        "```"
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "number",
          "ty": {
            "t": "scalar",
            "name": "u64"
          }
        }
      ],
      "ret": {
        "t": "vec",
        "item": {
          "t": "tuple",
          "items": [
            {
              "t": "scalar",
              "name": "u64"
            },
            {
              "t": "scalar",
              "name": "u32"
            }
          ]
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::factor::gcd",
      "name": "gcd",
      "module": "num::factor",
      "defined_at": "num/factor.rs:9",
      "docs": [
        "Returns the greatest common divisor of two numbers by the Euclidean algorithm, zero for two zeroes.",
        "",
        "```",
        "assert_eq!(mrlyrs::num::factor::gcd(12, 18), 6);",
        "assert_eq!(mrlyrs::num::factor::gcd(7, 0), 7);",
        "```"
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "a",
          "ty": {
            "t": "u128"
          }
        },
        {
          "name": "b",
          "ty": {
            "t": "u128"
          }
        }
      ],
      "ret": {
        "t": "u128"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::factor::lcm",
      "name": "lcm",
      "module": "num::factor",
      "defined_at": "num/factor.rs:20",
      "docs": [
        "Returns the least common multiple of two numbers, zero when either side is zero.",
        "",
        "Wraps silently once the multiple passes the pointer width."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "a",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "b",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "scalar",
        "name": "usize"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::factor::mobius",
      "name": "mobius",
      "module": "num::factor",
      "defined_at": "num/factor.rs:169",
      "docs": [
        "Returns the Mobius value of the number: zero for zero or a squared factor, else minus one to the count of primes.",
        "",
        "The argument is the pointer width, so a wide value narrows on wasm32 above two to the thirty-two.",
        "",
        "```",
        "assert_eq!(mrlyrs::num::factor::mobius(15), 1);",
        "```"
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "number",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "scalar",
        "name": "i8"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::factor::mobius_sieve",
      "name": "mobius_sieve",
      "module": "num::factor",
      "defined_at": "num/factor.rs:184",
      "docs": [
        "Sieves the Mobius values of zero through the limit in one pass."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "limit",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "vec",
        "item": {
          "t": "scalar",
          "name": "i8"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::factor::radical",
      "name": "radical",
      "module": "num::factor",
      "defined_at": "num/factor.rs:239",
      "docs": [
        "Returns the radical of the number, the product of its distinct primes, zero for zero and one for one."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "number",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "scalar",
        "name": "usize"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::factor::reduce",
      "name": "reduce",
      "module": "num::factor",
      "defined_at": "num/factor.rs:37",
      "docs": [
        "Reduces a fraction to its lowest terms, a zero numerator and denominator reading as zero over one.",
        "",
        "```",
        "assert_eq!(mrlyrs::num::factor::reduce(64, 128), (1, 2));",
        "```"
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "numerator",
          "ty": {
            "t": "u128"
          }
        },
        {
          "name": "denominator",
          "ty": {
            "t": "u128"
          }
        }
      ],
      "ret": {
        "t": "tuple",
        "items": [
          {
            "t": "u128"
          },
          {
            "t": "u128"
          }
        ]
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::factor::sigma",
      "name": "sigma",
      "module": "num::factor",
      "defined_at": "num/factor.rs:135",
      "docs": [
        "Returns the sum of every divisor of the number raised to the power, so power zero counts them.",
        "",
        "Stays exact for a power of two or below, above which the sum can wrap past a hundred and twenty-eight bits."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "number",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "power",
          "ty": {
            "t": "scalar",
            "name": "u32"
          }
        }
      ],
      "ret": {
        "t": "u128"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::factor::squarefree",
      "name": "squarefree",
      "module": "num::factor",
      "defined_at": "num/factor.rs:247",
      "docs": [
        "Returns whether no prime squares into the number, true for one and false for zero."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "number",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "scalar",
        "name": "bool"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::factor::totient",
      "name": "totient",
      "module": "num::factor",
      "defined_at": "num/factor.rs:210",
      "docs": [
        "Returns the Euler totient of the number from its factorization, zero for zero and one for one.",
        "",
        "```",
        "assert_eq!(mrlyrs::num::factor::totient(12), 4);",
        "```"
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "number",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "scalar",
        "name": "usize"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::factor::totients",
      "name": "totients",
      "module": "num::factor",
      "defined_at": "num/factor.rs:226",
      "docs": [
        "Sieves the Euler totients of zero through n in one pass, the run beside the single value.",
        "",
        "```",
        "assert_eq!(mrlyrs::num::factor::totients(6), vec![0, 1, 1, 2, 2, 4, 2]);",
        "```"
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "n",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "vec",
        "item": {
          "t": "scalar",
          "name": "u64"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::factor::twisted",
      "name": "twisted",
      "module": "num::factor",
      "defined_at": "num/factor.rs:152",
      "docs": [
        "Returns the divisor sum with a periodic rhythm painted on each divisor, zero for zero and for an empty rhythm.",
        "",
        "```",
        "assert_eq!(mrlyrs::num::factor::twisted(5, &[0, 1, 0, -1]), 2);",
        "```"
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "number",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "rhythm",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "scalar",
              "name": "i8"
            }
          }
        }
      ],
      "ret": {
        "t": "scalar",
        "name": "i64"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::fft::convolve",
      "name": "convolve",
      "module": "num::fft",
      "defined_at": "num/fft.rs:213",
      "docs": [
        "Circularly convolves a size-square field on the torus by a kernel of the same shape through fft2 both ways.",
        "",
        "# Errors",
        "",
        "Errs when the field or the kernel is not the size squared, or when the size is no power of two."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "field",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "scalar",
              "name": "f64"
            }
          }
        },
        {
          "name": "kernel",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "scalar",
              "name": "f64"
            }
          }
        },
        {
          "name": "size",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "vec",
          "item": {
            "t": "scalar",
            "name": "f64"
          }
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::fft::convolve_with",
      "name": "convolve_with",
      "module": "num::fft",
      "defined_at": "num/fft.rs:172",
      "docs": [
        "Convolves a size-square field on the torus by a kernel already transformed by fft2, the inverse scaled back by size squared."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "field",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "scalar",
              "name": "f64"
            }
          }
        },
        {
          "name": "kernel_re",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "scalar",
              "name": "f64"
            }
          }
        },
        {
          "name": "kernel_im",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "scalar",
              "name": "f64"
            }
          }
        },
        {
          "name": "size",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "vec",
          "item": {
            "t": "scalar",
            "name": "f64"
          }
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::fft::embed_kernel",
      "name": "embed_kernel",
      "module": "num::fft",
      "defined_at": "num/fft.rs:142",
      "docs": [
        "Lays an odd-side mask into a size-square kernel with the mask centre at index (0, 0) and negative offsets wrapped; the cell at offset (dr, dc) lands at (-dr, -dc) modulo size, so convolving a field by the kernel reads at every site the mask-weighted sum over its neighbours, the neighbour count the life step counts.",
        "",
        "# Errors",
        "",
        "Errs at an even mask side, at a side past the field, and when the mask is not the side squared."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "mask",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "scalar",
              "name": "u8"
            }
          }
        },
        {
          "name": "side",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "size",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "vec",
          "item": {
            "t": "scalar",
            "name": "f64"
          }
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::fft::fft",
      "name": "fft",
      "module": "num::fft",
      "defined_at": "num/fft.rs:15",
      "docs": [
        "Transforms parallel real and imaginary slices in place over a power-of-two length, unscaled in either direction.",
        "",
        "```",
        "let (mut re, mut im) = (vec![1.0, 0.0, 0.0, 0.0], vec![0.0; 4]);",
        "mrlyrs::num::fft::fft(&mut re, &mut im, false).unwrap();",
        "assert_eq!(re, vec![1.0; 4]);",
        "```",
        "",
        "# Errors",
        "",
        "Errs when the two parts differ in length, or when the length is no power of two."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "re",
          "ty": {
            "t": "slice",
            "mutable": true,
            "item": {
              "t": "scalar",
              "name": "f64"
            }
          }
        },
        {
          "name": "im",
          "ty": {
            "t": "slice",
            "mutable": true,
            "item": {
              "t": "scalar",
              "name": "f64"
            }
          }
        },
        {
          "name": "inverse",
          "ty": {
            "t": "scalar",
            "name": "bool"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "unit"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "skip",
        "reason": "re: mutable slice argument"
      }
    },
    {
      "path": "num::fft::fft2",
      "name": "fft2",
      "module": "num::fft",
      "defined_at": "num/fft.rs:76",
      "docs": [
        "Transforms a size-square field in place, rows first and then columns.",
        "",
        "# Errors",
        "",
        "Errs when the buffers are not the size squared, or when the size is no power of two."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "re",
          "ty": {
            "t": "slice",
            "mutable": true,
            "item": {
              "t": "scalar",
              "name": "f64"
            }
          }
        },
        {
          "name": "im",
          "ty": {
            "t": "slice",
            "mutable": true,
            "item": {
              "t": "scalar",
              "name": "f64"
            }
          }
        },
        {
          "name": "size",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "inverse",
          "ty": {
            "t": "scalar",
            "name": "bool"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "unit"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "skip",
        "reason": "re: mutable slice argument"
      }
    },
    {
      "path": "num::fft::log_spectrum",
      "name": "log_spectrum",
      "module": "num::fft",
      "defined_at": "num/fft.rs:223",
      "docs": [
        "Returns the centred magnitude spectrum of a size-square field through log(1 + magnitude), the DC bin included at the centre.",
        "",
        "# Errors",
        "",
        "Errs when the field is not the size squared, or when the size is no power of two."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "field",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "scalar",
              "name": "f64"
            }
          }
        },
        {
          "name": "size",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "vec",
          "item": {
            "t": "scalar",
            "name": "f64"
          }
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::fft::magnitude_spectrum",
      "name": "magnitude_spectrum",
      "module": "num::fft",
      "defined_at": "num/fft.rs:108",
      "docs": [
        "Returns the magnitudes of a square field's transform, shifted so zero frequency sits at the centre.",
        "",
        "# Errors",
        "",
        "Errs when the field is not the size squared, or when the size is no power of two."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "field",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "scalar",
              "name": "f64"
            }
          }
        },
        {
          "name": "size",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "vec",
          "item": {
            "t": "scalar",
            "name": "f64"
          }
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::fft::peak_ring",
      "name": "peak_ring",
      "module": "num::fft",
      "defined_at": "num/fft.rs:264",
      "docs": [
        "Finds the ring past the centre where a radial profile peaks, a tie broken at the smaller ring; zero when the profile holds no ring past ring 0."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "profile",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "scalar",
              "name": "f64"
            }
          }
        }
      ],
      "ret": {
        "t": "scalar",
        "name": "usize"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::fft::peak_wavelength",
      "name": "peak_wavelength",
      "module": "num::fft",
      "defined_at": "num/fft.rs:277",
      "docs": [
        "Reads the wavelength in cells at a radial profile's peak, size over the peak ring with a tie broken at the smaller ring; zero when the profile holds no ring past ring 0."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "profile",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "scalar",
              "name": "f64"
            }
          }
        },
        {
          "name": "size",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "scalar",
        "name": "f64"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::fft::radial_profile",
      "name": "radial_profile",
      "module": "num::fft",
      "defined_at": "num/fft.rs:235",
      "docs": [
        "Averages a centred size-square spectrum over rings of integer radius from the centre bin, a bin joining the ring its distance rounds to, rings 0 through size over two; ring k holds the frequencies near k cycles per field.",
        "",
        "# Errors",
        "",
        "Errs when the spectrum is not the size squared."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "spectrum",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "scalar",
              "name": "f64"
            }
          }
        },
        {
          "name": "size",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "vec",
          "item": {
            "t": "scalar",
            "name": "f64"
          }
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::fft::transform",
      "name": "transform",
      "module": "num::fft",
      "defined_at": "num/fft.rs:130",
      "docs": [
        "Transforms a real size-square field forward by fft2, returning the real and imaginary parts.",
        "",
        "# Errors",
        "",
        "Errs when the field is not the size squared, or when the size is no power of two."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "field",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "scalar",
              "name": "f64"
            }
          }
        },
        {
          "name": "size",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "tuple",
          "items": [
            {
              "t": "vec",
              "item": {
                "t": "scalar",
                "name": "f64"
              }
            },
            {
              "t": "vec",
              "item": {
                "t": "scalar",
                "name": "f64"
              }
            }
          ]
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::gauss::Class::prime",
      "name": "prime",
      "module": "num::gauss",
      "defined_at": "num/gauss.rs:225",
      "docs": [
        "Returns whether the class is prime."
      ],
      "owner": "num::gauss::Class",
      "self_kind": "value",
      "params": [],
      "ret": {
        "t": "scalar",
        "name": "bool"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::gauss::Class::word",
      "name": "word",
      "module": "num::gauss",
      "defined_at": "num/gauss.rs:213",
      "docs": [
        "Returns the class as a word."
      ],
      "owner": "num::gauss::Class",
      "self_kind": "value",
      "params": [],
      "ret": {
        "t": "string"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::gauss::Ring::associates",
      "name": "associates",
      "module": "num::gauss",
      "defined_at": "num/gauss.rs:58",
      "docs": [
        "Returns the unit multiples of a point, the point first, turning anticlockwise."
      ],
      "owner": "num::gauss::Ring",
      "self_kind": "value",
      "params": [
        {
          "name": "a",
          "ty": {
            "t": "scalar",
            "name": "i64"
          }
        },
        {
          "name": "b",
          "ty": {
            "t": "scalar",
            "name": "i64"
          }
        }
      ],
      "ret": {
        "t": "vec",
        "item": {
          "t": "tuple",
          "items": [
            {
              "t": "scalar",
              "name": "i64"
            },
            {
              "t": "scalar",
              "name": "i64"
            }
          ]
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::gauss::Ring::canon",
      "name": "canon",
      "module": "num::gauss",
      "defined_at": "num/gauss.rs:86",
      "docs": [
        "Returns the canonical associate of a point: the one with `a > 0` and `b >= 0` on the square lattice, the one with `a > 0` and `0 <= b < a` on the hexagonal, the origin for the origin."
      ],
      "owner": "num::gauss::Ring",
      "self_kind": "value",
      "params": [
        {
          "name": "a",
          "ty": {
            "t": "scalar",
            "name": "i64"
          }
        },
        {
          "name": "b",
          "ty": {
            "t": "scalar",
            "name": "i64"
          }
        }
      ],
      "ret": {
        "t": "tuple",
        "items": [
          {
            "t": "scalar",
            "name": "i64"
          },
          {
            "t": "scalar",
            "name": "i64"
          }
        ]
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::gauss::Ring::conjugate",
      "name": "conjugate",
      "module": "num::gauss",
      "defined_at": "num/gauss.rs:68",
      "docs": [
        "Returns the conjugate: the mirror image in the real axis."
      ],
      "owner": "num::gauss::Ring",
      "self_kind": "value",
      "params": [
        {
          "name": "a",
          "ty": {
            "t": "scalar",
            "name": "i64"
          }
        },
        {
          "name": "b",
          "ty": {
            "t": "scalar",
            "name": "i64"
          }
        }
      ],
      "ret": {
        "t": "tuple",
        "items": [
          {
            "t": "scalar",
            "name": "i64"
          },
          {
            "t": "scalar",
            "name": "i64"
          }
        ]
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::gauss::Ring::count",
      "name": "count",
      "module": "num::gauss",
      "defined_at": "num/gauss.rs:151",
      "docs": [
        "Returns the count of points within the reach: the square or the hexagon."
      ],
      "owner": "num::gauss::Ring",
      "self_kind": "value",
      "params": [
        {
          "name": "radius",
          "ty": {
            "t": "scalar",
            "name": "u64"
          }
        }
      ],
      "ret": {
        "t": "scalar",
        "name": "usize"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::gauss::Ring::div_rem",
      "name": "div_rem",
      "module": "num::gauss",
      "defined_at": "num/gauss.rs:75",
      "docs": [
        "Returns the quotient and the remainder of a point by a nonzero point: `z = q w + r` with the norm of `r` below the norm of `w`."
      ],
      "owner": "num::gauss::Ring",
      "self_kind": "value",
      "params": [
        {
          "name": "z",
          "ty": {
            "t": "tuple",
            "items": [
              {
                "t": "scalar",
                "name": "i64"
              },
              {
                "t": "scalar",
                "name": "i64"
              }
            ]
          }
        },
        {
          "name": "w",
          "ty": {
            "t": "tuple",
            "items": [
              {
                "t": "scalar",
                "name": "i64"
              },
              {
                "t": "scalar",
                "name": "i64"
              }
            ]
          }
        }
      ],
      "ret": {
        "t": "tuple",
        "items": [
          {
            "t": "tuple",
            "items": [
              {
                "t": "scalar",
                "name": "i64"
              },
              {
                "t": "scalar",
                "name": "i64"
              }
            ]
          },
          {
            "t": "tuple",
            "items": [
              {
                "t": "scalar",
                "name": "i64"
              },
              {
                "t": "scalar",
                "name": "i64"
              }
            ]
          }
        ]
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::gauss::Ring::fate",
      "name": "fate",
      "module": "num::gauss",
      "defined_at": "num/gauss.rs:133",
      "docs": [
        "Returns the fate of a whole number as a prime of the ring: split, inert or ramified, unit for one, zero for zero, composite otherwise."
      ],
      "owner": "num::gauss::Ring",
      "self_kind": "value",
      "params": [
        {
          "name": "n",
          "ty": {
            "t": "scalar",
            "name": "u64"
          }
        }
      ],
      "ret": {
        "t": "enum",
        "path": "num::gauss::Class"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::gauss::Ring::gaussian_gcd",
      "name": "gaussian_gcd",
      "module": "num::gauss",
      "defined_at": "num/gauss.rs:102",
      "docs": [
        "Returns the greatest common divisor of two points as its canonical associate, by the nearest-point Euclidean algorithm, the origin for two origins.",
        "",
        "```",
        "use mrlyrs::num::gauss::Ring;",
        "assert_eq!(Ring::Gaussian.gaussian_gcd((5, 0), (2, 1)), (2, 1));",
        "assert_eq!(Ring::Gaussian.gaussian_gcd((3, 0), (0, 7)), (1, 0));",
        "```"
      ],
      "owner": "num::gauss::Ring",
      "self_kind": "value",
      "params": [
        {
          "name": "z",
          "ty": {
            "t": "tuple",
            "items": [
              {
                "t": "scalar",
                "name": "i64"
              },
              {
                "t": "scalar",
                "name": "i64"
              }
            ]
          }
        },
        {
          "name": "w",
          "ty": {
            "t": "tuple",
            "items": [
              {
                "t": "scalar",
                "name": "i64"
              },
              {
                "t": "scalar",
                "name": "i64"
              }
            ]
          }
        }
      ],
      "ret": {
        "t": "tuple",
        "items": [
          {
            "t": "scalar",
            "name": "i64"
          },
          {
            "t": "scalar",
            "name": "i64"
          }
        ]
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::gauss::Ring::inert",
      "name": "inert",
      "module": "num::gauss",
      "defined_at": "num/gauss.rs:126",
      "docs": [
        "Returns whether a rational prime stays prime in the ring: 3 mod 4, or 2 mod 3."
      ],
      "owner": "num::gauss::Ring",
      "self_kind": "value",
      "params": [
        {
          "name": "p",
          "ty": {
            "t": "scalar",
            "name": "u64"
          }
        }
      ],
      "ret": {
        "t": "scalar",
        "name": "bool"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::gauss::Ring::mul",
      "name": "mul",
      "module": "num::gauss",
      "defined_at": "num/gauss.rs:33",
      "docs": [
        "Returns the product of two points."
      ],
      "owner": "num::gauss::Ring",
      "self_kind": "value",
      "params": [
        {
          "name": "arg1",
          "ty": {
            "t": "tuple",
            "items": [
              {
                "t": "scalar",
                "name": "i64"
              },
              {
                "t": "scalar",
                "name": "i64"
              }
            ]
          }
        },
        {
          "name": "arg2",
          "ty": {
            "t": "tuple",
            "items": [
              {
                "t": "scalar",
                "name": "i64"
              },
              {
                "t": "scalar",
                "name": "i64"
              }
            ]
          }
        }
      ],
      "ret": {
        "t": "tuple",
        "items": [
          {
            "t": "scalar",
            "name": "i64"
          },
          {
            "t": "scalar",
            "name": "i64"
          }
        ]
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::gauss::Ring::named",
      "name": "named",
      "module": "num::gauss",
      "defined_at": "num/gauss.rs:18",
      "docs": [
        "Reads a ring from its name."
      ],
      "owner": "num::gauss::Ring",
      "self_kind": null,
      "params": [
        {
          "name": "name",
          "ty": {
            "t": "str"
          }
        }
      ],
      "ret": {
        "t": "option",
        "item": {
          "t": "enum",
          "path": "num::gauss::Ring"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::gauss::Ring::nearest",
      "name": "nearest",
      "module": "num::gauss",
      "defined_at": "num/gauss.rs:174",
      "docs": [
        "Returns the point nearest a place in the plane."
      ],
      "owner": "num::gauss::Ring",
      "self_kind": "value",
      "params": [
        {
          "name": "x",
          "ty": {
            "t": "scalar",
            "name": "f64"
          }
        },
        {
          "name": "y",
          "ty": {
            "t": "scalar",
            "name": "f64"
          }
        }
      ],
      "ret": {
        "t": "tuple",
        "items": [
          {
            "t": "scalar",
            "name": "i64"
          },
          {
            "t": "scalar",
            "name": "i64"
          }
        ]
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::gauss::Ring::norm",
      "name": "norm",
      "module": "num::gauss",
      "defined_at": "num/gauss.rs:26",
      "docs": [
        "Returns the norm of a point: its squared length."
      ],
      "owner": "num::gauss::Ring",
      "self_kind": "value",
      "params": [
        {
          "name": "a",
          "ty": {
            "t": "scalar",
            "name": "i64"
          }
        },
        {
          "name": "b",
          "ty": {
            "t": "scalar",
            "name": "i64"
          }
        }
      ],
      "ret": {
        "t": "scalar",
        "name": "u64"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::gauss::Ring::place",
      "name": "place",
      "module": "num::gauss",
      "defined_at": "num/gauss.rs:166",
      "docs": [
        "Returns the place of a point in the plane, x right and y up, one unit between neighbours."
      ],
      "owner": "num::gauss::Ring",
      "self_kind": "value",
      "params": [
        {
          "name": "a",
          "ty": {
            "t": "scalar",
            "name": "i64"
          }
        },
        {
          "name": "b",
          "ty": {
            "t": "scalar",
            "name": "i64"
          }
        }
      ],
      "ret": {
        "t": "tuple",
        "items": [
          {
            "t": "scalar",
            "name": "f64"
          },
          {
            "t": "scalar",
            "name": "f64"
          }
        ]
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::gauss::Ring::ramified",
      "name": "ramified",
      "module": "num::gauss",
      "defined_at": "num/gauss.rs:119",
      "docs": [
        "Returns the one rational prime that ramifies: 2 or 3."
      ],
      "owner": "num::gauss::Ring",
      "self_kind": "value",
      "params": [],
      "ret": {
        "t": "scalar",
        "name": "u64"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::gauss::Ring::reach",
      "name": "reach",
      "module": "num::gauss",
      "defined_at": "num/gauss.rs:144",
      "docs": [
        "Returns the reach of a point: the ring of the window it sits on, the Chebyshev distance or the hex distance."
      ],
      "owner": "num::gauss::Ring",
      "self_kind": "value",
      "params": [
        {
          "name": "a",
          "ty": {
            "t": "scalar",
            "name": "i64"
          }
        },
        {
          "name": "b",
          "ty": {
            "t": "scalar",
            "name": "i64"
          }
        }
      ],
      "ret": {
        "t": "scalar",
        "name": "u64"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::gauss::Ring::symmetry",
      "name": "symmetry",
      "module": "num::gauss",
      "defined_at": "num/gauss.rs:54",
      "docs": [
        "Returns the order of the symmetry of the picture, the units and the mirror: 8 or 12."
      ],
      "owner": "num::gauss::Ring",
      "self_kind": "value",
      "params": [],
      "ret": {
        "t": "scalar",
        "name": "usize"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::gauss::Ring::top",
      "name": "top",
      "module": "num::gauss",
      "defined_at": "num/gauss.rs:159",
      "docs": [
        "Returns the largest norm within the reach: 2 r^2 at the square's corner, r^2 at the hexagon's."
      ],
      "owner": "num::gauss::Ring",
      "self_kind": "value",
      "params": [
        {
          "name": "radius",
          "ty": {
            "t": "scalar",
            "name": "u64"
          }
        }
      ],
      "ret": {
        "t": "scalar",
        "name": "u64"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::gauss::Ring::turn",
      "name": "turn",
      "module": "num::gauss",
      "defined_at": "num/gauss.rs:40",
      "docs": [
        "Returns the point turned anticlockwise by one unit: a quarter turn or a sixth."
      ],
      "owner": "num::gauss::Ring",
      "self_kind": "value",
      "params": [
        {
          "name": "a",
          "ty": {
            "t": "scalar",
            "name": "i64"
          }
        },
        {
          "name": "b",
          "ty": {
            "t": "scalar",
            "name": "i64"
          }
        }
      ],
      "ret": {
        "t": "tuple",
        "items": [
          {
            "t": "scalar",
            "name": "i64"
          },
          {
            "t": "scalar",
            "name": "i64"
          }
        ]
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::gauss::Ring::units",
      "name": "units",
      "module": "num::gauss",
      "defined_at": "num/gauss.rs:47",
      "docs": [
        "Returns the count of units: 4 or 6."
      ],
      "owner": "num::gauss::Ring",
      "self_kind": "value",
      "params": [],
      "ret": {
        "t": "scalar",
        "name": "usize"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::gauss::Ring::whole",
      "name": "whole",
      "module": "num::gauss",
      "defined_at": "num/gauss.rs:112",
      "docs": [
        "Returns the whole number an associate of the point lies on, when one lies on the positive real axis."
      ],
      "owner": "num::gauss::Ring",
      "self_kind": "value",
      "params": [
        {
          "name": "a",
          "ty": {
            "t": "scalar",
            "name": "i64"
          }
        },
        {
          "name": "b",
          "ty": {
            "t": "scalar",
            "name": "i64"
          }
        }
      ],
      "ret": {
        "t": "option",
        "item": {
          "t": "scalar",
          "name": "u64"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::gauss::Window::census",
      "name": "census",
      "module": "num::gauss",
      "defined_at": "num/gauss.rs:328",
      "docs": [
        "Counts every class inside."
      ],
      "owner": "num::gauss::Window",
      "self_kind": "ref",
      "params": [],
      "ret": {
        "t": "plain",
        "path": "num::gauss::Census"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::gauss::Window::class",
      "name": "class",
      "module": "num::gauss",
      "defined_at": "num/gauss.rs:294",
      "docs": [
        "Classifies a point: prime when its norm is a rational prime, or when it is a unit times a rational prime that stays prime.",
        "",
        "```",
        "use mrlyrs::num::gauss::{Class, Ring, Window};",
        "let window = Window::new(Ring::Gaussian, 3);",
        "assert_eq!(window.class(2, 1), Class::Split);",
        "assert_eq!(window.class(0, -3), Class::Inert);",
        "```"
      ],
      "owner": "num::gauss::Window",
      "self_kind": "ref",
      "params": [
        {
          "name": "a",
          "ty": {
            "t": "scalar",
            "name": "i64"
          }
        },
        {
          "name": "b",
          "ty": {
            "t": "scalar",
            "name": "i64"
          }
        }
      ],
      "ret": {
        "t": "enum",
        "path": "num::gauss::Class"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::gauss::Window::holds",
      "name": "holds",
      "module": "num::gauss",
      "defined_at": "num/gauss.rs:277",
      "docs": [
        "Returns whether a point lies inside."
      ],
      "owner": "num::gauss::Window",
      "self_kind": "ref",
      "params": [
        {
          "name": "a",
          "ty": {
            "t": "scalar",
            "name": "i64"
          }
        },
        {
          "name": "b",
          "ty": {
            "t": "scalar",
            "name": "i64"
          }
        }
      ],
      "ret": {
        "t": "scalar",
        "name": "bool"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::gauss::Window::new",
      "name": "new",
      "module": "num::gauss",
      "defined_at": "num/gauss.rs:261",
      "docs": [
        "Opens the window of a ring out to a reach, sieving every norm inside it."
      ],
      "owner": "num::gauss::Window",
      "self_kind": null,
      "params": [
        {
          "name": "ring",
          "ty": {
            "t": "enum",
            "path": "num::gauss::Ring"
          }
        },
        {
          "name": "radius",
          "ty": {
            "t": "scalar",
            "name": "u64"
          }
        }
      ],
      "ret": {
        "t": "class",
        "path": "num::gauss::Window",
        "dim": null
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::gauss::Window::points",
      "name": "points",
      "module": "num::gauss",
      "defined_at": "num/gauss.rs:315",
      "docs": [
        "Lists every point inside, row by row from the bottom left of the bounding square."
      ],
      "owner": "num::gauss::Window",
      "self_kind": "ref",
      "params": [],
      "ret": {
        "t": "vec",
        "item": {
          "t": "tuple",
          "items": [
            {
              "t": "scalar",
              "name": "i64"
            },
            {
              "t": "scalar",
              "name": "i64"
            }
          ]
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::gauss::Window::radius",
      "name": "radius",
      "module": "num::gauss",
      "defined_at": "num/gauss.rs:273",
      "docs": [
        "Returns the reach."
      ],
      "owner": "num::gauss::Window",
      "self_kind": "ref",
      "params": [],
      "ret": {
        "t": "scalar",
        "name": "u64"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::gauss::Window::ring",
      "name": "ring",
      "module": "num::gauss",
      "defined_at": "num/gauss.rs:269",
      "docs": [
        "Returns the ring."
      ],
      "owner": "num::gauss::Window",
      "self_kind": "ref",
      "params": [],
      "ret": {
        "t": "enum",
        "path": "num::gauss::Ring"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::gauss::classes",
      "name": "classes",
      "module": "num::gauss",
      "defined_at": "num/gauss.rs:397",
      "docs": [
        "Lists one point per associate class of the nonzero points of norm at most the bound: canonical associates, in order of norm and then of coordinates.",
        "",
        "```",
        "use mrlyrs::num::gauss::{classes, Ring};",
        "assert_eq!(classes(Ring::Gaussian, 5), vec![(1, 0), (1, 1), (2, 0), (1, 2), (2, 1)]);",
        "```"
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "ring",
          "ty": {
            "t": "enum",
            "path": "num::gauss::Ring"
          }
        },
        {
          "name": "bound",
          "ty": {
            "t": "scalar",
            "name": "u64"
          }
        }
      ],
      "ret": {
        "t": "vec",
        "item": {
          "t": "tuple",
          "items": [
            {
              "t": "scalar",
              "name": "i64"
            },
            {
              "t": "scalar",
              "name": "i64"
            }
          ]
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::gauss::peak",
      "name": "peak",
      "module": "num::gauss",
      "defined_at": "num/gauss.rs:380",
      "docs": [
        "Returns the norm from one through the limit with the most points and that count, the earliest on a tie.",
        "",
        "```",
        "assert_eq!(mrlyrs::num::gauss::peak(mrlyrs::num::gauss::Ring::Gaussian, 60), (25, 12));",
        "```"
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "ring",
          "ty": {
            "t": "enum",
            "path": "num::gauss::Ring"
          }
        },
        {
          "name": "limit",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "tuple",
        "items": [
          {
            "t": "scalar",
            "name": "usize"
          },
          {
            "t": "scalar",
            "name": "u32"
          }
        ]
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::gauss::shells",
      "name": "shells",
      "module": "num::gauss",
      "defined_at": "num/gauss.rs:361",
      "docs": [
        "Counts the points of every norm from zero through the limit, by enumeration: the ring weights of the lattice.",
        "",
        "```",
        "assert_eq!(mrlyrs::num::gauss::shells(mrlyrs::num::gauss::Ring::Gaussian, 5), vec![1, 4, 4, 0, 4, 8]);",
        "```"
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "ring",
          "ty": {
            "t": "enum",
            "path": "num::gauss::Ring"
          }
        },
        {
          "name": "limit",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "vec",
        "item": {
          "t": "scalar",
          "name": "u32"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::ladder::Design::abscissa",
      "name": "abscissa",
      "module": "num::ladder",
      "defined_at": "num/ladder.rs:140",
      "docs": [
        "Returns the abscissa `alpha = log_q k`."
      ],
      "owner": "num::ladder::Design",
      "self_kind": "ref",
      "params": [],
      "ret": {
        "t": "scalar",
        "name": "f64"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::ladder::Design::base",
      "name": "base",
      "module": "num::ladder",
      "defined_at": "num/ladder.rs:125",
      "docs": [
        "Returns the base."
      ],
      "owner": "num::ladder::Design",
      "self_kind": "ref",
      "params": [],
      "ret": {
        "t": "scalar",
        "name": "u64"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::ladder::Design::digits",
      "name": "digits",
      "module": "num::ladder",
      "defined_at": "num/ladder.rs:130",
      "docs": [
        "Returns the digit set, ascending."
      ],
      "owner": "num::ladder::Design",
      "self_kind": "ref",
      "params": [],
      "ret": {
        "t": "slice",
        "mutable": false,
        "item": {
          "t": "scalar",
          "name": "u64"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::ladder::Design::new",
      "name": "new",
      "module": "num::ladder",
      "defined_at": "num/ladder.rs:49",
      "docs": [
        "Builds a design on the base and the digit set, choosing the peel depth.",
        "",
        "```",
        "let design = mrlyrs::num::ladder::Design::new(3, &[0, 1]).unwrap();",
        "assert_eq!(design.peel(), 7);",
        "assert!((design.abscissa() - 0.630_929_753_571_457).abs() < 1e-14);",
        "```",
        "",
        "# Errors",
        "",
        "Errs at a base under two, at fewer than two digits, at a digit outside the base, or at an all-zero digit set."
      ],
      "owner": "num::ladder::Design",
      "self_kind": null,
      "params": [
        {
          "name": "base",
          "ty": {
            "t": "scalar",
            "name": "u64"
          }
        },
        {
          "name": "digits",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "scalar",
              "name": "u64"
            }
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "class",
          "path": "num::ladder::Design",
          "dim": null
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::ladder::Design::peel",
      "name": "peel",
      "module": "num::ladder",
      "defined_at": "num/ladder.rs:135",
      "docs": [
        "Returns the peel depth."
      ],
      "owner": "num::ladder::Design",
      "self_kind": "ref",
      "params": [],
      "ret": {
        "t": "scalar",
        "name": "usize"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::ladder::Design::period",
      "name": "period",
      "module": "num::ladder",
      "defined_at": "num/ladder.rs:145",
      "docs": [
        "Returns the pole spacing `2 pi / log q`."
      ],
      "owner": "num::ladder::Design",
      "self_kind": "ref",
      "params": [],
      "ret": {
        "t": "scalar",
        "name": "f64"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::ladder::Design::pole",
      "name": "pole",
      "module": "num::ladder",
      "defined_at": "num/ladder.rs:150",
      "docs": [
        "Returns the pole `s_(m,j) = alpha - m + 2 pi i j / log q`."
      ],
      "owner": "num::ladder::Design",
      "self_kind": "ref",
      "params": [
        {
          "name": "m",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "j",
          "ty": {
            "t": "scalar",
            "name": "i64"
          }
        }
      ],
      "ret": {
        "t": "class",
        "path": "num::zeta::Complex",
        "dim": null
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::ladder::Design::with_peel",
      "name": "with_peel",
      "module": "num::ladder",
      "defined_at": "num/ladder.rs:78",
      "docs": [
        "Builds a design at an explicit peel depth, at least two.",
        "",
        "```",
        "let shallow = mrlyrs::num::ladder::Design::with_peel(2, &[0, 1], 4).unwrap();",
        "assert_eq!(shallow.peel(), 4);",
        "```",
        "",
        "# Errors",
        "",
        "Errs at a bad base or digit set, and at a peel depth under two or past the exact integers."
      ],
      "owner": "num::ladder::Design",
      "self_kind": null,
      "params": [
        {
          "name": "base",
          "ty": {
            "t": "scalar",
            "name": "u64"
          }
        },
        {
          "name": "digits",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "scalar",
              "name": "u64"
            }
          }
        },
        {
          "name": "peel",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "class",
          "path": "num::ladder::Design",
          "dim": null
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::ladder::cofactor",
      "name": "cofactor",
      "module": "num::ladder",
      "defined_at": "num/ladder.rs:346",
      "docs": [
        "Returns the Lyndon cofactor `Z(s) = zeta_F(s) (1 - k q^(-s))` and the bound it is known to.",
        "",
        "The cofactor is the ladder numerator over the finite polynomial, so it is analytic on `Re s > alpha - 1` and a zero census on it needs no pole-free strip.",
        "The blind lattice here is `s = alpha - m + 2 pi i j / log q` for a whole `m >= 1`: the numerator itself is read at `m = 0`, which is what makes the residue available.",
        "",
        "# Errors",
        "",
        "Errs when the tolerance is out of reach, or when the point sits on the blind lattice."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "design",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "class",
              "path": "num::ladder::Design",
              "dim": null
            }
          }
        },
        {
          "name": "s",
          "ty": {
            "t": "class",
            "path": "num::zeta::Complex",
            "dim": null
          }
        },
        {
          "name": "tolerance",
          "ty": {
            "t": "scalar",
            "name": "f64"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "tuple",
          "items": [
            {
              "t": "class",
              "path": "num::zeta::Complex",
              "dim": null
            },
            {
              "t": "scalar",
              "name": "f64"
            }
          ]
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::ladder::residue",
      "name": "residue",
      "module": "num::ladder",
      "defined_at": "num/ladder.rs:363",
      "docs": [
        "Returns the residue of `zeta_F` at `s_(m,j) = alpha - m + 2 pi i j / log q` and the bound it is known to.",
        "",
        "At `m = 0` the factor `1 - k q^(-s)` has derivative `log q`, so the residue is the ladder numerator over `log q`; the column below comes off the same recursion, `(1 - q^m) R_m = sum_(l = 1)^m binom(-s_(m,j), l) q^(-s_(m,j)-l) gamma_l R_(m-l)`.",
        "The head term `(1 - k q^(-s)) D_(P-1)(s)` is dropped, since the factor vanishes at the pole; in double precision the factor is not exactly zero, and the residue of the dropped term, about `1e-15` at base 10, is not charged separately and sits inside the carried scale.",
        "",
        "# Errors",
        "",
        "Errs when the tolerance is out of reach."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "design",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "class",
              "path": "num::ladder::Design",
              "dim": null
            }
          }
        },
        {
          "name": "m",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "j",
          "ty": {
            "t": "scalar",
            "name": "i64"
          }
        },
        {
          "name": "tolerance",
          "ty": {
            "t": "scalar",
            "name": "f64"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "tuple",
          "items": [
            {
              "t": "class",
              "path": "num::zeta::Complex",
              "dim": null
            },
            {
              "t": "scalar",
              "name": "f64"
            }
          ]
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::ladder::zeta",
      "name": "zeta",
      "module": "num::ladder",
      "defined_at": "num/ladder.rs:333",
      "docs": [
        "Returns `zeta_F(s)` and the bound it is known to.",
        "",
        "The bound is the propagated truncation bound, which is proved, plus [`ROUNDING`] times the scale the ladder carries, which is a measured allowance; the acceptance test charges every term the returned bound carries, the Dirichlet polynomial's own scale included, so the returned bound is never above the tolerance asked.",
        "The recursion walks `w = s + j` upward and divides by `1 - k q^(-w)`, so it cannot read `s = alpha - m + 2 pi i j / log q` for a whole `m >= 0`: at those points it raises and names the pole. On a full digit set that lattice is `s = 1, 0, -1, -2, ...`, where `zeta_F` is `zeta` and only `s = 1` is singular.",
        "",
        "```",
        "let design = mrlyrs::num::ladder::Design::new(2, &[0, 1]).unwrap();",
        "let s = mrlyrs::num::zeta::Complex::new(2.0, 0.0);",
        "let (value, bound) = mrlyrs::num::ladder::zeta(&design, s, 1e-10).unwrap();",
        "assert!((value.re - std::f64::consts::PI * std::f64::consts::PI / 6.0).abs() < bound);",
        "```",
        "",
        "# Errors",
        "",
        "Errs when the tolerance is out of reach, or when the point sits on the blind lattice."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "design",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "class",
              "path": "num::ladder::Design",
              "dim": null
            }
          }
        },
        {
          "name": "s",
          "ty": {
            "t": "class",
            "path": "num::zeta::Complex",
            "dim": null
          }
        },
        {
          "name": "tolerance",
          "ty": {
            "t": "scalar",
            "name": "f64"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "tuple",
          "items": [
            {
              "t": "class",
              "path": "num::zeta::Complex",
              "dim": null
            },
            {
              "t": "scalar",
              "name": "f64"
            }
          ]
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::lattice::coprime_pairs",
      "name": "coprime_pairs",
      "module": "num::lattice",
      "defined_at": "num/lattice.rs:8",
      "docs": [
        "Counts the ordered pairs of coprime coordinates between one and n: twice the totient sum less one."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "n",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "scalar",
        "name": "u64"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::lattice::farey",
      "name": "farey",
      "module": "num::lattice",
      "defined_at": "num/lattice.rs:103",
      "docs": [
        "Walks the Farey sequence of the order by the Stern-Brocot mediant recurrence from zero over one to one over one: every reduced fraction with denominator at most the order, ascending.",
        "",
        "```",
        "let nodes = mrlyrs::num::lattice::farey(3);",
        "assert_eq!(nodes.len(), 5);",
        "```"
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "order",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "vec",
        "item": {
          "t": "plain",
          "path": "num::lattice::Node"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::lattice::grid",
      "name": "grid",
      "module": "num::lattice",
      "defined_at": "num/lattice.rs:128",
      "docs": [
        "Lists the grid crossings of a window's nodes, row-major over the ascending axis nodes."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "n",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "vec",
        "item": {
          "t": "plain",
          "path": "num::lattice::Node2d"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::lattice::new_nodes",
      "name": "new_nodes",
      "module": "num::lattice",
      "defined_at": "num/lattice.rs:144",
      "docs": [
        "Counts the nodes window n lights that window n minus one lacked: two at window one, phi of n after."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "n",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "scalar",
        "name": "u64"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::lattice::pi_estimate",
      "name": "pi_estimate",
      "module": "num::lattice",
      "defined_at": "num/lattice.rs:16",
      "docs": [
        "Estimates pi from visibility: the density of coprime pairs in the n-by-n window tends to six over pi squared."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "n",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "scalar",
        "name": "f64"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::lattice::recovered",
      "name": "recovered",
      "module": "num::lattice",
      "defined_at": "num/lattice.rs:66",
      "docs": [
        "Recovers the constant the dimension hides from the visible count of the window, pi at an even dimension and zeta of the dimension at an odd one.",
        "",
        "# Errors",
        "",
        "Errs at a zero dimension."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "n",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "dimension",
          "ty": {
            "t": "scalar",
            "name": "u32"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "scalar",
          "name": "f64"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::lattice::visible_density",
      "name": "visible_density",
      "module": "num::lattice",
      "defined_at": "num/lattice.rs:57",
      "docs": [
        "The density the visible count of a window in the dimension walks to, one over zeta of the dimension.",
        "",
        "# Errors",
        "",
        "Errs at a dimension of one or below."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "dimension",
          "ty": {
            "t": "scalar",
            "name": "u32"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "scalar",
          "name": "f64"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::lattice::zeta_factor",
      "name": "zeta_factor",
      "module": "num::lattice",
      "defined_at": "num/lattice.rs:26",
      "docs": [
        "The rational factor r with zeta of the dimension equal to r times pi to the dimension, read off the Bernoulli fraction; none at an odd dimension or past twelve.",
        "",
        "```",
        "assert!((mrlyrs::num::lattice::zeta_factor(4).unwrap() - 1.0 / 90.0).abs() < 1e-15);",
        "```"
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "dimension",
          "ty": {
            "t": "scalar",
            "name": "u32"
          }
        }
      ],
      "ret": {
        "t": "option",
        "item": {
          "t": "scalar",
          "name": "f64"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::lattice::zeta_whole",
      "name": "zeta_whole",
      "module": "num::lattice",
      "defined_at": "num/lattice.rs:42",
      "docs": [
        "The value zeta takes at a whole argument above one, the exact Bernoulli form at an even one and the Euler-Maclaurin sum at an odd one.",
        "",
        "# Errors",
        "",
        "Errs at a whole argument of one or below, where the sum does not converge."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "s",
          "ty": {
            "t": "scalar",
            "name": "u32"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "scalar",
          "name": "f64"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::memory::Rule::accepts",
      "name": "accepts",
      "module": "num::memory",
      "defined_at": "num/memory.rs:122",
      "docs": [
        "Returns whether a word, coarsest digit first, is accepted.",
        "",
        "```",
        "let golden = mrlyrs::num::memory::Rule::new(1, 2, 7).unwrap();",
        "assert!(golden.accepts(&[1, 0, 1]));",
        "assert!(!golden.accepts(&[1, 1, 0]));",
        "```"
      ],
      "owner": "num::memory::Rule",
      "self_kind": "ref",
      "params": [
        {
          "name": "word",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "scalar",
              "name": "usize"
            }
          }
        }
      ],
      "ret": {
        "t": "scalar",
        "name": "bool"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::memory::Rule::allowed",
      "name": "allowed",
      "module": "num::memory",
      "defined_at": "num/memory.rs:111",
      "docs": [
        "Returns whether the window is allowed, and false for any window out of range.",
        "",
        "```",
        "let golden = mrlyrs::num::memory::Rule::new(1, 2, 7).unwrap();",
        "assert!(golden.allowed(2));",
        "assert!(!golden.allowed(3));",
        "```"
      ],
      "owner": "num::memory::Rule",
      "self_kind": "ref",
      "params": [
        {
          "name": "window",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "scalar",
        "name": "bool"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::memory::Rule::alphabet",
      "name": "alphabet",
      "module": "num::memory",
      "defined_at": "num/memory.rs:141",
      "docs": [
        "Returns the letters that stand in at least one allowed window.",
        "",
        "```",
        "assert_eq!(mrlyrs::num::memory::Rule::new(1, 2, 7).unwrap().alphabet(), vec![0, 1]);",
        "assert!(mrlyrs::num::memory::Rule::new(1, 2, 0).unwrap().alphabet().is_empty());",
        "```"
      ],
      "owner": "num::memory::Rule",
      "self_kind": "ref",
      "params": [],
      "ret": {
        "t": "vec",
        "item": {
          "t": "scalar",
          "name": "usize"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::memory::Rule::codes",
      "name": "codes",
      "module": "num::memory",
      "defined_at": "num/memory.rs:95",
      "docs": [
        "Returns the count of rules of this shape, `2^(2^(k D))`."
      ],
      "owner": "num::memory::Rule",
      "self_kind": "ref",
      "params": [],
      "ret": {
        "t": "u128"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::memory::Rule::full",
      "name": "full",
      "module": "num::memory",
      "defined_at": "num/memory.rs:76",
      "docs": [
        "Returns the rule that allows every window.",
        "",
        "```",
        "assert_eq!(mrlyrs::num::memory::Rule::full(1, 2).unwrap().code, 15);",
        "```",
        "",
        "# Errors",
        "",
        "Errs when the dimension is not one, two or three, the width is zero, or the window count overruns."
      ],
      "owner": "num::memory::Rule",
      "self_kind": null,
      "params": [
        {
          "name": "dimension",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "width",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "class",
          "path": "num::memory::Rule",
          "dim": null
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::memory::Rule::letters",
      "name": "letters",
      "module": "num::memory",
      "defined_at": "num/memory.rs:85",
      "docs": [
        "Returns the letter count `2^D`, the digit vectors of the cube's corners."
      ],
      "owner": "num::memory::Rule",
      "self_kind": "ref",
      "params": [],
      "ret": {
        "t": "scalar",
        "name": "usize"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::memory::Rule::new",
      "name": "new",
      "module": "num::memory",
      "defined_at": "num/memory.rs:35",
      "docs": [
        "Builds a rule from its dimension, its width and its code.",
        "",
        "```",
        "assert!(mrlyrs::num::memory::Rule::new(1, 2, 7).is_ok());",
        "assert!(mrlyrs::num::memory::Rule::new(2, 4, 0).is_err());",
        "```",
        "",
        "# Errors",
        "",
        "Errs when the dimension is not one, two or three, the width is zero, the window count overruns, or the code runs past it."
      ],
      "owner": "num::memory::Rule",
      "self_kind": null,
      "params": [
        {
          "name": "dimension",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "width",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "code",
          "ty": {
            "t": "scalar",
            "name": "u64"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "class",
          "path": "num::memory::Rule",
          "dim": null
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::memory::Rule::states",
      "name": "states",
      "module": "num::memory",
      "defined_at": "num/memory.rs:100",
      "docs": [
        "Returns the state count `2^((k - 1) D)`, the windows of one digit less that the transfer matrix runs on."
      ],
      "owner": "num::memory::Rule",
      "self_kind": "ref",
      "params": [],
      "ret": {
        "t": "scalar",
        "name": "usize"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::memory::Rule::windows",
      "name": "windows",
      "module": "num::memory",
      "defined_at": "num/memory.rs:90",
      "docs": [
        "Returns the window count `2^(k D)`."
      ],
      "owner": "num::memory::Rule",
      "self_kind": "ref",
      "params": [],
      "ret": {
        "t": "scalar",
        "name": "usize"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::memory::allowed_windows",
      "name": "allowed_windows",
      "module": "num::memory",
      "defined_at": "num/memory.rs:506",
      "docs": [
        "Returns the count of allowed windows `card W`, the bits the code sets inside its window range.",
        "",
        "```",
        "assert_eq!(mrlyrs::num::memory::allowed_windows(&mrlyrs::num::memory::Rule::new(1, 2, 7).unwrap()), 3);",
        "```"
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "rule",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "class",
              "path": "num::memory::Rule",
              "dim": null
            }
          }
        }
      ],
      "ret": {
        "t": "scalar",
        "name": "usize"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::memory::cells",
      "name": "cells",
      "module": "num::memory",
      "defined_at": "num/memory.rs:239",
      "docs": [
        "Returns the accepted words of the level as cell indices of the `2^L` grid, `x` from bit `0` of every digit, `y` from bit `1`, `z` from bit `2`, coarsest digit first.",
        "",
        "The index is row major, `z side^2 + y side + x` with `side = 2^L`, so at `k = 1` the set is the level-`L` fill of the design of the same code.",
        "",
        "```",
        "let golden = mrlyrs::num::memory::Rule::new(1, 2, 7).unwrap();",
        "assert_eq!(mrlyrs::num::memory::cells(&golden, 2), vec![0, 1, 2]);",
        "```"
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "rule",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "class",
              "path": "num::memory::Rule",
              "dim": null
            }
          }
        },
        {
          "name": "level",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "vec",
        "item": {
          "t": "scalar",
          "name": "u64"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::memory::counts",
      "name": "counts",
      "module": "num::memory",
      "defined_at": "num/memory.rs:208",
      "docs": [
        "Returns `N_W(L)`, the count of accepted words, for `L = 1 ..= levels`, and stops early on the level whose count overruns a `u64`.",
        "",
        "For `L < k` every word of that length is accepted, so the count is `2^(D L)`.",
        "",
        "```",
        "let golden = mrlyrs::num::memory::Rule::new(1, 2, 7).unwrap();",
        "assert_eq!(mrlyrs::num::memory::counts(&golden, 6), vec![2, 3, 5, 8, 13, 21]);",
        "```"
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "rule",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "class",
              "path": "num::memory::Rule",
              "dim": null
            }
          }
        },
        {
          "name": "levels",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "vec",
        "item": {
          "t": "scalar",
          "name": "u64"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::memory::exponent",
      "name": "exponent",
      "module": "num::memory",
      "defined_at": "num/memory.rs:493",
      "docs": [
        "Returns the growth exponent `log_2 rho`, the growth per digit of the accepted word count.",
        "",
        "```",
        "let full = mrlyrs::num::memory::Rule::full(2, 1).unwrap();",
        "assert!((mrlyrs::num::memory::exponent(&full) - 2.0).abs() < 1e-12);",
        "```"
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "rule",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "class",
              "path": "num::memory::Rule",
              "dim": null
            }
          }
        }
      ],
      "ret": {
        "t": "scalar",
        "name": "f64"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::memory::kappa",
      "name": "kappa",
      "module": "num::memory",
      "defined_at": "num/memory.rs:526",
      "docs": [
        "Returns the memory number `kappa(W) = log_2(card W) / k - log_2 rho`, the bits a digit spends on memory.",
        "",
        "The window budget `log_2(card W) / k` is what a word of length `mk` could carry if its `m` disjoint windows were free of each other, and `log_2 rho` is what it really carries, so `kappa >= 0` and the gap is the interference the rule pays for.",
        "It is zero on every product rule `W = F^k`, where `card W = card F^k` and `rho = card F`, so every `k = 1` rule reads zero; it is `f64::INFINITY` when a window is allowed and nothing survives past the window, and zero when no window is allowed.",
        "",
        "```",
        "let golden = mrlyrs::num::memory::Rule::new(1, 2, 7).unwrap();",
        "assert!((mrlyrs::num::memory::kappa(&golden) - 0.098_239_336_730).abs() < 1e-9);",
        "assert_eq!(mrlyrs::num::memory::kappa(&mrlyrs::num::memory::Rule::full(2, 2).unwrap()), 0.0);",
        "```"
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "rule",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "class",
              "path": "num::memory::Rule",
              "dim": null
            }
          }
        }
      ],
      "ret": {
        "t": "scalar",
        "name": "f64"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::memory::perron",
      "name": "perron",
      "module": "num::memory",
      "defined_at": "num/memory.rs:303",
      "docs": [
        "Returns the Perron root of the transfer matrix, the count's growth per level.",
        "",
        "The digraph is split into its strongly connected components first; a component carrying no cycle contributes nothing, and a rule whose components all die past the window returns exactly `0`.",
        "Each cyclic component is irreducible, so `I + B` is primitive and the power iteration on it converges geometrically; the iteration stops on a sustained Cauchy move of the normalised vector, never on a plateau of one scalar, and the Collatz-Wielandt ratios bracket the root.",
        "The estimate is then made exact against the component's characteristic polynomial, taken by integer Faddeev-LeVerrier: an integer root is returned exactly, and otherwise the simple Perron root is bisected to the resolution of an `f64`.",
        "The answer is the largest component root.",
        "",
        "```",
        "let golden = mrlyrs::num::memory::Rule::new(1, 2, 7).unwrap();",
        "assert!((mrlyrs::num::memory::perron(&golden) - 1.618_033_988_749_895).abs() < 1e-12);",
        "assert_eq!(mrlyrs::num::memory::perron(&mrlyrs::num::memory::Rule::new(1, 2, 0).unwrap()), 0.0);",
        "```"
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "rule",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "class",
              "path": "num::memory::Rule",
              "dim": null
            }
          }
        }
      ],
      "ret": {
        "t": "scalar",
        "name": "f64"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::memory::transfer",
      "name": "transfer",
      "module": "num::memory",
      "defined_at": "num/memory.rs:165",
      "docs": [
        "Returns the transfer matrix on the `(k - 1)`-windows: entry `(s, t)` is one when the window that overlaps state `s` onto state `t` is allowed.",
        "",
        "At `k = 1` the one state is the empty window and the single entry counts the allowed letters.",
        "",
        "```",
        "let golden = mrlyrs::num::memory::Rule::new(1, 2, 7).unwrap();",
        "assert_eq!(mrlyrs::num::memory::transfer(&golden), vec![vec![1, 1], vec![1, 0]]);",
        "```"
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "rule",
          "ty": {
            "t": "ref",
            "mutable": false,
            "lifetime": null,
            "item": {
              "t": "class",
              "path": "num::memory::Rule",
              "dim": null
            }
          }
        }
      ],
      "ret": {
        "t": "vec",
        "item": {
          "t": "vec",
          "item": {
            "t": "scalar",
            "name": "u64"
          }
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::morse::Lift::all",
      "name": "all",
      "module": "num::morse",
      "defined_at": "num/morse.rs:92",
      "docs": [
        "Returns every Lift in canonical order."
      ],
      "owner": "num::morse::Lift",
      "self_kind": null,
      "params": [],
      "ret": {
        "t": "array",
        "item": {
          "t": "enum",
          "path": "num::morse::Lift"
        },
        "len": 4
      },
      "dims": [],
      "trait": null,
      "source": "named_enum",
      "constant": true,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::morse::Lift::at",
      "name": "at",
      "module": "num::morse",
      "defined_at": "num/morse.rs:122",
      "docs": [
        "Returns the sign at a site, zero for plus one and one for minus one."
      ],
      "owner": "num::morse::Lift",
      "self_kind": "value",
      "params": [
        {
          "name": "i",
          "ty": {
            "t": "scalar",
            "name": "u64"
          }
        },
        {
          "name": "j",
          "ty": {
            "t": "scalar",
            "name": "u64"
          }
        }
      ],
      "ret": {
        "t": "scalar",
        "name": "u8"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::morse::Lift::formula",
      "name": "formula",
      "module": "num::morse",
      "defined_at": "num/morse.rs:112",
      "docs": [
        "Returns the lift's formula, written the way the page prints it."
      ],
      "owner": "num::morse::Lift",
      "self_kind": "value",
      "params": [],
      "ret": {
        "t": "string"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::morse::Lift::name",
      "name": "name",
      "module": "num::morse",
      "defined_at": "num/morse.rs:92",
      "docs": [
        "Returns the Lift's display name."
      ],
      "owner": "num::morse::Lift",
      "self_kind": "ref",
      "params": [],
      "ret": {
        "t": "ref",
        "mutable": false,
        "lifetime": "'static",
        "item": {
          "t": "str"
        }
      },
      "dims": [],
      "trait": null,
      "source": "named_enum",
      "constant": false,
      "cross": {
        "status": "skip",
        "reason": "&'static return"
      }
    },
    {
      "path": "num::morse::boundary",
      "name": "boundary",
      "module": "num::morse",
      "defined_at": "num/morse.rs:67",
      "docs": [
        "Returns the run-boundary word, one wherever a letter differs from the next."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "word",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "scalar",
              "name": "u8"
            }
          }
        }
      ],
      "ret": {
        "t": "vec",
        "item": {
          "t": "scalar",
          "name": "u8"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::morse::difference",
      "name": "difference",
      "module": "num::morse",
      "defined_at": "num/morse.rs:273",
      "docs": [
        "Exclusive-ors two grids of the same length, site by site."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "a",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "scalar",
              "name": "u8"
            }
          }
        },
        {
          "name": "b",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "scalar",
              "name": "u8"
            }
          }
        }
      ],
      "ret": {
        "t": "vec",
        "item": {
          "t": "scalar",
          "name": "u8"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::morse::digits",
      "name": "digits",
      "module": "num::morse",
      "defined_at": "num/morse.rs:18",
      "docs": [
        "Builds the first letters of the Thue-Morse word by the digit rule."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "length",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "vec",
        "item": {
          "t": "scalar",
          "name": "u8"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::morse::doubling",
      "name": "doubling",
      "module": "num::morse",
      "defined_at": "num/morse.rs:78",
      "docs": [
        "Builds the period-doubling word by the substitution `1 -> 10`, `0 -> 11`, from the seed 1.",
        "",
        "```",
        "let word = mrlyrs::num::morse::doubling(8);",
        "assert_eq!(word, vec![1, 0, 1, 1, 1, 0, 1, 0]);",
        "assert_eq!(word, mrlyrs::num::morse::boundary(&mrlyrs::num::morse::digits(9)));",
        "```"
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "length",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "vec",
        "item": {
          "t": "scalar",
          "name": "u8"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::morse::faults",
      "name": "faults",
      "module": "num::morse",
      "defined_at": "num/morse.rs:278",
      "docs": [
        "Counts the sites where two grids of the same length differ."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "a",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "scalar",
              "name": "u8"
            }
          }
        },
        {
          "name": "b",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "scalar",
              "name": "u8"
            }
          }
        }
      ],
      "ret": {
        "t": "scalar",
        "name": "usize"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::morse::fold",
      "name": "fold",
      "module": "num::morse",
      "defined_at": "num/morse.rs:206",
      "docs": [
        "Tests a grid against the Kronecker power of its own corner tile.",
        "",
        "The corner tile is the only candidate worth testing. If the grid is `T` folded `L` times then",
        "its corner block is `T` with every bit flipped by `(L - 1) t00`, and folding that block `L`",
        "times flips the grid by `L (L - 1) t00`, which is even. So a grid folds if and only if it",
        "folds from its corner block, and no search over tiles is needed.",
        "",
        "# Errors",
        "",
        "Errs when the grid is not the side squared, below a tile side of two, and when the side is no power of the tile side."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "grid",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "scalar",
              "name": "u8"
            }
          }
        },
        {
          "name": "side",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "number",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "plain",
          "path": "num::morse::Fold"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::morse::letter",
      "name": "letter",
      "module": "num::morse",
      "defined_at": "num/morse.rs:13",
      "docs": [
        "Returns the Thue-Morse letter at the place, the parity of its binary digit sum.",
        "",
        "```",
        "let word: Vec<u8> = (0..8).map(mrlyrs::num::morse::letter).collect();",
        "assert_eq!(word, vec![0, 1, 1, 0, 1, 0, 0, 1]);",
        "```"
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "place",
          "ty": {
            "t": "scalar",
            "name": "u64"
          }
        }
      ],
      "ret": {
        "t": "scalar",
        "name": "u8"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::morse::lift",
      "name": "lift",
      "module": "num::morse",
      "defined_at": "num/morse.rs:133",
      "docs": [
        "Builds a lift as a row-major sign grid of the side, zero for plus one and one for minus one."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "kind",
          "ty": {
            "t": "enum",
            "path": "num::morse::Lift"
          }
        },
        {
          "name": "side",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "vec",
        "item": {
          "t": "scalar",
          "name": "u8"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::morse::power",
      "name": "power",
      "module": "num::morse",
      "defined_at": "num/morse.rs:153",
      "docs": [
        "Folds a tile of the side into its Kronecker power at the level, one bit per site.",
        "",
        "The bits ride the exclusive or, so the power is the digit rule of the tile: a site takes the",
        "exclusive or of the tile's bits at its base-side digit pairs.",
        "",
        "# Errors",
        "",
        "Errs when the tile is not the side squared, or when the level passes what a machine holds."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "tile",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "scalar",
              "name": "u8"
            }
          }
        },
        {
          "name": "number",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "level",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "vec",
          "item": {
            "t": "scalar",
            "name": "u8"
          }
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::morse::repeat",
      "name": "repeat",
      "module": "num::morse",
      "defined_at": "num/morse.rs:262",
      "docs": [
        "Repeats a tile until it fills a grid of the side."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "tile",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "scalar",
              "name": "u8"
            }
          }
        },
        {
          "name": "number",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "side",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "vec",
        "item": {
          "t": "scalar",
          "name": "u8"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::morse::runs",
      "name": "runs",
      "module": "num::morse",
      "defined_at": "num/morse.rs:54",
      "docs": [
        "Returns the lengths of the maximal blocks of one repeated letter, in order.",
        "",
        "```",
        "assert_eq!(mrlyrs::num::morse::runs(&[0, 1, 1, 0]), vec![1, 2, 1]);",
        "```"
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "word",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "scalar",
              "name": "u8"
            }
          }
        }
      ],
      "ret": {
        "t": "vec",
        "item": {
          "t": "scalar",
          "name": "usize"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::morse::stage",
      "name": "stage",
      "module": "num::morse",
      "defined_at": "num/morse.rs:39",
      "docs": [
        "Returns the substitution stage after the rounds, a word of length two to the rounds."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "rounds",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "vec",
        "item": {
          "t": "scalar",
          "name": "u8"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::morse::substitution",
      "name": "substitution",
      "module": "num::morse",
      "defined_at": "num/morse.rs:29",
      "docs": [
        "Builds the first letters of the Thue-Morse word by the substitution `0 -> 01`, `1 -> 10`.",
        "",
        "The seed is the single letter 0, and the rounds double the length until it covers the ask.",
        "",
        "```",
        "assert_eq!(mrlyrs::num::morse::substitution(8), mrlyrs::num::morse::digits(8));",
        "```"
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "length",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "vec",
        "item": {
          "t": "scalar",
          "name": "u8"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::morse::upsample",
      "name": "upsample",
      "module": "num::morse",
      "defined_at": "num/morse.rs:250",
      "docs": [
        "Blows a grid up by the scale, every site becoming a scale-by-scale block."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "grid",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "scalar",
              "name": "u8"
            }
          }
        },
        {
          "name": "side",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "scale",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "vec",
        "item": {
          "t": "scalar",
          "name": "u8"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::prime::Sieve::count",
      "name": "count",
      "module": "num::prime",
      "defined_at": "num/prime.rs:189",
      "docs": [
        "Returns the count of numbers marked prime so far."
      ],
      "owner": "num::prime::Sieve",
      "self_kind": "ref",
      "params": [],
      "ret": {
        "t": "scalar",
        "name": "usize"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::prime::Sieve::done",
      "name": "done",
      "module": "num::prime",
      "defined_at": "num/prime.rs:181",
      "docs": [
        "Returns whether every number is settled."
      ],
      "owner": "num::prime::Sieve",
      "self_kind": "ref",
      "params": [],
      "ret": {
        "t": "scalar",
        "name": "bool"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::prime::Sieve::finish",
      "name": "finish",
      "module": "num::prime",
      "defined_at": "num/prime.rs:175",
      "docs": [
        "Runs the sieve to the end."
      ],
      "owner": "num::prime::Sieve",
      "self_kind": "mut",
      "params": [],
      "ret": {
        "t": "unit"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::prime::Sieve::new",
      "name": "new",
      "module": "num::prime",
      "defined_at": "num/prime.rs:127",
      "docs": [
        "Starts a sieve over zero through the limit with every number untouched; it is done at once when no prime has its square inside."
      ],
      "owner": "num::prime::Sieve",
      "self_kind": null,
      "params": [
        {
          "name": "limit",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "class",
        "path": "num::prime::Sieve",
        "dim": null
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::prime::Sieve::rank",
      "name": "rank",
      "module": "num::prime",
      "defined_at": "num/prime.rs:197",
      "docs": [
        "Returns the count of primes used so far."
      ],
      "owner": "num::prime::Sieve",
      "self_kind": "ref",
      "params": [],
      "ret": {
        "t": "scalar",
        "name": "usize"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::prime::Sieve::step",
      "name": "step",
      "module": "num::prime",
      "defined_at": "num/prime.rs:154",
      "docs": [
        "Uses the next prime: marks it prime, strikes its untouched multiples from its square with its rank plus one, and returns it; zero once done.",
        "",
        "The strike mark saturates at 255, so it is exact through the 254th prime."
      ],
      "owner": "num::prime::Sieve",
      "self_kind": "mut",
      "params": [],
      "ret": {
        "t": "scalar",
        "name": "usize"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::prime::Sieve::struck",
      "name": "struck",
      "module": "num::prime",
      "defined_at": "num/prime.rs:193",
      "docs": [
        "Returns the count of numbers the last step struck."
      ],
      "owner": "num::prime::Sieve",
      "self_kind": "ref",
      "params": [],
      "ret": {
        "t": "scalar",
        "name": "usize"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::prime::Sieve::types",
      "name": "types",
      "module": "num::prime",
      "defined_at": "num/prime.rs:185",
      "docs": [
        "Returns the type of every number from zero: zero untouched, one prime, and one past the rank of the prime that struck it."
      ],
      "owner": "num::prime::Sieve",
      "self_kind": "ref",
      "params": [],
      "ret": {
        "t": "slice",
        "mutable": false,
        "item": {
          "t": "scalar",
          "name": "u8"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::prime::chart",
      "name": "chart",
      "module": "num::prime",
      "defined_at": "num/prime.rs:319",
      "docs": [
        "Reads the prime count against x over ln x and li at evenly spaced points from two up to the top, at most the given count of them, the top always last.",
        "",
        "```",
        "let readings = mrlyrs::num::prime::chart(100, 10);",
        "assert_eq!((readings.len(), readings[9].pi), (10, 25));",
        "```"
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "top",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "bins",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "vec",
        "item": {
          "t": "plain",
          "path": "num::prime::Reading"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::prime::flags",
      "name": "flags",
      "module": "num::prime",
      "defined_at": "num/prime.rs:205",
      "docs": [
        "Returns whether every number from zero through the limit is prime, the finished sieve read flag by flag.",
        "",
        "The flag is the prime mark, never the strike rank, so it is exact at any limit."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "limit",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "vec",
        "item": {
          "t": "scalar",
          "name": "bool"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::prime::goldbach",
      "name": "goldbach",
      "module": "num::prime",
      "defined_at": "num/prime.rs:245",
      "docs": [
        "Returns the count of unordered pairs of primes summing to the number, zero below four.",
        "",
        "```",
        "assert_eq!(mrlyrs::num::prime::goldbach(100), 6);",
        "```"
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "number",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "scalar",
        "name": "usize"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::prime::goldbach_record",
      "name": "goldbach_record",
      "module": "num::prime",
      "defined_at": "num/prime.rs:257",
      "docs": [
        "Returns the count of prime pairs at every even number from four up to the top, one entry per even number.",
        "",
        "```",
        "assert_eq!(mrlyrs::num::prime::goldbach_record(10), vec![1, 1, 1, 2]);",
        "```"
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "top",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "vec",
        "item": {
          "t": "scalar",
          "name": "usize"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::prime::is_prime",
      "name": "is_prime",
      "module": "num::prime",
      "defined_at": "num/prime.rs:10",
      "docs": [
        "Returns whether the number is prime, by trial division on the six-step wheel.",
        "",
        "```",
        "assert!(mrlyrs::num::prime::is_prime(97));",
        "```"
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "number",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "scalar",
        "name": "bool"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::prime::pile",
      "name": "pile",
      "module": "num::prime",
      "defined_at": "num/prime.rs:285",
      "docs": [
        "Reads a wide number as a pile of stones, its rectangles built from the divisors of its factorization.",
        "",
        "```",
        "let pile = mrlyrs::num::prime::pile(6);",
        "assert_eq!(pile.rectangles, vec![(1, 6), (2, 3)]);",
        "assert!(!pile.prime);",
        "```"
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "number",
          "ty": {
            "t": "scalar",
            "name": "u64"
          }
        }
      ],
      "ret": {
        "t": "plain",
        "path": "num::prime::Pile"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::prime::prime_count",
      "name": "prime_count",
      "module": "num::prime",
      "defined_at": "num/prime.rs:230",
      "docs": [
        "Returns the count of primes at or below n.",
        "",
        "```",
        "assert_eq!(mrlyrs::num::prime::prime_count(100), 25);",
        "```"
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "n",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "scalar",
        "name": "usize"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::prime::prime_from",
      "name": "prime_from",
      "module": "num::prime",
      "defined_at": "num/prime.rs:35",
      "docs": [
        "Returns the smallest prime at or above the number.",
        "",
        "```",
        "assert_eq!(mrlyrs::num::prime::prime_from(90), 97);",
        "```"
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "number",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "scalar",
        "name": "usize"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::prime::primes",
      "name": "primes",
      "module": "num::prime",
      "defined_at": "num/prime.rs:216",
      "docs": [
        "Returns the primes up to the limit, the finished sieve read as a list.",
        "",
        "```",
        "assert_eq!(mrlyrs::num::prime::primes(20), vec![2, 3, 5, 7, 11, 13, 17, 19]);",
        "```"
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "limit",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "vec",
        "item": {
          "t": "scalar",
          "name": "usize"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::prime::rectangles",
      "name": "rectangles",
      "module": "num::prime",
      "defined_at": "num/prime.rs:48",
      "docs": [
        "Returns every rectangle of the number as a pair of sides, the shorter first, ascending: the divisors at or below the root.",
        "",
        "```",
        "assert_eq!(mrlyrs::num::prime::rectangles(6), vec![(1, 6), (2, 3)]);",
        "```"
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "number",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "vec",
        "item": {
          "t": "tuple",
          "items": [
            {
              "t": "scalar",
              "name": "usize"
            },
            {
              "t": "scalar",
              "name": "usize"
            }
          ]
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::prime::splits",
      "name": "splits",
      "module": "num::prime",
      "defined_at": "num/prime.rs:58",
      "docs": [
        "Returns every pair of primes summing to the number, odd numbers included, the smaller first, ascending."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "number",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "vec",
        "item": {
          "t": "tuple",
          "items": [
            {
              "t": "scalar",
              "name": "usize"
            },
            {
              "t": "scalar",
              "name": "usize"
            }
          ]
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::prime::squares",
      "name": "squares",
      "module": "num::prime",
      "defined_at": "num/prime.rs:72",
      "docs": [
        "Returns the smallest pair of positive sides whose squares sum to the number, when one exists."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "number",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "option",
        "item": {
          "t": "tuple",
          "items": [
            {
              "t": "scalar",
              "name": "usize"
            },
            {
              "t": "scalar",
              "name": "usize"
            }
          ]
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::prime::study",
      "name": "study",
      "module": "num::prime",
      "defined_at": "num/prime.rs:101",
      "docs": [
        "Returns one prime object for every prime up to and including the limit."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "limit",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "vec",
        "item": {
          "t": "plain",
          "path": "num::prime::Prime"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::radix::Base::class",
      "name": "class",
      "module": "num::radix",
      "defined_at": "num/radix.rs:121",
      "docs": [
        "Returns the index in the canonical residue system of the class of a point.",
        "",
        "# Errors",
        "",
        "Errs when the residue system is short, or when the point lies in no class of it."
      ],
      "owner": "num::radix::Base",
      "self_kind": "value",
      "params": [
        {
          "name": "z",
          "ty": {
            "t": "tuple",
            "items": [
              {
                "t": "scalar",
                "name": "i64"
              },
              {
                "t": "scalar",
                "name": "i64"
              }
            ]
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "scalar",
          "name": "usize"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::radix::Base::congruent",
      "name": "congruent",
      "module": "num::radix",
      "defined_at": "num/radix.rs:64",
      "docs": [
        "Returns whether two points are congruent modulo the base."
      ],
      "owner": "num::radix::Base",
      "self_kind": "value",
      "params": [
        {
          "name": "z",
          "ty": {
            "t": "tuple",
            "items": [
              {
                "t": "scalar",
                "name": "i64"
              },
              {
                "t": "scalar",
                "name": "i64"
              }
            ]
          }
        },
        {
          "name": "w",
          "ty": {
            "t": "tuple",
            "items": [
              {
                "t": "scalar",
                "name": "i64"
              },
              {
                "t": "scalar",
                "name": "i64"
              }
            ]
          }
        }
      ],
      "ret": {
        "t": "scalar",
        "name": "bool"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::radix::Base::group",
      "name": "group",
      "module": "num::radix",
      "defined_at": "num/radix.rs:143",
      "docs": [
        "Returns the symmetry group of the base as permutations of the canonical residue indices: every unit multiplication, and every unit times conjugation when the conjugate of the base is an associate of the base.",
        "",
        "Multiplying every digit by a unit `v` carries the attractor of a design to `v` times that attractor over the same base, so the unit group acts; conjugation carries the base to its conjugate and joins the group exactly when that is an associate.",
        "",
        "The list is the Burnside multiset, one entry per abstract group element, and not the order of the permutation group it induces: the action need not be faithful, so entries repeat, and the acting image is the deduplicated list.",
        "",
        "# Errors",
        "",
        "Errs when the residue system is short, or when an image lies in no class of it."
      ],
      "owner": "num::radix::Base",
      "self_kind": "value",
      "params": [],
      "ret": {
        "t": "result",
        "item": {
          "t": "vec",
          "item": {
            "t": "vec",
            "item": {
              "t": "scalar",
              "name": "usize"
            }
          }
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::radix::Base::mirrored",
      "name": "mirrored",
      "module": "num::radix",
      "defined_at": "num/radix.rs:128",
      "docs": [
        "Returns whether the conjugate of the base is an associate of the base, which is when the mirror joins the symmetry group."
      ],
      "owner": "num::radix::Base",
      "self_kind": "value",
      "params": [],
      "ret": {
        "t": "scalar",
        "name": "bool"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::radix::Base::new",
      "name": "new",
      "module": "num::radix",
      "defined_at": "num/radix.rs:36",
      "docs": [
        "Fixes a base in a ring.",
        "",
        "# Errors",
        "",
        "Errs below norm two."
      ],
      "owner": "num::radix::Base",
      "self_kind": null,
      "params": [
        {
          "name": "ring",
          "ty": {
            "t": "enum",
            "path": "num::gauss::Ring"
          }
        },
        {
          "name": "value",
          "ty": {
            "t": "tuple",
            "items": [
              {
                "t": "scalar",
                "name": "i64"
              },
              {
                "t": "scalar",
                "name": "i64"
              }
            ]
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "class",
          "path": "num::radix::Base",
          "dim": null
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::radix::Base::norm",
      "name": "norm",
      "module": "num::radix",
      "defined_at": "num/radix.rs:52",
      "docs": [
        "Returns the norm `q` of the base: the count of residue classes and the square of the scale."
      ],
      "owner": "num::radix::Base",
      "self_kind": "value",
      "params": [],
      "ret": {
        "t": "scalar",
        "name": "u64"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::radix::Base::power",
      "name": "power",
      "module": "num::radix",
      "defined_at": "num/radix.rs:56",
      "docs": [
        "Returns the base raised to a level."
      ],
      "owner": "num::radix::Base",
      "self_kind": "value",
      "params": [
        {
          "name": "level",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "tuple",
        "items": [
          {
            "t": "scalar",
            "name": "i64"
          },
          {
            "t": "scalar",
            "name": "i64"
          }
        ]
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::radix::Base::residues",
      "name": "residues",
      "module": "num::radix",
      "defined_at": "num/radix.rs:80",
      "docs": [
        "Returns the canonical complete residue system modulo the base: the `q` representatives of least norm, ties broken by argument in `[0, 2 pi)`.",
        "",
        "The system is built greedily over every point of norm at most `q` sorted by norm and then by argument, which reaches every class because the covering radius of the lattice `b R` is `|b| / sqrt(2)` on the square lattice and `|b| / sqrt(3)` on the hexagonal.",
        "",
        "```",
        "use mrlyrs::num::gauss::Ring;",
        "use mrlyrs::num::radix::Base;",
        "assert_eq!(Base::new(Ring::Gaussian, (1, 1)).unwrap().residues().unwrap(), vec![(0, 0), (1, 0)]);",
        "```",
        "",
        "# Errors",
        "",
        "Errs when the greedy sweep finds fewer classes than the norm."
      ],
      "owner": "num::radix::Base",
      "self_kind": "value",
      "params": [],
      "ret": {
        "t": "result",
        "item": {
          "t": "vec",
          "item": {
            "t": "tuple",
            "items": [
              {
                "t": "scalar",
                "name": "i64"
              },
              {
                "t": "scalar",
                "name": "i64"
              }
            ]
          }
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::radix::Base::ring",
      "name": "ring",
      "module": "num::radix",
      "defined_at": "num/radix.rs:44",
      "docs": [
        "Returns the ring."
      ],
      "owner": "num::radix::Base",
      "self_kind": "value",
      "params": [],
      "ret": {
        "t": "enum",
        "path": "num::gauss::Ring"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::radix::Base::value",
      "name": "value",
      "module": "num::radix",
      "defined_at": "num/radix.rs:48",
      "docs": [
        "Returns the base element."
      ],
      "owner": "num::radix::Base",
      "self_kind": "value",
      "params": [],
      "ret": {
        "t": "tuple",
        "items": [
          {
            "t": "scalar",
            "name": "i64"
          },
          {
            "t": "scalar",
            "name": "i64"
          }
        ]
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::radix::Radix::base",
      "name": "base",
      "module": "num::radix",
      "defined_at": "num/radix.rs:271",
      "docs": [
        "Returns the base."
      ],
      "owner": "num::radix::Radix",
      "self_kind": "ref",
      "params": [],
      "ret": {
        "t": "class",
        "path": "num::radix::Base",
        "dim": null
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::radix::Radix::canonical",
      "name": "canonical",
      "module": "num::radix",
      "defined_at": "num/radix.rs:307",
      "docs": [
        "Returns whether every digit is the canonical representative of its class.",
        "",
        "# Errors",
        "",
        "Errs when the residue system is short."
      ],
      "owner": "num::radix::Radix",
      "self_kind": "ref",
      "params": [],
      "ret": {
        "t": "result",
        "item": {
          "t": "scalar",
          "name": "bool"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::radix::Radix::code",
      "name": "code",
      "module": "num::radix",
      "defined_at": "num/radix.rs:295",
      "docs": [
        "Returns the code of the classes the digits occupy, which names the design only when the digits are the canonical representatives.",
        "",
        "# Errors",
        "",
        "Errs when the residue system is short, or when a digit lies in no class of it."
      ],
      "owner": "num::radix::Radix",
      "self_kind": "ref",
      "params": [],
      "ret": {
        "t": "result",
        "item": {
          "t": "u128"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::radix::Radix::digits",
      "name": "digits",
      "module": "num::radix",
      "defined_at": "num/radix.rs:279",
      "docs": [
        "Returns the digits."
      ],
      "owner": "num::radix::Radix",
      "self_kind": "ref",
      "params": [],
      "ret": {
        "t": "slice",
        "mutable": false,
        "item": {
          "t": "tuple",
          "items": [
            {
              "t": "scalar",
              "name": "i64"
            },
            {
              "t": "scalar",
              "name": "i64"
            }
          ]
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::radix::Radix::dimension",
      "name": "dimension",
      "module": "num::radix",
      "defined_at": "num/radix.rs:316",
      "docs": [
        "Returns the similarity dimension `log |F| / log sqrt(q)`, the ratio of the digit count to the scale of the base."
      ],
      "owner": "num::radix::Radix",
      "self_kind": "ref",
      "params": [],
      "ret": {
        "t": "scalar",
        "name": "f64"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::radix::Radix::distinct",
      "name": "distinct",
      "module": "num::radix",
      "defined_at": "num/radix.rs:354",
      "docs": [
        "Returns the count of distinct level-`L` points: the glue count, which is the fill exactly when no two words name one point."
      ],
      "owner": "num::radix::Radix",
      "self_kind": "ref",
      "params": [
        {
          "name": "level",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "scalar",
        "name": "usize"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::radix::Radix::fill",
      "name": "fill",
      "module": "num::radix",
      "defined_at": "num/radix.rs:312",
      "docs": [
        "Returns the count of words of a level, `|F|^L`."
      ],
      "owner": "num::radix::Radix",
      "self_kind": "ref",
      "params": [
        {
          "name": "level",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "u128"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::radix::Radix::from_code",
      "name": "from_code",
      "module": "num::radix",
      "defined_at": "num/radix.rs:226",
      "docs": [
        "Builds an untwisted design from a code over the canonical residue system, bit `i` of the code selecting residue `i`.",
        "",
        "# Errors",
        "",
        "Errs when the class count passes 128, and when the code runs past the classes."
      ],
      "owner": "num::radix::Radix",
      "self_kind": null,
      "params": [
        {
          "name": "base",
          "ty": {
            "t": "class",
            "path": "num::radix::Base",
            "dim": null
          }
        },
        {
          "name": "code",
          "ty": {
            "t": "u128"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "class",
          "path": "num::radix::Radix",
          "dim": null
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::radix::Radix::new",
      "name": "new",
      "module": "num::radix",
      "defined_at": "num/radix.rs:192",
      "docs": [
        "Builds a design from a base, a digit list and a unit twist per digit.",
        "",
        "Pairwise incongruent digits are the hypothesis of the untwisted fill law: they are what recovers the last digit from the word read modulo the base, so a repeated class is refused here rather than silently gluing words.",
        "",
        "# Errors",
        "",
        "Errs on a length mismatch, on a twist whose norm is not one, and on two digits congruent modulo the base."
      ],
      "owner": "num::radix::Radix",
      "self_kind": null,
      "params": [
        {
          "name": "base",
          "ty": {
            "t": "class",
            "path": "num::radix::Base",
            "dim": null
          }
        },
        {
          "name": "digits",
          "ty": {
            "t": "vec",
            "item": {
              "t": "tuple",
              "items": [
                {
                  "t": "scalar",
                  "name": "i64"
                },
                {
                  "t": "scalar",
                  "name": "i64"
                }
              ]
            }
          }
        },
        {
          "name": "twists",
          "ty": {
            "t": "vec",
            "item": {
              "t": "tuple",
              "items": [
                {
                  "t": "scalar",
                  "name": "i64"
                },
                {
                  "t": "scalar",
                  "name": "i64"
                }
              ]
            }
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "class",
          "path": "num::radix::Radix",
          "dim": null
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::radix::Radix::plane",
      "name": "plane",
      "module": "num::radix",
      "defined_at": "num/radix.rs:340",
      "docs": [
        "Returns the level-`L` points in the plane, the scaled words divided by `b^L`."
      ],
      "owner": "num::radix::Radix",
      "self_kind": "ref",
      "params": [
        {
          "name": "level",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "vec",
        "item": {
          "t": "tuple",
          "items": [
            {
              "t": "scalar",
              "name": "f64"
            },
            {
              "t": "scalar",
              "name": "f64"
            }
          ]
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::radix::Radix::ring",
      "name": "ring",
      "module": "num::radix",
      "defined_at": "num/radix.rs:275",
      "docs": [
        "Returns the ring."
      ],
      "owner": "num::radix::Radix",
      "self_kind": "ref",
      "params": [],
      "ret": {
        "t": "enum",
        "path": "num::gauss::Ring"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::radix::Radix::size",
      "name": "size",
      "module": "num::radix",
      "defined_at": "num/radix.rs:287",
      "docs": [
        "Returns the digit count `|F|`."
      ],
      "owner": "num::radix::Radix",
      "self_kind": "ref",
      "params": [],
      "ret": {
        "t": "scalar",
        "name": "usize"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::radix::Radix::twists",
      "name": "twists",
      "module": "num::radix",
      "defined_at": "num/radix.rs:283",
      "docs": [
        "Returns the twists."
      ],
      "owner": "num::radix::Radix",
      "self_kind": "ref",
      "params": [],
      "ret": {
        "t": "slice",
        "mutable": false,
        "item": {
          "t": "tuple",
          "items": [
            {
              "t": "scalar",
              "name": "i64"
            },
            {
              "t": "scalar",
              "name": "i64"
            }
          ]
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::radix::Radix::with_twists",
      "name": "with_twists",
      "module": "num::radix",
      "defined_at": "num/radix.rs:254",
      "docs": [
        "Returns the design with the twists named by their index in the unit list, the units in turning order from one.",
        "",
        "# Errors",
        "",
        "Errs at a twist index past the unit list."
      ],
      "owner": "num::radix::Radix",
      "self_kind": "value",
      "params": [
        {
          "name": "units",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "scalar",
              "name": "usize"
            }
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "class",
          "path": "num::radix::Radix",
          "dim": null
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::radix::Radix::words",
      "name": "words",
      "module": "num::radix",
      "defined_at": "num/radix.rs:322",
      "docs": [
        "Returns the level-`L` points in exact ring coordinates scaled by `b^L`.",
        "",
        "The place map of digit `d` is `phi_d(x) = (u_d x + d) / b`, a word `d_1 ... d_L` lands on `phi_(d_1)(... phi_(d_L)(0))`, and that point times `b^L` is `sum_(j=1..L) (prod_(i<j) u_(d_i)) d_j b^(L-j)`, which stays in the ring. Words come in digit-lexicographic order, the first digit slowest."
      ],
      "owner": "num::radix::Radix",
      "self_kind": "ref",
      "params": [
        {
          "name": "level",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "vec",
        "item": {
          "t": "tuple",
          "items": [
            {
              "t": "scalar",
              "name": "i64"
            },
            {
              "t": "scalar",
              "name": "i64"
            }
          ]
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::radix::flowsnake",
      "name": "flowsnake",
      "module": "num::radix",
      "defined_at": "num/radix.rs:406",
      "docs": [
        "Returns the flowsnake as a radix design: base `3 + omega` of norm seven on the hexagonal lattice, the full residue system, code `127`.",
        "",
        "# Errors",
        "",
        "The fixed design is in range, so this never errs."
      ],
      "owner": null,
      "self_kind": null,
      "params": [],
      "ret": {
        "t": "result",
        "item": {
          "t": "class",
          "path": "num::radix::Radix",
          "dim": null
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::radix::gasket",
      "name": "gasket",
      "module": "num::radix",
      "defined_at": "num/radix.rs:377",
      "docs": [
        "Returns the Sierpinski gasket as a radix design: base `2` on the hexagonal lattice, three of the four residues, code `7`.",
        "",
        "# Errors",
        "",
        "The fixed design is in range, so this never errs."
      ],
      "owner": null,
      "self_kind": null,
      "params": [],
      "ret": {
        "t": "result",
        "item": {
          "t": "class",
          "path": "num::radix::Radix",
          "dim": null
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::radix::koch",
      "name": "koch",
      "module": "num::radix",
      "defined_at": "num/radix.rs:366",
      "docs": [
        "Returns the Koch curve as a radix design: base `3` on the hexagonal lattice, digits `0, 1, 2 + omega, 2`, twists `1, e^(i pi/3), e^(-i pi/3), 1`.",
        "",
        "The digits are not the canonical residues: `2` and `-1` share a class and the canonical system holds `-1`, so the code alone does not name this design.",
        "",
        "# Errors",
        "",
        "The fixed design is in range, so this never errs."
      ],
      "owner": null,
      "self_kind": null,
      "params": [],
      "ret": {
        "t": "result",
        "item": {
          "t": "class",
          "path": "num::radix::Radix",
          "dim": null
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::radix::terdragon",
      "name": "terdragon",
      "module": "num::radix",
      "defined_at": "num/radix.rs:397",
      "docs": [
        "Returns the terdragon as a radix design: base `2 + omega` on the hexagonal lattice, the full residue system, code `7`, twisted by `1, omega, 1`.",
        "",
        "The untwisted code misses the curve: reading the L-system `F -> F + F - F` at `120` degrees as a turtle, three segments to a level, and normalising by the endpoint gives the segment starts word for word only under this twist.",
        "",
        "# Errors",
        "",
        "The fixed design is in range, so this never errs."
      ],
      "owner": null,
      "self_kind": null,
      "params": [],
      "ret": {
        "t": "result",
        "item": {
          "t": "class",
          "path": "num::radix::Radix",
          "dim": null
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::radix::tile",
      "name": "tile",
      "module": "num::radix",
      "defined_at": "num/radix.rs:417",
      "docs": [
        "Returns the plane design of a cell code as a radix design: base the rational integer `m`, of norm `m^2`, on the square lattice, no twist, digits the box residues `{x + y i : 0 <= x, y < m}`.",
        "",
        "Bit `y m + x` of the code is the cell at row `y` and column `x` of the `m` by `m` tile, the column the real part and the row the imaginary part, so the level-`L` words scaled by `m^L` are exactly the filled cells of the level-`L` tile read as `(column, row)`.",
        "",
        "# Errors",
        "",
        "Errs below a side of two, at a tile of 128 cells or more, and at a code running past the cells."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "m",
          "ty": {
            "t": "scalar",
            "name": "u64"
          }
        },
        {
          "name": "code",
          "ty": {
            "t": "u128"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "class",
          "path": "num::radix::Radix",
          "dim": null
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::radix::twindragon",
      "name": "twindragon",
      "module": "num::radix",
      "defined_at": "num/radix.rs:386",
      "docs": [
        "Returns the twindragon as a radix design: base `1 + i` on the square lattice, the full residue system, code `3`.",
        "",
        "# Errors",
        "",
        "The fixed design is in range, so this never errs."
      ],
      "owner": null,
      "self_kind": null,
      "params": [],
      "ret": {
        "t": "result",
        "item": {
          "t": "class",
          "path": "num::radix::Radix",
          "dim": null
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::series::basel",
      "name": "basel",
      "module": "num::series",
      "defined_at": "num/series.rs:270",
      "docs": [
        "Returns the Basel sum of the reciprocal squares over n terms, walking to pi squared over six.",
        "",
        "```",
        "assert!((mrlyrs::num::series::basel(3) - 49.0 / 36.0).abs() < 1e-15);",
        "```"
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "n",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "scalar",
        "name": "f64"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::series::bernoulli",
      "name": "bernoulli",
      "module": "num::series",
      "defined_at": "num/series.rs:331",
      "docs": [
        "Builds the first Bernoulli numbers as exact reduced fractions on the minus one half convention.",
        "",
        "# Errors",
        "",
        "Errs past a count of thirty-two, where the fractions overrun a signed hundred and twenty-eight bits."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "count",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "vec",
          "item": {
            "t": "tuple",
            "items": [
              {
                "t": "i128"
              },
              {
                "t": "i128"
              }
            ]
          }
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::series::beta",
      "name": "beta",
      "module": "num::series",
      "defined_at": "num/series.rs:143",
      "docs": [
        "Returns the Dirichlet beta value, the alternating odd-denominator sum averaged over its last two partial sums."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "s",
          "ty": {
            "t": "scalar",
            "name": "f64"
          }
        },
        {
          "name": "terms",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "scalar",
        "name": "f64"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::series::binary",
      "name": "binary",
      "module": "num::series",
      "defined_at": "num/series.rs:34",
      "docs": [
        "Returns the powers of two up to the limit."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "limit",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "vec",
        "item": {
          "t": "scalar",
          "name": "usize"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::series::catalan",
      "name": "catalan",
      "module": "num::series",
      "defined_at": "num/series.rs:64",
      "docs": [
        "Returns the distinct Catalan numbers up to the limit.",
        "",
        "```",
        "assert_eq!(mrlyrs::num::series::catalan(50), vec![1, 2, 5, 14, 42]);",
        "```"
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "limit",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "vec",
        "item": {
          "t": "scalar",
          "name": "usize"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::series::chi3",
      "name": "chi3",
      "module": "num::series",
      "defined_at": "num/series.rs:183",
      "docs": [
        "Returns the mod-three rhythm of the number: zero, one, minus one."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "number",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "scalar",
        "name": "i8"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::series::chi4",
      "name": "chi4",
      "module": "num::series",
      "defined_at": "num/series.rs:178",
      "docs": [
        "Returns the mod-four rhythm of the number: zero, one, zero, minus one.",
        "",
        "```",
        "assert_eq!(mrlyrs::num::series::chi4(7), -1);",
        "```"
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "number",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "scalar",
        "name": "i8"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::series::chi8",
      "name": "chi8",
      "module": "num::series",
      "defined_at": "num/series.rs:169",
      "docs": [
        "Returns the mod-eight rhythm of the number, the discriminant minus-eight character: one on one and three, minus one on five and seven, zero on the evens.",
        "",
        "```",
        "assert_eq!(mrlyrs::num::series::chi8(3), 1);",
        "assert_eq!(mrlyrs::num::series::chi8(5), -1);",
        "```"
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "number",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "scalar",
        "name": "i8"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::series::dirichlet",
      "name": "dirichlet",
      "module": "num::series",
      "defined_at": "num/series.rs:188",
      "docs": [
        "Returns the L-series partial sum with a periodic rhythm painted on the terms."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "s",
          "ty": {
            "t": "scalar",
            "name": "f64"
          }
        },
        {
          "name": "rhythm",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "scalar",
              "name": "i8"
            }
          }
        },
        {
          "name": "terms",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "scalar",
        "name": "f64"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::series::e_partial",
      "name": "e_partial",
      "module": "num::series",
      "defined_at": "num/series.rs:291",
      "docs": [
        "Returns one plus one over n raised to the n, walking to the natural base.",
        "",
        "```",
        "assert!((mrlyrs::num::series::e_partial(1) - 2.0).abs() < 1e-15);",
        "```"
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "n",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "scalar",
        "name": "f64"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::series::euler_gamma_partial",
      "name": "euler_gamma_partial",
      "module": "num::series",
      "defined_at": "num/series.rs:279",
      "docs": [
        "Returns the harmonic sum of n terms less the logarithm of n, walking to the Euler-Mascheroni constant.",
        "",
        "```",
        "assert!((mrlyrs::num::series::euler_gamma_partial(1) - 1.0).abs() < 1e-15);",
        "```"
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "n",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "scalar",
        "name": "f64"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::series::euler_product",
      "name": "euler_product",
      "module": "num::series",
      "defined_at": "num/series.rs:135",
      "docs": [
        "Returns the Euler product of zeta, one over one minus p to the minus s over the primes up to the limit."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "s",
          "ty": {
            "t": "scalar",
            "name": "f64"
          }
        },
        {
          "name": "limit",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "scalar",
        "name": "f64"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::series::evens",
      "name": "evens",
      "module": "num::series",
      "defined_at": "num/series.rs:24",
      "docs": [
        "Returns the even numbers up to the limit."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "limit",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "vec",
        "item": {
          "t": "scalar",
          "name": "usize"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::series::fibonacci",
      "name": "fibonacci",
      "module": "num::series",
      "defined_at": "num/series.rs:45",
      "docs": [
        "Returns the distinct Fibonacci numbers up to the limit."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "limit",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "vec",
        "item": {
          "t": "scalar",
          "name": "usize"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::series::harmonic",
      "name": "harmonic",
      "module": "num::series",
      "defined_at": "num/series.rs:108",
      "docs": [
        "Returns the partial harmonic sum, the reciprocals of one through the term count."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "terms",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "scalar",
        "name": "f64"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::series::lambda",
      "name": "lambda",
      "module": "num::series",
      "defined_at": "num/series.rs:159",
      "docs": [
        "Returns the Dirichlet lambda value, one minus two to the minus s times zeta.",
        "",
        "# Errors",
        "",
        "Errs at an s of one or below, and at a NaN, where zeta does not converge."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "s",
          "ty": {
            "t": "scalar",
            "name": "f64"
          }
        },
        {
          "name": "terms",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "scalar",
          "name": "f64"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::series::leibniz",
      "name": "leibniz",
      "module": "num::series",
      "defined_at": "num/series.rs:256",
      "docs": [
        "Returns the Leibniz alternating sum of the odd reciprocals over n terms, walking to pi over four.",
        "",
        "```",
        "assert!((mrlyrs::num::series::leibniz(2) - 2.0 / 3.0).abs() < 1e-15);",
        "```"
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "n",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "scalar",
        "name": "f64"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::series::li",
      "name": "li",
      "module": "num::series",
      "defined_at": "num/series.rs:85",
      "docs": [
        "Returns the logarithmic integral of a positive x by the Ramanujan series, the smooth count of the primes below x.",
        "",
        "```",
        "assert!((mrlyrs::num::series::li(1_000_000.0) - 78_627.549).abs() < 1e-3);",
        "```"
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "x",
          "ty": {
            "t": "scalar",
            "name": "f64"
          }
        }
      ],
      "ret": {
        "t": "scalar",
        "name": "f64"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::series::mertens",
      "name": "mertens",
      "module": "num::series",
      "defined_at": "num/series.rs:303",
      "docs": [
        "Returns the Mertens function at n, the Mobius values of one through n summed.",
        "",
        "```",
        "assert_eq!(mrlyrs::num::series::mertens(100), 1);",
        "```"
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "n",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "scalar",
        "name": "i64"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::series::odds",
      "name": "odds",
      "module": "num::series",
      "defined_at": "num/series.rs:29",
      "docs": [
        "Returns the odd numbers up to the limit."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "limit",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "vec",
        "item": {
          "t": "scalar",
          "name": "usize"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::series::visible",
      "name": "visible",
      "module": "num::series",
      "defined_at": "num/series.rs:209",
      "docs": [
        "Counts the lattice points of the dimension-cube of the limit whose coordinates share no divisor, by Mobius inversion.",
        "",
        "The count wraps once the limit to the dimension passes a signed hundred and twenty-eight bits.",
        "",
        "# Errors",
        "",
        "Errs at a zero dimension."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "limit",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "dimension",
          "ty": {
            "t": "scalar",
            "name": "u32"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "u128"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::series::wallis_half_pi",
      "name": "wallis_half_pi",
      "module": "num::series",
      "defined_at": "num/series.rs:242",
      "docs": [
        "Returns the Wallis product taken to n paired factors, four k squared over four k squared less one, walking to pi over two.",
        "",
        "```",
        "assert!((mrlyrs::num::series::wallis_half_pi(1) - 4.0 / 3.0).abs() < 1e-15);",
        "```"
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "n",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "scalar",
        "name": "f64"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::series::wallis_quarter_pi",
      "name": "wallis_quarter_pi",
      "module": "num::series",
      "defined_at": "num/series.rs:228",
      "docs": [
        "Returns the Wallis product of one minus one over the odd squares taken to n factors, walking to pi over four."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "factors",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "scalar",
        "name": "f64"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::series::zeta",
      "name": "zeta",
      "module": "num::series",
      "defined_at": "num/series.rs:122",
      "docs": [
        "Returns the zeta value above one, the partial sum closed by its Euler-Maclaurin tail.",
        "",
        "```",
        "assert!((mrlyrs::num::series::zeta(2.0, 1_000)? - 1.644_934_066_8).abs() < 1e-9);",
        "# Ok::<(), mrlyrs::Error>(())",
        "```",
        "",
        "# Errors",
        "",
        "Errs at an s of one or below, and at a NaN, where the sum does not converge."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "s",
          "ty": {
            "t": "scalar",
            "name": "f64"
          }
        },
        {
          "name": "terms",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "scalar",
          "name": "f64"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::sieve::cells",
      "name": "cells",
      "module": "num::sieve",
      "defined_at": "num/sieve.rs:61",
      "docs": [
        "Returns the cells the word leaves, the product of its letters' fills, one punctured tile a letter.",
        "",
        "```",
        "assert_eq!(mrlyrs::num::sieve::cells(&mrlyrs::num::sieve::odd_word(3), 2).unwrap(), 9216);",
        "```",
        "",
        "# Errors",
        "",
        "Errs when a letter is not an odd side from three, or when the product overruns a u128."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "word",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "scalar",
              "name": "u64"
            }
          }
        },
        {
          "name": "dimension",
          "ty": {
            "t": "scalar",
            "name": "u32"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "u128"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::sieve::exponent",
      "name": "exponent",
      "module": "num::sieve",
      "defined_at": "num/sieve.rs:120",
      "docs": [
        "Returns the box exponent the word reads at its own scale, the logarithm of its cells over the logarithm of its side, which walks up to the dimension on a schedule of distinct growing letters and stands still on any schedule that reuses its letters.",
        "",
        "Changing the letter is not enough: the alternating word 3, 5, 3, 5 changes at every step and freezes at log 192 / log 15, its ratio falling to nothing like a fixed-ratio schedule. The hypothesis that buys a positive area is strictly increasing odd letters, under which sum s_k^(-d) converges.",
        "",
        "```",
        "let carpet = mrlyrs::num::sieve::exponent(&mrlyrs::num::sieve::flat_word(3, 5), 2).unwrap();",
        "assert!((carpet - 8f64.ln() / 3f64.ln()).abs() < 1e-12);",
        "```",
        "",
        "# Errors",
        "",
        "Errs when a letter is not an odd side from three."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "word",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "scalar",
              "name": "u64"
            }
          }
        },
        {
          "name": "dimension",
          "ty": {
            "t": "scalar",
            "name": "u32"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "scalar",
          "name": "f64"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::sieve::flat_word",
      "name": "flat_word",
      "module": "num::sieve",
      "defined_at": "num/sieve.rs:21",
      "docs": [
        "Returns the constant schedule, one odd side repeated to the count of levels, whose limit set is the fixed-ratio carpet.",
        "",
        "```",
        "assert_eq!(mrlyrs::num::sieve::flat_word(3, 3), vec![3, 3, 3]);",
        "```"
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "side",
          "ty": {
            "t": "scalar",
            "name": "u64"
          }
        },
        {
          "name": "levels",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "vec",
        "item": {
          "t": "scalar",
          "name": "u64"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::sieve::holes",
      "name": "holes",
      "module": "num::sieve",
      "defined_at": "num/sieve.rs:82",
      "docs": [
        "Returns the punctures the word makes, one per surviving cell at every level.",
        "",
        "```",
        "assert_eq!(mrlyrs::num::sieve::holes(&mrlyrs::num::sieve::odd_word(3), 2).unwrap(), 1 + 8 + 192);",
        "```",
        "",
        "# Errors",
        "",
        "Errs when a letter is not an odd side from three, or when the count overruns a u128."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "word",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "scalar",
              "name": "u64"
            }
          }
        },
        {
          "name": "dimension",
          "ty": {
            "t": "scalar",
            "name": "u32"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "u128"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::sieve::limit",
      "name": "limit",
      "module": "num::sieve",
      "defined_at": "num/sieve.rs:281",
      "docs": [
        "Returns the limit the word's schedule walks to in the given dimension, when the word names a schedule at all.",
        "",
        "A run of consecutive odd letters from a, of two letters or more, names the schedule a, a + 2, a + 4 and on: its letters are strictly increasing, sum s_k^(-d) converges, and the limit is positive, pi over four in the plane and the closed form above in the cube divided by the head the run skips. Two or more copies of one letter name the fixed-ratio schedule, whose limit is zero; that is what repetition costs, and an alternating word such as 3, 5, 3, 5 changes at every step and still loses the whole measure. Every other word, and every word of one letter, names no schedule and reads None.",
        "",
        "```",
        "assert_eq!(mrlyrs::num::sieve::limit(&mrlyrs::num::sieve::odd_word(3), 2).unwrap(), Some(std::f64::consts::FRAC_PI_4));",
        "assert_eq!(mrlyrs::num::sieve::limit(&mrlyrs::num::sieve::flat_word(3, 3), 2).unwrap(), Some(0.0));",
        "assert!((mrlyrs::num::sieve::limit(&[5, 7, 9], 2).unwrap().unwrap() - 0.883_572_933_822_129_3).abs() < 1e-15);",
        "assert_eq!(mrlyrs::num::sieve::limit(&[3, 7, 11], 2).unwrap(), None);",
        "```",
        "",
        "# Errors",
        "",
        "Errs when a letter is not an odd side from three."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "word",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "scalar",
              "name": "u64"
            }
          }
        },
        {
          "name": "dimension",
          "ty": {
            "t": "scalar",
            "name": "u32"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "option",
          "item": {
            "t": "scalar",
            "name": "f64"
          }
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::sieve::odd_word",
      "name": "odd_word",
      "module": "num::sieve",
      "defined_at": "num/sieve.rs:12",
      "docs": [
        "Returns the classical Wallis schedule, the odd sides three, five, seven and on, to the count of levels.",
        "",
        "```",
        "assert_eq!(mrlyrs::num::sieve::odd_word(4), vec![3, 5, 7, 9]);",
        "```"
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "levels",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "vec",
        "item": {
          "t": "scalar",
          "name": "u64"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::sieve::punctures",
      "name": "punctures",
      "module": "num::sieve",
      "defined_at": "num/sieve.rs:185",
      "docs": [
        "Lists every puncture the word makes in the given dimension: its corner along each axis and then its side, all in units of the word's finest cell, so a level-one hole is the widest block in the list.",
        "",
        "```",
        "let holes = mrlyrs::num::sieve::punctures(&mrlyrs::num::sieve::odd_word(2), 2).unwrap();",
        "assert_eq!(holes.len() / 3, 9);",
        "assert_eq!(&holes[..3], &[5, 5, 5]);",
        "```",
        "",
        "# Errors",
        "",
        "Errs when a letter is not an odd side from three, or when the word's side overruns a u128."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "word",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "scalar",
              "name": "u64"
            }
          }
        },
        {
          "name": "dimension",
          "ty": {
            "t": "scalar",
            "name": "u32"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "vec",
          "item": {
            "t": "scalar",
            "name": "u64"
          }
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::sieve::raster",
      "name": "raster",
      "module": "num::sieve",
      "defined_at": "num/sieve.rs:145",
      "docs": [
        "Builds the plane sieve the word spells as a raster: its side, then one byte a site, row by row, one where the site survives and zero where a level punched it out.",
        "",
        "```",
        "let (side, cells) = mrlyrs::num::sieve::raster(&mrlyrs::num::sieve::odd_word(2)).unwrap();",
        "assert_eq!(side, 15);",
        "assert_eq!(cells.iter().filter(|&&b| b == 1).count(), 192);",
        "```",
        "",
        "# Errors",
        "",
        "Errs when a letter is not an odd side from three."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "word",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "scalar",
              "name": "u64"
            }
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "tuple",
          "items": [
            {
              "t": "scalar",
              "name": "usize"
            },
            {
              "t": "vec",
              "item": {
                "t": "scalar",
                "name": "u8"
              }
            }
          ]
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::sieve::ratio",
      "name": "ratio",
      "module": "num::sieve",
      "defined_at": "num/sieve.rs:100",
      "docs": [
        "Returns the share of the whole the word leaves, the product of one minus the inverse of each letter's site count, exact as a product of the letters' fills.",
        "",
        "```",
        "let flat = mrlyrs::num::sieve::ratio(&mrlyrs::num::sieve::flat_word(3, 2), 2).unwrap();",
        "assert!((flat - 64.0 / 81.0).abs() < 1e-15);",
        "```",
        "",
        "# Errors",
        "",
        "Errs when a letter is not an odd side from three."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "word",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "scalar",
              "name": "u64"
            }
          }
        },
        {
          "name": "dimension",
          "ty": {
            "t": "scalar",
            "name": "u32"
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "scalar",
          "name": "f64"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::sieve::side",
      "name": "side",
      "module": "num::sieve",
      "defined_at": "num/sieve.rs:41",
      "docs": [
        "Returns the side of the word, the product of its letters' sides.",
        "",
        "```",
        "assert_eq!(mrlyrs::num::sieve::side(&mrlyrs::num::sieve::odd_word(4)).unwrap(), 945);",
        "```",
        "",
        "# Errors",
        "",
        "Errs when a letter is not an odd side from three, or when the product overruns a u128."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "word",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "scalar",
              "name": "u64"
            }
          }
        }
      ],
      "ret": {
        "t": "result",
        "item": {
          "t": "u128"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::sieve::solid_limit",
      "name": "solid_limit",
      "module": "num::sieve",
      "defined_at": "num/sieve.rs:254",
      "docs": [
        "Returns the limit of the solid Wallis sieve's surviving volume, the product of one minus n to the minus three over the odd n from three, in closed form.",
        "",
        "Write m = 2k + 1 and factor m^3 - 1 = (m - 1)(m - w)(m - w^2) at w = exp(2 pi i / 3), the three cube roots of one; dividing by m^3 = 8 (k + 1/2)^3 turns the k-th factor into k (k + (1 - w)/2) (k + (1 - w^2)/2) / (k + 1/2)^3, so the product is a ratio of three rising shifts over one repeated three times.",
        "",
        "The three shifts a1 = 0, a2 = (1 - w)/2 and a3 = (1 - w^2)/2 sum to (2 - w - w^2)/2 = 3/2, exactly three times the shift b = 1/2 below, and prod_{k=1..N} (k + a) = Gamma(N + 1 + a) / Gamma(1 + a) with Gamma(N + 1 + a) / Gamma(N + 1 + b) ~ N^(a - b), so the N-dependent factor tends to N^(a1 + a2 + a3 - 3b) = 1 and the limit is Gamma(1 + b)^3 / (Gamma(1 + a1) Gamma(1 + a2) Gamma(1 + a3)).",
        "",
        "That is Gamma(3/2)^3 / (Gamma(1) Gamma((3 - w)/2) Gamma((3 - w^2)/2)) = pi^(3/2) / (8 |Gamma(7/4 - i sqrt(3)/4)|^2), the two gamma values being conjugates; the same Weierstrass product gives the identity prod_{k >= 1} (1 - a^3/k^3) = 1 / (Gamma(1 - a) Gamma(1 - a w) Gamma(1 - a w^2)) the ratio form of this limit leans on, at a = 1/2 against prod_{n >= 2} (1 - n^-3) = cosh(pi sqrt(3)/2) / (3 pi).",
        "",
        "The value is read from the logarithm rather than from that gamma ratio, which cancels four digits away: log P = sum over odd n from 3 to 999 of log(1 - n^-3), taken from its smallest term, minus sum_{j = 1..3} (1/j) sum_{n odd >= 1001} n^(-3j), each inner sum by Euler-Maclaurin through the fourth Bernoulli term. Every piece carries one sign, so nothing cancels and the exponential lands within a few ulps.",
        "",
        "```",
        "assert!((mrlyrs::num::sieve::solid_limit() - 0.948_815_485_719_679_6).abs() < 4e-16);",
        "```"
      ],
      "owner": null,
      "self_kind": null,
      "params": [],
      "ret": {
        "t": "scalar",
        "name": "f64"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::spiral::Growth::all",
      "name": "all",
      "module": "num::spiral",
      "defined_at": "num/spiral.rs:242",
      "docs": [
        "Returns every Growth in canonical order."
      ],
      "owner": "num::spiral::Growth",
      "self_kind": null,
      "params": [],
      "ret": {
        "t": "array",
        "item": {
          "t": "enum",
          "path": "num::spiral::Growth"
        },
        "len": 2
      },
      "dims": [],
      "trait": null,
      "source": "named_enum",
      "constant": true,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::spiral::Growth::name",
      "name": "name",
      "module": "num::spiral",
      "defined_at": "num/spiral.rs:242",
      "docs": [
        "Returns the Growth's display name."
      ],
      "owner": "num::spiral::Growth",
      "self_kind": "ref",
      "params": [],
      "ret": {
        "t": "ref",
        "mutable": false,
        "lifetime": "'static",
        "item": {
          "t": "str"
        }
      },
      "dims": [],
      "trait": null,
      "source": "named_enum",
      "constant": false,
      "cross": {
        "status": "skip",
        "reason": "&'static return"
      }
    },
    {
      "path": "num::spiral::Lattice::all",
      "name": "all",
      "module": "num::spiral",
      "defined_at": "num/spiral.rs:8",
      "docs": [
        "Returns every Lattice in canonical order."
      ],
      "owner": "num::spiral::Lattice",
      "self_kind": null,
      "params": [],
      "ret": {
        "t": "array",
        "item": {
          "t": "enum",
          "path": "num::spiral::Lattice"
        },
        "len": 2
      },
      "dims": [],
      "trait": null,
      "source": "named_enum",
      "constant": true,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::spiral::Lattice::count",
      "name": "count",
      "module": "num::spiral",
      "defined_at": "num/spiral.rs:25",
      "docs": [
        "Returns the count of numbers a sheet the odd side wide holds: the side squared, or the hexagon of that many cells across."
      ],
      "owner": "num::spiral::Lattice",
      "self_kind": "value",
      "params": [
        {
          "name": "side",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "scalar",
        "name": "usize"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::spiral::Lattice::n",
      "name": "n",
      "module": "num::spiral",
      "defined_at": "num/spiral.rs:97",
      "docs": [
        "Returns the number at a cell, one at the origin.",
        "",
        "```",
        "use mrlyrs::num::spiral::Lattice;",
        "assert_eq!(Lattice::Square.n(2, -2), 25);",
        "assert_eq!(Lattice::Hex.n(0, 2), 19);",
        "```"
      ],
      "owner": "num::spiral::Lattice",
      "self_kind": "value",
      "params": [
        {
          "name": "x",
          "ty": {
            "t": "scalar",
            "name": "i64"
          }
        },
        {
          "name": "y",
          "ty": {
            "t": "scalar",
            "name": "i64"
          }
        }
      ],
      "ret": {
        "t": "scalar",
        "name": "u64"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::spiral::Lattice::name",
      "name": "name",
      "module": "num::spiral",
      "defined_at": "num/spiral.rs:8",
      "docs": [
        "Returns the Lattice's display name."
      ],
      "owner": "num::spiral::Lattice",
      "self_kind": "ref",
      "params": [],
      "ret": {
        "t": "ref",
        "mutable": false,
        "lifetime": "'static",
        "item": {
          "t": "str"
        }
      },
      "dims": [],
      "trait": null,
      "source": "named_enum",
      "constant": false,
      "cross": {
        "status": "skip",
        "reason": "&'static return"
      }
    },
    {
      "path": "num::spiral::Lattice::radius",
      "name": "radius",
      "module": "num::spiral",
      "defined_at": "num/spiral.rs:21",
      "docs": [
        "Returns the outermost ring of a sheet the odd side wide, half the side rounded down."
      ],
      "owner": "num::spiral::Lattice",
      "self_kind": "value",
      "params": [
        {
          "name": "side",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "scalar",
        "name": "usize"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::spiral::Lattice::ring",
      "name": "ring",
      "module": "num::spiral",
      "defined_at": "num/spiral.rs:33",
      "docs": [
        "Returns the ring a number sits on, zero for one."
      ],
      "owner": "num::spiral::Lattice",
      "self_kind": "value",
      "params": [
        {
          "name": "n",
          "ty": {
            "t": "scalar",
            "name": "u64"
          }
        }
      ],
      "ret": {
        "t": "scalar",
        "name": "u64"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::spiral::Lattice::ring_of",
      "name": "ring_of",
      "module": "num::spiral",
      "defined_at": "num/spiral.rs:49",
      "docs": [
        "Returns the ring of a cell: the larger of the coordinates on the square, the hex distance on the hexagon."
      ],
      "owner": "num::spiral::Lattice",
      "self_kind": "value",
      "params": [
        {
          "name": "x",
          "ty": {
            "t": "scalar",
            "name": "i64"
          }
        },
        {
          "name": "y",
          "ty": {
            "t": "scalar",
            "name": "i64"
          }
        }
      ],
      "ret": {
        "t": "scalar",
        "name": "u64"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::spiral::Lattice::xy",
      "name": "xy",
      "module": "num::spiral",
      "defined_at": "num/spiral.rs:62",
      "docs": [
        "Returns the cell of a number: x right and y up on the square, axial q and r on the hexagon.",
        "",
        "```",
        "use mrlyrs::num::spiral::Lattice;",
        "assert_eq!(Lattice::Square.xy(10), (2, -1));",
        "assert_eq!(Lattice::Hex.xy(8), (1, 1));",
        "```"
      ],
      "owner": "num::spiral::Lattice",
      "self_kind": "value",
      "params": [
        {
          "name": "n",
          "ty": {
            "t": "scalar",
            "name": "u64"
          }
        }
      ],
      "ret": {
        "t": "tuple",
        "items": [
          {
            "t": "scalar",
            "name": "i64"
          },
          {
            "t": "scalar",
            "name": "i64"
          }
        ]
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::spiral::Mark::all",
      "name": "all",
      "module": "num::spiral",
      "defined_at": "num/spiral.rs:137",
      "docs": [
        "Returns every Mark in canonical order."
      ],
      "owner": "num::spiral::Mark",
      "self_kind": null,
      "params": [],
      "ret": {
        "t": "array",
        "item": {
          "t": "enum",
          "path": "num::spiral::Mark"
        },
        "len": 4
      },
      "dims": [],
      "trait": null,
      "source": "named_enum",
      "constant": true,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::spiral::Mark::name",
      "name": "name",
      "module": "num::spiral",
      "defined_at": "num/spiral.rs:137",
      "docs": [
        "Returns the Mark's display name."
      ],
      "owner": "num::spiral::Mark",
      "self_kind": "ref",
      "params": [],
      "ret": {
        "t": "ref",
        "mutable": false,
        "lifetime": "'static",
        "item": {
          "t": "str"
        }
      },
      "dims": [],
      "trait": null,
      "source": "named_enum",
      "constant": false,
      "cross": {
        "status": "skip",
        "reason": "&'static return"
      }
    },
    {
      "path": "num::spiral::diagonal",
      "name": "diagonal",
      "module": "num::spiral",
      "defined_at": "num/spiral.rs:206",
      "docs": [
        "Reads the quadratic a k^2 + b k + c, a at least one, over the sheet the odd side wide: every value from one through the top, its cell, the prime hits and the opening streak.",
        "",
        "```",
        "let read = mrlyrs::num::spiral::diagonal(mrlyrs::num::spiral::Lattice::Square, 201, 4, -2, 41);",
        "assert_eq!((read.top, read.streak), (40401, 21));",
        "```"
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "lattice",
          "ty": {
            "t": "enum",
            "path": "num::spiral::Lattice"
          }
        },
        {
          "name": "side",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        },
        {
          "name": "a",
          "ty": {
            "t": "scalar",
            "name": "i64"
          }
        },
        {
          "name": "b",
          "ty": {
            "t": "scalar",
            "name": "i64"
          }
        },
        {
          "name": "c",
          "ty": {
            "t": "scalar",
            "name": "i64"
          }
        }
      ],
      "ret": {
        "t": "plain",
        "path": "num::spiral::Diagonal"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::spiral::level_of",
      "name": "level_of",
      "module": "num::spiral",
      "defined_at": "num/spiral.rs:295",
      "docs": [
        "Returns the level of a number in a base, the count of its digits less one, so zero below the base and one at the base itself.",
        "",
        "```",
        "use mrlyrs::num::spiral::level_of;",
        "assert_eq!((level_of(1, 3), level_of(2, 3), level_of(3, 3), level_of(8, 3), level_of(9, 3)), (0, 0, 1, 1, 2));",
        "```"
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "n",
          "ty": {
            "t": "scalar",
            "name": "u64"
          }
        },
        {
          "name": "base",
          "ty": {
            "t": "scalar",
            "name": "u64"
          }
        }
      ],
      "ret": {
        "t": "scalar",
        "name": "u32"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::spiral::marks",
      "name": "marks",
      "module": "num::spiral",
      "defined_at": "num/spiral.rs:157",
      "docs": [
        "Marks every number from zero through the limit: one when marked, minus one for a Mobius value of minus one, else zero.",
        "",
        "```",
        "assert_eq!(mrlyrs::num::spiral::marks(mrlyrs::num::spiral::Mark::Mobius, 6), vec![0, 1, -1, -1, 0, -1, 1]);",
        "```"
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "mark",
          "ty": {
            "t": "enum",
            "path": "num::spiral::Mark"
          }
        },
        {
          "name": "limit",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "vec",
        "item": {
          "t": "scalar",
          "name": "i8"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::spiral::snail",
      "name": "snail",
      "module": "num::spiral",
      "defined_at": "num/spiral.rs:315",
      "docs": [
        "Winds one to the top on the square spiral and lays a square tile on every cell, the snail.",
        "",
        "The tile of n has side base to the level of n when n grows and side one when it does not, and its lower-left corner is the corner of the tile before it plus one unit step of the winding scaled by the side of that earlier tile. Tiles overlap wherever the growth outruns the winding; a base below two is read as two and a top below one as one.",
        "",
        "```",
        "use mrlyrs::num::spiral::{snail, Growth};",
        "let shell = snail(3, 9, Growth::Every);",
        "assert_eq!(shell.tiles[0].side, 1);",
        "assert_eq!(shell.tiles[8].side, 9);",
        "```"
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "base",
          "ty": {
            "t": "scalar",
            "name": "u64"
          }
        },
        {
          "name": "top",
          "ty": {
            "t": "scalar",
            "name": "u64"
          }
        },
        {
          "name": "growth",
          "ty": {
            "t": "enum",
            "path": "num::spiral::Growth"
          }
        }
      ],
      "ret": {
        "t": "plain",
        "path": "num::spiral::Snail"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::zeta::Complex::abs",
      "name": "abs",
      "module": "num::zeta",
      "defined_at": "num/zeta.rs:31",
      "docs": [
        "Returns the modulus."
      ],
      "owner": "num::zeta::Complex",
      "self_kind": "value",
      "params": [],
      "ret": {
        "t": "scalar",
        "name": "f64"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::zeta::Complex::arg",
      "name": "arg",
      "module": "num::zeta",
      "defined_at": "num/zeta.rs:35",
      "docs": [
        "Returns the principal argument."
      ],
      "owner": "num::zeta::Complex",
      "self_kind": "value",
      "params": [],
      "ret": {
        "t": "scalar",
        "name": "f64"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::zeta::Complex::default",
      "name": "default",
      "module": "num::zeta",
      "defined_at": "num/zeta.rs:18",
      "docs": [
        "Returns the default Complex."
      ],
      "owner": "num::zeta::Complex",
      "self_kind": null,
      "params": [],
      "ret": {
        "t": "class",
        "path": "num::zeta::Complex",
        "dim": null
      },
      "dims": [],
      "trait": null,
      "source": "default",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::zeta::Complex::exp",
      "name": "exp",
      "module": "num::zeta",
      "defined_at": "num/zeta.rs:39",
      "docs": [
        "Returns the exponential."
      ],
      "owner": "num::zeta::Complex",
      "self_kind": "value",
      "params": [],
      "ret": {
        "t": "class",
        "path": "num::zeta::Complex",
        "dim": null
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::zeta::Complex::ln",
      "name": "ln",
      "module": "num::zeta",
      "defined_at": "num/zeta.rs:44",
      "docs": [
        "Returns the principal logarithm."
      ],
      "owner": "num::zeta::Complex",
      "self_kind": "value",
      "params": [],
      "ret": {
        "t": "class",
        "path": "num::zeta::Complex",
        "dim": null
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::zeta::Complex::new",
      "name": "new",
      "module": "num::zeta",
      "defined_at": "num/zeta.rs:27",
      "docs": [
        "Builds a complex number from its parts."
      ],
      "owner": "num::zeta::Complex",
      "self_kind": null,
      "params": [
        {
          "name": "re",
          "ty": {
            "t": "scalar",
            "name": "f64"
          }
        },
        {
          "name": "im",
          "ty": {
            "t": "scalar",
            "name": "f64"
          }
        }
      ],
      "ret": {
        "t": "class",
        "path": "num::zeta::Complex",
        "dim": null
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": true,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::zeta::Complex::turn",
      "name": "turn",
      "module": "num::zeta",
      "defined_at": "num/zeta.rs:48",
      "docs": [
        "Returns a unit complex number at the given angle."
      ],
      "owner": "num::zeta::Complex",
      "self_kind": null,
      "params": [
        {
          "name": "angle",
          "ty": {
            "t": "scalar",
            "name": "f64"
          }
        }
      ],
      "ret": {
        "t": "class",
        "path": "num::zeta::Complex",
        "dim": null
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::zeta::Line::count",
      "name": "count",
      "module": "num::zeta",
      "defined_at": "num/zeta.rs:393",
      "docs": [
        "Counts the zeros on the line below t."
      ],
      "owner": "num::zeta::Line",
      "self_kind": "ref",
      "params": [
        {
          "name": "t",
          "ty": {
            "t": "scalar",
            "name": "f64"
          }
        }
      ],
      "ret": {
        "t": "scalar",
        "name": "usize"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::zeta::Line::default",
      "name": "default",
      "module": "num::zeta",
      "defined_at": "num/zeta.rs:167",
      "docs": [
        "Returns the default Line."
      ],
      "owner": "num::zeta::Line",
      "self_kind": null,
      "params": [],
      "ret": {
        "t": "class",
        "path": "num::zeta::Line",
        "dim": null
      },
      "dims": [],
      "trait": null,
      "source": "default",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::zeta::Line::exact",
      "name": "exact",
      "module": "num::zeta",
      "defined_at": "num/zeta.rs:278",
      "docs": [
        "Returns Z(t) from the Euler-Maclaurin value turned onto the real axis."
      ],
      "owner": "num::zeta::Line",
      "self_kind": "ref",
      "params": [
        {
          "name": "t",
          "ty": {
            "t": "scalar",
            "name": "f64"
          }
        }
      ],
      "ret": {
        "t": "scalar",
        "name": "f64"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::zeta::Line::gram",
      "name": "gram",
      "module": "num::zeta",
      "defined_at": "num/zeta.rs:332",
      "docs": [
        "Returns the n-th Gram point, where theta is n pi, by Newton from the right."
      ],
      "owner": "num::zeta::Line",
      "self_kind": "ref",
      "params": [
        {
          "name": "n",
          "ty": {
            "t": "scalar",
            "name": "i64"
          }
        }
      ],
      "ret": {
        "t": "scalar",
        "name": "f64"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::zeta::Line::maclaurin",
      "name": "maclaurin",
      "module": "num::zeta",
      "defined_at": "num/zeta.rs:213",
      "docs": [
        "Returns zeta at one half plus i t by the complex Euler-Maclaurin sum: t plus ten terms and seven Bernoulli corrections."
      ],
      "owner": "num::zeta::Line",
      "self_kind": "ref",
      "params": [
        {
          "name": "t",
          "ty": {
            "t": "scalar",
            "name": "f64"
          }
        }
      ],
      "ret": {
        "t": "class",
        "path": "num::zeta::Complex",
        "dim": null
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::zeta::Line::new",
      "name": "new",
      "module": "num::zeta",
      "defined_at": "num/zeta.rs:175",
      "docs": [
        "Builds the line: the even Bernoulli numbers through the fourteenth and their Euler-Maclaurin weights."
      ],
      "owner": "num::zeta::Line",
      "self_kind": null,
      "params": [],
      "ret": {
        "t": "class",
        "path": "num::zeta::Line",
        "dim": null
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::zeta::Line::novelty_coefficients",
      "name": "novelty_coefficients",
      "module": "num::zeta",
      "defined_at": "num/zeta.rs:266",
      "docs": [
        "Returns the wave coefficient of every zero at the given ordinates: F(rho) zeta(rho - 1) over zeta'(rho) at rho one half plus i gamma, F the Mellin transform of the bump."
      ],
      "owner": "num::zeta::Line",
      "self_kind": "ref",
      "params": [
        {
          "name": "gammas",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "scalar",
              "name": "f64"
            }
          }
        }
      ],
      "ret": {
        "t": "vec",
        "item": {
          "t": "class",
          "path": "num::zeta::Complex",
          "dim": null
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::zeta::Line::pair",
      "name": "pair",
      "module": "num::zeta",
      "defined_at": "num/zeta.rs:233",
      "docs": [
        "Returns zeta and its derivative together at any complex s but one, by the same Euler-Maclaurin sum: the modulus of t plus ten terms and seven Bernoulli corrections, each term differentiated in s."
      ],
      "owner": "num::zeta::Line",
      "self_kind": "ref",
      "params": [
        {
          "name": "s",
          "ty": {
            "t": "class",
            "path": "num::zeta::Complex",
            "dim": null
          }
        }
      ],
      "ret": {
        "t": "tuple",
        "items": [
          {
            "t": "class",
            "path": "num::zeta::Complex",
            "dim": null
          },
          {
            "t": "class",
            "path": "num::zeta::Complex",
            "dim": null
          }
        ]
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::zeta::Line::point",
      "name": "point",
      "module": "num::zeta",
      "defined_at": "num/zeta.rs:313",
      "docs": [
        "Returns zeta on the line and Z(t) together, from the engine that serves the t."
      ],
      "owner": "num::zeta::Line",
      "self_kind": "ref",
      "params": [
        {
          "name": "t",
          "ty": {
            "t": "scalar",
            "name": "f64"
          }
        }
      ],
      "ret": {
        "t": "tuple",
        "items": [
          {
            "t": "class",
            "path": "num::zeta::Complex",
            "dim": null
          },
          {
            "t": "scalar",
            "name": "f64"
          }
        ]
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::zeta::Line::seam",
      "name": "seam",
      "module": "num::zeta",
      "defined_at": "num/zeta.rs:323",
      "docs": [
        "Returns the largest gap between the two engines over the t range on a grid."
      ],
      "owner": "num::zeta::Line",
      "self_kind": "ref",
      "params": [
        {
          "name": "t0",
          "ty": {
            "t": "scalar",
            "name": "f64"
          }
        },
        {
          "name": "t1",
          "ty": {
            "t": "scalar",
            "name": "f64"
          }
        },
        {
          "name": "steps",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "scalar",
        "name": "f64"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::zeta::Line::siegel",
      "name": "siegel",
      "module": "num::zeta",
      "defined_at": "num/zeta.rs:282",
      "docs": [
        "Returns Z(t) by the Riemann-Siegel formula: the main sum and the first four corrections."
      ],
      "owner": "num::zeta::Line",
      "self_kind": "ref",
      "params": [
        {
          "name": "t",
          "ty": {
            "t": "scalar",
            "name": "f64"
          }
        }
      ],
      "ret": {
        "t": "scalar",
        "name": "f64"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::zeta::Line::theta",
      "name": "theta",
      "module": "num::zeta",
      "defined_at": "num/zeta.rs:196",
      "docs": [
        "Returns the Riemann-Siegel theta: the argument of gamma at one quarter plus i t over two, less t ln pi over two, by Stirling's series after a shift of ten."
      ],
      "owner": "num::zeta::Line",
      "self_kind": "ref",
      "params": [
        {
          "name": "t",
          "ty": {
            "t": "scalar",
            "name": "f64"
          }
        }
      ],
      "ret": {
        "t": "scalar",
        "name": "f64"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::zeta::Line::z",
      "name": "z",
      "module": "num::zeta",
      "defined_at": "num/zeta.rs:305",
      "docs": [
        "Returns Z(t): Euler-Maclaurin below the join, Riemann-Siegel above."
      ],
      "owner": "num::zeta::Line",
      "self_kind": "ref",
      "params": [
        {
          "name": "t",
          "ty": {
            "t": "scalar",
            "name": "f64"
          }
        }
      ],
      "ret": {
        "t": "scalar",
        "name": "f64"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::zeta::Line::zeros",
      "name": "zeros",
      "module": "num::zeta",
      "defined_at": "num/zeta.rs:386",
      "docs": [
        "Returns the first zeros on the line: sign changes of Z between Gram points, refined by bisection on Euler-Maclaurin to a billionth."
      ],
      "owner": "num::zeta::Line",
      "self_kind": "ref",
      "params": [
        {
          "name": "count",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "vec",
        "item": {
          "t": "scalar",
          "name": "f64"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::zeta::bump",
      "name": "bump",
      "module": "num::zeta",
      "defined_at": "num/zeta.rs:431",
      "docs": [
        "The smooth window on [1, 2]: exp(4 - 1/((u - 1)(2 - u))) inside, zero outside, every derivative vanishing at the ends and a peak of one at u = 3/2."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "u",
          "ty": {
            "t": "scalar",
            "name": "f64"
          }
        }
      ],
      "ret": {
        "t": "scalar",
        "name": "f64"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::zeta::corrections",
      "name": "corrections",
      "module": "num::zeta",
      "defined_at": "num/zeta.rs:148",
      "docs": [
        "Returns the first four Riemann-Siegel corrections at the fractional part p: the kernel and its derivatives by central differences with one Richardson step."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "p",
          "ty": {
            "t": "scalar",
            "name": "f64"
          }
        }
      ],
      "ret": {
        "t": "array",
        "item": {
          "t": "scalar",
          "name": "f64"
        },
        "len": 4
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::zeta::kernel",
      "name": "kernel",
      "module": "num::zeta",
      "defined_at": "num/zeta.rs:122",
      "docs": [
        "Returns the Riemann-Siegel kernel, the cosine ratio that leads the remainder, in the form that stays finite at its removable points."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "p",
          "ty": {
            "t": "scalar",
            "name": "f64"
          }
        }
      ],
      "ret": {
        "t": "scalar",
        "name": "f64"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::zeta::mellin",
      "name": "mellin",
      "module": "num::zeta",
      "defined_at": "num/zeta.rs:439",
      "docs": [
        "Returns the Mellin transform of the bump at a complex s, the integral of bump(u) u^(s - 1) over [1, 2], by a 4096-node midpoint rule."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "s",
          "ty": {
            "t": "class",
            "path": "num::zeta::Complex",
            "dim": null
          }
        }
      ],
      "ret": {
        "t": "class",
        "path": "num::zeta::Complex",
        "dim": null
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::zeta::novelty_main",
      "name": "novelty_main",
      "module": "num::zeta",
      "defined_at": "num/zeta.rs:450",
      "docs": [
        "Returns the main term of the smoothed novelty: six over pi squared times the bump's transform at two."
      ],
      "owner": null,
      "self_kind": null,
      "params": [],
      "ret": {
        "t": "scalar",
        "name": "f64"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::zeta::novelty_wave",
      "name": "novelty_wave",
      "module": "num::zeta",
      "defined_at": "num/zeta.rs:474",
      "docs": [
        "Sums the waves of the zeros at log y: twice the real part of the coefficients times y to the minus i gamma, the smoothed error over y to the three halves that the zeros predict."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "gammas",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "scalar",
              "name": "f64"
            }
          }
        },
        {
          "name": "coef",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "class",
              "path": "num::zeta::Complex",
              "dim": null
            }
          }
        },
        {
          "name": "log_y",
          "ty": {
            "t": "scalar",
            "name": "f64"
          }
        }
      ],
      "ret": {
        "t": "scalar",
        "name": "f64"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::zeta::psi_formula",
      "name": "psi_formula",
      "module": "num::zeta",
      "defined_at": "num/zeta.rs:419",
      "docs": [
        "Returns the von Mangoldt explicit formula at x over the zeros at the given ordinates and their mirrors: x less the sum of x to the rho over rho, less ln two pi, less half the ln of one minus x to the minus two."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "x",
          "ty": {
            "t": "scalar",
            "name": "f64"
          }
        },
        {
          "name": "gammas",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "scalar",
              "name": "f64"
            }
          }
        }
      ],
      "ret": {
        "t": "scalar",
        "name": "f64"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::zeta::psi_stair",
      "name": "psi_stair",
      "module": "num::zeta",
      "defined_at": "num/zeta.rs:399",
      "docs": [
        "Returns the Chebyshev staircase at every whole number from one to x: the sum of ln p over the prime powers up to each."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "x",
          "ty": {
            "t": "scalar",
            "name": "usize"
          }
        }
      ],
      "ret": {
        "t": "vec",
        "item": {
          "t": "scalar",
          "name": "f64"
        }
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::zeta::raise",
      "name": "raise",
      "module": "num::zeta",
      "defined_at": "num/zeta.rs:117",
      "docs": [
        "Returns a positive real base raised to a complex exponent."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "base",
          "ty": {
            "t": "scalar",
            "name": "f64"
          }
        },
        {
          "name": "exponent",
          "ty": {
            "t": "class",
            "path": "num::zeta::Complex",
            "dim": null
          }
        }
      ],
      "ret": {
        "t": "class",
        "path": "num::zeta::Complex",
        "dim": null
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::zeta::sharp_novelty",
      "name": "sharp_novelty",
      "module": "num::zeta",
      "defined_at": "num/zeta.rs:467",
      "docs": [
        "Returns the sharp novelty error at y: y squared times the totient sum over the scales from 1 over y to 2 over y, both ends in, less nine over pi squared, from the prefix sums of the totients, which must reach 2 over y."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "prefix",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "scalar",
              "name": "u64"
            }
          }
        },
        {
          "name": "y",
          "ty": {
            "t": "scalar",
            "name": "f64"
          }
        }
      ],
      "ret": {
        "t": "scalar",
        "name": "f64"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    },
    {
      "path": "num::zeta::smoothed_novelty",
      "name": "smoothed_novelty",
      "module": "num::zeta",
      "defined_at": "num/zeta.rs:455",
      "docs": [
        "Returns the smoothed novelty error at y: y squared times the totients weighed by the bump at n y, less the main term given; the totients must reach 2 over y."
      ],
      "owner": null,
      "self_kind": null,
      "params": [
        {
          "name": "phi",
          "ty": {
            "t": "slice",
            "mutable": false,
            "item": {
              "t": "scalar",
              "name": "u64"
            }
          }
        },
        {
          "name": "y",
          "ty": {
            "t": "scalar",
            "name": "f64"
          }
        },
        {
          "name": "main",
          "ty": {
            "t": "scalar",
            "name": "f64"
          }
        }
      ],
      "ret": {
        "t": "scalar",
        "name": "f64"
      },
      "dims": [],
      "trait": null,
      "source": "written",
      "constant": false,
      "cross": {
        "status": "ok"
      }
    }
  ]
}
