def test_relabel(self): r""" Try the function canonic labels for a random even modular subgroup. EXAMPLES:: sage: from sage.modular.arithgroup.tests import Test sage: Test().test_relabel() # random """ if prandom.uniform(0,1) < self.odd_probability: G = random_odd_arithgroup(self.index) else: G = random_even_arithgroup(self.index) G.relabel() s2 = G._S2 s3 = G._S3 l = G._L r = G._R # 0 should be stabilized by the mapping # used for renumbering so we start at 1 p = range(1,self.index) for _ in xrange(10): prandom.shuffle(p) # we add 0 to the mapping pp = [0] + p ss2 = [None]*self.index ss3 = [None]*self.index ll = [None]*self.index rr = [None]*self.index for i in xrange(self.index): ss2[pp[i]] = pp[s2[i]] ss3[pp[i]] = pp[s3[i]] ll[pp[i]] = pp[l[i]] rr[pp[i]] = pp[r[i]] if G.is_even(): GG = EvenArithmeticSubgroup_Permutation(ss2,ss3,ll,rr) else: GG = OddArithmeticSubgroup_Permutation(ss2,ss3,ll,rr) GG.relabel() for elt in ['_S2','_S3','_L','_R']: if getattr(G,elt) != getattr(GG,elt): print "s2 = %s" %str(s2) print "s3 = %s" %str(s3) print "ss2 = %s" %str(ss2) print "ss3 = %s" %str(ss3) print "pp = %s" %str(pp) raise AssertionError("%s does not coincide" %elt)
def test_relabel(self): r""" Try the function canonical labels for a random even modular subgroup. EXAMPLES:: sage: from sage.modular.arithgroup.tests import Test sage: Test().test_relabel() # random """ if prandom.uniform(0, 1) < self.odd_probability: G = random_odd_arithgroup(self.index) else: G = random_even_arithgroup(self.index) G.relabel() s2 = G._S2 s3 = G._S3 l = G._L r = G._R # 0 should be stabilized by the mapping # used for renumbering so we start at 1 p = list(range(1, self.index)) for _ in range(10): prandom.shuffle(p) # we add 0 to the mapping pp = [0] + p ss2 = [None] * self.index ss3 = [None] * self.index ll = [None] * self.index rr = [None] * self.index for i in range(self.index): ss2[pp[i]] = pp[s2[i]] ss3[pp[i]] = pp[s3[i]] ll[pp[i]] = pp[l[i]] rr[pp[i]] = pp[r[i]] if G.is_even(): GG = EvenArithmeticSubgroup_Permutation(ss2, ss3, ll, rr) else: GG = OddArithmeticSubgroup_Permutation(ss2, ss3, ll, rr) GG.relabel() for elt in ['_S2', '_S3', '_L', '_R']: if getattr(G, elt) != getattr(GG, elt): print("s2 = %s" % str(s2)) print("s3 = %s" % str(s3)) print("ss2 = %s" % str(ss2)) print("ss3 = %s" % str(ss3)) print("pp = %s" % str(pp)) raise AssertionError("%s does not coincide" % elt)
def test_contains(self): r""" Test whether the random generator for arithgroup perms gives matrices in the group. EXAMPLES:: sage: from sage.modular.arithgroup.tests import Test sage: Test().test_contains() #random """ if prandom.uniform(0,1) < self.odd_probability: G = random_odd_arithgroup(self.index) else: G = random_even_arithgroup(self.index) for _ in xrange(20): g = G.random_element() if G.random_element() not in G: raise AssertionError("%s not in %s" %(g,G))
def test_contains(self): r""" Test whether the random generator for arithgroup perms gives matrices in the group. EXAMPLES:: sage: from sage.modular.arithgroup.tests import Test sage: Test().test_contains() #random """ if prandom.uniform(0, 1) < self.odd_probability: G = random_odd_arithgroup(self.index) else: G = random_even_arithgroup(self.index) for _ in range(20): g = G.random_element() if G.random_element() not in G: raise AssertionError("%s not in %s" % (g, G))
def m(): if prandom.randint(0,1): return prandom.uniform(-1,1) else: return prandom.gauss(0,2)