graph LR A["Algorithm\nSpecification"] --> B["Python ๐\n(prototype)"] A --> C["Rust ๐ฆ\n(production)"] A --> D["C++ ๐\n(production)"] style A fill:#ff9800 style B fill:#4caf50 style C fill:#f44336 style D fill:#2196f3
graph LR A["Rust\nImplementation"] -->|"Same algorithm\nSame formulas"| C["Numerically\nIdentical โ๏ธ"] B["C++\nImplementation"] -->|"Same algorithm\nSame formulas"| C style A fill:#f44336 style B fill:#2196f3 style C fill:#4caf50
graph LR Input["n = 11โโ\n= 1011โ"] --> Reverse["Reverse\ndigits"] Reverse --> Result["ฯโ(11) = 0.1011โ\n= 0.6875โโ"] Input2["count"] --> VdC["VdCorput::pop()"] VdC --> V["โ [0, 1)"] style Input fill:#e3f2fd style Reverse fill:#f3e5f5 style Result fill:#4caf50 style Input2 fill:#ff9800 style VdC fill:#2196f3 style V fill:#4caf50
graph LR A["Need max speed\n& no threads?"] -->|"Yes"| B["Use lds-cpp\n(templates, 4-8ร faster)"] A -->|"No, need\nthread safety"| C{"Return type?"} C -->|"Fixed array"| D["lds-gen-cpp\n1.2-1.7ร faster"] C -->|"Dynamic Vec"| E["lds-rs\ncomparable or faster"] style A fill:#ff9800 style B fill:#4caf50 style C fill:#2196f3 style D fill:#2196f3 style E fill:#f44336
graph LR A["Simple integer ops\n(area, overlap)"] -->|"C++ leads 16-25%"| B["AVX2 + LTO\nadvantage"] C["Complex algorithms\n(DME, routing)"] -->|"Rust more reliable"| D["No optimization\nartifacts"] E["Template-dependent\ncode (GlobalRouter)"] -->|"C++ harder to use"| F["Template compile\nerrors on simple types"] style A fill:#e3f2fd style B fill:#2196f3 style C fill:#fce4ec style D fill:#f44336 style E fill:#fff3e0 style F fill:#ff9800
graph TD A["Your workload is..."] --> B["Simple integer/float\nhot loops"] A --> C["Complex algorithms\nwith threads"] A --> D["Mixed: some hot loops\nsome complex logic"] B --> E["C++ ๐\n(AVX2 + LTO)"] C --> F["Rust ๐ฆ\n(thread safety + reliability)"] D --> G["Either works\nโค 30% gap"] style A fill:#ff9800 style B fill:#e3f2fd style C fill:#fce4ec style D fill:#f3e5f5 style E fill:#2196f3 style F fill:#f44336 style G fill:#4caf50