X-Git-Url: https://pd.if.org/git/?a=blobdiff_plain;f=tomsfastmath%2Fsrc%2Faddsub%2Ffp_cmp_d.c;fp=tomsfastmath%2Fsrc%2Faddsub%2Ffp_cmp_d.c;h=c2fb2ec8ad7161bc28468ee6b5a052a5335bdefa;hb=66bc25938679f1d6a1d1200f329093d82a5e99b4;hp=0000000000000000000000000000000000000000;hpb=a52ee0733f420ca20224049260d6fc5cf7d8f621;p=zpackage diff --git a/tomsfastmath/src/addsub/fp_cmp_d.c b/tomsfastmath/src/addsub/fp_cmp_d.c new file mode 100644 index 0000000..c2fb2ec --- /dev/null +++ b/tomsfastmath/src/addsub/fp_cmp_d.c @@ -0,0 +1,38 @@ +/* TomsFastMath, a fast ISO C bignum library. + * + * This project is meant to fill in where LibTomMath + * falls short. That is speed ;-) + * + * This project is public domain and free for all purposes. + * + * Tom St Denis, tomstdenis@gmail.com + */ +#include + +/* compare against a single digit */ +int fp_cmp_d(fp_int *a, fp_digit b) +{ + /* compare based on sign */ + if ((b && a->used == 0) || a->sign == FP_NEG) { + return FP_LT; + } + + /* compare based on magnitude */ + if (a->used > 1) { + return FP_GT; + } + + /* compare the only digit of a to b */ + if (a->dp[0] > b) { + return FP_GT; + } else if (a->dp[0] < b) { + return FP_LT; + } else { + return FP_EQ; + } + +} + +/* $Source$ */ +/* $Revision$ */ +/* $Date$ */