# as.primitive

##### Converts basic periods to a primitive pair

Given a pair of basic periods, returns a primitive pair and (optionally) the unimodular transformation used.

- Keywords
- array

##### Usage

```
as.primitive(p, n = 3, tol = 1e-05, give.answers = FALSE)
is.primitive(p, n = 3, tol = 1e-05)
```

##### Arguments

- p
Two element vector containing the two basic periods

- n
Maximum magnitude of matrix entries considered

- tol
Numerical tolerance used to determine reality of period ratios

- give.answers
Boolean, with

`TRUE`

meaning to return extra information (unimodular matrix and the magnitudes of the primitive periods) and default`FALSE`

meaning to return just the primitive periods

##### Details

Primitive periods are not unique. This function follows
Chandrasekharan and others (but not, of course, Abramowitz and Stegun)
in demanding that the real part of `p1`

, and the
imaginary part of `p2`

, are nonnegative.

##### Value

If `give.answers`

is `TRUE`

, return a list with components

The unimodular matrix used

The pair of primitive periods

The magnitudes of the primitive periods

##### Note

Here, “unimodular” includes the case of determinant minus one.

##### References

K. Chandrasekharan 1985. *Elliptic functions*, Springer-Verlag

##### Examples

```
# NOT RUN {
as.primitive(c(3+5i,2+3i))
as.primitive(c(3+5i,2+3i),n=5)
##Rounding error:
is.primitive(c(1,1i))
## Try
is.primitive(c(1,1.001i))
# }
```

*Documentation reproduced from package elliptic, version 1.4-0, License: GPL-2*