thank you, 

some exploration/toy code for eliptic curves:

CurvePoints =: 4 : 0"1 0
'p a b' =. x
p | %: (b + ^&3 + a&*) y
)

intCurvePointsX =: (] #~ CurvePoints = <.@CurvePoints)
intCurvePointsY =: ([ CurvePoints intCurvePointsX)

NB. x is prime, a, b defining curve: y^2 = x^3 +ax + b mod prime
NB. y is x,y point.  Returns 1 if on curve. 0 otherwise.
isCurvePoint =: (4 : 0)"1
'p a b' =. x
0=p| (*:@{. - b + (a * {:) + ^&3@{:) y
)

   23 23 1    intCurvePointsX i.500
0 1 15 35
   23 23 1  intCurvePointsY i.50
1 5 15 2

NB. list of y;x that are integer points on curve.  Not sure how to get this 
info without intermediate boxing as below.
   > 23 23 1 ((i.23) ; each [: I. each [: <"1 isCurvePoint) (i.23) ,."0 1 (i.40)
┌──┬─────┐
│0 │22   │
├──┼─────┤
│1 │0 23 │
├──┼─────┤
│2 │12 35│
├──┼─────┤
│3 │2 25 │
├──┼─────┤
│4 │21   │
├──┼─────┤
│5 │1 24 │
├──┼─────┤
│6 │13 36│
├──┼─────┤
│7 │16 39│
├──┼─────┤
│8 │15 38│
├──┼─────┤
│9 │10 33│
├──┼─────┤
│10│14 37│
├──┼─────┤
│11│19   │
├──┼─────┤
│12│19   │
├──┼─────┤
│13│14 37│
├──┼─────┤
│14│10 33│
├──┼─────┤
│15│15 38│
├──┼─────┤
│16│16 39│
├──┼─────┤
│17│13 36│
├──┼─────┤
│18│1 24 │
├──┼─────┤
│19│21   │
├──┼─────┤
│20│2 25 │
├──┼─────┤
│21│12 35│
├──┼─────┤
│22│0 23 │
└──┴─────┘




----- Original Message -----
From: Cliff Reiter <reit...@lafayette.edu>
To: programm...@jsoftware.com
Cc: 
Sent: Wednesday, January 29, 2014 3:32:21 PM
Subject: Re: [Jprogramming] math requests

Some elliptic curve stuff; I think there is a +1 error that Roger Hui 
noticed in the factorization method.

http://archive.vector.org.uk/art10007270
http://archive.vector.org.uk/art10007280

Best, Cliff


On 1/29/2014 11:35 AM, Pascal Jasmin wrote:
>
> With all of the mathematicians on this list, these functions have likely been 
> implemented before in J.
>
> elyptic curve point add, multiplication and double
> a python reference implementation: 
> https://github.com/warner/python-ecdsa/blob/master/ecdsa/ellipticcurve.py
>
> the functions are: __add__  __mul__ and double
>
> if I may suggest J explicit signatures for the first 2 functions as:
>
> F =: 4 : 0
> 'yx yy yo' =. y
> 'xx xy xo' =. x
> )
>
> Some other methods than the python reference could be considered here:
>
> http://en.wikipedia.org/wiki/Elliptic_curve_point_multiplication
>
>
> also appreciated if you have in implementation of inverse_mod
> for reference function of same nate at:  
> https://github.com/warner/python-ecdsa/blob/master/ecdsa/numbertheory.py
> ----------------------------------------------------------------------
> For information about J forums see http://www.jsoftware.com/forums.htm
>

-- 
Clifford A. Reiter
Lafayette College, Easton, PA 18042
http://webbox.lafayette.edu/~reiterc/

----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to