void judge_unary(dec64 first, dec64 expected, dec64 actual, char * name, char * op, char * comment) { if (compare(expected, actual)) { nr_pass += 1; if (level >= 3) { printf("\n\npass %s: %s", name, comment); printf("\n%-4s", op); print_dec64(first); printf("\n%-4s", "="); print_dec64(actual); } } else { nr_fail += 1; if (level >= 1) { printf("\n\nFAIL %s: %s", name, comment); if (level >= 2) { printf("\n%-4s", op); print_dec64(first); printf("\n%-4s", "?"); print_dec64(actual); printf("\n%-4s", "="); print_dec64(expected); } } } }
void p(dec64 number, dec64_string_char name[]) { if (name) { printf("\n[%s ", name); } else { printf("\n["); } print_dec64(number); printf("]"); }
static void judge_unary( dec64 first, dec64 expected, dec64 actual, char * name, char * op, char * comment ) { if (dec64_is_equal(expected, actual) == DEC64_TRUE) { nr_pass += 1; if (level >= 3) { printf("\n\npass %s: %s", name, comment); printf("\n%-4s", op); print_dec64(first); printf("\n%-4s", "="); print_dec64(actual); } } else { nr_fail += 1; if (level >= 1) { printf("\n\nFAIL %s: %s", name, comment); if (level >= 2) { printf("\n%-4s", op); print_dec64(first); printf("\n%-4s", "?"); print_dec64(actual); printf(" (error "); print_dec64(dec64_subtract(actual, expected)); printf(")\n%-4s", "="); print_dec64(expected); } } } }
int main(){ mpd_context_t ctx; mpd_t *result1; mpd_t *result2; mpd_t *result3; mpd_setminalloc(MPD_MINALLOC_MAX); mpd_ieee_context(&ctx, 160); result1 = mpd_qnew(); result2 = mpd_qnew(); result3 = mpd_qnew(); //mpd_qset_u64(result1,2ULL,&ctx,&status); dec32_to_mpd(&ctx,result1,dec32); dec64_to_mpd(&ctx,result2,dec64); dec128_to_mpd(&ctx,result3,dec128); //mpd_qset_u64(result2,4ULL,&ctx,&status); //mpd_qpow(result3,result1,result2,&ctx,&status); mpd_print(result1); mpd_print(result2); mpd_print(result3); /*print_mpd(result1); print_mpd(result2); print_mpd(result3);*/ _Decimal32 ddd = mpd_to_dec32(result1); printf ("Compare is %d\n", memcmp(&ddd,&dec32,sizeof(_Decimal32))); printf ("0x%x\n0x%x\n", *((uint32_t *)(void *)&ddd), *((uint32_t *)(void *)&dec32)); _Decimal64 ddd64 = mpd_to_dec64(result2); printf ("Compare is %d\n", memcmp(&ddd64,&dec64,sizeof(_Decimal64))); printf ("0x%I64x\n0x%I64x\n", *((uint64_t *)(void *)&ddd64), *((uint64_t *)(void *)&dec64)); _Decimal128 ddd128 = mpd_to_dec128(result3); printf ("Compare is %d\n", memcmp(&ddd128,&dec128,sizeof(_Decimal128))); printf ("0x%I64d\n0x%I64x\n", *((uint64_t *)(void *)&ddd128), *((uint64_t *)(void *)&dec128)); mpd_del(result1); mpd_del(result2); mpd_del(result3); print_dec32(&dec32); print_dec64(&dec64); print_dec128(&dec128); return 0; }