Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

The question amount to substituting given $x$ in the elliptic curve equation, and solving the resulting quadratic equation for $y$. Here is a sample code:

def compute_y(E,x):
    R = E.base_ring()
    x = R(x)
    a = E.a_invariants()
    c = (a[0]*x + a[2])/2
    b = x^3 + a[1]*x^2 + a[3]*x + a[4] + c^2
    if not is_square(b):
        return None
    return sqrt(b)-c

E = EllipticCurve(GF(43),[2,8]);
print( compute_y(E,1) )

For a given curve and $x=1$, it computes $y=21$. It is easy to verify that $21^2 = 1^3 + 2\cdot 1 + 8$ in GF(43).

The question amount to substituting given $x$ in the elliptic curve equation, and solving the resulting quadratic equation for $y$. Here is a sample code:

def compute_y(E,x):
    R = E.base_ring()
    x = R(x)
    a = E.a_invariants()
    c = (a[0]*x + a[2])/2
    b = x^3 + a[1]*x^2 + a[3]*x + a[4] + c^2
    r = is_square(b,True)
    if not is_square(b):
r[0]:
        return r[1]-c
    else:
        return None
    return sqrt(b)-c

E = EllipticCurve(GF(43),[2,8]);
print( compute_y(E,1) )

For a given curve and $x=1$, it computes $y=21$. It is easy to verify that $21^2 = 1^3 + 2\cdot 1 + 8$ in GF(43).

The question amount to substituting given $x$ in the elliptic curve equation, and solving the resulting quadratic equation for $y$. Here is a sample code:

def compute_y(E,x):
    R = E.base_ring()
    x = R(x)
    a = E.a_invariants()
    c = (a[0]*x + a[2])/2
    b = x^3 + a[1]*x^2 + a[3]*x + a[4] + c^2
    r = is_square(b,True)
    if r[0]:
        return r[1]-c
    else:
        return None

E = EllipticCurve(GF(43),[2,8]);
EllipticCurve(GF(43),[2,8])
print( compute_y(E,1) )

For a given curve and $x=1$, it computes $y=21$. It is easy to verify that $21^2 = 1^3 + 2\cdot 1 + 8$ in GF(43).

The question amount amounts to substituting given $x$ in the elliptic curve equation, and solving the resulting quadratic equation for $y$. Here is a sample code:

def compute_y(E,x):
    R = E.base_ring()
    x = R(x)
    a = E.a_invariants()
    c = (a[0]*x + a[2])/2
    b = x^3 + a[1]*x^2 + a[3]*x + a[4] + c^2
    r = is_square(b,True)
    if r[0]:
        return r[1]-c
    else:
        return None

E = EllipticCurve(GF(43),[2,8])
print( compute_y(E,1) )

For a given curve and $x=1$, it computes $y=21$. It is easy to verify that $21^2 = 1^3 + 2\cdot 1 + 8$ in GF(43).

The question amounts to substituting given $x$ in the elliptic curve equation, and solving the resulting quadratic equation for $y$. Here is a sample code:

def compute_y(E,x):
    R = E.base_ring()
    x = R(x)
    a = E.a_invariants()
    c = (a[0]*x + a[2])/2
    b = x^3 + a[1]*x^2 + a[3]*x + a[4] + c^2
    r = is_square(b,True)
    if r[0]:
        return r[1]-c
    else:
        return None

E = EllipticCurve(GF(43),[2,8])
print( compute_y(E,1) )

For a given curve and $x=1$, it computes $y=21$. It is easy to verify that $21^2 = 1^3 + 2\cdot 1 + 8$ in GF(43).

P.S. The code above does not work if 2 is not invertible in the in the base ring (e.g., if it's a filed of characteristic 2) since it involves division by 2. Although, when a[0]=a[2]=0, we can avoid division and simply set c=0.

The question amounts to substituting given $x$ in the elliptic curve equation, and solving the resulting quadratic equation for $y$. Here is a sample code:

def compute_y(E,x):
    R = E.base_ring()
    x = R(x)
    a = E.a_invariants()
    c = (a[0]*x + a[2])/2
    b = x^3 + a[1]*x^2 + a[3]*x + a[4] + c^2
    r = is_square(b,True)
    if r[0]:
        return r[1]-c
    else:
        return None

E = EllipticCurve(GF(43),[2,8])
print( compute_y(E,1) )

For a given curve and $x=1$, it computes $y=21$. It is easy to verify that $21^2 = 1^3 + 2\cdot 1 + 8$ in GF(43).

P.S. The code above does not work if 2 is not invertible in the in the base ring (e.g., if it's a filed of characteristic 2) since it involves division by 2. Although, when a[0]=a[2]=0, we can avoid division and simply set c=0.

The question amounts to substituting given $x$ in the elliptic curve equation, and solving the resulting quadratic equation for $y$. Here is a sample code:

def compute_y(E,x):
    R = E.base_ring()
    x = R(x)
    a = E.a_invariants()
    c = (a[0]*x + a[2])/2
    b = x^3 + a[1]*x^2 + a[3]*x + a[4] + c^2
    r = is_square(b,True)
    if r[0]:
        return r[1]-c
    else:
        return None

E = EllipticCurve(GF(43),[2,8])
print( compute_y(E,1) )

For a given curve and $x=1$, it computes $y=21$. It is easy to verify that $21^2 = 1^3 + 2\cdot 1 + 8$ in GF(43).

P.S. The code above does not work if 2 is not invertible in the base ring (e.g., if it's a filed field of characteristic 2) since it involves division by 2. Although, when a[0]=a[2]=0, we can avoid division and simply set c=0.

The question amounts to substituting given $x$ in the elliptic curve equation, and solving the resulting quadratic equation for $y$. Here is a sample code:

def compute_y(E,x):
    R R.<y> = E.base_ring()
    x = R(x)
PolynomialRing(E.base_ring())
    a = E.a_invariants()
    c L = (y^2 + (a[0]*x + a[2])/2
    b = x^3 a[2])*y - (x^3 + a[1]*x^2 + a[3]*x + a[4] + c^2
    r = is_square(b,True)
    if r[0]:
    a[4])).roots()
    return r[1]-c
    else:
        return None
{l[0] for l in L}

E = EllipticCurve(GF(43),[2,8])
print( compute_y(E,1) )

For a given curve and $x=1$, it computes $y=21$. that $y\in \{21,22\}$. It is easy to verify that $21^2 = 22^2 = 1^3 + 2\cdot 1 + 8$ and in GF(43).

P.S. The code above does not work if 2 is not invertible in the base ring (e.g., if it's a field of characteristic 2) since it involves division by 2. Although, when a[0]=a[2]=0, we can avoid division and simply set c=0.