#include <iostream>
#include <cmath>
#include <stdexcept>


double calculateMinMemoryBytes(double input_rate_bps, double output_rate_bps, double burst_duration_sec) {
    if (input_rate_bps < 0 || output_rate_bps < 0 || burst_duration_sec < 0) {
        throw std::invalid_argument("Inputs must be non-negative values.");
    }
    
    if (input_rate_bps <= output_rate_bps) {
        return 0.0; 
    }
    
    double required_bits = (input_rate_bps - output_rate_bps) * burst_duration_sec;
    
    return required_bits / 8.0;
}

int main() {
    double input_rate = 100e6;  
    double output_rate = 40e6;  
    double duration = 2.0;      

    try {
        double mem_bytes = calculateMinMemoryBytes(input_rate, output_rate, duration);
        double mem_megabytes = mem_bytes / (1024.0 * 1024.0);
        
        std::cout << "--- Buffer Calculation Results ---" << std::endl;
        std::cout << "Required Memory: " << std::ceil(mem_bytes) << " Bytes" << std::endl;
        std::cout << "Required Memory: " << mem_megabytes << " MB" << std::endl;
    } 
    catch (const std::exception& e) {
        std::cerr << "Error: " << e.what() << std::endl;
    }

    return 0;
}

Embed on website

To embed this project on your website, copy the following code and paste it into your website's HTML: