I have tried to transcribe the python code as J.

https://gist.github.com/rdm/8733290

Currently this code has two issues.

First, the objects are not garbage collected. This is a trivial issue
because it's also failing the test suite. (I see no value in adding
complexity to buggy code to make it more efficient - I'd rather first get
it working so I have a reference implementation and then start rephrasing
it to not use objects at all).

The first problem triggered by the test suite happens in the loop that
begins with

  for_i. i. 7+1 do.
    p=. mul__g 7 | i

It fails when i is 3, and this is the first test with multiplcation where
either of the if statements in the point multiplication code gets triggered:

    while. 1 < i=. <. -: i do.
      result=. double__result''
      if. (0 ~: e3 bitAnd i) *. (0 = e bitAnd i) do. result=. add__This
result end.
      if. (0 = e3 bitAnd i) *. (0 ~: e bitAnd i) do. result=.
add__negativeSelf result end.
    end.

It's the second if statement which triggers and the result is incorrect.

Anyways, I've been staring at this for hours an it's probably a trivial
mistake. So I'm hoping that someone with a deeper understanding of the math
can explain to me how to think about this. Or, I am hoping that someone
with a fresher set of eyes can see my mistake.

(And, I should probably have capitalized the name negativeSelf for
consistency.)

Thanks,

-- 
Raul



On Wed, Jan 29, 2014 at 11:35 AM, Pascal Jasmin <godspiral2...@yahoo.ca>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
>
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to