#include <cstdio>
template <typename typed> void count(unsigned *result_m, unsigned *result_e)
{
typed x = 1, exp;
unsigned res, e;
for (res=0; x!=0; ++res) x/=2;
for (exp=1,e=0; exp*2<res; ++e) exp*=2;
*result_e = e+1;
*result_m = res-exp+1;
}
int main(void)
{
unsigned f_m, f_e, d_m, d_e, ld_m, ld_e;
count<float>(&f_m, &f_e);
count<double>(&d_m, &d_e);
count<long double>(&ld_m, &ld_e);
printf(" S M E SZ\n");
printf("float: 1 %2u %2u %3u\n", f_m, f_e, 8 * sizeof(float));
printf("double: 1 %2u %2u %3u\n", d_m, d_e, 8 * sizeof(double));
printf("long double: 1 %2u %2u %3u\n", ld_m, ld_e, 8 * sizeof(long double));
}
I2luY2x1ZGUgPGNzdGRpbz4KCnRlbXBsYXRlIDx0eXBlbmFtZSB0eXBlZD4gdm9pZCBjb3VudCh1bnNpZ25lZCAqcmVzdWx0X20sIHVuc2lnbmVkICpyZXN1bHRfZSkKewogIHR5cGVkIHggPSAxLCBleHA7CiAgdW5zaWduZWQgcmVzLCBlOwogIGZvciAocmVzPTA7IHghPTA7ICsrcmVzKSB4Lz0yOwogIGZvciAoZXhwPTEsZT0wOyBleHAqMjxyZXM7ICsrZSkgZXhwKj0yOwogICpyZXN1bHRfZSA9IGUrMTsKICAqcmVzdWx0X20gPSByZXMtZXhwKzE7Cn0KCmludCBtYWluKHZvaWQpCnsKICB1bnNpZ25lZCBmX20sIGZfZSwgZF9tLCBkX2UsIGxkX20sIGxkX2U7CiAgCiAgY291bnQ8ZmxvYXQ+KCZmX20sICZmX2UpOwogIGNvdW50PGRvdWJsZT4oJmRfbSwgJmRfZSk7CiAgY291bnQ8bG9uZyBkb3VibGU+KCZsZF9tLCAmbGRfZSk7CiAgCiAgcHJpbnRmKCIgICAgICAgICAgICAgIFMgICBNICAgRSAgIFNaXG4iKTsKICBwcmludGYoImZsb2F0OiAgICAgICAgMSAgJTJ1ICAlMnUgICUzdVxuIiwgIGZfbSwgIGZfZSwgOCAqIHNpemVvZihmbG9hdCkpOwogIHByaW50ZigiZG91YmxlOiAgICAgICAxICAlMnUgICUydSAgJTN1XG4iLCAgZF9tLCAgZF9lLCA4ICogc2l6ZW9mKGRvdWJsZSkpOwogIHByaW50ZigibG9uZyBkb3VibGU6ICAxICAlMnUgICUydSAgJTN1XG4iLCBsZF9tLCBsZF9lLCA4ICogc2l6ZW9mKGxvbmcgZG91YmxlKSk7Cn0=