4 typedef long long int ll_t;
7 ll_t mul_ll(ll_t a, ll_t b) __attribute__((noinline));
8 ll_t shl_ll(ll_t a, ll_t b) __attribute__((noinline));
9 ll_t shr_ll(ll_t a, ll_t b) __attribute__((noinline));
10 ll_t add_ll(ll_t a, ll_t b) __attribute__((noinline));
11 ll_t sub_ll(ll_t a, ll_t b) __attribute__((noinline));
12 ll_t div_ll(ll_t a, ll_t b) __attribute__((noinline));
13 ll_t mod_ll(ll_t a, ll_t b) __attribute__((noinline));
14 ll_t divmod_ll(ll_t a, ll_t b) __attribute__((noinline));
15 ll_t abs_ll(ll_t a) __attribute__((noinline));
16 ll_t neg_ll(ll_t a) __attribute__((noinline));
19 ll_t mul_ll(ll_t a, ll_t b) {
23 ll_t shl_ll(ll_t a, ll_t b) {
27 ll_t shr_ll(ll_t a, ll_t b) {
31 ll_t add_ll(ll_t a, ll_t b) {
35 ll_t sub_ll(ll_t a, ll_t b) {
39 ll_t div_ll(ll_t a, ll_t b) {
43 ll_t mod_ll(ll_t a, ll_t b) {
47 ll_t divmod_ll(ll_t a, ll_t b) {
48 return (a / b) + (a % b);
60 double conv_ll_d(ll_t a) {
64 ll_t conv_d_ll(double a) {
72 ll_t c = 0x8001023000002460;
75 printf("%lld * %lld = %lld\n", a, b, mul_ll(a, b));
76 printf("%lld + %lld = %lld\n", a, b, add_ll(a, b));
77 printf("%lld - %lld = %lld\n", a, b, sub_ll(a, b));
78 printf("%lld / %lld = %lld\n", b, a, div_ll(b, a));
79 printf("%lld %% %lld = %lld\n", b, a, mod_ll(b, a));
80 printf("%lld / + %% %lld = %lld\n", b, a, divmod_ll(b, a));
81 printf("%lld << %d = %lld\n", a, 2, shl_ll(a, 2));
82 printf("%lld >> %d = %lld\n", a, 2, shr_ll(a, 2));
83 printf("abs(%lld) = %lld\n", c, abs_ll(c));
84 printf("neg(%lld) = %lld\n", b, neg_ll(b));
86 printf("conv(%lld) = %lf\n", c, conv_ll_d(c));
87 printf("conv(%lf) = %lld\n", d, conv_d_ll(d));