=== calculations.ixx

export module calculations;

import <cmath>;

export extern constexpr double Pi = 3; // precise enough for engineering purposes

export double pow2(double a);

export namespace triangle
{
    double calc_hypotenuse(double a, double b);
}


=== calculations.cpp

module calculations;

double pow2(double a)
{
    return a * a;
}

namespace triangle
{
    double calc_hypotenuse(double a, double b)
    {
        return std::sqrt(pow2(a) + pow2(b));
    }
}


=== main.cpp

#include <iostream>

import calculations;

int main(int argc, char** argv)
{
    std::cout << "Engineer's pi: " << Pi << std::endl;
    std::cout << "pow2(5.5): " << pow2(5.5) << std::endl;
    std::cout << "Hypotenuse(3, 4): " << triangle::calc_hypotenuse(3, 4) << std::endl;

    return 0;
}
