# crookseta/missing-values architecture

> Architecture diagram of the GitHub repository crookseta/missing-values, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-27). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/crookseta/missing-values
- Repository: https://github.com/crookseta/missing-values

## Overview

MissingValues is a .NET numeric library that adds signed and unsigned 256- and 512-bit integers plus Quad and Octo floating-point types, with generic-math support. Users construct or parse values, perform arithmetic and math operations, and convert or format results; binary read/write helpers provide another interoperability route. The graph keeps these domain stages distinct and includes the shared IEEE/bit-manipulation layer. README coverage beyond its excerpt is limited, so floating-point capabilities are based on the source tree and sampled math code; unsampled implementation links are omitted where wiring is uncertain.

Main entry points: [`src/MissingValues/Quad.cs`](https://github.com/crookseta/missing-values/blob/main/src/MissingValues/Quad.cs) (Quad), [`src/MissingValues/Info/NumberParser.cs`](https://github.com/crookseta/missing-values/blob/main/src/MissingValues/Info/NumberParser.cs) (Number parser), [`src/MissingValues/Octo.cs`](https://github.com/crookseta/missing-values/blob/main/src/MissingValues/Octo.cs) (Octo), [`src/MissingValues/Primitives/BinaryOperations.Read.cs`](https://github.com/crookseta/missing-values/blob/main/src/MissingValues/Primitives/BinaryOperations.Read.cs) (Binary readers)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_integer["Wide integers"]
  node_int256["Int256<br/>[Int256.cs]"]
  node_uint256["UInt256<br/>[UInt256.cs]"]
  node_int512["Int512<br/>[Int512.cs]"]
  node_uint512["UInt512<br/>[UInt512.cs]"]
end

subgraph group_floating["Extended floats"]
  node_quad["Quad<br/>[Quad.cs]"]
  node_octo["Octo<br/>[Octo.cs]"]
  node_mathq["MathQ functions"]
  node_mathqarith["MathQ arithmetic"]
end

subgraph group_text["Text conversion"]
  node_parser["Number parser<br/>[NumberParser.cs]"]
  node_formatter["Number formatter<br/>[NumberFormatter.cs]"]
  node_converter["Number converter<br/>[NumberConverter.cs]"]
  node_binaryread["Binary readers"]
  node_binarywrite["Binary writers"]
end

subgraph group_core["Numeric infrastructure"]
  node_bithelper["IEEE bit helpers<br/>[BitHelper.Ieee.cs]"]
  node_calculator["Integer calculator<br/>[Calculator.cs]"]
  node_numberinfo["Number info<br/>[NumberInfo.cs]"]
  node_bigint["Big number core<br/>[BigNumber.cs]"]
end

node_user(("Library user"))

node_user -->|"constructs or operates"| node_int256
node_user -->|"constructs or operates"| node_uint256
node_user -->|"constructs or operates"| node_int512
node_user -->|"constructs or operates"| node_uint512
node_user -->|"constructs or operates"| node_quad
node_user -->|"constructs or operates"| node_octo
node_user -->|"parses text"| node_parser
node_parser -->|"parses numeric data"| node_numberinfo
node_parser -->|"produces values"| node_int256
node_parser -->|"produces values"| node_quad
node_parser -->|"produces values"| node_octo
node_user -->|"formats values"| node_formatter
node_user -->|"converts values"| node_converter
node_user -->|"reads bytes"| node_binaryread
node_binaryread -->|"decodes"| node_int256
node_binaryread -->|"decodes"| node_quad
node_binaryread -->|"decodes"| node_octo
node_user -->|"writes bytes"| node_binarywrite
node_int256 -->|"encodes"| node_binarywrite
node_quad -->|"encodes"| node_binarywrite
node_octo -->|"encodes"| node_binarywrite
node_mathq -->|"computes with"| node_quad
node_mathqarith -->|"computes with"| node_quad
node_bithelper -->|"packs IEEE bits"| node_quad
node_bithelper -->|"packs IEEE bits"| node_octo

click node_int256 "https://github.com/crookseta/missing-values/blob/main/src/MissingValues/Int256.cs"
click node_uint256 "https://github.com/crookseta/missing-values/blob/main/src/MissingValues/UInt256.cs"
click node_int512 "https://github.com/crookseta/missing-values/blob/main/src/MissingValues/Int512.cs"
click node_uint512 "https://github.com/crookseta/missing-values/blob/main/src/MissingValues/UInt512.cs"
click node_quad "https://github.com/crookseta/missing-values/blob/main/src/MissingValues/Quad.cs"
click node_octo "https://github.com/crookseta/missing-values/blob/main/src/MissingValues/Octo.cs"
click node_mathq "https://github.com/crookseta/missing-values/blob/main/src/MissingValues/MathQ.MathFunctions.cs"
click node_mathqarith "https://github.com/crookseta/missing-values/blob/main/src/MissingValues/MathQ.Arithmetics.cs"
click node_parser "https://github.com/crookseta/missing-values/blob/main/src/MissingValues/Info/NumberParser.cs"
click node_formatter "https://github.com/crookseta/missing-values/blob/main/src/MissingValues/Info/NumberFormatter.cs"
click node_converter "https://github.com/crookseta/missing-values/blob/main/src/MissingValues/Info/NumberConverter.cs"
click node_binaryread "https://github.com/crookseta/missing-values/blob/main/src/MissingValues/Primitives/BinaryOperations.Read.cs"
click node_binarywrite "https://github.com/crookseta/missing-values/blob/main/src/MissingValues/Primitives/BinaryOperations.Write.cs"
click node_bithelper "https://github.com/crookseta/missing-values/blob/main/src/MissingValues/Internals/BitHelper.Ieee.cs"
click node_calculator "https://github.com/crookseta/missing-values/blob/main/src/MissingValues/Internals/Calculator.cs"
click node_numberinfo "https://github.com/crookseta/missing-values/blob/main/src/MissingValues/Internals/NumberInfo.cs"
click node_bigint "https://github.com/crookseta/missing-values/blob/main/src/MissingValues/Internals/BigNumber.cs"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_int256,node_uint256,node_int512,node_uint512,node_user toneBlue
class node_quad,node_octo,node_mathq,node_mathqarith toneAmber
class node_parser,node_formatter,node_converter,node_binaryread,node_binarywrite toneMint
class node_bithelper,node_calculator,node_numberinfo,node_bigint toneRose
```

## Components

### Wide integers

- [Int256](https://github.com/crookseta/missing-values/blob/main/src/MissingValues/Int256.cs): `src/MissingValues/Int256.cs`
- [UInt256](https://github.com/crookseta/missing-values/blob/main/src/MissingValues/UInt256.cs): `src/MissingValues/UInt256.cs`
- [Int512](https://github.com/crookseta/missing-values/blob/main/src/MissingValues/Int512.cs): `src/MissingValues/Int512.cs`
- [UInt512](https://github.com/crookseta/missing-values/blob/main/src/MissingValues/UInt512.cs): `src/MissingValues/UInt512.cs`

### Extended floats

- [Quad](https://github.com/crookseta/missing-values/blob/main/src/MissingValues/Quad.cs): `src/MissingValues/Quad.cs`
- [Octo](https://github.com/crookseta/missing-values/blob/main/src/MissingValues/Octo.cs): `src/MissingValues/Octo.cs`
- [MathQ functions](https://github.com/crookseta/missing-values/blob/main/src/MissingValues/MathQ.MathFunctions.cs): `src/MissingValues/MathQ.MathFunctions.cs`
- [MathQ arithmetic](https://github.com/crookseta/missing-values/blob/main/src/MissingValues/MathQ.Arithmetics.cs): `src/MissingValues/MathQ.Arithmetics.cs`

### Text conversion

- [Number parser](https://github.com/crookseta/missing-values/blob/main/src/MissingValues/Info/NumberParser.cs): `src/MissingValues/Info/NumberParser.cs`
- [Number formatter](https://github.com/crookseta/missing-values/blob/main/src/MissingValues/Info/NumberFormatter.cs): `src/MissingValues/Info/NumberFormatter.cs`
- [Number converter](https://github.com/crookseta/missing-values/blob/main/src/MissingValues/Info/NumberConverter.cs): `src/MissingValues/Info/NumberConverter.cs`
- [Binary readers](https://github.com/crookseta/missing-values/blob/main/src/MissingValues/Primitives/BinaryOperations.Read.cs): `src/MissingValues/Primitives/BinaryOperations.Read.cs`
- [Binary writers](https://github.com/crookseta/missing-values/blob/main/src/MissingValues/Primitives/BinaryOperations.Write.cs): `src/MissingValues/Primitives/BinaryOperations.Write.cs`

### Numeric infrastructure

- [IEEE bit helpers](https://github.com/crookseta/missing-values/blob/main/src/MissingValues/Internals/BitHelper.Ieee.cs): `src/MissingValues/Internals/BitHelper.Ieee.cs`
- [Integer calculator](https://github.com/crookseta/missing-values/blob/main/src/MissingValues/Internals/Calculator.cs): `src/MissingValues/Internals/Calculator.cs`
- [Number info](https://github.com/crookseta/missing-values/blob/main/src/MissingValues/Internals/NumberInfo.cs): `src/MissingValues/Internals/NumberInfo.cs`
- [Big number core](https://github.com/crookseta/missing-values/blob/main/src/MissingValues/Internals/BigNumber.cs): `src/MissingValues/Internals/BigNumber.cs`

### Other components

- **Library user**

## Connections

- Library user → Int256: constructs or operates
- Library user → UInt256: constructs or operates
- Library user → Int512: constructs or operates
- Library user → UInt512: constructs or operates
- Library user → Quad: constructs or operates
- Library user → Octo: constructs or operates
- Library user → Number parser: parses text
- Number parser → Number info: parses numeric data
- Number parser → Int256: produces values
- Number parser → Quad: produces values
- Number parser → Octo: produces values
- Library user → Number formatter: formats values
- Library user → Number converter: converts values
- Library user → Binary readers: reads bytes
- Binary readers → Int256: decodes
- Binary readers → Quad: decodes
- Binary readers → Octo: decodes
- Library user → Binary writers: writes bytes
- Int256 → Binary writers: encodes
- Quad → Binary writers: encodes
- Octo → Binary writers: encodes
- MathQ functions → Quad: computes with
- MathQ arithmetic → Quad: computes with
- IEEE bit helpers → Quad: packs IEEE bits
- IEEE bit helpers → Octo: packs IEEE bits
