LargeInteger.st
changeset 4284 20f47ad19322
parent 4283 cb0eee96df13
child 4286 2cfcccd2f1ca
equal deleted inserted replaced
4283:cb0eee96df13 4284:20f47ad19322
  3381          */
  3381          */
  3382         while (_index < _comLen) {
  3382         while (_index < _comLen) {
  3383             unsigned int _sum;
  3383             unsigned int _sum;
  3384 
  3384 
  3385             _sum = _carry 
  3385             _sum = _carry 
  3386                    + *(unsigned short *)(&(_myDigits[_index - 1]))
  3386                    + ((unsigned short *)(&(_myDigits[_index - 1])))[0]
  3387                    + *(unsigned short *)(&(_otherDigits[_index - 1]));
  3387                    + ((unsigned short *)(&(_otherDigits[_index - 1])))[0];
  3388             _carry = _sum >> 16;
  3388             _carry = _sum >> 16;
  3389             /* _sum = _sum & 0xFFFF; */
  3389             /* _sum = _sum & 0xFFFF; */
  3390             *(unsigned short *)(&(_newDigits[_index - 1])) = _sum;
  3390             *(unsigned short *)(&(_newDigits[_index - 1])) = _sum;
  3391             _index += 2;
  3391             _index += 2;
  3392         }
  3392         }
       
  3393 #else
       
  3394 # ifdef sparc
       
  3395         /*
       
  3396          * add short-wise
       
  3397          * accessing bytes at: [index-1][index]
       
  3398          */
       
  3399         while (_index < _comLen) {
       
  3400             unsigned int _sum;
       
  3401             unsigned short _v1, _v2;
       
  3402 
       
  3403             _v1 = ((unsigned short *)(&(_myDigits[_index - 1])))[0];
       
  3404             _v2 = ((unsigned short *)(&(_otherDigits[_index - 1])))[0];
       
  3405             _sum = _carry + (_v1>>8) + (_v2>>8);
       
  3406             _carry = _sum >> 8;
       
  3407             _newDigits[_index - 1] = _sum;
       
  3408 
       
  3409             _sum = _carry + (_v1 & 0xFF) + (_v2 & 0xFF);
       
  3410             _carry = _sum >> 8;
       
  3411             _newDigits[_index] = _sum;
       
  3412             _index += 2;
       
  3413         }
       
  3414 # endif
  3393 #endif /* __LSBFIRST */
  3415 #endif /* __LSBFIRST */
  3394 
  3416 
  3395         /*
  3417         /*
  3396          * add byte-wise
  3418          * add byte-wise
  3397          */
  3419          */
  4039 ! !
  4061 ! !
  4040 
  4062 
  4041 !LargeInteger class methodsFor:'documentation'!
  4063 !LargeInteger class methodsFor:'documentation'!
  4042 
  4064 
  4043 version
  4065 version
  4044     ^ '$Header: /cvs/stx/stx/libbasic/LargeInteger.st,v 1.127 1999-06-06 19:17:28 cg Exp $'
  4066     ^ '$Header: /cvs/stx/stx/libbasic/LargeInteger.st,v 1.128 1999-06-06 20:47:21 cg Exp $'
  4045 ! !
  4067 ! !