graph LR GCPP["๐งฎ ginger-cpp\nC++ root-finding"] --> G["๐ฏ Polynomial\nroot-finding\nBairstow + Aberth"] GPY["๐ ginger\nPython package"] --> G GRS["๐ฆ ginger-rs\nRust crate"] --> G style GCPP fill:#c8e6c9,stroke:#2e7d32,color:#2e3440,stroke-width:3px style GPY fill:#fff9c4,stroke:#f57f17,color:#2e3440,stroke-width:3px style GRS fill:#e3f2fd,stroke:#1565c0,color:#2e3440,stroke-width:3px style G fill:#e8eaf6,stroke:#283593,color:#2e3440,stroke-width:3px
graph LR MCPP["๐งฎ multiplierless-cpp\nC++ FIR design"] --> M["๐ FIR Filter Design\nlowpass oracle + CSD"] MPY["๐ multiplierless\nPython package"] --> M MRS["๐ฆ multiplierless-rs\nRust crate"] --> M style MCPP fill:#c8e6c9,stroke:#2e7d32,color:#2e3440,stroke-width:3px style MPY fill:#fff9c4,stroke:#f57f17,color:#2e3440,stroke-width:3px style MRS fill:#e3f2fd,stroke:#1565c0,color:#2e3440,stroke-width:3px style M fill:#fce4ec,stroke:#880e4f,color:#2e3440,stroke-width:3px
graph TD S["๐ฏ Step functors\nper-root Newton job"] --> P1["๐ถ sequential\nGauss-Seidel"] S --> P2["๐ jacobi_mt\nsnapshot + rayon"] S --> P3["โ๏ธ atomic\ndecoupled buffer"] style S fill:#e8eaf6,stroke:#283593,color:#2e3440,stroke-width:3px style P1 fill:#c8e6c9,stroke:#2e7d32,color:#2e3440,stroke-width:3px style P2 fill:#fff9c4,stroke:#f57f17,color:#2e3440,stroke-width:3px style P3 fill:#e3f2fd,stroke:#1565c0,color:#2e3440,stroke-width:3px
graph LR U["๐ค User calls\nsolve_pbairstow_even(...)"] --> M{"mode?\nAUTOMATIC"} M -->|"should_parallelize(n)\nn > 4"| MT["๐ pbairstow_even_mt"] M -->|"else"| ST["๐ถ pbairstow_even_st"] style U fill:#e8eaf6,stroke:#283593,color:#2e3440,stroke-width:3px style M fill:#fff9c4,stroke:#f57f17,color:#2e3440,stroke-width:3px style MT fill:#e3f2fd,stroke:#1565c0,color:#2e3440,stroke-width:3px style ST fill:#c8e6c9,stroke:#2e7d32,color:#2e3440,stroke-width:3px