Joerg Arndt on Wed, 05 Jun 2013 10:43:09 +0200 |
[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]
Re: new GP loop: forpart() |
* Bill Allombert <Bill.Allombert@math.u-bordeaux1.fr> [May 30. 2013 14:06]: > Dear PARI developers, > > I have commited a patch by Pascal and myself that adds GP function > to loop over partitions: > > forpart(v=5,print(v)) > Vecsmall([1,1,1,1,1]) > Vecsmall([1,1,1,2]) > Vecsmall([1,2,2]) > Vecsmall([1,1,3]) > Vecsmall([2,3]) > Vecsmall([1,4]) > Vecsmall([5]) > Documentation issue: This (as least as displayed) is not lex order, but colex. Should also add representation: "The partitions are vectors (of type Vecsmall) containing a weakly increasing list of parts." (or some prettier wording). Are the partitions _internally_ represented as weakly decreasing lists? > [...] Looking at the forpart_next() code in the snapshot pari-2.6.0-68-g63d35a5 I expected a not so great performance. However, I get forpart(p=90,) time = 3,140 ms. that is numbpart(90)/3.140 == 18 Million per second. That's quite OK (166 cycles per update), cf. my partitions into exactly m parts takes 18 cycles per update (and 10 cycles would already be excellent in practice). Best, jj