Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > pl.comp.programming > #29116 > unrolled thread
| Started by | Borneq <borneq@antyspam.hidden.pl> |
|---|---|
| First post | 2016-10-14 09:46 +0200 |
| Last post | 2016-10-14 10:25 +0200 |
| Articles | 2 — 1 participant |
Back to article view | Back to pl.comp.programming
Jak przetestować GMP-a bez Boosta (niskopoziomowo)? Borneq <borneq@antyspam.hidden.pl> - 2016-10-14 09:46 +0200
Re: Jak przetestować GMP-a bez Boosta (niskopoziomowo)? Borneq <borneq@antyspam.hidden.pl> - 2016-10-14 10:25 +0200
| From | Borneq <borneq@antyspam.hidden.pl> |
|---|---|
| Date | 2016-10-14 09:46 +0200 |
| Subject | Jak przetestować GMP-a bez Boosta (niskopoziomowo)? |
| Message-ID | <ntq2g6$vn1$1@node1.news.atman.pl> |
Po instalacji w środowisku Linux mamy bibliotekę binarną i jedynie plik
nagłówkowy gmp.h jest dostępny na zewnątrz a nie gmp-impl.h,longlong.h
czy mini-gmp.h.
Jednak GMP w katalogu tests ma plik ułatwiający korzystanie refmpn.c
który woła
#include "gmp-impl.h"
#include "longlong.h"
tam wszystkie testy, używają tych dwóch headerów.
Ja potrzebuję nietrywialnego testu bez Boosta, który nie korzysta z
pozostałych headerów poza gmp.h.
Ale np. taka funkcja musi:
void
mpn_toom22_mul_fun(mp_ptr dst, mp_srcptr src1, mp_srcptr src2, mp_size_t
size)
{
mp_ptr tspace;
TMP_DECL;
TMP_MARK;
tspace = TMP_ALLOC_LIMBS(mpn_toom22_mul_itch(size, size));
mpn_toom22_mul(dst, src1, size, src2, size, tspace);
TMP_FREE;
}
bo TMP_DECL, TMP_MARK czy TMP_FREE jest w gmp-impl.h
[toc] | [next] | [standalone]
| From | Borneq <borneq@antyspam.hidden.pl> |
|---|---|
| Date | 2016-10-14 10:25 +0200 |
| Message-ID | <ntq4ps$24g$1@node1.news.atman.pl> |
| In reply to | #29116 |
W dniu 14.10.2016 o 09:46, Borneq pisze:
> tam wszystkie testy, używają tych dwóch headerów.
> Ja potrzebuję nietrywialnego testu bez Boosta, który nie korzysta z
> pozostałych headerów poza gmp.h.
https://gmplib.org/list-archives/gmp-discuss/2008-March/003085.html
#include <stdio.h> /* for printf */
#include <gmp.h>
int main(int argc, char *argv[])
{
mpz_t a, b; /* working numbers */
if (argc<3)
{ /* not enough words */
printf("Please supply two numbers to add.\n");
return 1;
}
mpz_init_set_str (a, argv[1], 10); /* Assume decimal integers */
mpz_init_set_str (b, argv[2], 10); /* Assume decimal integers */
mpz_add (a, a, b); /* a=a+b */
printf("%s + %s => %s\n", argv[1], argv[2], mpz_get_str (NULL, 10, a));
return 0;
}
może być, używa wyższego poziomu, nie deklaruje się Limbs
nie zwalnia (używa alloca?)
[toc] | [prev] | [standalone]
Back to top | Article view | pl.comp.programming
csiph-web