For the sake of comparison we first give formulas for Weierstrass curves in projective coordinates; scroll down to see the formulas for Edwards curves
starting tests...
50000 loops, best of 3: 13.6 µs per loop
50000 loops, best of 3: 22.7 µs per loop
50000 loops, best of 3: 20.3 µs per loop
Note that distinct triples of proejctive coordinates may define the same projective point.
To compare points for equality we need to use the equal_projective function above (which also works for Edwards curves)
R1 = (88417280862405198524498904230150093073040285267296490962688023695194294232737, 81803801345615446712151118453505899941011682403746951648224039427654521101855, 46633157038940499649062681694319626916323919252431273559123417012920789472386)
R2 = (18524196991610979948129892573767159495541479256700257005341500524559971803562, 25137676508400731760477678350411352627570082120249796319805484792099744934444, 60308320815075678823566115109597625652257845271565474408906107206833476563913)
R1 == R2: False
equal_projective(R1,R2): True
Points on Edwards curve x^2 + y^2 = 1 + 3x^2y^2 over F_17
[0, 1]
[0, 16]
[1, 0]
[2, 5]
[2, 12]
[3, 4]
[3, 13]
[4, 3]
[4, 14]
[5, 2]
[5, 15]
[7, 7]
[7, 10]
[10, 7]
[10, 10]
[12, 2]
[12, 15]
[13, 3]
[13, 14]
[14, 4]
[14, 13]
[15, 5]
[15, 12]
[16, 0]
starting tests...
100000 loops, best of 3: 9.46 µs per loop
100000 loops, best of 3: 9.17 µs per loop
100000 loops, best of 3: 6.4 µs per loop