Commit cb5c5af4 authored by Peter Bruin's avatar Peter Bruin

inline curve_divisor_bilinear_map

parent d465ab3b
......@@ -110,23 +110,6 @@ curve_divisor_section_as_matrix(GEN X, GEN s, GEN C1, GEN piv2, GEN R2) {
return gerepileupto(av, M);
}
/*
Given an effective divisor D on X, three subspaces
V_1, V_2, V_3 of space of the form \Gamma(X,{\cal L}^i)
such that V_3 is the product of V_1 and V_2, return
the induced map on quotient spaces.
*/
static GEN
curve_divisor_bilinear_map(GEN X, GEN C1, GEN C2, GEN piv3, GEN R3) {
long i, n = lg(C1) - 1;
pari_sp av = avma;
GEN mu = cgetg(n + 1, t_VEC);
for (i = 1; i <= n; i++)
gel(mu, i) = curve_divisor_section_as_matrix(X, gel(C1, i),
C2, piv3, R3);
return gerepileupto(av, mu);
}
/*
Given a curve X and a divisor D represented as the
_two_ subspaces W_D = \Gamma(X,{\cal L}^d(-D)) and
......@@ -153,10 +136,10 @@ curve_divisor_algebra (GEN X, GEN W_D, GEN W_2_D,
GEN C;
GEN algebra, basis;
int try_monogenic = 1; /* TODO: useful criterion */
long deg_D = lg(V) - lg(W_D), i;
if (try_monogenic) {
GEN s, t, M, N, A = NULL, v;
long deg_D = lg(V) - lg(W_D), i;
int done = 0;
while (!done) {
if (A == NULL) {
......@@ -187,7 +170,10 @@ curve_divisor_algebra (GEN X, GEN W_D, GEN W_2_D,
} else {
GEN mu, algebra_basis;
C = matsmall_complement(V, W_D, p, T);
mu = curve_divisor_bilinear_map(X, C, C, piv2, R_2);
mu = cgetg(deg_D + 1, t_VEC);
for (i = 1; i <= deg_D; i++)
gel(mu, i) = curve_divisor_section_as_matrix(X, gel(C, i),
C, piv2, R_2);
/*
Compute the algebra \Gamma(D,\O_D) and its action
on \Gamma(D,i^*{\cal L}).
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment