Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > pl.comp.programming > #29116 > unrolled thread

Jak przetestować GMP-a bez Boosta (niskopoziomowo)?

Started byBorneq <borneq@antyspam.hidden.pl>
First post2016-10-14 09:46 +0200
Last post2016-10-14 10:25 +0200
Articles 2 — 1 participant

Back to article view | Back to pl.comp.programming


Contents

  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

#29116 — Jak przetestować GMP-a bez Boosta (niskopoziomowo)?

FromBorneq <borneq@antyspam.hidden.pl>
Date2016-10-14 09:46 +0200
SubjectJak 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]


#29117

FromBorneq <borneq@antyspam.hidden.pl>
Date2016-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