Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Download

Testing latest pari + WASM + node.js... and it works?! Wow.

28495 views
License: GPL3
ubuntu2004
Function: dirpowerssum
Section: number_theoretical
C-Name: dirpowerssum0
Prototype: GGDGp
Help: dirpowerssum(N,x,{f}): return f(1)1^x + f(2)2^x + ... + f(N)N^x, where
 f is a completely multiplicative function (= 1 if omitted)
Doc: for positive integer $N$ and complex number $x$, return the sum
 $f(1)1^x + f(2)2^x + \dots + f(N)N^x$, where $f$ is a completely
 multiplicative function. If $f$ is omitted, return
 $1^x + \dots + N^x$. When $N \le 0$, the function returns $0$.

 Unlike variants using \kbd{dirpowers(N,x)}, this function uses $O(\sqrt{N})$
 memory instead of $O(N)$. And it is faster for large $N$. The return value
 is usually a floating point number, but it will be exact if the result
 is an integer. On the other hand, rational numbers, are converted to
 floating point approximations, since they are likely to blow up for large $N$.
 \bprog
 ? dirpowers(5, 2)
 %1 = [1, 4, 9, 16, 25]
 ? vecsum(%)
 %2 = 55
 ? dirpowerssum(5, 2)
 %3 = 55
 ? dirpowerssum(5, -2)
 %4 = 1.4636111111111111111111111111111111111
 ? \p200
 ? s = 1/2 + I * sqrt(3); N = 10^7;
 ? dirpowerssum(N, s);
 time = 11,425 ms.
 ? vecsum(dirpowers(N, s))
 time = 19,365 ms.
 ? dirpowerssum(N, s, n->kronecker(-23,n))
 time = 10,981 ms.


 @eprog\noindent The \kbd{dirpowerssum} commands work with default stack size,
 the \kbd{dirpowers} one requires a stacksize of at least 5GB.

 \synt{dirpowerssumfun}{ulong N, GEN x, void *E, GEN (*f)(void*, ulong, long), long prec}. When $f = \kbd{NULL}$, one may use
 \fun{GEN}{dirpowerssum}{ulong N, GEN x, long prec}.