PARI/GP

Try GP in your browser
Main
  Download
  Packages
  Funding
  SEARCH

Help / Community
  FAQ
  Documentation
  Tutorials
  Mailing Lists
  Bugs
  Timeline
  Ateliers PARI/GP

Library
  Publications
  Contributed GP scripts
  Links
  Fun!

Development
  Latest Changes
  Version Control
  Coding Guidelines
  PariDroid
  Logo

Tests & benchmarks
  Buildlogs
  Coverage Report
  Doc Coverage
  Refcards test
  Benchmarks

  WWW Stats

Changes commited to PARI GIT during the last two weeks


d55af86c88 | Karim Belabas | Sun, 16 Aug 2026 23:28:11 +0200
rewrite mpatan with proper handling of bit accuracy

+ replace LOWDEFAULTPREC + EXTRAPREC64 by MEDDEFAULTPREC
+ replace l1 += nbits2xtraprec(dvmdsBIL(s - e, &s) * BITS_IN_LONG)
  by prec1 = nbits2prec(prec0 + (i-n-1)*e)
+ better variable names (never use 'l' for a 'prec'; l is for lg)
+ comments
48	43	src/basemath/trans2.c

090a3127d0 | Karim Belabas | Sun, 16 Aug 2026 11:31:13 +0200
don't use variable name matching 'l.*' for a 'prec'
2	2	src/basemath/trans1.c
10	10	src/basemath/trans2.c

a503804d42 | Karim Belabas | Sun, 16 Aug 2026 02:33:36 +0200
mpsinh: lx -> prec
4	4	src/basemath/trans2.c

5e0eabf055 | Karim Belabas | Sun, 16 Aug 2026 02:32:33 +0200
cgetr -> cgetg(,t_REAL)
2	1	src/basemath/buch1.c

e832da8e2a | Karim Belabas | Sun, 16 Aug 2026 02:05:08 +0200
zbrent: remove useless bit0
3	3	src/language/sumiter.c

2f0d7d8382 | Karim Belabas | Sun, 16 Aug 2026 02:02:57 +0200
cgetr -> cgetg(,t_REAL)
4	4	src/basemath/trans3.c

9ce8776831 | Karim Belabas | Sat, 15 Aug 2026 21:50:47 +0200
cgetr -> cgetg(l, t_REAL)
9	9	src/basemath/zetamult.c

f87866be7d | Karim Belabas | Sat, 15 Aug 2026 21:45:41 +0200
nflist: simplify error message
2	2	src/basemath/nflist.c
11	11	src/test/32/nflist

26b8d55ba9 | Karim Belabas | Sat, 15 Aug 2026 21:24:26 +0200
add HEADERS for the new sections
167	0	src/functions/number_fields_galois/HEADER
110	0	src/functions/number_fields_relative/HEADER

cf3c327f00 | Karim Belabas | Sat, 15 Aug 2026 21:23:41 +0200
new help sections number_fields_galois and number_fields_relative
3	2	doc/gphelp.in
10	8	doc/translations
2	0	src/desc/doc_make
2	0	src/desc/gen_proto
117	426	src/functions/number_fields/HEADER
88	10	src/functions/number_fields/bnfinit
1	1	src/functions/{number_fields => number_fields_galois}/bnrL1
1	1	src/functions/{number_fields => number_fields_galois}/bnrchar
1	1	src/functions/{number_fields => number_fields_galois}/bnrclassfield
1	1	src/functions/{number_fields => number_fields_galois}/bnrclassno
1	1	src/functions/{number_fields => number_fields_galois}/bnrclassnolist
1	1	src/functions/{number_fields => number_fields_galois}/bnrcompositum
1	1	src/functions/{number_fields => number_fields_galois}/bnrconductor
1	1	src/functions/{number_fields => number_fields_galois}/bnrconductorofchar
1	1	src/functions/{number_fields => number_fields_galois}/bnrdisc
1	1	src/functions/{number_fields => number_fields_galois}/bnrdisclist
1	1	src/functions/{number_fields => number_fields_galois}/bnrgaloisapply
1	1	src/functions/{number_fields => number_fields_galois}/bnrgaloismatrix
1	1	src/functions/{number_fields => number_fields_galois}/bnrinit
1	1	src/functions/{number_fields => number_fields_galois}/bnrisconductor
1	1	src/functions/{number_fields => number_fields_galois}/bnrisgalois
1	1	src/functions/{number_fields => number_fields_galois}/bnrisprincipal
1	1	src/functions/{number_fields => number_fields_galois}/bnrmap
1	1	src/functions/{number_fields => number_fields_galois}/bnrrootnumber
1	1	src/functions/{number_fields => number_fields_galois}/bnrstark
1	1	src/functions/{number_fields => number_fields_galois}/bnrstarkunit
1	1	src/functions/{number_fields => number_fields_galois}/galoischardet
1	1	src/functions/{number_fields => number_fields_galois}/galoischarpoly
1	1	src/functions/{number_fields => number_fields_galois}/galoischartable
1	1	src/functions/{number_fields => number_fields_galois}/galoisconjclasses
1	1	src/functions/{number_fields => number_fields_galois}/galoisexport
1	1	src/functions/{number_fields => number_fields_galois}/galoisfixedfield
1	1	src/functions/{number_fields => number_fields_galois}/galoisgetgroup
1	1	src/functions/{number_fields => number_fields_galois}/galoisgetname
1	1	src/functions/{number_fields => number_fields_galois}/galoisgetpol
1	1	src/functions/{number_fields => number_fields_galois}/galoisidentify
1	1	src/functions/{number_fields => number_fields_galois}/galoisinit
1	1	src/functions/{number_fields => number_fields_galois}/galoisisabelian
1	1	src/functions/{number_fields => number_fields_galois}/galoisisnormal
1	1	src/functions/{number_fields => number_fields_galois}/galoispermtopol
1	1	src/functions/{number_fields => number_fields_galois}/galoissplittinginit
1	1	src/functions/{number_fields => number_fields_galois}/galoissubcyclo
1	1	src/functions/{number_fields => number_fields_galois}/galoissubfields
1	1	src/functions/{number_fields => number_fields_galois}/galoissubgroups
1	1	src/functions/{number_fields => number_fields_galois}/gcharalgebraic
1	1	src/functions/{number_fields => number_fields_galois}/gcharconductor
1	1	src/functions/{number_fields => number_fields_galois}/gcharduallog
1	1	src/functions/{number_fields => number_fields_galois}/gchareval
1	1	src/functions/{number_fields => number_fields_galois}/gcharidentify
1	1	src/functions/{number_fields => number_fields_galois}/gcharinit
1	1	src/functions/{number_fields => number_fields_galois}/gcharisalgebraic
1	1	src/functions/{number_fields => number_fields_galois}/gcharlocal
1	1	src/functions/{number_fields => number_fields_galois}/gcharlog
1	1	src/functions/{number_fields => number_fields_galois}/gcharnewprec
1	1	src/functions/{number_fields => number_fields_galois}/nfgrunwaldwang
1	1	src/functions/{number_fields => number_fields_galois}/nflist
1	1	src/functions/{number_fields => number_fields_galois}/nfresolvent
1	1	src/functions/{number_fields => number_fields_galois}/subcyclohminus
1	1	src/functions/{number_fields => number_fields_galois}/subcycloiwasawa
1	1	src/functions/{number_fields => number_fields_galois}/subcyclopclgp
1	1	src/functions/{number_fields => number_fields_relative}/nfdetint
1	1	src/functions/{number_fields => number_fields_relative}/nfhnf
1	1	src/functions/{number_fields => number_fields_relative}/nfhnfmod
1	1	src/functions/{number_fields => number_fields_relative}/nfsnf
1	1	src/functions/{number_fields => number_fields_relative}/rnfalgtobasis
1	1	src/functions/{number_fields => number_fields_relative}/rnfbasis
1	1	src/functions/{number_fields => number_fields_relative}/rnfbasistoalg
1	1	src/functions/{number_fields => number_fields_relative}/rnfcharpoly
1	1	src/functions/{number_fields => number_fields_relative}/rnfconductor
1	1	src/functions/{number_fields => number_fields_relative}/rnfdedekind
1	1	src/functions/{number_fields => number_fields_relative}/rnfdet
1	1	src/functions/{number_fields => number_fields_relative}/rnfdisc
1	1	src/functions/{number_fields => number_fields_relative}/rnfeltabstorel
1	1	src/functions/{number_fields => number_fields_relative}/rnfeltdown
1	1	src/functions/{number_fields => number_fields_relative}/rnfeltnorm
1	1	src/functions/{number_fields => number_fields_relative}/rnfeltreltoabs
1	1	src/functions/{number_fields => number_fields_relative}/rnfelttrace
1	1	src/functions/{number_fields => number_fields_relative}/rnfeltup
1	1	src/functions/{number_fields => number_fields_relative}/rnfequation
1	1	src/functions/{number_fields => number_fields_relative}/rnfhnfbasis
1	1	src/functions/{number_fields => number_fields_relative}/rnfidealabstorel
1	1	src/functions/{number_fields => number_fields_relative}/rnfidealdown
1	1	src/functions/{number_fields => number_fields_relative}/rnfidealfactor
1	1	src/functions/{number_fields => number_fields_relative}/rnfidealhnf
1	1	src/functions/{number_fields => number_fields_relative}/rnfidealmul
1	1	src/functions/{number_fields => number_fields_relative}/rnfidealnormabs
1	1	src/functions/{number_fields => number_fields_relative}/rnfidealnormrel
1	1	src/functions/{number_fields => number_fields_relative}/rnfidealprimedec
1	1	src/functions/{number_fields => number_fields_relative}/rnfidealreltoabs
1	1	src/functions/{number_fields => number_fields_relative}/rnfidealtwoelt
1	1	src/functions/{number_fields => number_fields_relative}/rnfidealup
1	1	src/functions/{number_fields => number_fields_relative}/rnfinit
1	1	src/functions/{number_fields => number_fields_relative}/rnfisabelian
1	1	src/functions/{number_fields => number_fields_relative}/rnfisfree
1	1	src/functions/{number_fields => number_fields_relative}/rnfislocalcyclo
1	1	src/functions/{number_fields => number_fields_relative}/rnfisnorm
1	1	src/functions/{number_fields => number_fields_relative}/rnfisnorminit
1	1	src/functions/{number_fields => number_fields_relative}/rnfkummer
1	1	src/functions/{number_fields => number_fields_relative}/rnflllgram
1	1	src/functions/{number_fields => number_fields_relative}/rnfnormgroup
1	1	src/functions/{number_fields => number_fields_relative}/rnfpolred
0	0	src/functions/{number_fields => number_fields_relative}/rnfpolredabs
0	0	src/functions/{number_fields => number_fields_relative}/rnfpolredbest
0	0	src/functions/{number_fields => number_fields_relative}/rnfpseudobasis
0	0	src/functions/{number_fields => number_fields_relative}/rnfsteinitz
2	0	src/language/gplib.c
11	9	src/test/32/help

d8b6685d7b | Karim Belabas | Sat, 15 Aug 2026 00:45:26 +0200
improve HEADER for number_theoretical
1	1	doc/translations
26	15	src/functions/number_theoretical/HEADER

9c100a31d1 | Karim Belabas | Fri, 14 Aug 2026 21:39:51 +0200
move kronecker to znstar section
1	1	src/functions/{number_theoretical => znstar}/kronecker

0cc2e9a5c1 | Karim Belabas | Fri, 14 Aug 2026 17:22:42 +0200
update tutorial
7	13	doc/tutorial.tex

776ac5dc5d | Karim Belabas | Fri, 14 Aug 2026 15:51:45 +0200
doc updates
15	12	doc/tutorial.tex
2	1	src/functions/number_theoretical/HEADER
2	2	src/functions/number_theoretical/qfbclassno
6	3	src/functions/znstar/zncoppersmith

c5fa3329ef | Karim Belabas | Fri, 14 Aug 2026 13:56:49 +0200
add znstar HEADER
0	36	src/functions/number_theoretical/HEADER
123	0	src/functions/znstar/HEADER

fe488e7ab0 | Karim Belabas | Fri, 14 Aug 2026 13:47:54 +0200
4- znorder: allow a znstar for the 'order' optional argument
1	0	CHANGES
12	2	src/basemath/arith1.c
15	0	src/basemath/bb_group.c
26	0	src/functions/znstar/znorder
7	1	src/test/32/zn
4	0	src/test/in/zn

6a2012cd8f | Karim Belabas | Fri, 14 Aug 2026 11:15:21 +0200
newhelp section: znstar, split (Z/NZ)^* functions from number_theoretical
14	13	doc/translations
1	0	src/desc/doc_make
1	0	src/desc/gen_proto
0	76	src/functions/number_theoretical/HEADER
1	1	src/functions/{number_theoretical => znstar}/charconj
1	1	src/functions/{number_theoretical => znstar}/chardiv
1	1	src/functions/{number_theoretical => znstar}/chareval
1	1	src/functions/{number_theoretical => znstar}/chargalois
1	1	src/functions/{number_theoretical => znstar}/charker
1	1	src/functions/{number_theoretical => znstar}/charmul
1	1	src/functions/{number_theoretical => znstar}/charorder
1	1	src/functions/{number_theoretical => znstar}/charpow
1	1	src/functions/{number_theoretical => znstar}/znchar
1	1	src/functions/{number_theoretical => znstar}/zncharconductor
1	1	src/functions/{number_theoretical => znstar}/znchardecompose
1	1	src/functions/{number_theoretical => znstar}/znchargauss
1	1	src/functions/{number_theoretical => znstar}/zncharinduce
1	1	src/functions/{number_theoretical => znstar}/zncharisodd
1	1	src/functions/{number_theoretical => znstar}/znchartokronecker
1	1	src/functions/{number_theoretical => znstar}/znchartoprimitive
1	1	src/functions/{number_theoretical => znstar}/znconreychar
1	1	src/functions/{number_theoretical => znstar}/znconreyconductor
1	1	src/functions/{number_theoretical => znstar}/znconreyexp
1	1	src/functions/{number_theoretical => znstar}/znconreylog
1	1	src/functions/{number_theoretical => znstar}/zncoppersmith
1	1	src/functions/{number_theoretical => znstar}/znlog
1	1	src/functions/{number_theoretical => znstar}/znorder
1	1	src/functions/{number_theoretical => znstar}/znprimroot
1	1	src/functions/{number_theoretical => znstar}/znstar
1	1	src/functions/{number_theoretical => znstar}/znsubgroupgenerators
1	0	src/language/gplib.c
15	14	src/test/32/help

0db10915e4 | Karim Belabas | Thu, 13 Aug 2026 17:26:32 +0200
3- [libpari] ZX_realroots

+ fix docs
+ refactor common code in realroots / ZX_realroots_irred
1	0	CHANGES
12	8	doc/usersch5.tex
2	4	src/basemath/base1.c
53	46	src/basemath/rootpol.c
1	0	src/headers/paridecl.h

fc88931078 | Karim Belabas | Thu, 13 Aug 2026 12:18:47 +0200
5- Don't assume irreducibility in polred, polredabs, polredbest [#2689]

The routines could break in presence of rational roots in the totally
real case. E.g., polredbest(x^3-2*x+1) -> SEGV
3	0	CHANGES
30	32	src/basemath/base1.c
7	5	src/functions/number_fields/polred
13	7	src/functions/number_fields/polredabs
11	5	src/functions/number_fields/polredbest
3	4	src/test/32/polred
5	3	src/test/in/polred

dfbd7a6155 | Karim Belabas | Thu, 13 Aug 2026 11:34:55 +0200
improve doc
4	3	doc/usersch5.tex

f33871d4bb | Karim Belabas | Wed, 12 Aug 2026 16:03:30 +0200
fix 'help' bench
1	1	doc/translations
1	1	src/functions/programming/HEADER
8	7	src/test/32/help

d8b5a4a5c8 | Karim Belabas | Wed, 12 Aug 2026 15:35:24 +0200
help gphtml
3	2	src/functions/elliptic_curves/ellheegner

08c0485f03 | Karim Belabas | Wed, 12 Aug 2026 15:08:44 +0200
Add section hyperelliptic_curves
6	5	doc/translations
1	0	src/desc/doc_make
2	1	src/desc/gen_proto
12	0	src/functions/hyperelliptic_curves/HEADER
1	1	src/functions/{elliptic_curves => hyperelliptic_curves}/genus2charpoly
1	1	src/functions/{elliptic_curves => hyperelliptic_curves}/genus2igusa
1	1	src/functions/{elliptic_curves => hyperelliptic_curves}/genus2red
1	1	src/functions/{elliptic_curves => hyperelliptic_curves}/hyperellauto
1	1	src/functions/{elliptic_curves => hyperelliptic_curves}/hyperellchangecompose
1	1	src/functions/{elliptic_curves => hyperelliptic_curves}/hyperellchangecurve
1	1	src/functions/{elliptic_curves => hyperelliptic_curves}/hyperellchangeinvert
1	1	src/functions/{elliptic_curves => hyperelliptic_curves}/hyperellchangepoint
1	1	src/functions/{elliptic_curves => hyperelliptic_curves}/hyperellchangepointinv
1	1	src/functions/{elliptic_curves => hyperelliptic_curves}/hyperellcharpoly
1	1	src/functions/{elliptic_curves => hyperelliptic_curves}/hyperelldisc
1	1	src/functions/{elliptic_curves => hyperelliptic_curves}/hyperellextremalmodels
1	1	src/functions/{elliptic_curves => hyperelliptic_curves}/hyperellisisom
1	1	src/functions/{elliptic_curves => hyperelliptic_curves}/hyperellisoncurve
1	1	src/functions/{elliptic_curves => hyperelliptic_curves}/hyperellminimaldisc
1	1	src/functions/{elliptic_curves => hyperelliptic_curves}/hyperellminimalmodel
1	1	src/functions/{elliptic_curves => hyperelliptic_curves}/hyperellordinate
1	1	src/functions/{elliptic_curves => hyperelliptic_curves}/hyperellpadicfrobenius
1	1	src/functions/{elliptic_curves => hyperelliptic_curves}/hyperellperiods
1	1	src/functions/{elliptic_curves => hyperelliptic_curves}/hyperellratpoints
1	1	src/functions/{elliptic_curves => hyperelliptic_curves}/hyperellred
2	1	src/language/gplib.c

8cf5def227 | Karim Belabas | Wed, 12 Aug 2026 12:45:13 +0200
whitespace edit
1	1	src/language/gplib.c

9100b25396 | Karim Belabas | Wed, 12 Aug 2026 12:42:39 +0200
fix 'help' bench
27	28	src/test/32/help
1	1	src/test/in/help

5bcb594db5 | Karim Belabas | Wed, 12 Aug 2026 11:44:46 +0200
make ?? 7 more useful (add GHELPskip markers)

avoid truncation at first subsection
3	4	src/functions/number_theoretical/HEADER
1	1	src/functions/number_theoretical/chargalois

8b09daa257 | Karim Belabas | Wed, 12 Aug 2026 10:46:27 +0200
move "chinese" to 'operators' directory

corresponding to its new 'Section'
0	0	src/functions/{number_theoretical => operators}/chinese

78fc9b3177 | Karim Belabas | Wed, 12 Aug 2026 03:48:51 +0200
kill warnings about signedness
2	2	src/language/es.c
1	1	src/language/gplib.c
1	1	src/language/readline.c

c84ff1bfdd | Karim Belabas | Wed, 12 Aug 2026 02:38:32 +0200
update 'help' bench
18	27	src/test/32/help
1	1	src/test/in/help

440e198da1 | Karim Belabas | Wed, 12 Aug 2026 02:22:51 +0200
split the ?1 help section in 3, as in GP's manual

control statements + GP specific functions + parallel programming

Fewer functions in each sections, more consistent, and allows ??1, ??2, ??3
to print meaningful introductions
18	16	doc/translations
5	7	src/desc/gen_proto
3	1	src/language/gplib.c

5baba0d7dd | Karim Belabas | Wed, 12 Aug 2026 02:12:23 +0200
improve doc
14	7	src/functions/programming/HEADER

cc56aac88b | Karim Belabas | Wed, 12 Aug 2026 01:08:40 +0200
'?' now prints a short introduction + move list of help sections to '?*'
2	0	CHANGES
2	0	COMPAT
1	1	doc/usersch2.tex
39	22	src/language/gplib.c

c738409dce | Karim Belabas | Tue, 11 Aug 2026 16:32:06 +0200
move functions related to the Euclidean algorithm to the "operators" section

Treat "gcd" (and variants) as as operator: all these functions apply
equally to Z or K[X] (where K is a general field), they fit better here
than among "arithmetic functions".

Also improves content balance between help sections.
2	1	src/functions/number_theoretical/HEADER
1	1	src/functions/number_theoretical/chinese
6	0	src/functions/operators/HEADER
1	1	src/functions/{number_theoretical => operators}/bestappr
1	1	src/functions/{number_theoretical => operators}/bestapprPade
1	1	src/functions/{number_theoretical => operators}/bestapprnf
1	1	src/functions/{number_theoretical => operators}/bezout
1	1	src/functions/{number_theoretical => operators}/content
1	1	src/functions/{number_theoretical => operators}/contfrac
1	1	src/functions/{number_theoretical => operators}/contfracpnqn
1	1	src/functions/{number_theoretical => operators}/gcd
1	1	src/functions/{number_theoretical => operators}/gcdext
1	1	src/functions/{number_theoretical => operators}/halfgcd
1	1	src/functions/{number_theoretical => operators}/lcm

9a584ccf79 | Karim Belabas | Mon, 10 Aug 2026 19:25:09 +0200
better document \h: now also include information on defaults
7	7	doc/usersch2.tex
3	3	src/language/gplib.c
1	1	src/test/32/help

b601f3d754 | Karim Belabas | Mon, 10 Aug 2026 19:04:20 +0200
separate uses of functions_hash and defaults_hash and reduce collisions

1) don't use the same functions_tblsz for both tables. Their sizes
   become functions_hash_MASK + 1 and defaults_hash_MASK + 1

2) make both sizes a power of 2: same number of collisions and cheaper
to convert hash to bucket number (reduce mod a power of 2).

3) functions_hash size was 135. With 1403 built-in symbols,
functions_hash had lots of collisions: up to 23 symbols per bucket on
startup with gp -f, see \h-. Increase size to 8192; now max is initially 3
(which occurs 10 times). This should scale OK up to 6000 symbols or so.

4) defaults_hash size was 135. Reduce to 128 (10 buckets contain 2 entries).
This one is static and the first size with 0 collisions is 1024.
Not worth it ...
4	2	src/headers/paripriv.h
16	16	src/language/anal.c
2	2	src/language/anal.h
3	2	src/language/default.c
29	26	src/language/es.c
1	1	src/language/eval.c
26	7	src/language/gplib.c
13	9	src/language/init.c
5	5	src/language/readline.c

31f609923f | Karim Belabas | Mon, 10 Aug 2026 18:17:01 +0200
doc typo
1	1	doc/usersch5.tex

5b9cd79ad0 | Karim Belabas | Mon, 10 Aug 2026 16:10:51 +0200
print_functions_hash: rewrite diagostics \h- and \h for larger tables

- 3 times as many entries per line
- add total/max to \h-
- add indexmax to both
14	12	src/language/es.c

aacb62fded | Karim Belabas | Mon, 10 Aug 2026 12:50:43 +0200
\h: also print the hash realizing the (first) maximum
5	5	src/language/es.c

6c646ad209 | Karim Belabas | Sun, 9 Aug 2026 17:26:46 +0200
fix ?? 7
1	1	doc/translations

763f35d9fe | Karim Belabas | Sun, 9 Aug 2026 01:13:14 +0200
divisorslenstra: add complexity
2	1	src/functions/number_theoretical/divisorslenstra

a2716ac17c | Karim Belabas | Sun, 9 Aug 2026 01:06:54 +0200
Expand the help text printed when typing '?'

+ improve wording of help sections
26	16	src/language/gplib.c
29	17	src/test/32/help

c76aad15cf | Karim Belabas | Fri, 7 Aug 2026 01:05:56 +0200
add a CHANGES entry for numbpart improvements

+ minor improvement to memory use
1	0	CHANGES
1	1	src/modules/part.c

d3f1ee2989 | Karim Belabas | Thu, 6 Aug 2026 12:42:11 +0200
rename L -> SelbergL and compute cosines via roots of unity with caching

- compute cos((6l+1)/(6q) * Pi) as real(r^(1+6l)), r = e(1/(12q))

- compute r^(1+6l) as r^(1+6lastl) * R^d, d = l - last, R = r^6

- compute the successive R^d via a naive addition chain for d, caching
  values. N.B. There are few values of d, with collisions, this improves
  further on caching the R^d by reusing all powers. One could implement
  other improvements, sliding 2^k window or Yao's multipowering,
  but d is "small" and almost all the time is spent computing e(1/(12q)).

N.B there's an optimal formula for L(n,q) in terms of the factorization of q.
Not worth the complication for now.

Before:
    numbpart(10^7); \\ time = 45 ms.
    numbpart(10^8); \\ time = 181 ms.
    numbpart(10^9); \\ time = 4,050 ms.
    numbpart(10^10);\\ time = 56,031 ms.
    numbpart(10^11);\\ time = 54min, 41,505 ms.

After:
    numbpart(10^7); \\ time = 43 ms.
    numbpart(10^8); \\ time = 147 ms.
    numbpart(10^9); \\ time = 1,793 ms.
    numbpart(10^10);\\ time = 17,593 ms.
    numbpart(10^11);\\ time = 8min, 12,924 ms.
44	15	src/modules/part.c

1c3531c0ce | Karim Belabas | Wed, 5 Aug 2026 23:52:47 +0200
psi: remove unused argument
6	6	src/modules/part.c

790fb8cabc | Karim Belabas | Wed, 5 Aug 2026 20:21:46 +0200
2- abs(t_QUAD) would not return exact answer even if possible

For instance
  abs(3 + 4*I) -> 5
but
  abs(3 + 4*quadgen(-4)) -> 5.000000000000
Now the latter is 5 as well.
1	0	CHANGES
14	3	src/basemath/gen2.c
11	2	src/functions/transcendental/abs
5	0	src/test/32/quad
5	0	src/test/in/quad

e0e0428755 | Karim Belabas | Wed, 5 Aug 2026 14:59:38 +0200
cgetr(realprec()) -> rtor_lg
2	3	src/headers/pariinl.h

52aa2b724e | Karim Belabas | Wed, 5 Aug 2026 11:11:02 +0200
numbpart: reorganize computation + allow n < 2^54

- factor out sqrt(q) term in Psi and sqrt(q/3) in L: avoid square roots
  and replace full precision multiplication by simple multiplication by q

- avoid low precision exponentials: with Selberg formula the neglectible
  sum is actually 0

- precompute pi / 6*q in L

- simplify pinit

- rename estim -> log2pn and return a double

- bound 10^15 was somewhat arbitrary, increase to 2^54. Both would require
  hundreds of years to compute using current implementation.

Asymptotic complexity remains the same (and bad, more than quadratic in
output size instead of almost linear). But 25% improvement for small values,
with diminishing returns.

Before:
  numbpart(10^7); \\ time = 54 ms.
  numbpart(10^8); \\ time = 289 ms.
  numbpart(10^9); \\ time = 5,841 ms.
  numbpart(10^10);\\ time = 1min, 11, 975 ms.
  numbpart(10^11);\\ time = 1h, 9min, 14,433 ms

After:
  numbpart(10^7); \\ time = 45 ms.
  numbpart(10^8); \\ time = 181 ms.
  numbpart(10^9); \\ time = 4,050 ms.
  numbpart(10^10);\\ time = 56,031 ms.
  numbpart(10^11);\\ time = 54min, 41,505 ms.
6	2	src/functions/combinatorics/numbpart
60	71	src/modules/part.c
4	4	src/test/32/partition
3	1	src/test/in/partition

2aa36b188e | Karim Belabas | Wed, 5 Aug 2026 00:47:19 +0200
fix make test-kernel: link with dummy Z_ispow2
1	0	src/test/dummy.c

c6f8509a38 | Karim Belabas | Tue, 4 Aug 2026 16:02:51 +0200
rdivsi, rdivis, rdivss: use cgetg(l, t_REAL)
9	6	src/kernel/none/level1.h

b6c7346be6 | Karim Belabas | Tue, 4 Aug 2026 15:48:56 +0200
cgetc: improve + fix doc
2	2	doc/usersch5.tex
5	1	src/headers/pariinl.h

6228332044 | Karim Belabas | Mon, 3 Aug 2026 19:10:11 +0200
update trans bench after commit cb6dca75d7

incgam(4,1,6) incgamm uses 2 more words
1	1	src/test/in/trans

b8dbac3ada | Karim Belabas | Mon, 3 Aug 2026 15:01:58 +0200
stack corruption in mplog1p due to lg / prec confusion

fixlg argument is a length, not a prec
1	1	src/basemath/trans1.c

87a25cc55c | Karim Belabas | Mon, 3 Aug 2026 14:59:57 +0200
cleanup exp1r_abs
17	16	src/basemath/trans1.c

153ba13d3d | Karim Belabas | Mon, 3 Aug 2026 14:48:00 +0200
rpowuu: cgetr -> cgetg(,t_REAL)
1	2	src/basemath/trans1.c

cb6dca75d7 | Karim Belabas | Mon, 3 Aug 2026 11:53:46 +0200
bessel: confusions between lg and prec

+ 1 => + EXTRAPREC64
5	4	src/basemath/trans3.c

eb4f185337 | Karim Belabas | Mon, 3 Aug 2026 03:01:48 +0200
final prec2nbits cleanups
2	3	doc/usersch5.tex
10	10	src/language/sumiter.c

f3adb75535 | Karim Belabas | Mon, 3 Aug 2026 02:54:33 +0200
further prec2nbits cleanups
9	9	src/basemath/rootpol.c

8ff2fa6c2a | Karim Belabas | Mon, 3 Aug 2026 01:51:13 +0200
fix bestappr doc and comment in code
4	2	src/basemath/arith1.c
4	1	src/functions/number_theoretical/bestappr



PARI/GP Development
Last Modified: 2025-11-17 10:46:31
Copyleft © 2003-2025 the PARI group.