
On Monday 05 December 2005 16:41, somebody wrote:
> In the notes for 3.4 out of the modular forms book, 3.4.1 has bound 1<=
> d  gcd (n,m). Now I know in class you corrected this to 1<= d <= gcd
> (n,m). So I back tracked and looked at Proposition 1.7.6 and the bound
> on that is 1<= d  (n,m). So my question is, are the bounds for 3.4.1
> the same from notes and class? If not, then does that change the bounds
> for 1.7.6? Thank you.
It's definitely 1 <= d  gcd(n,m). If I wrote d <= gcd(n,m) in class
I was completely and totally wrong, and didn't mean to do that. Sorry for
any confusion.

On Monday 31 October 2005 07:51 am, you wrote:
> From your forthcoming book "Algorithms for Computing
> Modular Forms", I see that (for example):
>
> dim[M2(Gamma0(100))] = 24,
> dim[M2(Gamma1(100))] = 370
>
> from Chapter 2. Using your marvelous tool:
>
> http://modular.math.washington.edu:8080/mfd/index.html
>
> I was able to confirm the former. But what about
> the latter? Do you have online software for getting
> 370 too?
You could use the online MAGMA calculator: Just paste
this into the box (http://modular.math.washington.edu/calc/)
and click MAGMA:
Dimension(ModularForms(Gamma1(100),2));
> Also, whenever anyone talks about "the dimension of
> the space of level N, weight 2 modular forms", is it
> usually assumed that they are speaking about
> M2(Gamma0(N))? Thank you, as always!
They are just as likely to be speaking about M_2(Gamma1(N)).
It really depends on context. If they are doing computation,
they're more likely to be speaking about M_2(Gamma0(N)),
and if they're doing theory they're more likely to be
speaking about M_2(Gamma1(N)).

On Monday 24 October 2005 8:36 pm, Somebody wrote:
> Hello,
>
> For 2 part c on the midterm, how many multiples of P do you want?
Enough to find 3 solutions to equation (1).
> Also I was attempting the homework due on Wednesday, and for problem 2 I
> was looking to compute points on that curve so I did this on sage and
> was wondering why it says those points are not on the curve?
You need to take the square root but you don't. E.g.,
sage: E = EllipticCurve([47961,0])
sage: P = E(507, square_root(106007616))
sage: P
_3 = (507, 10296)

Note that you should use square_root instead of sqrt, since sqrt always returns decimal number, and you need an integer to make a point on the curve.
The square_root function returns an integer, and if the input number
is not a perfect square, you'll get an error (which is good, because it
helps you avoid making dumb mistakes).
> So here is the sage stuff.
> sage: for a in range(999,999):
> ....: q=a^3219^2*a
> ....: if is_square(q)==True:
> ....: print (a,q)
> ....:
> (219, 0)
> (144, 3920400)
> (0, 0)
> (219, 0)
> (507, 106007616)
> sage: E
> _26 = Elliptic Curve defined by y^2 = x^3  [x over Rational Field
...
> sage: P=E([144,3920400])
ERRORS....

On Monday 24 October 2005 9:18 pm, someone wrote:
> Is it possible that there is an typo in the bijection given in the
> notes on page 120 of the book you've been handing out to us?
You're right, the formula is incorrect. It should be
(n*b/(a+c), 2*n^2/(a+c))
In my tex file I had "{2*n^2}{a+c}, but the "\frac" was mysteriously
absent. I've updated the notes at
http://modular.math.washington.edu/edu/fall05/168/notes/20051017/.
I also included a function to compute the point from the triangle
in the program cong.sage (also at the above site).
William

How do I obtain a random number in SAGE?
wstein@form:~/168/virtual$ sage

SAGE Version 0.7.13, Export Date: 200510170407
Distributed under the terms of the GNU General Public License (GPL)

sage: import random
sage: random.randrange(1,10)
_2 = 1
sage: random.randrange(1,10)
_3 = 5
sage: random.randrange(1,10)
_4 = 6

On Tue, 18 Oct 2005 22:07:03 0700:
> not sure if this qualifies as a bug, but it seems like you can make
> certain functions uncallable if you don't know what you're doing...
This is not a bug. It is a basic aspect of Python. It allows you
to override the default behavior of the system with your own, i.e., the
system is extendable by anybody, which is a good thing. This illustrates
a way in which Python is different than many programming languages, and
hints at how powerful it is (and why it is becoming so populare).
> ... if you don't know what you're doing...
In SAGE/Python the assumption is not that the user does have some clue
what they are doing.
> on a related note is there a way that i can write my own sage programs in
> the same way that in matlab i can make .m files? right now, i'm just
> storing a bunch of sage commands in a text file then copying and pasting.
> i'm messing around with using sage commands to run tate's algorithm.
Yes, there's extensive support for that. Please see this page right near the middle
http://modular.math.washington.edu/sage/doc/sagedoc/html/tut/node3.html#SECTION003300000000000000000
I'll add a section heading in a new version to make this clearer. I only wrote the
above this weekend...
William

How do I obtain a list of the basic arithmetic functions
defined in SAGE, e.g., gcd, lcm, etc.?
ANSWER:
sage: help(sage.rings.arith)
(scroll through it)

On Mon, 17 Oct 2005 22:58:08 0700, somebody wrote:
> I copied the code from your text book into sage and this is what I get.
>
> sage: def lcm_to(B):
> ...: ans = 1
> ...: logB = log(B)
> ...: for p in primes(B):
> ...: ans *= p**int(logB/log(p))
> ...: return ans
The code in the book is
sage: def lcm_to(B):
...: ans = 1
...: logB = log(B)
...: for p in primes(B):
...: ans *= p**int(logB/log(p))
...: return ans
which is different than what you have. In
what you put in ans is returned the first time
through the for loop. Instead you want it to
be returned after the for loop completes.
William

On Mon, 03 Oct 2005 21:53:19 0700, somebody wrote:
> Cool! Thanks! It just struck me that I'm doing something wrong because
> when I ask pari to add two points with 0 ycoordinate it's coming up with
> a point with nonzero ycoordinate. !?
It's an amusing observation that the group law formulas make sense even
if the two points are not on the curve. The PARI philosophy is to try
to make sense of whatever you do, even if it is crazy nonsense, as you've
discovered. This is the opposite of what's done in MAGMA. You could
also try SAGE  there are examples here:
http://modular.math.washington.edu/edu/fall05/168/notes/20050928/
Also, here's how to do the thing you were trying:
e=EllipticCurve([0,0,1,7,6])
p1=e([1,0])
p2=e([400,0])
p1+p2
Of course, you get an error in SAGE when doing this.
> I can't imagine a way to hack in from that calculator, but if I think of
> something deliciously evil, I'll be sure to try it out :). Just kidding!
> I'll let you know.
I was pretty clever in making it difficult to hack this time around.

On Fri, 30 Sep 2005 09:28:50 0700, somebody wrote:
> Surely someone has exhibited an elliptic curve with m=r=2. Do
> you have a reference for this? Perhaps the result is classical, but
> my search hasn't been successful so far. (I'm curious how proofs
> of such apparent numerical results can be formulated.) Thank you,
That's not difficult and is one of my favorite curves. The "first"
example is 389A: y^2 + y = x^3 + x^2  2x
That the algebraic rank is 2 is something you can verify, e.g., with mwrank.
That the analytic rank is 2 is more interesting, as you suspect.
By computing the "root number" of the curve we find that it has
even analytic rank. This can be a purely algebraic calculation, that
goes fairly quickly. Next, we compute L''(E,1) to sufficient precision,
e.g., using the algorithm described in Cremona's book, and get a nonzero number.
This proves that the order of vanishing is either 0 or 2.
Finally, we show that L(E,1) = 0. There are two ways to do this.
(1) Prove that L(E,1)/Omega_E is a rational number and deduce
a multiple B of the denominator. Then B*L(E,1)/Omega_E
is an integer. Compute it to 1 decimal place or precision
and see that it is 0.
(2) Compute L(E,1)/Omega_E as an exact algebraic number using
modular symbols. This is potentially slower than (1) but
involves no approximations at any step.
Some Details:
That L(E,1)/Omega_E is a rational number was proved in the 1970s
by Birch and SwinnertonDyer in Antwerp IV, I think. Then using
the formula that comes up in (2) and, e.g., ideas from my thesis
(that were surely known in the case of elliptic curves before), along
with nontrivial facts about the Manin constant (theorems of AbbesUlmo
and Raynaud), one gets a bound on the denominator (this works at
least for curves with squarefree conductor).
The idea for understanding L(E,1)/Omega_E is to view it as, essentially,
the integral from 0 to i*oo of modular form. Then one gets a rationality
result as required.
William
