Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.

Dismiss

5 views

Skip to first unread message

Sep 15, 2006, 2:30:31 PM9/15/06

to perl6-i...@perl.org

Hi,

Today I played a bit with calculating the 44th Mersenne prime, which is of

course using BigInt's. I discovered that my installed GMP 4.1.1 segfaulted

during multiplication (it was *not* a parrot problem ;). I compiled &

installed a recent GMP version and all went fine.

Today I played a bit with calculating the 44th Mersenne prime, which is of

course using BigInt's. I discovered that my installed GMP 4.1.1 segfaulted

during multiplication (it was *not* a parrot problem ;). I compiled &

installed a recent GMP version and all went fine.

But: below [1] is the test code, to implement a diagnostic about a maybe

problematic GMP version. I'd like to code it like this:

.local pmc cl, v, need

cl = getclass 'BigInt'

v = cl.'version'() # return a .Version PMC

need = new .Version, '4.1.4'

if v < need goto warn

...

So the idea is:

- fill version.pmc with some initializers

- assume version =~ / (major(\.minor(\.patch)*))?.* /x at least for now

- provide compare functions that do arithmetic compares on subcomponents from

left to right.

Comments welcome,

leo

[1] s. also t/pmc/bigint.t

.sub main :main

.local pmc b, ar

.local string v

.local int ma, mi, pa

b = new .BigInt

v = b.'version'()

ar = split '.', v

ma = ar[0]

mi = ar[1]

pa = ar[2]

if ma >= 4 goto ge_4

warn:

print 'GMP version '

print v

print " is buggy with huge digit multiply - please upgrade\n"

end

ge_4:

if mi >= 2 goto ok

if mi == 0 goto warn

# test 4.1.x

if pa >= 4 goto ok

goto warn

end

ok:

.end

0 new messages

Search

Clear search

Close search

Google apps

Main menu