fork download
  1. #include <gmp.h>
  2.  
  3. #define PRIZgmp "Zd"
  4. #define PRIFgmp "Ff"
  5.  
  6. //
  7. // ひたすら足し算
  8. //
  9. void gmp_fibonacci_z(unsigned int n_, mpz_t y_) {
  10.  
  11. switch (n_) {
  12. case 0:
  13. mpz_init_set_ui(y_, 0);
  14. return;
  15. case 1:
  16. mpz_init_set_ui(y_, 1);
  17. return;
  18. default: {
  19. mpz_t l;
  20. mpz_t r;
  21. mpz_init_set_ui(l, 0);
  22. mpz_init_set_ui(r, 1);
  23. mpz_set_ui(y_, 1);
  24.  
  25. for (unsigned int i = 1; i < n_; ++i) {
  26. mpz_add(y_, y_, l);
  27. mpz_set(l, r);
  28. mpz_set(r, y_);
  29. }
  30.  
  31. mpz_clear(l);
  32. mpz_clear(r);
  33. return;
  34. }
  35. }
  36. }
  37.  
  38. // 再帰階乗計算
  39. // https://w...content-available-to-author-only...i.edu/~eppstein/161/960109.html
  40. // This is a recursive algorithm, so as usual we get a recurrence relation defining time,
  41. // just by writing down the time spent in a call to matpow (O(1)) plus the time in each recursive call
  42. // (only one recursive call, with argument n/2). So the recurrence is
  43. //
  44. // time(n) = O(1) + time(n / 2)
  45.  
  46. typedef mpz_t Muint64_2x2_t[2][2];
  47.  
  48. typedef struct tag_Mbuf_t {
  49. Muint64_2x2_t M;
  50. Muint64_2x2_t IM;
  51. Muint64_2x2_t TM;
  52. } t_Mbuf_t;
  53.  
  54. static inline void matpow(t_Mbuf_t* pt_, unsigned int n_) {
  55.  
  56. if (n_ > 1) {
  57. matpow(pt_, n_ >> 1);
  58. // M = M * M
  59. mpz_mul (pt_->TM[0][0], pt_->M[0][0], pt_->M[0][0]);
  60. mpz_addmul(pt_->TM[0][0], pt_->M[0][1], pt_->M[1][0]);
  61. mpz_mul (pt_->TM[0][1], pt_->M[0][0], pt_->M[0][1]);
  62. mpz_addmul(pt_->TM[0][1], pt_->M[0][1], pt_->M[1][1]);
  63. mpz_mul (pt_->TM[1][0], pt_->M[1][0], pt_->M[0][0]);
  64. mpz_addmul(pt_->TM[1][0], pt_->M[1][1], pt_->M[1][0]);
  65. mpz_mul (pt_->TM[1][1], pt_->M[1][0], pt_->M[0][1]);
  66. mpz_addmul(pt_->TM[1][1], pt_->M[1][1], pt_->M[1][1]);
  67.  
  68. mpz_set(pt_->M[0][0], pt_->TM[0][0]);
  69. mpz_set(pt_->M[0][1], pt_->TM[0][1]);
  70. mpz_set(pt_->M[1][0], pt_->TM[1][0]);
  71. mpz_set(pt_->M[1][1], pt_->TM[1][1]);
  72. }
  73.  
  74. if (n_ & 1) {
  75. // M = M * IM
  76. mpz_mul (pt_->TM[0][0], pt_->M[0][0], pt_->IM[0][0]);
  77. mpz_addmul(pt_->TM[0][0], pt_->M[0][1], pt_->IM[1][0]);
  78. mpz_mul (pt_->TM[0][1], pt_->M[0][0], pt_->IM[0][1]);
  79. mpz_addmul(pt_->TM[0][1], pt_->M[0][1], pt_->IM[1][1]);
  80. mpz_mul (pt_->TM[1][0], pt_->M[1][0], pt_->IM[0][0]);
  81. mpz_addmul(pt_->TM[1][0], pt_->M[1][1], pt_->IM[1][0]);
  82. mpz_mul (pt_->TM[1][1], pt_->M[1][0], pt_->IM[0][1]);
  83. mpz_addmul(pt_->TM[1][1], pt_->M[1][1], pt_->IM[1][1]);
  84.  
  85. mpz_set(pt_->M[0][0], pt_->TM[0][0]);
  86. mpz_set(pt_->M[0][1], pt_->TM[0][1]);
  87. mpz_set(pt_->M[1][0], pt_->TM[1][0]);
  88. mpz_set(pt_->M[1][1], pt_->TM[1][1]);
  89. }
  90. }
  91.  
  92. void gmp_fibonacci_m(unsigned int n_, mpz_t y_) {
  93.  
  94. switch (n_) {
  95. case 0:
  96. mpz_init_set_ui(y_, 0);
  97. return;
  98. case 1:
  99. mpz_init_set_ui(y_, 1);
  100. return;
  101. default: {
  102.  
  103. t_Mbuf_t t;
  104.  
  105. mpz_init_set_ui(t.M[0][0], 1);
  106. mpz_init_set_ui(t.M[0][1], 0);
  107. mpz_init_set_ui(t.M[1][0], 0);
  108. mpz_init_set_ui(t.M[1][1], 1);
  109.  
  110. mpz_init_set_ui(t.IM[0][0], 1);
  111. mpz_init_set_ui(t.IM[0][1], 1);
  112. mpz_init_set_ui(t.IM[1][0], 1);
  113. mpz_init_set_ui(t.IM[1][1], 0);
  114.  
  115. mpz_init(t.TM[0][0]);
  116. mpz_init(t.TM[0][1]);
  117. mpz_init(t.TM[1][0]);
  118. mpz_init(t.TM[1][1]);
  119.  
  120. matpow(&t, n_ - 1);
  121. mpz_set(y_, t.M[0][0]);
  122.  
  123. mpz_clear(t.M[0][0]);
  124. mpz_clear(t.M[0][1]);
  125. mpz_clear(t.M[1][0]);
  126. mpz_clear(t.M[1][1]);
  127.  
  128. mpz_clear(t.IM[0][0]);
  129. mpz_clear(t.IM[0][1]);
  130. mpz_clear(t.IM[1][0]);
  131. mpz_clear(t.IM[1][1]);
  132.  
  133. mpz_clear(t.TM[0][0]);
  134. mpz_clear(t.TM[0][1]);
  135. mpz_clear(t.TM[1][0]);
  136. mpz_clear(t.TM[1][1]);
  137. return;
  138. }
  139. }
  140. }
  141.  
  142. #include <time.h>
  143. #include <sys/time.h>
  144.  
  145. inline static double baka_sec_count(void) {
  146. struct timeval tv;
  147. gettimeofday(&tv, NULL);
  148. return (double)tv.tv_sec + ((double)tv.tv_usec / 1000000.0);
  149.  
  150. }
  151.  
  152. int main(int argc, char* argv[]) {
  153. // mpz_t zy;
  154. mpz_t my;
  155. mpz_t gy;
  156.  
  157. unsigned int const n = 10000000;
  158.  
  159. double s;
  160. double e;
  161. clock_t us;
  162. clock_t ue;
  163.  
  164. // mpz_init(zy);
  165. // s = baka_sec_count();
  166. // us = clock();
  167. // gmp_fibonacci_z(n, zy);
  168. // ue = clock();
  169. // e = baka_sec_count();
  170. // gmp_printf("z,%d,%" PRIZgmp "\n", n, zy);
  171. // gmp_printf("z,%d,%lf,%lf\n", n, e - s, (double)(ue - us) / CLOCKS_PER_SEC);
  172.  
  173. mpz_init(my);
  174. s = baka_sec_count();
  175. us = clock();
  176. gmp_fibonacci_m(n, my);
  177. ue = clock();
  178. e = baka_sec_count();
  179. //gmp_printf("m,%d,%" PRIZgmp "\n", n, my);
  180. gmp_printf("m,%d,%lf,%lf\n", n, e - s, (double)(ue - us) / CLOCKS_PER_SEC);
  181.  
  182. mpz_init(gy);
  183. s = baka_sec_count();
  184. us = clock();
  185. mpz_fib_ui(gy, n);
  186. ue = clock();
  187. e = baka_sec_count();
  188. //gmp_printf("g,%d,%" PRIZgmp "\n", n, gy);
  189. gmp_printf("g,%d,%lf,%lf\n", n, e - s, (double)(ue - us) / CLOCKS_PER_SEC);
  190.  
  191. mpz_clear(my);
  192. mpz_clear(gy);
  193. // mpz_clear(zy);
  194. return 0;
  195. }
  196.  
  197.  
Compilation error #stdin compilation error #stdout 0s 0KB
stdin
Standard input is empty
compilation info
/home/U0z5Hy/ccADI9En.o: In function `matpow':
prog.c:(.text+0x96): undefined reference to `__gmpz_mul'
prog.c:(.text+0xad): undefined reference to `__gmpz_addmul'
prog.c:(.text+0xc6): undefined reference to `__gmpz_mul'
prog.c:(.text+0xdf): undefined reference to `__gmpz_addmul'
prog.c:(.text+0xf2): undefined reference to `__gmpz_mul'
prog.c:(.text+0x105): undefined reference to `__gmpz_addmul'
prog.c:(.text+0x11a): undefined reference to `__gmpz_mul'
prog.c:(.text+0x12f): undefined reference to `__gmpz_addmul'
prog.c:(.text+0x13a): undefined reference to `__gmpz_set'
prog.c:(.text+0x147): undefined reference to `__gmpz_set'
prog.c:(.text+0x152): undefined reference to `__gmpz_set'
prog.c:(.text+0x15f): undefined reference to `__gmpz_set'
prog.c:(.text+0x175): undefined reference to `__gmpz_mul'
prog.c:(.text+0x183): undefined reference to `__gmpz_addmul'
prog.c:(.text+0x193): undefined reference to `__gmpz_mul'
prog.c:(.text+0x1a3): undefined reference to `__gmpz_addmul'
prog.c:(.text+0x1b1): undefined reference to `__gmpz_mul'
prog.c:(.text+0x1bf): undefined reference to `__gmpz_addmul'
prog.c:(.text+0x1cf): undefined reference to `__gmpz_mul'
prog.c:(.text+0x1df): undefined reference to `__gmpz_addmul'
prog.c:(.text+0x1ea): undefined reference to `__gmpz_set'
prog.c:(.text+0x1f7): undefined reference to `__gmpz_set'
prog.c:(.text+0x202): undefined reference to `__gmpz_set'
prog.c:(.text+0x20f): undefined reference to `__gmpz_set'
prog.c:(.text+0x230): undefined reference to `__gmpz_mul'
prog.c:(.text+0x23e): undefined reference to `__gmpz_addmul'
prog.c:(.text+0x24e): undefined reference to `__gmpz_mul'
prog.c:(.text+0x25e): undefined reference to `__gmpz_addmul'
prog.c:(.text+0x26c): undefined reference to `__gmpz_mul'
prog.c:(.text+0x27a): undefined reference to `__gmpz_addmul'
prog.c:(.text+0x28a): undefined reference to `__gmpz_mul'
prog.c:(.text+0x29a): undefined reference to `__gmpz_addmul'
prog.c:(.text+0x2a5): undefined reference to `__gmpz_set'
prog.c:(.text+0x2b2): undefined reference to `__gmpz_set'
prog.c:(.text+0x2bd): undefined reference to `__gmpz_set'
prog.c:(.text+0x2ca): undefined reference to `__gmpz_set'
prog.c:(.text+0x329): undefined reference to `__gmpz_mul'
prog.c:(.text+0x340): undefined reference to `__gmpz_addmul'
prog.c:(.text+0x359): undefined reference to `__gmpz_mul'
prog.c:(.text+0x372): undefined reference to `__gmpz_addmul'
prog.c:(.text+0x385): undefined reference to `__gmpz_mul'
prog.c:(.text+0x398): undefined reference to `__gmpz_addmul'
prog.c:(.text+0x3ad): undefined reference to `__gmpz_mul'
prog.c:(.text+0x3c2): undefined reference to `__gmpz_addmul'
prog.c:(.text+0x3cd): undefined reference to `__gmpz_set'
prog.c:(.text+0x3da): undefined reference to `__gmpz_set'
prog.c:(.text+0x3e5): undefined reference to `__gmpz_set'
prog.c:(.text+0x3f2): undefined reference to `__gmpz_set'
prog.c:(.text+0x408): undefined reference to `__gmpz_mul'
prog.c:(.text+0x416): undefined reference to `__gmpz_addmul'
prog.c:(.text+0x426): undefined reference to `__gmpz_mul'
prog.c:(.text+0x436): undefined reference to `__gmpz_addmul'
prog.c:(.text+0x444): undefined reference to `__gmpz_mul'
prog.c:(.text+0x452): undefined reference to `__gmpz_addmul'
prog.c:(.text+0x462): undefined reference to `__gmpz_mul'
prog.c:(.text+0x472): undefined reference to `__gmpz_addmul'
prog.c:(.text+0x47d): undefined reference to `__gmpz_set'
prog.c:(.text+0x48a): undefined reference to `__gmpz_set'
prog.c:(.text+0x495): undefined reference to `__gmpz_set'
prog.c:(.text+0x4a2): undefined reference to `__gmpz_set'
prog.c:(.text+0x4ec): undefined reference to `__gmpz_mul'
prog.c:(.text+0x501): undefined reference to `__gmpz_addmul'
prog.c:(.text+0x518): undefined reference to `__gmpz_mul'
prog.c:(.text+0x538): undefined reference to `__gmpz_addmul'
prog.c:(.text+0x54b): undefined reference to `__gmpz_mul'
prog.c:(.text+0x569): undefined reference to `__gmpz_addmul'
prog.c:(.text+0x57c): undefined reference to `__gmpz_mul'
prog.c:(.text+0x591): undefined reference to `__gmpz_addmul'
prog.c:(.text+0x59c): undefined reference to `__gmpz_set'
prog.c:(.text+0x5a9): undefined reference to `__gmpz_set'
prog.c:(.text+0x5b4): undefined reference to `__gmpz_set'
prog.c:(.text+0x621): undefined reference to `__gmpz_mul'
prog.c:(.text+0x638): undefined reference to `__gmpz_addmul'
prog.c:(.text+0x651): undefined reference to `__gmpz_mul'
prog.c:(.text+0x66a): undefined reference to `__gmpz_addmul'
prog.c:(.text+0x67d): undefined reference to `__gmpz_mul'
prog.c:(.text+0x690): undefined reference to `__gmpz_addmul'
prog.c:(.text+0x6a5): undefined reference to `__gmpz_mul'
prog.c:(.text+0x6ba): undefined reference to `__gmpz_addmul'
prog.c:(.text+0x6c5): undefined reference to `__gmpz_set'
prog.c:(.text+0x6d2): undefined reference to `__gmpz_set'
prog.c:(.text+0x6dd): undefined reference to `__gmpz_set'
prog.c:(.text+0x6ea): undefined reference to `__gmpz_set'
prog.c:(.text+0x729): undefined reference to `__gmpz_mul'
prog.c:(.text+0x737): undefined reference to `__gmpz_addmul'
prog.c:(.text+0x753): undefined reference to `__gmpz_mul'
prog.c:(.text+0x76d): undefined reference to `__gmpz_addmul'
prog.c:(.text+0x77b): undefined reference to `__gmpz_mul'
prog.c:(.text+0x789): undefined reference to `__gmpz_addmul'
prog.c:(.text+0x7a3): undefined reference to `__gmpz_mul'
prog.c:(.text+0x7b3): undefined reference to `__gmpz_addmul'
prog.c:(.text+0x7be): undefined reference to `__gmpz_set'
prog.c:(.text+0x7cb): undefined reference to `__gmpz_set'
prog.c:(.text+0x7d6): undefined reference to `__gmpz_set'
prog.c:(.text+0x7e3): undefined reference to `__gmpz_set'
/home/U0z5Hy/ccADI9En.o: In function `gmp_fibonacci_m.part.0':
prog.c:(.text+0x82f): undefined reference to `__gmpz_init_set_ui'
prog.c:(.text+0x83d): undefined reference to `__gmpz_init_set_ui'
prog.c:(.text+0x84e): undefined reference to `__gmpz_init_set_ui'
prog.c:(.text+0x85b): undefined reference to `__gmpz_init_set_ui'
prog.c:(.text+0x869): undefined reference to `__gmpz_init_set_ui'
/home/U0z5Hy/ccADI9En.o:prog.c:(.text+0x877): more undefined references to `__gmpz_init_set_ui' follow
/home/U0z5Hy/ccADI9En.o: In function `gmp_fibonacci_m.part.0':
prog.c:(.text+0x8a4): undefined reference to `__gmpz_init'
prog.c:(.text+0x8ac): undefined reference to `__gmpz_init'
prog.c:(.text+0x8c0): undefined reference to `__gmpz_init'
prog.c:(.text+0x8d4): undefined reference to `__gmpz_init'
prog.c:(.text+0x93a): undefined reference to `__gmpz_mul'
prog.c:(.text+0x948): undefined reference to `__gmpz_addmul'
prog.c:(.text+0x969): undefined reference to `__gmpz_mul'
prog.c:(.text+0x98c): undefined reference to `__gmpz_addmul'
prog.c:(.text+0x9a7): undefined reference to `__gmpz_mul'
prog.c:(.text+0x9b5): undefined reference to `__gmpz_addmul'
prog.c:(.text+0x9d1): undefined reference to `__gmpz_mul'
prog.c:(.text+0x9e4): undefined reference to `__gmpz_addmul'
prog.c:(.text+0x9ef): undefined reference to `__gmpz_set'
prog.c:(.text+0x9fc): undefined reference to `__gmpz_set'
prog.c:(.text+0xa09): undefined reference to `__gmpz_set'
prog.c:(.text+0xa14): undefined reference to `__gmpz_set'
prog.c:(.text+0xa3c): undefined reference to `__gmpz_mul'
prog.c:(.text+0xa4a): undefined reference to `__gmpz_addmul'
prog.c:(.text+0xa58): undefined reference to `__gmpz_mul'
prog.c:(.text+0xa66): undefined reference to `__gmpz_addmul'
prog.c:(.text+0xa80): undefined reference to `__gmpz_mul'
prog.c:(.text+0xa90): undefined reference to `__gmpz_addmul'
prog.c:(.text+0xaaa): undefined reference to `__gmpz_mul'
prog.c:(.text+0xaba): undefined reference to `__gmpz_addmul'
prog.c:(.text+0xac5): undefined reference to `__gmpz_set'
prog.c:(.text+0xad0): undefined reference to `__gmpz_set'
prog.c:(.text+0xadd): undefined reference to `__gmpz_set'
prog.c:(.text+0xaea): undefined reference to `__gmpz_set'
prog.c:(.text+0xb1d): undefined reference to `__gmpz_mul'
prog.c:(.text+0xb2b): undefined reference to `__gmpz_addmul'
prog.c:(.text+0xb39): undefined reference to `__gmpz_mul'
prog.c:(.text+0xb47): undefined reference to `__gmpz_addmul'
prog.c:(.text+0xb61): undefined reference to `__gmpz_mul'
prog.c:(.text+0xb71): undefined reference to `__gmpz_addmul'
prog.c:(.text+0xb8b): undefined reference to `__gmpz_mul'
prog.c:(.text+0xb9b): undefined reference to `__gmpz_addmul'
prog.c:(.text+0xba6): undefined reference to `__gmpz_set'
prog.c:(.text+0xbb1): undefined reference to `__gmpz_set'
prog.c:(.text+0xbbe): undefined reference to `__gmpz_set'
prog.c:(.text+0xbcb): undefined reference to `__gmpz_set'
prog.c:(.text+0xc0c): undefined reference to `__gmpz_mul'
prog.c:(.text+0xc21): undefined reference to `__gmpz_addmul'
prog.c:(.text+0xc38): undefined reference to `__gmpz_mul'
prog.c:(.text+0xc58): undefined reference to `__gmpz_addmul'
prog.c:(.text+0xc6b): undefined reference to `__gmpz_mul'
prog.c:(.text+0xc89): undefined reference to `__gmpz_addmul'
prog.c:(.text+0xc9c): undefined reference to `__gmpz_mul'
prog.c:(.text+0xcb1): undefined reference to `__gmpz_addmul'
prog.c:(.text+0xcbc): undefined reference to `__gmpz_set'
prog.c:(.text+0xcc9): undefined reference to `__gmpz_set'
prog.c:(.text+0xcd4): undefined reference to `__gmpz_set'
prog.c:(.text+0xce1): undefined reference to `__gmpz_set'
prog.c:(.text+0xd09): undefined reference to `__gmpz_mul'
prog.c:(.text+0xd17): undefined reference to `__gmpz_addmul'
prog.c:(.text+0xd25): undefined reference to `__gmpz_mul'
prog.c:(.text+0xd33): undefined reference to `__gmpz_addmul'
prog.c:(.text+0xd4d): undefined reference to `__gmpz_mul'
prog.c:(.text+0xd5d): undefined reference to `__gmpz_addmul'
prog.c:(.text+0xd77): undefined reference to `__gmpz_mul'
prog.c:(.text+0xd87): undefined reference to `__gmpz_addmul'
prog.c:(.text+0xd92): undefined reference to `__gmpz_set'
prog.c:(.text+0xd9d): undefined reference to `__gmpz_set'
prog.c:(.text+0xdaa): undefined reference to `__gmpz_set'
prog.c:(.text+0xdb7): undefined reference to `__gmpz_set'
prog.c:(.text+0xdf0): undefined reference to `__gmpz_mul'
prog.c:(.text+0xe05): undefined reference to `__gmpz_addmul'
prog.c:(.text+0xe1c): undefined reference to `__gmpz_mul'
prog.c:(.text+0xe3c): undefined reference to `__gmpz_addmul'
prog.c:(.text+0xe4e): undefined reference to `__gmpz_mul'
prog.c:(.text+0xe6b): undefined reference to `__gmpz_addmul'
prog.c:(.text+0xe7e): undefined reference to `__gmpz_mul'
prog.c:(.text+0xe92): undefined reference to `__gmpz_addmul'
prog.c:(.text+0xe9d): undefined reference to `__gmpz_set'
prog.c:(.text+0xeaa): undefined reference to `__gmpz_set'
prog.c:(.text+0xeb5): undefined reference to `__gmpz_set'
prog.c:(.text+0xec1): undefined reference to `__gmpz_set'
prog.c:(.text+0xece): undefined reference to `__gmpz_set'
prog.c:(.text+0xed6): undefined reference to `__gmpz_clear'
prog.c:(.text+0xedf): undefined reference to `__gmpz_clear'
prog.c:(.text+0xee8): undefined reference to `__gmpz_clear'
prog.c:(.text+0xef1): undefined reference to `__gmpz_clear'
prog.c:(.text+0xefa): undefined reference to `__gmpz_clear'
/home/U0z5Hy/ccADI9En.o:prog.c:(.text+0xf03): more undefined references to `__gmpz_clear' follow
/home/U0z5Hy/ccADI9En.o: In function `gmp_fibonacci_m.part.0':
prog.c:(.text+0xf8c): undefined reference to `__gmpz_mul'
prog.c:(.text+0xfa1): undefined reference to `__gmpz_addmul'
prog.c:(.text+0xfb8): undefined reference to `__gmpz_mul'
prog.c:(.text+0xfd8): undefined reference to `__gmpz_addmul'
prog.c:(.text+0xfeb): undefined reference to `__gmpz_mul'
prog.c:(.text+0x1009): undefined reference to `__gmpz_addmul'
prog.c:(.text+0x101c): undefined reference to `__gmpz_mul'
prog.c:(.text+0x1031): undefined reference to `__gmpz_addmul'
prog.c:(.text+0x103c): undefined reference to `__gmpz_set'
prog.c:(.text+0x1049): undefined reference to `__gmpz_set'
prog.c:(.text+0x1054): undefined reference to `__gmpz_set'
prog.c:(.text+0x1061): undefined reference to `__gmpz_set'
prog.c:(.text+0x10b5): undefined reference to `__gmpz_mul'
prog.c:(.text+0x10ca): undefined reference to `__gmpz_addmul'
prog.c:(.text+0x10e1): undefined reference to `__gmpz_mul'
prog.c:(.text+0x1104): undefined reference to `__gmpz_addmul'
prog.c:(.text+0x111f): undefined reference to `__gmpz_mul'
prog.c:(.text+0x112d): undefined reference to `__gmpz_addmul'
prog.c:(.text+0x1149): undefined reference to `__gmpz_mul'
prog.c:(.text+0x115c): undefined reference to `__gmpz_addmul'
prog.c:(.text+0x1167): undefined reference to `__gmpz_set'
prog.c:(.text+0x1174): undefined reference to `__gmpz_set'
prog.c:(.text+0x1181): undefined reference to `__gmpz_set'
prog.c:(.text+0x118c): undefined reference to `__gmpz_set'
prog.c:(.text+0x11b4): undefined reference to `__gmpz_mul'
prog.c:(.text+0x11c2): undefined reference to `__gmpz_addmul'
prog.c:(.text+0x11d0): undefined reference to `__gmpz_mul'
prog.c:(.text+0x11de): undefined reference to `__gmpz_addmul'
prog.c:(.text+0x11f8): undefined reference to `__gmpz_mul'
prog.c:(.text+0x1208): undefined reference to `__gmpz_addmul'
prog.c:(.text+0x1222): undefined reference to `__gmpz_mul'
prog.c:(.text+0x1232): undefined reference to `__gmpz_addmul'
prog.c:(.text+0x123d): undefined reference to `__gmpz_set'
prog.c:(.text+0x1248): undefined reference to `__gmpz_set'
prog.c:(.text+0x1255): undefined reference to `__gmpz_set'
prog.c:(.text+0x1262): undefined reference to `__gmpz_set'
prog.c:(.text+0x128e): undefined reference to `__gmpz_mul'
prog.c:(.text+0x129c): undefined reference to `__gmpz_addmul'
prog.c:(.text+0x12b4): undefined reference to `__gmpz_mul'
prog.c:(.text+0x12ce): undefined reference to `__gmpz_addmul'
prog.c:(.text+0x12dc): undefined reference to `__gmpz_mul'
prog.c:(.text+0x12ea): undefined reference to `__gmpz_addmul'
prog.c:(.text+0x1304): undefined reference to `__gmpz_mul'
prog.c:(.text+0x1314): undefined reference to `__gmpz_addmul'
prog.c:(.text+0x131f): undefined reference to `__gmpz_set'
prog.c:(.text+0x132c): undefined reference to `__gmpz_set'
prog.c:(.text+0x1337): undefined reference to `__gmpz_set'
prog.c:(.text+0x1344): undefined reference to `__gmpz_set'
prog.c:(.text+0x1380): undefined reference to `__gmpz_mul'
prog.c:(.text+0x1395): undefined reference to `__gmpz_addmul'
prog.c:(.text+0x13ac): undefined reference to `__gmpz_mul'
prog.c:(.text+0x13cf): undefined reference to `__gmpz_addmul'
prog.c:(.text+0x13ea): undefined reference to `__gmpz_mul'
prog.c:(.text+0x13f8): undefined reference to `__gmpz_addmul'
prog.c:(.text+0x1414): undefined reference to `__gmpz_mul'
prog.c:(.text+0x1427): undefined reference to `__gmpz_addmul'
prog.c:(.text+0x1432): undefined reference to `__gmpz_set'
prog.c:(.text+0x143f): undefined reference to `__gmpz_set'
prog.c:(.text+0x144c): undefined reference to `__gmpz_set'
prog.c:(.text+0x1457): undefined reference to `__gmpz_set'
prog.c:(.text+0x147a): undefined reference to `__gmpz_mul'
prog.c:(.text+0x148a): undefined reference to `__gmpz_addmul'
prog.c:(.text+0x1498): undefined reference to `__gmpz_mul'
prog.c:(.text+0x14a6): undefined reference to `__gmpz_addmul'
prog.c:(.text+0x14b6): undefined reference to `__gmpz_mul'
prog.c:(.text+0x14c6): undefined reference to `__gmpz_addmul'
prog.c:(.text+0x14d6): undefined reference to `__gmpz_mul'
prog.c:(.text+0x14e6): undefined reference to `__gmpz_addmul'
prog.c:(.text+0x14f3): undefined reference to `__gmpz_set'
prog.c:(.text+0x14fe): undefined reference to `__gmpz_set'
prog.c:(.text+0x150b): undefined reference to `__gmpz_set'
prog.c:(.text+0x1518): undefined reference to `__gmpz_set'
/home/U0z5Hy/ccADI9En.o: In function `gmp_fibonacci_z':
prog.c:(.text+0x1558): undefined reference to `__gmpz_init_set_ui'
prog.c:(.text+0x157b): undefined reference to `__gmpz_init_set_ui'
prog.c:(.text+0x158b): undefined reference to `__gmpz_init_set_ui'
prog.c:(.text+0x159d): undefined reference to `__gmpz_set_ui'
prog.c:(.text+0x15ba): undefined reference to `__gmpz_add'
prog.c:(.text+0x15c8): undefined reference to `__gmpz_set'
prog.c:(.text+0x15d3): undefined reference to `__gmpz_set'
prog.c:(.text+0x15e0): undefined reference to `__gmpz_clear'
prog.c:(.text+0x15e8): undefined reference to `__gmpz_clear'
prog.c:(.text+0x1606): undefined reference to `__gmpz_init_set_ui'
/home/U0z5Hy/ccADI9En.o: In function `matpow':
prog.c:(.text+0x5cf): undefined reference to `__gmpz_set'
/home/U0z5Hy/ccADI9En.o: In function `gmp_fibonacci_m':
prog.c:(.text+0x1635): undefined reference to `__gmpz_init_set_ui'
prog.c:(.text+0x164e): undefined reference to `__gmpz_init_set_ui'
/home/U0z5Hy/ccADI9En.o: In function `main':
prog.c:(.text.startup+0x1a): undefined reference to `__gmpz_init'
prog.c:(.text.startup+0xca): undefined reference to `__gmp_printf'
prog.c:(.text.startup+0xd2): undefined reference to `__gmpz_init'
prog.c:(.text.startup+0x119): undefined reference to `__gmpz_fib_ui'
prog.c:(.text.startup+0x17d): undefined reference to `__gmp_printf'
prog.c:(.text.startup+0x185): undefined reference to `__gmpz_clear'
prog.c:(.text.startup+0x18d): undefined reference to `__gmpz_clear'
collect2: error: ld returned 1 exit status
stdout
Standard output is empty