begdreuz Invité
|
Posté le: 19 Déc 2004 10:12 Sujet du message: Extraire le listing d'une fonction Maple |
|
|
Pour extraire le listing d'une fonction Maple, utiliser
> interface(verboseproc=2);
puis faire print suivi du nom de la fonction à extraire, exemple ici la fonction numbpart du package combinat, qui donne le nombre de partitions d'un entier naturel non nul n.
> print(combinat[numbpart]);
proc(n, m)
local k, s, t, A, pn, dn, ank, term;
option remember, `Copyright (c) 1991 by the University of W\
aterloo. All rights reserved.`;
if not type(n, 'constant') then 'procname(args)'
elif not type(n, 'integer') or n < 0 then
error "1st argument must be a non-negative integer"
elif nargs = 1 then
Digits := max(Digits, round(1.2*isqrt(n) + 10));
dn := (n, k) -> 24*
cosh(1/36*Pi*6^(1/2)*(144*n - 6)^(1/2)/k)*Pi*
6^(1/2)/(k*(144*n - 6)) - 864*
sinh(1/36*Pi*6^(1/2)*(144*n - 6)^(1/2)/k)/
(144*n - 6)^(3/2);
s := (h, k) -> add(j*(h*j/k - floor(h*j/k) - 1/2)/k,
j = 1 .. k - 1);
A := (n, k) -> add(`if`(igcd(h, k) = 1,
exp(Pi*s(h, k)*I)*exp(-2*I*Pi*h*n/k), 0),
h = 1 .. k);
pn := 0.;
k := 1;
ank := evalf(A(n, k));
term := evalf(sqrt(k)*ank*dn(n, k));
while
0.1 < abs(term) or abs(ank) < evalf(10^(-3*Digits/4))
do
pn := pn + term;
k := k + 1;
ank := evalf(A(n, k));
term := evalf(sqrt(k)*ank*dn(n, k))
end do;
return round(evalf(pn/(sqrt(2)*Pi)))
elif not type(m, integer) or m < 0 or n < m then error
"2nd argument must be a non-negative integer <= %1",
n
elif m = 0 then 0
elif m = 1 then 1
else procname(n, m - 1) + procname(n - m, min(m, n - m))
end if
end proc |
|