Bob, you are correct, there is no known algorithm guaranteed to compute the rank of an elliptic curve. There are however very effective algorithms for obtaining an upper bound on the rank by computing a Selmer group. This can be done in either Sage or Magma. Since [Sage][1] is free, I will put some sample code here: sage: k = 6/17 sage: m = k.numerator() sage: n = k.denominator() sage: E = EllipticCurve([0,-m^2 - n^2, 0, n^2*m^2, 0]) sage: E.rank_bound() # Computes the upper bound on the rank by consider the 2-Selmer group 0 In these cases the 2-Selmer group is relatively easy to compute, because every point of order 2 on the elliptic curve is rational. It's behavior is determined, in a somewhat complicated way, by the prime factorization of $n*m*(n+m)*(n-m)$ and whether those primes are squares modulo one another. The going conjecture is that if you pick $k$ "at random", the the rank of the elliptic curve Allan wrote down has about a 50% chance of being 0 and a 50% percent chance of being 1. Unfortunately, some results of Gang Yu, and certain elliptic curve analogues of Malle's corrections to the Cohen-Lenstra heurstics, suggest that if you pick $k$ at random and compute the upper bound you will quite often get an upper bound of 2, or 4, or 6, or so on, even when the rank is 0. If you want to do something more exhaustive, you might need to do so-called higher descents. These are, at present, best done with Magma. [1]: http://sagemath.org/