review, validation and test development for GenericGF

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
7 messages Options
Reply | Threaded
Open this post in threaded view
|

review, validation and test development for GenericGF

Robert Withers
Hi all, sticking with the distribution for discussing Crypto in the base, I am currently trying to stabilize a port of Reed-Solomon such that FEC can be added to SecureSession. I am doing this work in SecureSession. I just posted an update of the GenericGF class, with the Java implementation attached here.

I need this critical code reviewed and tested. You need Cryptography and SecureSession to be included in the catalog. If you can help me with the former, I could help with the latter, if that suits you. Please let me know!

Please load Cryptography(-Pharo) and SecureSession.23 for review.
"ported & refactored GenericGF from the java code. This includes reindexing from 0 to 1. Having no tests, hopefully someone can give a review of this specific class. Where some tests to be developed at this scope, that would be stellar."

I appreciate.
--
. .. .. ^,^ best, robert



GenericGF.java (6K) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: review, validation and test development for GenericGF

Robert Withers
The review I need is especially the case with the multiply(a, b), in Java, or #multiply:scalar:, in Smalltalk.

Thank you!

On 12/15/2015 06:30 AM, Robert Withers wrote:
Hi all, sticking with the distribution for discussing Crypto in the base, I am currently trying to stabilize a port of Reed-Solomon such that FEC can be added to SecureSession. I am doing this work in SecureSession. I just posted an update of the GenericGF class, with the Java implementation attached here.

I need this critical code reviewed and tested. You need Cryptography and SecureSession to be included in the catalog. If you can help me with the former, I could help with the latter, if that suits you. Please let me know!

Please load Cryptography(-Pharo) and SecureSession.23 for review.
"ported & refactored GenericGF from the java code. This includes reindexing from 0 to 1. Having no tests, hopefully someone can give a review of this specific class. Where some tests to be developed at this scope, that would be stellar."

I appreciate.
--
. .. .. ^,^ best, robert

--
. .. .. ^,^ best, robert


Reply | Threaded
Open this post in threaded view
|

Re: review, validation and test development for GenericGF

Nicolas Cellier
In reply to this post by Robert Withers
After a first glimpse, I noted these:

1) GenericGFPoly evaluateAt: does not set the result in the loop...
2) why using an OrderedCollection for the coefficients ? an Array is faster.
   same for exp and log tables of GenericGF
3) GenericGF>>multiply:scalar: you changed <= size into < size but shouldn't...

2015-12-15 12:30 GMT+01:00 Robert Withers <[hidden email]>:
Hi all, sticking with the distribution for discussing Crypto in the base, I am currently trying to stabilize a port of Reed-Solomon such that FEC can be added to SecureSession. I am doing this work in SecureSession. I just posted an update of the GenericGF class, with the Java implementation attached here.

I need this critical code reviewed and tested. You need Cryptography and SecureSession to be included in the catalog. If you can help me with the former, I could help with the latter, if that suits you. Please let me know!

Please load Cryptography(-Pharo) and SecureSession.23 for review.
"ported & refactored GenericGF from the java code. This includes reindexing from 0 to 1. Having no tests, hopefully someone can give a review of this specific class. Where some tests to be developed at this scope, that would be stellar."

I appreciate.
--
. .. .. ^,^ best, robert






Reply | Threaded
Open this post in threaded view
|

Re: review, validation and test development for GenericGF

Robert Withers
Hi Nicolas,

I tried the fixes you suggested (1 and 3) and it still isn't working. I published tothe repository with these changes, though the pipeline is broken as I rewire my skull (intro frames). This will take several days to complete, I think, although progress is being made. Then I will be able to turn my full attention back to RS and Arrays for starters. Please pardon the delay, but I think frames will bring an advantage, perhaps not performance but design and flexibility.

Many thanks for taking a close look at RS,
robert

On 12/20/2015 12:18 PM, Nicolas Cellier wrote:
After a first glimpse, I noted these:

1) GenericGFPoly evaluateAt: does not set the result in the loop...
2) why using an OrderedCollection for the coefficients ? an Array is faster.
   same for exp and log tables of GenericGF
3) GenericGF>>multiply:scalar: you changed <= size into < size but shouldn't...

2015-12-15 12:30 GMT+01:00 Robert Withers <[hidden email]>:
Hi all, sticking with the distribution for discussing Crypto in the base, I am currently trying to stabilize a port of Reed-Solomon such that FEC can be added to SecureSession. I am doing this work in SecureSession. I just posted an update of the GenericGF class, with the Java implementation attached here.

I need this critical code reviewed and tested. You need Cryptography and SecureSession to be included in the catalog. If you can help me with the former, I could help with the latter, if that suits you. Please let me know!

Please load Cryptography(-Pharo) and SecureSession.23 for review.
"ported & refactored GenericGF from the java code. This includes reindexing from 0 to 1. Having no tests, hopefully someone can give a review of this specific class. Where some tests to be developed at this scope, that would be stellar."

I appreciate.
--
. .. .. ^,^ best, robert







    

--
. .. .. ^,^ robert


Reply | Threaded
Open this post in threaded view
|

Re: review, validation and test development for GenericGF

Nicolas Cellier
Since GF is all about algebra and arithmetic it should be possible to write tests and check some invariants...
For example, this works with SecureSession-rww.70:

    | gf |
    GenericGF xxinitialize.
    gf := GenericGF RS_256_A.
    1 to: gf size - 1 do: [:a |
        self assert: (gf multiply: a scalar: (gf inverse: a)) = 1]

One could test polynom product vs division for example, for some monomials...

2015-12-21 1:19 GMT+01:00 Robert Withers <[hidden email]>:
Hi Nicolas,

I tried the fixes you suggested (1 and 3) and it still isn't working. I published tothe repository with these changes, though the pipeline is broken as I rewire my skull (intro frames). This will take several days to complete, I think, although progress is being made. Then I will be able to turn my full attention back to RS and Arrays for starters. Please pardon the delay, but I think frames will bring an advantage, perhaps not performance but design and flexibility.

Many thanks for taking a close look at RS,
robert


On 12/20/2015 12:18 PM, Nicolas Cellier wrote:
After a first glimpse, I noted these:

1) GenericGFPoly evaluateAt: does not set the result in the loop...
2) why using an OrderedCollection for the coefficients ? an Array is faster.
   same for exp and log tables of GenericGF
3) GenericGF>>multiply:scalar: you changed <= size into < size but shouldn't...

2015-12-15 12:30 GMT+01:00 Robert Withers <[hidden email]>:
Hi all, sticking with the distribution for discussing Crypto in the base, I am currently trying to stabilize a port of Reed-Solomon such that FEC can be added to SecureSession. I am doing this work in SecureSession. I just posted an update of the GenericGF class, with the Java implementation attached here.

I need this critical code reviewed and tested. You need Cryptography and SecureSession to be included in the catalog. If you can help me with the former, I could help with the latter, if that suits you. Please let me know!

Please load Cryptography(-Pharo) and SecureSession.23 for review.
"ported & refactored GenericGF from the java code. This includes reindexing from 0 to 1. Having no tests, hopefully someone can give a review of this specific class. Where some tests to be developed at this scope, that would be stellar."

I appreciate.
--
. .. .. ^,^ best, robert







    

--
. .. .. ^,^ robert






Reply | Threaded
Open this post in threaded view
|

Re: review, validation and test development for GenericGF

Robert Withers
Yes, the first step is to write a bunch of tests.  You are testing the math with (a * (1/a)) == 1, a good test. It's in the queue, especially the multiply, divide and monomials testing, as you suggest. All of it, not just the outer layer with something this complex.

thank you,
Robert

On 12/21/2015 04:01 PM, Nicolas Cellier wrote:
Since GF is all about algebra and arithmetic it should be possible to write tests and check some invariants...
For example, this works with SecureSession-rww.70:

    | gf |
    GenericGF xxinitialize.
    gf := GenericGF RS_256_A.
    1 to: gf size - 1 do: [:a |
        self assert: (gf multiply: a scalar: (gf inverse: a)) = 1]

One could test polynom product vs division for example, for some monomials...

2015-12-21 1:19 GMT+01:00 Robert Withers <[hidden email]>:
Hi Nicolas,

I tried the fixes you suggested (1 and 3) and it still isn't working. I published tothe repository with these changes, though the pipeline is broken as I rewire my skull (intro frames). This will take several days to complete, I think, although progress is being made. Then I will be able to turn my full attention back to RS and Arrays for starters. Please pardon the delay, but I think frames will bring an advantage, perhaps not performance but design and flexibility.

Many thanks for taking a close look at RS,
robert


On 12/20/2015 12:18 PM, Nicolas Cellier wrote:
After a first glimpse, I noted these:

1) GenericGFPoly evaluateAt: does not set the result in the loop...
2) why using an OrderedCollection for the coefficients ? an Array is faster.
   same for exp and log tables of GenericGF
3) GenericGF>>multiply:scalar: you changed <= size into < size but shouldn't...

2015-12-15 12:30 GMT+01:00 Robert Withers <[hidden email]>:
Hi all, sticking with the distribution for discussing Crypto in the base, I am currently trying to stabilize a port of Reed-Solomon such that FEC can be added to SecureSession. I am doing this work in SecureSession. I just posted an update of the GenericGF class, with the Java implementation attached here.

I need this critical code reviewed and tested. You need Cryptography and SecureSession to be included in the catalog. If you can help me with the former, I could help with the latter, if that suits you. Please let me know!

Please load Cryptography(-Pharo) and SecureSession.23 for review.
"ported & refactored GenericGF from the java code. This includes reindexing from 0 to 1. Having no tests, hopefully someone can give a review of this specific class. Where some tests to be developed at this scope, that would be stellar."

I appreciate.
--
. .. .. ^,^ best, robert







--
. .. .. ^,^ robert







    

-- 
. ..  ...   ^,^    robert
Go Panthers!


Reply | Threaded
Open this post in threaded view
|

Re: review, validation and test development for GenericGF

Robert Withers
I ought to clarify something I said that was misleading to whomever read this. I think normally people think of "being in the queue" as forthcoming momentarily. To myself, it means I am planning to work on it as soon as the stack is whittled down, being the short-term task manager. In other words, the stack is short-term, the queue is medium-term and the pool is long-term. The stack is interruptible, the queue is one of priority and the pool is re-entrant. I try to frame my mind to work this way but I didn't want to raise the wrong expectations through old miscommunication - it's common.


regards,
Robert


On 12/21/2015 04:07 PM, Robert Withers wrote:
Yes, the first step is to write a bunch of tests.  You are testing the math with (a * (1/a)) == 1, a good test. It's in the queue, especially the multiply, divide and monomials testing, as you suggest. All of it, not just the outer layer with something this complex.

thank you,
Robert

On 12/21/2015 04:01 PM, Nicolas Cellier wrote:
Since GF is all about algebra and arithmetic it should be possible to write tests and check some invariants...
For example, this works with SecureSession-rww.70:

    | gf |
    GenericGF xxinitialize.
    gf := GenericGF RS_256_A.
    1 to: gf size - 1 do: [:a |
        self assert: (gf multiply: a scalar: (gf inverse: a)) = 1]

One could test polynom product vs division for example, for some monomials...

2015-12-21 1:19 GMT+01:00 Robert Withers <[hidden email]>:
Hi Nicolas,

I tried the fixes you suggested (1 and 3) and it still isn't working. I published tothe repository with these changes, though the pipeline is broken as I rewire my skull (intro frames). This will take several days to complete, I think, although progress is being made. Then I will be able to turn my full attention back to RS and Arrays for starters. Please pardon the delay, but I think frames will bring an advantage, perhaps not performance but design and flexibility.

Many thanks for taking a close look at RS,
robert


On 12/20/2015 12:18 PM, Nicolas Cellier wrote:
After a first glimpse, I noted these:

1) GenericGFPoly evaluateAt: does not set the result in the loop...
2) why using an OrderedCollection for the coefficients ? an Array is faster.
   same for exp and log tables of GenericGF
3) GenericGF>>multiply:scalar: you changed <= size into < size but shouldn't...

2015-12-15 12:30 GMT+01:00 Robert Withers <[hidden email]>:
Hi all, sticking with the distribution for discussing Crypto in the base, I am currently trying to stabilize a port of Reed-Solomon such that FEC can be added to SecureSession. I am doing this work in SecureSession. I just posted an update of the GenericGF class, with the Java implementation attached here.

I need this critical code reviewed and tested. You need Cryptography and SecureSession to be included in the catalog. If you can help me with the former, I could help with the latter, if that suits you. Please let me know!

Please load Cryptography(-Pharo) and SecureSession.23 for review.
"ported & refactored GenericGF from the java code. This includes reindexing from 0 to 1. Having no tests, hopefully someone can give a review of this specific class. Where some tests to be developed at this scope, that would be stellar."

I appreciate.
--
. .. .. ^,^ best, robert







--
. .. .. ^,^ robert







-- 
. ..  ...   ^,^    robert
Go Panthers!

-- 
. ..  ...   ^,^    robert
Go Panthers!