# Supersingular Curves

## `IsSupersingular(E : parameters): CrvEll -> BoolElt`

```magma
Proof: BoolElt                    Default: true
```

Given an elliptic curve $E$ over a finite field, this function returns `false` if $E$ is ordinary, otherwise proves that $E$ is supersingular and returns `true`. If the parameter `Proof` is set to `false` then the effect of the function is the same as that of `IsProbablySupersingular`.

## `SupersingularPolynomial(p): RngIntElt -> RngUPolElt`

Given a prime $p$, returns the separable monic polynomial over ${\mathbb{F}}_p$ whose roots are precisely the $j$ invariants of supersingular elliptic curves in characteristic $p$. The polynomial is computed by a formula; ignoring factors corresponding to $j=0$ or 1728, it is the partial power-series expansion of a certain hypergeometric function reduced mod $p$. For $p$ of moderate size this is a very fast method.

## `IsOrdinary(E): CrvEll -> BoolElt`

Given an elliptic curve $E$ over a finite field, this function returns `true` if the elliptic curve $E$ is ordinary, otherwise `false` (i.e., if it is supersingular). Thus, this function is the logical negation of `IsSupersingular`.

## `IsProbablySupersingular(E): CrvEll -> BoolElt`

Given an elliptic curve $E$ over a finite field, this function returns returns `false` if the elliptic curve $E$ is proved to be ordinary, otherwise `true`. The algorithm is nondeterministic and repeated tests are independent.
