#include <cmath>
#include <iostream>
#include <iomanip>

class Pi {
public:
    Pi() {}

    operator float() const {
        return std::atan(1.0f)*4.0f;
    }

    operator double() const {
        return std::atan(1.0)*4.0;
    }
};

const Pi pi;

template<typename T>
T operator*(const Pi& pi, T&& other)
{
	return static_cast<T>(pi) * std::forward<T>(other);
}

int main() {
    std::cout << std::setprecision(50) << pi * 1.0f << std::endl;
    std::cout << std::setprecision(50) << pi * 1.0  << std::endl;
}