# skysaksham/long-numeric-arithmetic architecture

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

- Interactive diagram: https://gitdiagram.com/skysaksham/long-numeric-arithmetic
- Repository: https://github.com/skysaksham/long-numeric-arithmetic

## Overview

Long Numeric Arithmetic is a C++ library for representing and working with very large signed numbers. Its documented workflow converts strings to Numbers, performs supported arithmetic or factorial calculation, then converts or prints results; comparisons are also supported. The core representation uses base-10^9 digit blocks, with comparison and same-sign integer addition implemented in sampled source. Decimal storage and comparison are present, but decimal arithmetic is not implemented. Utility implementations were not sampled, so their internal wiring is omitted.

Main entry points: [`include/NUMBER.h`](https://github.com/skysaksham/long-numeric-arithmetic/blob/main/include/NUMBER.h) (Number), [`src/NUMBER.cpp`](https://github.com/skysaksham/long-numeric-arithmetic/blob/main/src/NUMBER.cpp) (Comparison operators), [`src/operations/addition.cpp`](https://github.com/skysaksham/long-numeric-arithmetic/blob/main/src/operations/addition.cpp) (Same-sign addition), [`src/special_ops/factorialbase9.cpp`](https://github.com/skysaksham/long-numeric-arithmetic/blob/main/src/special_ops/factorialbase9.cpp) (Factorial)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_representation["Number representation"]
  node_number["Number<br/>[NUMBER.h]"]
  node_operators["Comparison operators<br/>[NUMBER.cpp]"]
end

subgraph group_operations["Arithmetic operations"]
  node_addition["Same-sign addition<br/>[addition.cpp]"]
  node_factorial["Factorial<br/>[factorialbase9.cpp]"]
end

subgraph group_utilities["Conversion and comparison"]
  node_parse["String parsing<br/>[NumberUtils.h]"]
  node_format["String formatting<br/>[NumberUtils.h]"]
  node_printing["Number printing<br/>[NumberUtils.h]"]
  node_compare["Comparison<br/>[Compare.cpp]"]
end

node_caller(("Library caller"))

node_caller -->|"parses strings"| node_parse
node_caller -->|"converts to string"| node_format
node_caller -->|"prints number"| node_printing
node_caller -->|"adds numbers"| node_addition
node_caller -->|"calculates factorial"| node_factorial
node_caller -->|"compares numbers"| node_operators
node_operators -->|"calls comparison"| node_compare
node_addition -->|"reads and returns"| node_number
node_factorial -->|"constructs result"| node_number
node_compare -->|"reads representation"| node_number

click node_number "https://github.com/skysaksham/long-numeric-arithmetic/blob/main/include/NUMBER.h"
click node_parse "https://github.com/skysaksham/long-numeric-arithmetic/blob/main/include/NumberUtils.h"
click node_format "https://github.com/skysaksham/long-numeric-arithmetic/blob/main/include/NumberUtils.h"
click node_printing "https://github.com/skysaksham/long-numeric-arithmetic/blob/main/include/NumberUtils.h"
click node_compare "https://github.com/skysaksham/long-numeric-arithmetic/blob/main/src/Compare.cpp"
click node_operators "https://github.com/skysaksham/long-numeric-arithmetic/blob/main/src/NUMBER.cpp"
click node_addition "https://github.com/skysaksham/long-numeric-arithmetic/blob/main/src/operations/addition.cpp"
click node_factorial "https://github.com/skysaksham/long-numeric-arithmetic/blob/main/src/special_ops/factorialbase9.cpp"

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_number,node_operators toneBlue
class node_addition,node_factorial toneAmber
class node_parse,node_format,node_printing,node_compare toneMint
class node_caller toneIndigo
```

## Components

### Number representation

- [Number](https://github.com/skysaksham/long-numeric-arithmetic/blob/main/include/NUMBER.h): `include/NUMBER.h`
- [Comparison operators](https://github.com/skysaksham/long-numeric-arithmetic/blob/main/src/NUMBER.cpp): `src/NUMBER.cpp`

### Arithmetic operations

- [Same-sign addition](https://github.com/skysaksham/long-numeric-arithmetic/blob/main/src/operations/addition.cpp): `src/operations/addition.cpp`
- [Factorial](https://github.com/skysaksham/long-numeric-arithmetic/blob/main/src/special_ops/factorialbase9.cpp): `src/special_ops/factorialbase9.cpp`

### Conversion and comparison

- [String parsing](https://github.com/skysaksham/long-numeric-arithmetic/blob/main/include/NumberUtils.h): `include/NumberUtils.h`
- [String formatting](https://github.com/skysaksham/long-numeric-arithmetic/blob/main/include/NumberUtils.h): `include/NumberUtils.h`
- [Number printing](https://github.com/skysaksham/long-numeric-arithmetic/blob/main/include/NumberUtils.h): `include/NumberUtils.h`
- [Comparison](https://github.com/skysaksham/long-numeric-arithmetic/blob/main/src/Compare.cpp): `src/Compare.cpp`

### Other components

- **Library caller**

## Connections

- Library caller → String parsing: parses strings
- Library caller → String formatting: converts to string
- Library caller → Number printing: prints number
- Library caller → Same-sign addition: adds numbers
- Library caller → Factorial: calculates factorial
- Library caller → Comparison operators: compares numbers
- Comparison operators → Comparison: calls comparison
- Same-sign addition → Number: reads and returns
- Factorial → Number: constructs result
- Comparison → Number: reads representation
