+ fn rematrix(&mut self) {
+ let maxbin = self.chdata[0].endmant.min(self.chdata[1].endmant);
+ if self.rematflg[0] {
+ let end = maxbin.min(25);
+ for bin in 13..end {
+ let s = self.chdata[0].mant[bin] + self.chdata[1].mant[bin];
+ let d = self.chdata[0].mant[bin] - self.chdata[1].mant[bin];
+ self.chdata[0].mant[bin] = d;
+ self.chdata[1].mant[bin] = s;
+ }
+ if maxbin <= 25 { return; }
+ }
+ if self.rematflg[1] {
+ let end = maxbin.min(37);
+ for bin in 25..end {
+ let s = self.chdata[0].mant[bin] + self.chdata[1].mant[bin];
+ let d = self.chdata[0].mant[bin] - self.chdata[1].mant[bin];
+ self.chdata[0].mant[bin] = d;
+ self.chdata[1].mant[bin] = s;
+ }
+ if maxbin <= 37 { return; }
+ }
+ if self.rematflg[2] {
+ let end = maxbin.min(61);
+ for bin in 37..end {
+ let s = self.chdata[0].mant[bin] + self.chdata[1].mant[bin];
+ let d = self.chdata[0].mant[bin] - self.chdata[1].mant[bin];
+ self.chdata[0].mant[bin] = d;
+ self.chdata[1].mant[bin] = s;
+ }
+ if maxbin <= 61 { return; }
+ }
+ if self.rematflg[3] {
+ let end = maxbin;
+ for bin in 61..end {
+ let s = self.chdata[0].mant[bin] + self.chdata[1].mant[bin];
+ let d = self.chdata[0].mant[bin] - self.chdata[1].mant[bin];
+ self.chdata[0].mant[bin] = d;
+ self.chdata[1].mant[bin] = s;
+ }
+ }
+ }