1

Let's say I have a method like this:

public byte[] generateCoefficientsOfPolynomials(int k ,byte [] file,Random rnd) {

    for (int i=0;i<file.length;i++) {
        // for each iteration it creates a vector of size 3
    }

    // some other code here  

    // here we call the method below where allRndCoefficients is each
    // array taken from this method for instance [12,13,-20] and so on
    con.sumOfCoefficients(allRndCoefficients, k);

    // return type here
}

What I will get from this method will be something like those arrays: For the first iteration [12,13,-20], for the second iteration [123,-25,-56] and so on.

Note: Those arrays have random values since I have used rnd.nextBytes(k);, where k is the number of elements in the array.

Now what I want to achieve is to add those arrays element by element together. let say [12,13,-20] to add with [123,-25,56] and save the result. Then this result we saved we want to add with the array which will be produced by third iteration of the above method.

I wrote the following code to accomplish this:

public byte[] sumOfCoefficients(byte [] temp,int k) {
    galoaField256 d = new galoaField256 (); // create new reference 
    d.setGeneratorPolynom(3);
    d.getGeneratorPolynom();
    d.setString("0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f");
    d.getString();
    d.loadExp();
    d.loadLog();
    byte [] initialSum=new byte [k];
    for(int i=0;i<k;i++) {
        initialSum[i]=(byte)d.add(initialSum[i],temp[i]);
    }

    System.out.println("The sum is" +Arrays.toString(initialSum));

    return initialSum;
}

where byte[] temp is the arrays we take after each iteration of the first method generateCoefficientsOfPolynomials.

Unfortunately, the sumation of two vectors is not done here. What i got are exactly the arrays which are produced by the first method meaning that every time we add the array taken from first method whit an array of 0 elements, so the initialSum array does not save its state for each iteration of the first method. Can anyone save my day and tell me what is wrong with my code?

1
  • off topic: please consider using CamelCase notation for your code. Also, which API are you using? And why are you using bytes instead of integers? Commented May 15, 2016 at 11:13

1 Answer 1

1

Currently, your initialSum[i] loop calculation is defining a blank array element and adding that blank element to temp[i] with each iteration and not last element. Consider conditionally handling the cumulative summation and notice the use of [i-1] index to capture last element value:

for(int i=0; i<k; i++) {

     if (i==0) { 
          initialSum[i] = temp[i];
     } else {
          initialSum[i] = (byte)d.add(initialSum[i-1],temp[i]);
     }

}
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.