メインページ   モジュール   データ構造   ファイル一覧   データフィールド   グローバル  

compare.c

解説を見る。
00001 #include "multiprec.h"
00002 
00020 inline int
00021 ymp_compare_abs(mp_cref_t lhs, mp_cref_t rhs)
00022 {
00023   if (lhs->used > rhs->used)
00024     {
00025       return 1;
00026     }
00027   else if (lhs->used < rhs->used)
00028     {
00029       return -1;
00030     }
00031   else
00032     {
00033       size_t i;
00034       for (i=lhs->used; i-- > 0; )
00035         {
00036           if (lhs->digits[i] > rhs->digits[i]) return 1;
00037           else if (lhs->digits[i] < rhs->digits[i]) return -1;
00038         }
00039     }
00040   return 0;
00041 }
00042 
00043 
00053 int
00054 ymp_compare(mp_cref_t lhs, mp_cref_t rhs)
00055 {
00056   if (lhs->sign != rhs->sign)
00057     return rhs->sign - lhs->sign;
00058   else if (lhs->sign)
00059     return ymp_compare_abs(rhs, lhs);
00060   else
00061     return ymp_compare_abs(lhs, rhs);
00062 }
00063 
00073 int
00074 ymp_compare_digit(mp_cref_t lhs, digit_t rhs)
00075 {
00076   if (lhs->sign) return -1;
00077 
00078   if (lhs->used > 1) return 1;
00079   else if (lhs->used == 1)
00080     {
00081       if (lhs->digits[0] > rhs) return 1;
00082       else if (lhs->digits[0] < rhs) return -1;
00083       else return 0;
00084     }
00085   else return -(rhs!=0);
00086 }
00087 
00088 
00094 int
00095 ymp_is_zero(mp_cref_t self)
00096 {
00097   return !self || !self->used || (self->used==1 && !self->digits[0]);
00098 }
00099 
00105 int
00106 ymp_is_even(mp_cref_t self)
00107 {
00108   return !self || !self->used || !(self->digits[0] & 0x01);
00109 }
00110 

YMPに対してTue Mar 16 19:23:50 2004に生成されました。 doxygen1.2.14 作者 Dimitri van Heesch, © 1997-2002