GCC Wikia
Advertisement

このページを編集する際は,編集に関する方針に従ってください.[]

概要[]

引数[]

実装[]

 272 /* Add the significands of A and B, placing the result in R.  Return
 273    true if there was carry out of the most significant word.  */
274 
275 static inline bool
276 add_significands (REAL_VALUE_TYPE *r, const REAL_VALUE_TYPE *a,
277                   const REAL_VALUE_TYPE *b)
278 {
279   bool carry = false;
280   int i;
281 
282   for (i = 0; i < SIGSZ; ++i)
283     {

*aiを使用しなくても計算可能にみえる
**配列へのアクセスを減らしたいということか

284       unsigned long ai = a->sig[i];
285       unsigned long ri = ai + b->sig[i];
286 
287       if (carry)
288         {
289           carry = ri < ai;

*carry分を加えて0になる場合もcarryが発生している

290           carry |= ++ri == 0;
291         }
292       else
293         carry = ri < ai;
294 
295       r->sig[i] = ri;
296     }
297 
298   return carry;
299 }


リンク元

Advertisement