-
1. Data: 2016-10-14 09:46:15
Temat: Jak przetestować GMP-a bez Boosta (niskopoziomowo)?
Od: Borneq <b...@a...hidden.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
-
2. Data: 2016-10-14 10:25:33
Temat: Re: Jak przetestować GMP-a bez Boosta (niskopoziomowo)?
Od: Borneq <b...@a...hidden.pl>
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-Ma
rch/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?)