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.
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