Hi,

this e-mail by Frank on libsingular-devel leads to the following question: do 
we want to set the random seed of Singular by default at Sage/Singular start-
up? From what I gather from randstate.pyx we don't do that even for NTL. 

I would vote for setting the random seed to all 'subsystems' by default by 
Sage's randstate whenever these 'subsystems' are initialised.

Cheers,
Martin


----------  Forwarded Message  ----------
Subject: [libsingular-devel] Riemann-Roch computations in the Brill-Noether 
routines
Date: Friday 30 October 2009
From: Frank Seelisch <seeli...@mathematik.uni-kl.de>
To: libsingular-de...@googlegroups.com



Hi everybody,

this deals with the problem in SINGULAR's "brnoeth.lib" you have 
reported some time ago; see the below snippet from a mail from William 
Stein to David Joyner.

As far as we understand correctly, the problem seems to be that SAGE 
wants to have stable results when calling this piece of SINGULAR code? 
But "brnoeth.lib" uses randomly chosen points; so there is some kind of 
indeterminacy in there. (I hope that is what your problem really is about.)

We suggest to use a random seed, e.g., to pass on the random seed that 
you use in SAGE to SINGULAR. This can either be done via the SINGULAR 
command
   system("random", mySeedAsAnInt);
or directly in C by assigning the SINGULAR-internal variable
   siseed = mySeedAsAnInt;

When providing the random seed this way, SINGULAR will procude the same 
sequence of random numbers on all platforms.

I hope this resolves your problem!

Regards,
Frank

=========================================================================

Thanks for the Singular-ish version via evals. I wrote the following 
pure-Singular version, which you can put in a file "rrbasis.lib" and 
load into singular with

     < "rrbasis.lib";

(or you can just paste it in):

LIB "brnoeth.lib";
kill X, X2,R,G,LG;
ring R=11,(x,y),lp;
list X = Adj_div(x^7 + y^7 - 1);
def  X2 = NSplaces(1,X);
def  X3 = extcurve(1,X2);
def RR =X3[1][5];
setring RR;
print("POINTS");
print(POINTS);
/* PROBLEM -- this G defined a different divisor every time the
    this code is run!!!  Need a way to compute G from a list of points */
intvec G=(10,-1,0,0,9,0,0,0,0,0,0,0,0,0);
def R = X2[1][2];
setring R;
list LG = BrillNoether(G,X2);
print(LG);

It gives random answers since the G has a different meaning every time 
the function is run.




-- 
name: Martin Albrecht
_pgp: http://pgp.mit.edu:11371/pks/lookup?op=get&search=0x8EF0DC99
_otr: 47F43D1A 5D68C36F 468BAEBA 640E8856 D7951CCF
_www: http://www.informatik.uni-bremen.de/~malb
_jab: martinralbre...@jabber.ccc.de


--~--~---------~--~----~------------~-------~--~----~
To post to this group, send an email to sage-devel@googlegroups.com
To unsubscribe from this group, send an email to 
sage-devel-unsubscr...@googlegroups.com
For more options, visit this group at http://groups.google.com/group/sage-devel
URL: http://www.sagemath.org
-~----------~----~----~----~------~----~------~--~---

Reply via email to