def test_f2(self): x, y = self.f2.parent().gens() dfdy = self.f2.derivative(y) X = DummyRS(self.f2) a = map(lambda omega: omega.as_expression(), differentials(X)) b = [x * y / dfdy, x**3 / dfdy] self.assertEqual(a, b)
def test_hyperelliptic_regular_places(self): R = QQ['x,y'] x, y = R.gens() X = RiemannSurface(y**2 - (x + 1) * (x - 1) * (x - 2) * (x + 2)) omegas = differentials(X) # the places above x=0 are regular places = X(0) for P in places: a, b = P.x, P.y for omega in omegas: omega_P = omega.centered_at_place(P) val1 = omega(a, b) val2 = omega_P(CC(0)) self.assertLess(abs(val1 - val2), 1e-8) # the places above x=oo are regular: P = (1/t, \pm 1/t**2 + O(1)) # (however, all places at infinity are treated as discriminant) # # in this particular example, omega[0] = 1/(2*y). At the places at # infinity, these are equal to \mp 0.5, respectively. (the switch in # sign comes from the derivative dxdt = -1/t**2) places = X('oo') for P in places: sign = P.puiseux_series.ypart[-2] for omega in omegas: omega_P = omega.centered_at_place(P) val1 = -sign * 0.5 val2 = omega_P(CC(0)) self.assertLess(abs(val1 - val2), 1e-8)
def test_f1(self): x, y = self.f1.parent().gens() dfdy = self.f1.derivative(y) X = DummyRS(self.f1) a = map(lambda omega: omega.as_expression(), differentials(X)) b = [] self.assertEqual(a, b)
def test_f1(self): x,y = self.f1.parent().gens() dfdy = self.f1.derivative(y) X = DummyRS(self.f1) a = map(lambda omega: omega.as_expression(), differentials(X)) b = [] self.assertEqual(a,b)
def test_f2(self): x,y = self.f2.parent().gens() dfdy = self.f2.derivative(y) X = DummyRS(self.f2) a = map(lambda omega: omega.as_expression(), differentials(X)) b = [x*y/dfdy, x**3/dfdy] self.assertEqual(a,b)
def test_hyperelliptic_regular_places(self): R = QQ['x,y'] x,y = R.gens() X = RiemannSurface(y**2 - (x+1)*(x-1)*(x-2)*(x+2)) omegas = differentials(X) # the places above x=0 are regular places = X(0) for P in places: a,b = P.x,P.y for omega in omegas: omega_P = omega.centered_at_place(P) val1 = omega(a,b) val2 = omega_P(CC(0)) self.assertLess(abs(val1-val2), 1e-8) # the places above x=oo are regular: P = (1/t, \pm 1/t**2 + O(1)) # (however, all places at infinity are treated as discriminant) # # in this particular example, omega[0] = 1/(2*y). At the places at # infinity, these are equal to \mp 0.5, respectively. (the switch in # sign comes from the derivative dxdt = -1/t**2) places = X('oo') for P in places: sign = P.puiseux_series.ypart[-2] for omega in omegas: omega_P = omega.centered_at_place(P) val1 = -sign*0.5 val2 = omega_P(CC(0)) self.assertLess(abs(val1-val2), 1e-8)
def test_f2(self): x, y = self.f2.parent().gens() dfdy = self.f2.derivative(y) X = DummyRS(self.f2) a = [omega.as_expression() for omega in differentials(X)] b = [x * y / dfdy, x**3 / dfdy] self.assertEqual(a, b)
def test_f1(self): x, y = self.f1.parent().gens() dfdy = self.f1.derivative(y) X = DummyRS(self.f1) a = [omega.as_expression() for omega in differentials(X)] b = [] self.assertEqual(a, b)
def test_differentials(self): self.assertItemsEqual( differentials(f1,x,y), [], ) self.assertItemsEqual( differentials(f2,x,y), [x**3/(2*x**3 + 3*y**2), x*y/(2*x**3 + 3*y**2)], ) self.assertItemsEqual( differentials(f3,x,y), [], ) self.assertItemsEqual( differentials(f4,x,y), [], )
def test_f2_regular_places(self): X = self.X2 omegas = differentials(X) # the places above x=1 are regular places = X(1) for P in places: a, b = P.x, P.y for omega in omegas: omega_P = omega.centered_at_place(P) val1 = omega(a, b) val2 = omega_P(CC(0)) self.assertLess(abs(val1 - val2), 1e-8)
def test_f2_regular_places(self): X = self.X2 omegas = differentials(X) # the places above x=1 are regular places = X(1) for P in places: a,b = P.x,P.y for omega in omegas: omega_P = omega.centered_at_place(P) val1 = omega(a,b) val2 = omega_P(CC(0)) self.assertLess(abs(val1-val2), 1e-8)
def holomorphic_differentials(self): r"""Returns a basis of holomorphic differentials on the surface. Parameters ---------- None Returns ------- differentials : list A list of holomorphic differentials forming a basis. """ value = differentials(self) return value