graph LR A[Temperature\nConversion] --> B[Fixed-Point\nPre-Scaling] A --> C[Lookup\nTable] A --> D[Multiply\n& Shift] A --> E[Newton-Raphson\nApproximation] style A fill:#e3f2fd,stroke:#1565c0,stroke-width:3px style B fill:#fff9c4,stroke:#f57f17,stroke-width:3px style C fill:#c8e6c9,stroke:#2e7d32,stroke-width:3px style D fill:#fff9c4,stroke:#f57f17,stroke-width:3px style E fill:#f3e5f5,stroke:#7b1fa2,stroke-width:3px
graph LR A["C x 9"] --> B["x 205\n(fixed-point)"] B --> C[">> 10"] C --> D["+ 32"] D --> E[Fahrenheit] style A fill:#e3f2fd,stroke:#1565c0,stroke-width:3px style B fill:#fff9c4,stroke:#f57f17,stroke-width:3px style C fill:#fff9c4,stroke:#f57f17,stroke-width:3px style D fill:#fff9c4,stroke:#f57f17,stroke-width:3px style E fill:#c8e6c9,stroke:#2e7d32,stroke-width:3px
graph LR A[Celsius\nInput] --> B["Offset\n+40"] B --> C[("LUT\n256 entries")] C --> D[Fahrenheit\nOutput] style A fill:#e3f2fd,stroke:#1565c0,stroke-width:3px style B fill:#fff9c4,stroke:#f57f17,stroke-width:3px style C fill:#c8e6c9,stroke:#2e7d32,stroke-width:3px style D fill:#ffccbc,stroke:#bf360c,stroke-width:3px
graph LR A[Celsius\nInput] --> B["+ (C x 819)"] B --> C[">> 10"] C --> D["+ 32"] D --> E[Fahrenheit\nOutput] style A fill:#e3f2fd,stroke:#1565c0,stroke-width:3px style B fill:#fff9c4,stroke:#f57f17,stroke-width:3px style C fill:#fff9c4,stroke:#f57f17,stroke-width:3px style D fill:#fff9c4,stroke:#f57f17,stroke-width:3px style E fill:#c8e6c9,stroke:#2e7d32,stroke-width:3px
graph TD A{Input range\nsmall?} -->|Yes| B[LUT\nfastest] A -->|No| C{Has\nmultiplier?} C -->|Yes| D[Newton-Raphson\nApproximation] C -->|No| E[Fixed-Point\nPre-Scaling] style A fill:#fff9c4,stroke:#f57f17,stroke-width:3px style B fill:#c8e6c9,stroke:#2e7d32,stroke-width:3px style C fill:#fff9c4,stroke:#f57f17,stroke-width:3px style D fill:#f3e5f5,stroke:#7b1fa2,stroke-width:3px style E fill:#e3f2fd,stroke:#1565c0,stroke-width:3px
graph LR A[Original\nImage] --> B["5x5 Kernel\nConvolution"] B --> C[Blurred\nImage] style A fill:#e3f2fd,stroke:#1565c0,stroke-width:3px style B fill:#fff9c4,stroke:#f57f17,stroke-width:3px style C fill:#c8e6c9,stroke:#2e7d32,stroke-width:3px
graph LR A["2D Gaussian\nG(x, y)"] --> B[Kernel\nWeights] B --> C["Normalize\n(divide by 273)"] style A fill:#e3f2fd,stroke:#1565c0,stroke-width:3px style B fill:#fff9c4,stroke:#f57f17,stroke-width:3px style C fill:#c8e6c9,stroke:#2e7d32,stroke-width:3px