このページを編集する際は,編集に関する方針に従ってください.[]
概要[]
- gcc-4.1.0/gcc/real.cにて定義
- 仮数同士の加算
- r = a + b
引数[]
- REAL_VALUE_TYPE *r
- const REAL_VALUE_TYPE *a
- const REAL_VALUE_TYPE *b
実装[]
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 }