Guest User

Untitled

a guest
Jan 21st, 2018
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.64 KB | None | 0 0
  1.  
  2. #include <stdlib.h>
  3. #include <stdio.h>
  4. #include <mpir.h>
  5. #include <flint.h>
  6. #include <fmpz.h>
  7. #include <arith.h>
  8.  
  9. #include <mpfr.h>
  10.  
  11.  
  12. int main(int argc, char* argv[])
  13. {
  14. /* Variablen n und result erzeugen */
  15. fmpz_t n;
  16.  
  17. fmpz_t sigma_n;
  18. mpz_t sigma_n_mpz;
  19.  
  20. mpq_t harmonic_n;
  21. mpfr_t harmonic_n_mpfr;
  22.  
  23. mpfr_t exp_harmonic_n_mpfr;
  24. mpfr_t ln_harmonic_n_mpfr;
  25.  
  26. mpfr_t lagarias_result;
  27.  
  28.  
  29. int i;
  30.  
  31. fmpz_init(n);
  32. fmpz_init(sigma_n);
  33.  
  34. mpz_init(sigma_n_mpz);
  35.  
  36. mpq_init(harmonic_n);
  37. mpfr_init(harmonic_n_mpfr);
  38. mpfr_init(ln_harmonic_n_mpfr);
  39. mpfr_init(exp_harmonic_n_mpfr);
  40.  
  41. mpfr_init(lagarias_result);
  42.  
  43. for(i=0;i<1000000;i++)
  44. {
  45. fmpz_set_si(n, i);
  46. puts("Teilersumme");
  47. /* Berechne die Teilersumme */
  48. fmpz_divisor_sigma(sigma_n, n, 1);
  49. /* In MPIR konvertieren */
  50. fmpz_get_mpz(sigma_n_mpz, sigma_n);
  51.  
  52. puts("Harmonic");
  53. /* Berechne das Element i der Harmonischen Reihe */
  54. mpq_harmonic(harmonic_n, i);
  55. /* In eine MPFR-Gleitkommazahl umwandeln */
  56. mpfr_set_q(harmonic_n_mpfr, harmonic_n, MPFR_RNDN);
  57.  
  58. puts("exp");
  59. /* e^H_n berechnen */
  60. mpfr_exp(exp_harmonic_n_mpfr, harmonic_n_mpfr, MPFR_RNDN);
  61. /* ln(H_n) berechnen */
  62. mpfr_log(exp_harmonic_n_mpfr, harmonic_n_mpfr, MPFR_RNDN);
  63.  
  64.  
  65. puts("mul");
  66. mpfr_mul(lagarias_result, exp_harmonic_n_mpfr, exp_harmonic_n_mpfr, MPFR_RNDN);
  67. puts("add");
  68. mpfr_add_q(lagarias_result, lagarias_result, harmonic_n, MPFR_RNDN);
  69. puts("sub");
  70. mpfr_sub_z(lagarias_result, lagarias_result, sigma_n_mpz, MPFR_RNDN);
  71.  
  72.  
  73. mpfr_printf("Ergebnis: %.128Rf\n", lagarias_result);
  74. }
  75.  
  76. fmpz_clear(n);
  77. fmpz_clear(sigma_n);
  78.  
  79. return 0;
  80. }
Add Comment
Please, Sign In to add comment