#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;
}
I2luY2x1ZGUgPGNtYXRoPgojaW5jbHVkZSA8aW9zdHJlYW0+CiNpbmNsdWRlIDxpb21hbmlwPgoKY2xhc3MgUGkgewpwdWJsaWM6CiAgICBQaSgpIHt9CgogICAgb3BlcmF0b3IgZmxvYXQoKSBjb25zdCB7CiAgICAgICAgcmV0dXJuIHN0ZDo6YXRhbigxLjBmKSo0LjBmOwogICAgfQoKICAgIG9wZXJhdG9yIGRvdWJsZSgpIGNvbnN0IHsKICAgICAgICByZXR1cm4gc3RkOjphdGFuKDEuMCkqNC4wOwogICAgfQp9OwoKY29uc3QgUGkgcGk7Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBUPgpUIG9wZXJhdG9yKihjb25zdCBQaSYgcGksIFQmJiBvdGhlcikKewoJcmV0dXJuIHN0YXRpY19jYXN0PFQ+KHBpKSAqIHN0ZDo6Zm9yd2FyZDxUPihvdGhlcik7Cn0KCmludCBtYWluKCkgewogICAgc3RkOjpjb3V0IDw8IHN0ZDo6c2V0cHJlY2lzaW9uKDUwKSA8PCBwaSAqIDEuMGYgPDwgc3RkOjplbmRsOwogICAgc3RkOjpjb3V0IDw8IHN0ZDo6c2V0cHJlY2lzaW9uKDUwKSA8PCBwaSAqIDEuMCAgPDwgc3RkOjplbmRsOwp9