What a coincidence -- the patch I am working on *will* (have the
capability to) return both a boolean and an isomorphism for
is_isomorphic() on elliptic curves.  I was wondering how to do that
and assumed that it would be a tuple.  Rather than make the tuple's
length (1 or 2) depend on the input I would always return a tuple of
length 2 but the second item would be None iff the first has false.
Isn't that a reasonable way of doing it?

I don't like requiring the trapping of errors, though I realise that
it is very Pythonesque to do so.  But if we allow the input line
sage: phi = E1.isomorphism(E2)

then we *must* raise an error when the things are not isomorphic, just as
sage: QQ(2).nth_root(2)
raises as ValueError (though sqrt(2) does not as it creates a symbolic sqrt(2)).

This is going beyond the original thread, I know.

On 16/01/2008, David Kohel <[EMAIL PROTECTED]> wrote:
>
> There was a thread on multiple return values coming from Magma,
> since renamed to "Integer points on conics"
>
> William pointed out that one can access the multiple return values
> using nvals:
>
>  x = magma.XGCD(15, 10)
>  x,y,z = magma.XGCD(15, 10, nvals = 3)
>
> The first returns an integer, while the second returns a tuple.
>
> Q1: Is this an acceptable general construction for Python and/or SAGE,
> namely to return a different type depending on the values passed into
> it?  Is it acceptable when it is controlled by nvals in exactly this
> way?
>
> As William pointed out, very different algorithms can be called
> depending on the
> number of arguments requested in Magma.  The following is an example:
>
> sage: E = magma.EllipticCurve([1,3])
> sage: magma.IsIsomorphic(E,E)
> true
> sage: bool, phi = magma.IsIsomorphic(E,E,nvals=2)
> sage: phi
> Elliptic curve isomorphism from: Elliptic Curve defined by y^2 = x^3 +
> x + 3 over Rational Field to Elliptic Curve defined by y^2 = x^3 + x +
> 3 over Rational Field
> Taking (x : y : 1) to (x : y : 1)
>
> Currently in SAGE we have:
>
> sage: E = EllipticCurve([1,3])
> sage: E.is_isomorphic(E)
> True
>
> Q2: Would the following be acceptable way of implementing equivalent
> functionality in SAGE?:
>
> sage: bool, phi = E.is_isomorphic(E, nvals=2)
>
> Note that often (in many concexts) it more expensive to return an
> isomorphism, but only slightly more so compared with recomputing the
> isomorphism test.  If the answer to my question is "no, it not
> acceptable SAGE/Python syntax", then how should we implement this
> functionality?  One possibility is:
>
> sage: phi = E1.isomorphism(E2)
>
> and to trap an error if is_isomorphic returns false.  Is this a
> better?
>
> >
>


-- 
John Cremona

--~--~---------~--~----~------------~-------~--~----~
To post to this group, send email to sage-devel@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/sage-devel
URLs: http://sage.scipy.org/sage/ and http://modular.math.washington.edu/sage/
-~----------~----~----~----~------~----~------~--~---

Reply via email to