Google grupās vairs netiek atbalstītas jaunas Usenet ziņas un abonementi. Vēsturiskais saturs joprojām ir skatāms.

Version PMC

5 skatījumi
Pāriet uz pirmo nelasīto ziņojumu

Leopold Toetsch

nelasīta,
2006. gada 15. sept. 14:30:3115.09.06
uz 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.

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 jauni ziņojumi