Programowanie w systemie UNIX/pari: Różnice pomiędzy wersjami

Usunięta treść Dodana treść
Linia 23:
 
a(n) = sumdiv(n, d, moebius(n/d)*2^(d-1))
 
Zapisujemy jako plik tekstowy "c.gp " i przetwarzamy na plik c :
 
gp2c c.gp > c.c
 
 
Otrzymujemy :
 
<source lang=c>
/*-*- compile-command: "cc -c -o c.gp.o -g -O3 -Wall -fomit-frame-pointer -fno-strict-aliasing -fPIC -I"/usr/include/x86_64-linux-gnu" c.gp.c && cc -o c.gp.so -shared -g -O3 -Wall -fomit-frame-pointer -fno-strict-aliasing -fPIC -Wl,-shared -Wl,-z,relro c.gp.o -lc -lm -L/usr/lib/x86_64-linux-gnu -lpari"; -*-*/
#include <pari/pari.h>
/*
GP;install("init_c","v","init_c","./c.gp.so");
GP;install("a","D0,G,","a","./c.gp.so");
*/
void init_c(void);
GEN a(GEN n);
/*End of prototype*/
 
void
init_c(void) /* void */
{
return;
}
 
GEN
a(GEN n)
{
GEN p1; /* vec */
GEN p2;
p1 = divisors(n);
p2 = gen_0;
{
long l3;
GEN d; /* int */
for (l3 = 1; l3 < lg(p1); ++l3)
{
d = icopy(gel(p1, l3));
p2 = gadd(p2, gmulsg(moebius(gdiv(n, d)), powgi(gen_2, subis(d, 1))));
}
}
return p2;
}
 
</source>
 
=Przykłady=