#include #include #include #include "rt_fix.h" int main(int argc, char **argv) { rt_fix fix_1; rt_fix fix_2; rt_fix fix_3; printf("Testing different init functions:\n"); printf("---------------------------------\n"); rt_fix_init_i(&fix_1, 20); printf("rt_fix_init_i(20) = %d\n", rt_fix_toi(fix_1)); rt_fix_init_i(&fix_1, -333); printf("rt_fix_init_i(-333) = %d\n", rt_fix_toi(fix_1)); rt_fix_init_d(&fix_1, M_PI); printf("rt_fix_init_i(PI) = %f\n", rt_fix_tod(fix_1)); rt_fix_init_mask(&fix_1, 0x77D79D40, 3); printf("rt_fix_init_mask(0x77D79D40, 3) = %f\n", rt_fix_tod(fix_1)); rt_fix_init_d(&fix_1, 1.0 / 3.0); printf("rt_fix_init_d(1.0 / 3.0) = %f\n", rt_fix_tod(fix_1)); rt_fix_init_d(&fix_1, -1.0 / 2.0); printf("rt_fix_init_d(-1.0 / 2.0) = %f\n", rt_fix_tod(fix_1)); printf("\n"); printf("Test of addition:\n"); printf("-----------------\n"); rt_fix_init_i(&fix_1, 1); rt_fix_init_i(&fix_2, 2); printf("%d + %d = %d\n", rt_fix_toi(fix_1), rt_fix_toi(fix_2), rt_fix_toi(rt_fix_add(fix_1, fix_2))); rt_fix_init_i(&fix_1, 1); rt_fix_init_i(&fix_2, -3); printf("%d + %d = %d\n", rt_fix_toi(fix_1), rt_fix_toi(fix_2), rt_fix_toi(rt_fix_add(fix_1, fix_2))); rt_fix_init_i(&fix_1, 2); rt_fix_init_i(&fix_2, 1); printf("%d + %d = %d\n", rt_fix_toi(fix_1), rt_fix_toi(fix_2), rt_fix_toi(rt_fix_add(fix_1, fix_2))); rt_fix_init_i(&fix_1, -3); rt_fix_init_i(&fix_2, 1); printf("%d + %d = %d\n", rt_fix_toi(fix_1), rt_fix_toi(fix_2), rt_fix_toi(rt_fix_add(fix_1, fix_2))); rt_fix_init_i(&fix_1, 200); rt_fix_init_i(&fix_2, 200); printf("%d + %d = %d\n", rt_fix_toi(fix_1), rt_fix_toi(fix_2), rt_fix_toi(rt_fix_add(fix_1, fix_2))); rt_fix_init_i(&fix_1, -200); rt_fix_init_i(&fix_2, -200); printf("%d + (%d) = %d\n", rt_fix_toi(fix_1), rt_fix_toi(fix_2), rt_fix_toi(rt_fix_add(fix_1, fix_2))); rt_fix_init_d(&fix_1, M_PI); rt_fix_init_d(&fix_2, 0.707106781); printf("%f + %f = %f\n", rt_fix_tod(fix_1), rt_fix_tod(fix_2), rt_fix_tod(rt_fix_add(fix_1, fix_2))); rt_fix_init_d(&fix_1, M_PI); rt_fix_init_d(&fix_2, -0.707106781); printf("%f + (%f) = %f\n", rt_fix_tod(fix_1), rt_fix_tod(fix_2), rt_fix_tod(rt_fix_add(fix_1, fix_2))); rt_fix_init_d(&fix_1, -M_PI); rt_fix_init_d(&fix_2, 0.707106781); printf("%f + %f = %f\n", rt_fix_tod(fix_1), rt_fix_tod(fix_2), rt_fix_tod(rt_fix_add(fix_1, fix_2))); rt_fix_init_d(&fix_1, M_PI); rt_fix_init_d(&fix_2, M_PI); printf("%f + %f = %f\n", rt_fix_tod(fix_1), rt_fix_tod(fix_2), rt_fix_tod(rt_fix_add(fix_1, fix_2))); printf("\n"); printf("Test of subtraction:\n"); printf("--------------------\n"); rt_fix_init_i(&fix_1, 1); rt_fix_init_i(&fix_2, 2); printf("%d - %d = %d\n", rt_fix_toi(fix_1), rt_fix_toi(fix_2), rt_fix_toi(rt_fix_sub(fix_1, fix_2))); rt_fix_init_i(&fix_1, 1); rt_fix_init_i(&fix_2, -3); printf("%d - (%d) = %d\n", rt_fix_toi(fix_1), rt_fix_toi(fix_2), rt_fix_toi(rt_fix_sub(fix_1, fix_2))); rt_fix_init_i(&fix_1, 1); rt_fix_init_i(&fix_2, -1); printf("%d - (%d) = %d\n", rt_fix_toi(fix_1), rt_fix_toi(fix_2), rt_fix_toi(rt_fix_sub(fix_1, fix_2))); rt_fix_init_i(&fix_1, 2); rt_fix_init_i(&fix_2, 1); printf("%d - %d = %d\n", rt_fix_toi(fix_1), rt_fix_toi(fix_2), rt_fix_toi(rt_fix_sub(fix_1, fix_2))); rt_fix_init_i(&fix_1, -3); rt_fix_init_i(&fix_2, 1); printf("%d - %d = %d\n", rt_fix_toi(fix_1), rt_fix_toi(fix_2), rt_fix_toi(rt_fix_sub(fix_1, fix_2))); rt_fix_init_i(&fix_1, 200); rt_fix_init_i(&fix_2, 200); printf("%d - %d = %d\n", rt_fix_toi(fix_1), rt_fix_toi(fix_2), rt_fix_toi(rt_fix_sub(fix_1, fix_2))); rt_fix_init_i(&fix_1, -200); rt_fix_init_i(&fix_2, -200); printf("%d - (%d) = %d\n", rt_fix_toi(fix_1), rt_fix_toi(fix_2), rt_fix_toi(rt_fix_sub(fix_1, fix_2))); rt_fix_init_d(&fix_1, M_PI); rt_fix_init_d(&fix_2, 0.707106781); printf("%f - %f = %f\n", rt_fix_tod(fix_1), rt_fix_tod(fix_2), rt_fix_tod(rt_fix_sub(fix_1, fix_2))); rt_fix_init_d(&fix_1, M_PI); rt_fix_init_d(&fix_2, -0.707106781); printf("%f - (%f) = %f\n", rt_fix_tod(fix_1), rt_fix_tod(fix_2), rt_fix_tod(rt_fix_sub(fix_1, fix_2))); rt_fix_init_d(&fix_1, -M_PI); rt_fix_init_d(&fix_2, 0.707106781); printf("%f - %f = %f\n", rt_fix_tod(fix_1), rt_fix_tod(fix_2), rt_fix_tod(rt_fix_sub(fix_1, fix_2))); rt_fix_init_d(&fix_1, M_PI); rt_fix_init_d(&fix_2, M_PI); printf("%f - %f = %f\n", rt_fix_tod(fix_1), rt_fix_tod(fix_2), rt_fix_tod(rt_fix_sub(fix_1, fix_2))); printf("\n"); printf("Test of multiplication:\n"); printf("-----------------------\n"); rt_fix_init_i(&fix_1, 1); rt_fix_init_i(&fix_2, 2); printf("%d * %d = %d\n", rt_fix_toi(fix_1), rt_fix_toi(fix_2), rt_fix_toi(rt_fix_mul(fix_1, fix_2))); rt_fix_init_i(&fix_1, 1); rt_fix_init_i(&fix_2, -3); printf("%d * (%d) = %d\n", rt_fix_toi(fix_1), rt_fix_toi(fix_2), rt_fix_toi(rt_fix_mul(fix_1, fix_2))); rt_fix_init_i(&fix_1, 2); rt_fix_init_i(&fix_2, 1); printf("%d * %d = %d\n", rt_fix_toi(fix_1), rt_fix_toi(fix_2), rt_fix_toi(rt_fix_mul(fix_1, fix_2))); rt_fix_init_i(&fix_1, -3); rt_fix_init_i(&fix_2, 1); printf("%d * %d = %d\n", rt_fix_toi(fix_1), rt_fix_toi(fix_2), rt_fix_toi(rt_fix_mul(fix_1, fix_2))); rt_fix_init_i(&fix_1, 1073741824); if(rt_fix_errtstset(fix_3 = rt_fix_mul(fix_1, fix_1))) { if(rt_fix_errisset(fix_3, RT_FIX_OV)) { printf("Result overflowed\t"); } if(rt_fix_errisset(fix_3, RT_FIX_UV)) { printf("Result underflowed\t"); } if(rt_fix_errisset(fix_3, RT_FIX_UNDEFINED)) { printf("Result undefined\t"); } } printf("%d * %d = %d\n", rt_fix_toi(fix_1), rt_fix_toi(fix_1), rt_fix_toi(fix_3)); rt_fix_init_i(&fix_1, 200); printf("%d * %d = %d\n", rt_fix_toi(fix_1), rt_fix_toi(fix_1), rt_fix_toi(rt_fix_mul(fix_1, fix_1))); rt_fix_init_i(&fix_1, -200); printf("%d * (%d) = %d\n", rt_fix_toi(fix_1), rt_fix_toi(fix_1), rt_fix_toi(rt_fix_mul(fix_1, fix_1))); rt_fix_init_d(&fix_1, M_PI); rt_fix_init_d(&fix_2, 0.707106781); printf("%f * %f = %f\n", rt_fix_tod(fix_1), rt_fix_tod(fix_2), rt_fix_tod(rt_fix_mul(fix_1, fix_2))); rt_fix_init_d(&fix_1, M_PI); rt_fix_init_d(&fix_2, -0.707106781); printf("%f * (%f) = %f\n", rt_fix_tod(fix_1), rt_fix_tod(fix_2), rt_fix_tod(rt_fix_mul(fix_1, fix_2))); rt_fix_init_d(&fix_1, -M_PI); rt_fix_init_d(&fix_2, 0.707106781); printf("%f * %f = %f\n", rt_fix_tod(fix_1), rt_fix_tod(fix_2), rt_fix_tod(rt_fix_mul(fix_1, fix_2))); rt_fix_init_d(&fix_1, M_PI); printf("%f * %f = %f\n", rt_fix_tod(fix_1), rt_fix_tod(fix_1), rt_fix_tod(rt_fix_mul(fix_1, fix_1))); rt_fix_init_i(&fix_1, -3); rt_fix_init_i(&fix_2, -1); printf("%d * %d = %d\n", rt_fix_toi(fix_1), rt_fix_toi(fix_2), rt_fix_toi(rt_fix_mul(fix_1, fix_2))); printf("\n"); printf("Test of division:\n"); printf("------------------\n"); rt_fix_init_d(&fix_1, 0.); rt_fix_init_d(&fix_2, 0.); if(rt_fix_errtstset(fix_3 = rt_fix_div(fix_1, fix_2))) { if(rt_fix_errisset(fix_3, RT_FIX_OV)) { printf("Result overflowed\t"); } if(rt_fix_errisset(fix_3, RT_FIX_UV)) { printf("Result underflowed\t"); } if(rt_fix_errisset(fix_3, RT_FIX_UNDEFINED)) { printf("Result undefined\t"); } } printf("%f / %f = %f\n", rt_fix_tod(fix_1), rt_fix_tod(fix_2), rt_fix_tod(fix_3)); rt_fix_init_d(&fix_1, 0.); rt_fix_init_d(&fix_2, 2.); printf("%f / %f = %f\n", rt_fix_tod(fix_1), rt_fix_tod(fix_2), rt_fix_tod(rt_fix_div(fix_1, fix_2))); rt_fix_init_d(&fix_1, 0.865997); rt_fix_init_d(&fix_2, 0.5); printf("%f / %f = %f\n", rt_fix_tod(fix_1), rt_fix_tod(fix_2), rt_fix_tod(rt_fix_div(fix_1, fix_2))); rt_fix_init_i(&fix_1, 1); rt_fix_init_d(&fix_2, 0.01); printf("%d / %f = %f\n", rt_fix_toi(fix_1), rt_fix_tod(fix_2), rt_fix_tod(rt_fix_div(fix_1, fix_2))); rt_fix_init_i(&fix_1, -1); rt_fix_init_d(&fix_2, 0.01); printf("%d / %f = %f\n", rt_fix_toi(fix_1), rt_fix_tod(fix_2), rt_fix_tod(rt_fix_div(fix_1, fix_2))); rt_fix_init_i(&fix_1, 1); rt_fix_init_d(&fix_2, -0.01); printf("%d / %f = %f\n", rt_fix_toi(fix_1), rt_fix_tod(fix_2), rt_fix_tod(rt_fix_div(fix_1, fix_2))); rt_fix_init_i(&fix_1, 1); rt_fix_init_i(&fix_2, 2); printf("%d / %d = %f\n", rt_fix_toi(fix_1), rt_fix_toi(fix_2), rt_fix_tod(rt_fix_div(fix_1, fix_2))); rt_fix_init_i(&fix_1, 1); rt_fix_init_i(&fix_2, -3); printf("%d / (%d) = %f\n", rt_fix_toi(fix_1), rt_fix_toi(fix_2), rt_fix_tod(rt_fix_div(fix_1, fix_2))); rt_fix_init_i(&fix_1, 2); rt_fix_init_i(&fix_2, 1); printf("%d / %d = %f\n", rt_fix_toi(fix_1), rt_fix_toi(fix_2), rt_fix_tod(rt_fix_div(fix_1, fix_2))); rt_fix_init_i(&fix_1, -3); rt_fix_init_i(&fix_2, 1); printf("%d / %d = %f\n", rt_fix_toi(fix_1), rt_fix_toi(fix_2), rt_fix_tod(rt_fix_div(fix_1, fix_2))); rt_fix_init_i(&fix_1, 200); rt_fix_init_i(&fix_2, 200); printf("%d / %d = %f\n", rt_fix_toi(fix_1), rt_fix_toi(fix_2), rt_fix_tod(rt_fix_div(fix_1, fix_2))); rt_fix_init_i(&fix_1, -200); rt_fix_init_i(&fix_2, -200); printf("%d / (%d) = %f\n", rt_fix_toi(fix_1), rt_fix_toi(fix_2), rt_fix_tod(rt_fix_div(fix_1, fix_2))); rt_fix_init_d(&fix_1, M_PI); rt_fix_init_d(&fix_2, 0.707106781); printf("%f / %f = %f\n", rt_fix_tod(fix_1), rt_fix_tod(fix_2), rt_fix_tod(rt_fix_div(fix_1, fix_2))); rt_fix_init_d(&fix_1, M_PI); rt_fix_init_d(&fix_2, -0.707106781); printf("%f / (%f) = %f\n", rt_fix_tod(fix_1), rt_fix_tod(fix_2), rt_fix_tod(rt_fix_div(fix_1, fix_2))); rt_fix_init_d(&fix_1, -M_PI); rt_fix_init_d(&fix_2, 0.707106781); printf("%f / %f = %f\n", rt_fix_tod(fix_1), rt_fix_tod(fix_2), rt_fix_tod(rt_fix_div(fix_1, fix_2))); rt_fix_init_d(&fix_1, M_PI); rt_fix_init_d(&fix_2, M_PI); printf("%f / %f = %f\n", rt_fix_tod(fix_1), rt_fix_tod(fix_2), rt_fix_tod(rt_fix_div(fix_1, fix_2))); fix_1 = rt_fix_max; rt_fix_init_d(&fix_2, 0.01); printf("%f / %f = %f\n", rt_fix_tod(fix_1), rt_fix_tod(fix_2), rt_fix_tod(rt_fix_div(fix_1, fix_2))); fix_1 = rt_fix_min; rt_fix_init_d(&fix_2, 0.01); printf("%f / %f = %f\n", rt_fix_tod(fix_1), rt_fix_tod(fix_2), rt_fix_tod(rt_fix_div(fix_1, fix_2))); fix_1 = rt_fix_max; rt_fix_init_d(&fix_2, 0.0); printf("%f / %f = %f\n", rt_fix_tod(fix_1), rt_fix_tod(fix_2), rt_fix_tod(rt_fix_div(fix_1, fix_2))); fix_1 = rt_fix_min; rt_fix_init_d(&fix_2, 0.0); printf("%f / %f = %f\n", rt_fix_tod(fix_1), rt_fix_tod(fix_2), rt_fix_tod(rt_fix_div(fix_1, fix_2))); rt_fix_init_d(&fix_1, 269167349); rt_fix_init_d(&fix_2, 269167349); printf("%f / %f = %f\n", rt_fix_tod(fix_1), rt_fix_tod(fix_2), rt_fix_tod(rt_fix_div(fix_1, fix_2))); printf("\n"); printf("Test of y = frac(fix)\n"); printf("---------------------\n"); rt_fix_init_i(&fix_1, 7); rt_fix_init_i(&fix_2, 3); printf("frac(%f) = %f\n", rt_fix_tod(rt_fix_div(fix_1, fix_2)), rt_fix_tod(rt_fix_frac(rt_fix_div(fix_1, fix_2)))); rt_fix_init_d(&fix_1, 9.0072); rt_fix_init_i(&fix_2, -3); printf("frac(%f) = %f\n", rt_fix_tod(rt_fix_div(fix_1, fix_2)), rt_fix_tod(rt_fix_frac(rt_fix_div(fix_1, fix_2)))); rt_fix_init_d(&fix_1, 1. / 4.); printf("frac(%f) = %f\n", rt_fix_tod(fix_1), rt_fix_tod(rt_fix_frac(fix_1))); printf("\n"); printf("Test of y = floor(fix)\n"); printf("----------------------\n"); rt_fix_init_d(&fix_1, 1. + (1. / 3.)); printf("floor(%f) = %f\n", rt_fix_tod(fix_1), rt_fix_tod(rt_fix_floor(fix_1))); rt_fix_init_d(&fix_1, -1. - (1. / 3.)); printf("floor(%f) = %f\n", rt_fix_tod(fix_1), rt_fix_tod(rt_fix_floor(fix_1))); printf("\n"); printf("Test of y = ceil(fix)\n"); printf("---------------------\n"); rt_fix_init_d(&fix_1, 1. + (1. / 3.)); printf("ceil(%f) = %f\n", rt_fix_tod(fix_1), rt_fix_tod(rt_fix_ceil(fix_1))); rt_fix_init_d(&fix_1, -1. - (1. / 3.)); printf("ceil(%f) = %f\n", rt_fix_tod(fix_1), rt_fix_tod(rt_fix_ceil(fix_1))); printf("\n"); printf("Test of y = abs(fix)\n"); printf("--------------------\n"); rt_fix_init_d(&fix_1, 1. + (1. / 3.)); printf("abs(%f) = %f\n", rt_fix_tod(fix_1), rt_fix_tod(rt_fix_abs(fix_1))); rt_fix_init_d(&fix_1, -1. - (1. / 3.)); printf("abs(%f) = %f\n", rt_fix_tod(fix_1), rt_fix_tod(rt_fix_abs(fix_1))); printf("\n"); printf("Test of y = modf(fix, &integral_part)\n"); printf("-------------------------------------\n"); rt_fix_init_d(&fix_1, 1. + (1. / 3.)); printf("modf(%f, &int_part) = %f\n", rt_fix_tod(fix_1), rt_fix_tod(rt_fix_modf(fix_1, &fix_2))); printf("int_part = %f\n", rt_fix_tod(fix_2)); rt_fix_init_d(&fix_1, -1. - (1. / 3.)); printf("modf(%f, &int_part) = %f\n", rt_fix_tod(fix_1), rt_fix_tod(rt_fix_modf(fix_1, &fix_2))); printf("int_part = %f\n", rt_fix_tod(fix_2)); printf("\n"); printf("Test of y = round(fix)\n"); printf("----------------------\n"); rt_fix_init_d(&fix_1, 0.3); printf("round(%f) = %f\n", rt_fix_tod(fix_1), rt_fix_tod(rt_fix_round(fix_1))); rt_fix_init_d(&fix_1, 0.5); printf("round(%f) = %f\n", rt_fix_tod(fix_1), rt_fix_tod(rt_fix_round(fix_1))); rt_fix_init_d(&fix_1, 0.6); printf("round(%f) = %f\n", rt_fix_tod(fix_1), rt_fix_tod(rt_fix_round(fix_1))); rt_fix_init_d(&fix_1, -0.3); printf("round(%f) = %f\n", rt_fix_tod(fix_1), rt_fix_tod(rt_fix_round(fix_1))); rt_fix_init_d(&fix_1, -0.5); printf("round(%f) = %f\n", rt_fix_tod(fix_1), rt_fix_tod(rt_fix_round(fix_1))); rt_fix_init_d(&fix_1, -0.6); printf("round(%f) = %f\n", rt_fix_tod(fix_1), rt_fix_tod(rt_fix_round(fix_1))); printf("\n"); printf("Test of y = sqrt(fix)\n"); printf("---------------------\n"); rt_fix_init_i(&fix_1, 16); printf("sqrt(%d) = %f\n", rt_fix_toi(fix_1), rt_fix_tod(rt_fix_sqrt(fix_1))); rt_fix_init_i(&fix_1, 19); printf("sqrt(%d) = %f\n", rt_fix_toi(fix_1), rt_fix_tod(rt_fix_sqrt(fix_1))); rt_fix_init_i(&fix_1, 25); printf("sqrt(%d) = %f\n", rt_fix_toi(fix_1), rt_fix_tod(rt_fix_sqrt(fix_1))); rt_fix_init_mask(&fix_1, 3600, 31); printf("sqrt(%d) = %f\n", rt_fix_toi(fix_1), rt_fix_tod(rt_fix_sqrt(fix_1))); rt_fix_init_d(&fix_1, M_PI); printf("sqrt(%f) = %f\n", rt_fix_tod(fix_1), rt_fix_tod(rt_fix_sqrt(fix_1))); printf("\n"); printf("Test of y = sin(fix)\n"); printf("--------------------\n"); rt_fix_init_d(&fix_1, 0.7853); printf("sin(%f) = %f\n", rt_fix_tod(fix_1), rt_fix_tod(rt_fix_sin(fix_1))); rt_fix_init_d(&fix_1, 16.3362); printf("sin(%f) = %f\n", rt_fix_tod(fix_1), rt_fix_tod(rt_fix_sin(fix_1))); rt_fix_init_d(&fix_1, 7.85398); printf("sin(%f) = %f\n", rt_fix_tod(fix_1), rt_fix_tod(rt_fix_sin(fix_1))); rt_fix_init_d(&fix_1, -0.7853); printf("sin(%f) = %f\n", rt_fix_tod(fix_1), rt_fix_tod(rt_fix_sin(fix_1))); rt_fix_init_d(&fix_1, -16.3362); printf("sin(%f) = %f\n", rt_fix_tod(fix_1), rt_fix_tod(rt_fix_sin(fix_1))); rt_fix_init_d(&fix_1, -7.85398); printf("sin(%f) = %f\n", rt_fix_tod(fix_1), rt_fix_tod(rt_fix_sin(fix_1))); printf("\n"); printf("Test of y = asin(fix)\n"); printf("---------------------\n"); rt_fix_init_i(&fix_1, -1); printf("asin(%f) = %f\n", rt_fix_tod(fix_1), rt_fix_tod(rt_fix_asin(fix_1))); rt_fix_init_i(&fix_1, 1); printf("asin(%f) = %f\n", rt_fix_tod(fix_1), rt_fix_tod(rt_fix_asin(fix_1))); rt_fix_init_d(&fix_1, 0.5); printf("asin(%f) = %f\n", rt_fix_tod(fix_1), rt_fix_tod(rt_fix_asin(fix_1))); rt_fix_init_d(&fix_1, 0.7071067); printf("asin(%f) = %f\n", rt_fix_tod(fix_1), rt_fix_tod(rt_fix_asin(fix_1))); rt_fix_init_d(&fix_1, -0.7071067); printf("asin(%f) = %f\n", rt_fix_tod(fix_1), rt_fix_tod(rt_fix_asin(fix_1))); printf("\n"); printf("Test of y = cos(fix)\n"); printf("--------------------\n"); rt_fix_init_d(&fix_1, 0.7853); printf("cos(%f) = %f\n", rt_fix_tod(fix_1), rt_fix_tod(rt_fix_cos(fix_1))); rt_fix_init_d(&fix_1, 16.3362); printf("cos(%f) = %f\n", rt_fix_tod(fix_1), rt_fix_tod(rt_fix_cos(fix_1))); rt_fix_init_d(&fix_1, 7.85398); printf("cos(%f) = %f\n", rt_fix_tod(fix_1), rt_fix_tod(rt_fix_cos(fix_1))); rt_fix_init_d(&fix_1, -0.7853); printf("cos(%f) = %f\n", rt_fix_tod(fix_1), rt_fix_tod(rt_fix_cos(fix_1))); rt_fix_init_d(&fix_1, -16.3362); printf("cos(%f) = %f\n", rt_fix_tod(fix_1), rt_fix_tod(rt_fix_cos(fix_1))); rt_fix_init_d(&fix_1, -7.85398); printf("cos(%f) = %f\n", rt_fix_tod(fix_1), rt_fix_tod(rt_fix_cos(fix_1))); printf("\n"); printf("Test of y = acos(fix)\n"); printf("---------------------\n"); rt_fix_init_i(&fix_1, -1); printf("acos(%f) = %f\n", rt_fix_tod(fix_1), rt_fix_tod(rt_fix_acos(fix_1))); rt_fix_init_i(&fix_1, 1); printf("acos(%f) = %f\n", rt_fix_tod(fix_1), rt_fix_tod(rt_fix_acos(fix_1))); rt_fix_init_d(&fix_1, 0.5); printf("acos(%f) = %f\n", rt_fix_tod(fix_1), rt_fix_tod(rt_fix_acos(fix_1))); rt_fix_init_d(&fix_1, 0.7071067); printf("acos(%f) = %f\n", rt_fix_tod(fix_1), rt_fix_tod(rt_fix_acos(fix_1))); rt_fix_init_d(&fix_1, -0.7071067); printf("acos(%f) = %f\n", rt_fix_tod(fix_1), rt_fix_tod(rt_fix_acos(fix_1))); printf("\n"); printf("Test of y = tan(fix)\n"); printf("--------------------\n"); rt_fix_init_i(&fix_1, 1); printf("tan(%f) = %f\n", rt_fix_tod(fix_1), rt_fix_tod(rt_fix_tan(fix_1))); rt_fix_init_d(&fix_1, 0.785398163); printf("tan(%f) = %f\n", rt_fix_tod(fix_1), rt_fix_tod(rt_fix_tan(fix_1))); rt_fix_init_d(&fix_1, 1.570796327); printf("tan(%f) = %f\n", rt_fix_tod(fix_1), rt_fix_tod(rt_fix_tan(fix_1))); rt_fix_init_d(&fix_1, -1.570796327); printf("tan(%f) = %f\n", rt_fix_tod(fix_1), rt_fix_tod(rt_fix_tan(fix_1))); rt_fix_init_d(&fix_1, -0.785398163); printf("tan(%f) = %f\n", rt_fix_tod(fix_1), rt_fix_tod(rt_fix_tan(fix_1))); rt_fix_init_d(&fix_1, -1); printf("tan(%f) = %f\n", rt_fix_tod(fix_1), rt_fix_tod(rt_fix_tan(fix_1))); printf("\n"); printf("Test of y = atan(fix)\n"); printf("--------------------\n"); rt_fix_init_i(&fix_1, 1); printf("atan(%f) = %f\n", rt_fix_tod(fix_1), rt_fix_tod(rt_fix_atan(fix_1))); rt_fix_init_d(&fix_1, 0.392699081); printf("atan(%f) = %f\n", rt_fix_tod(fix_1), rt_fix_tod(rt_fix_atan(fix_1))); rt_fix_init_d(&fix_1, 1.414213562); printf("atan(%f) = %f\n", rt_fix_tod(fix_1), rt_fix_tod(rt_fix_atan(fix_1))); rt_fix_init_d(&fix_1, 10.); printf("atan(%f) = %f\n", rt_fix_tod(fix_1), rt_fix_tod(rt_fix_atan(fix_1))); rt_fix_init_i(&fix_1, -1); printf("atan(%f) = %f\n", rt_fix_tod(fix_1), rt_fix_tod(rt_fix_atan(fix_1))); rt_fix_init_d(&fix_1, -0.392699081); printf("atan(%f) = %f\n", rt_fix_tod(fix_1), rt_fix_tod(rt_fix_atan(fix_1))); rt_fix_init_d(&fix_1, -1.414213562); printf("atan(%f) = %f\n", rt_fix_tod(fix_1), rt_fix_tod(rt_fix_atan(fix_1))); rt_fix_init_d(&fix_1, -10.); printf("atan(%f) = %f\n", rt_fix_tod(fix_1), rt_fix_tod(rt_fix_atan(fix_1))); printf("\n"); printf("Test of y = exp(fix)\n"); printf("--------------------\n"); rt_fix_init_d(&fix_1, -0.9); if(rt_fix_errtstset(fix_3 = rt_fix_exp(fix_1))) { if(rt_fix_errisset(fix_3, RT_FIX_OV)) { printf("Result overflowed\t"); } if(rt_fix_errisset(fix_3, RT_FIX_UV)) { printf("Result underflowed\t"); } if(rt_fix_errisset(fix_3, RT_FIX_UNDEFINED)) { printf("Result undefined\t"); } } printf("exp(%f) = %f\n", rt_fix_tod(fix_1), rt_fix_tod(fix_3)); rt_fix_init_d(&fix_1, -0.5); if(rt_fix_errtstset(fix_3 = rt_fix_exp(fix_1))) { if(rt_fix_errisset(fix_3, RT_FIX_OV)) { printf("Result overflowed\t"); } if(rt_fix_errisset(fix_3, RT_FIX_UV)) { printf("Result underflowed\t"); } if(rt_fix_errisset(fix_3, RT_FIX_UNDEFINED)) { printf("Result undefined\t"); } } printf("exp(%f) = %f\n", rt_fix_tod(fix_1), rt_fix_tod(fix_3)); rt_fix_init_d(&fix_1, -0.1); if(rt_fix_errtstset(fix_3 = rt_fix_exp(fix_1))) { if(rt_fix_errisset(fix_3, RT_FIX_OV)) { printf("Result overflowed\t"); } if(rt_fix_errisset(fix_3, RT_FIX_UV)) { printf("Result underflowed\t"); } if(rt_fix_errisset(fix_3, RT_FIX_UNDEFINED)) { printf("Result undefined\t"); } } printf("exp(%f) = %f\n", rt_fix_tod(fix_1), rt_fix_tod(fix_3)); rt_fix_init_d(&fix_1, 0.1); if(rt_fix_errtstset(fix_3 = rt_fix_exp(fix_1))) { if(rt_fix_errisset(fix_3, RT_FIX_OV)) { printf("Result overflowed\t"); } if(rt_fix_errisset(fix_3, RT_FIX_UV)) { printf("Result underflowed\t"); } if(rt_fix_errisset(fix_3, RT_FIX_UNDEFINED)) { printf("Result undefined\t"); } } printf("exp(%f) = %f\n", rt_fix_tod(fix_1), rt_fix_tod(fix_3)); rt_fix_init_d(&fix_1, 0.5); if(rt_fix_errtstset(fix_3 = rt_fix_exp(fix_1))) { if(rt_fix_errisset(fix_3, RT_FIX_OV)) { printf("Result overflowed\t"); } if(rt_fix_errisset(fix_3, RT_FIX_UV)) { printf("Result underflowed\t"); } if(rt_fix_errisset(fix_3, RT_FIX_UNDEFINED)) { printf("Result undefined\t"); } } printf("exp(%f) = %f\n", rt_fix_tod(fix_1), rt_fix_tod(fix_3)); rt_fix_init_d(&fix_1, 0.9); if(rt_fix_errtstset(fix_3 = rt_fix_exp(fix_1))) { if(rt_fix_errisset(fix_3, RT_FIX_OV)) { printf("Result overflowed\t"); } if(rt_fix_errisset(fix_3, RT_FIX_UV)) { printf("Result underflowed\t"); } if(rt_fix_errisset(fix_3, RT_FIX_UNDEFINED)) { printf("Result undefined\t"); } } printf("exp(%f) = %f\n", rt_fix_tod(fix_1), rt_fix_tod(fix_3)); rt_fix_init_d(&fix_1, 2.785398163); if(rt_fix_errtstset(fix_3 = rt_fix_exp(fix_1))) { if(rt_fix_errisset(fix_3, RT_FIX_OV)) { printf("Result overflowed\t"); } if(rt_fix_errisset(fix_3, RT_FIX_UV)) { printf("Result underflowed\t"); } if(rt_fix_errisset(fix_3, RT_FIX_UNDEFINED)) { printf("Result undefined\t"); } } printf("exp(%f) = %f\n", rt_fix_tod(fix_1), rt_fix_tod(fix_3)); rt_fix_init_d(&fix_1, 0.5); if(rt_fix_errtstset(fix_3 = rt_fix_exp(fix_1))) { if(rt_fix_errisset(fix_3, RT_FIX_OV)) { printf("Result overflowed\t"); } if(rt_fix_errisset(fix_3, RT_FIX_UV)) { printf("Result underflowed\t"); } if(rt_fix_errisset(fix_3, RT_FIX_UNDEFINED)) { printf("Result undefined\t"); } } printf("exp(%f) = %f\n", rt_fix_tod(fix_1), rt_fix_tod(fix_3)); rt_fix_init_d(&fix_1, 3.5); if(rt_fix_errtstset(fix_3 = rt_fix_exp(fix_1))) { if(rt_fix_errisset(fix_3, RT_FIX_OV)) { printf("Result overflowed\t"); } if(rt_fix_errisset(fix_3, RT_FIX_UV)) { printf("Result underflowed\t"); } if(rt_fix_errisset(fix_3, RT_FIX_UNDEFINED)) { printf("Result undefined\t"); } } printf("exp(%f) = %f\n", rt_fix_tod(fix_1), rt_fix_tod(fix_3)); rt_fix_init_d(&fix_1, 3.6); if(rt_fix_errtstset(fix_3 = rt_fix_exp(fix_1))) { if(rt_fix_errisset(fix_3, RT_FIX_OV)) { printf("Result overflowed\t"); } if(rt_fix_errisset(fix_3, RT_FIX_UV)) { printf("Result underflowed\t"); } if(rt_fix_errisset(fix_3, RT_FIX_UNDEFINED)) { printf("Result undefined\t"); } } printf("exp(%f) = %f\n", rt_fix_tod(fix_1), rt_fix_tod(fix_3)); rt_fix_init_d(&fix_1, 19); if(rt_fix_errtstset(fix_3 = rt_fix_exp(fix_1))) { if(rt_fix_errisset(fix_3, RT_FIX_OV)) { printf("Result overflowed\t"); } if(rt_fix_errisset(fix_3, RT_FIX_UV)) { printf("Result underflowed\t"); } if(rt_fix_errisset(fix_3, RT_FIX_UNDEFINED)) { printf("Result undefined\t"); } } printf("exp(%f) = %f\n", rt_fix_tod(fix_1), rt_fix_tod(fix_3)); rt_fix_init_d(&fix_1, 20); if(rt_fix_errtstset(fix_3 = rt_fix_exp(fix_1))) { if(rt_fix_errisset(fix_3, RT_FIX_OV)) { printf("Result overflowed\t"); } if(rt_fix_errisset(fix_3, RT_FIX_UV)) { printf("Result underflowed\t"); } if(rt_fix_errisset(fix_3, RT_FIX_UNDEFINED)) { printf("Result undefined\t"); } } printf("exp(%f) = %f\n", rt_fix_tod(fix_1), rt_fix_tod(fix_3)); rt_fix_init_d(&fix_1, 21); if(rt_fix_errtstset(fix_3 = rt_fix_exp(fix_1))) { if(rt_fix_errisset(fix_3, RT_FIX_OV)) { printf("Result overflowed\t"); } if(rt_fix_errisset(fix_3, RT_FIX_UV)) { printf("Result underflowed\t"); } if(rt_fix_errisset(fix_3, RT_FIX_UNDEFINED)) { printf("Result undefined\t"); } } printf("exp(%f) = %f\n", rt_fix_tod(fix_1), rt_fix_tod(fix_3)); rt_fix_init_d(&fix_1, 22); if(rt_fix_errtstset(fix_3 = rt_fix_exp(fix_1))) { if(rt_fix_errisset(fix_3, RT_FIX_OV)) { printf("Result overflowed\t"); } if(rt_fix_errisset(fix_3, RT_FIX_UV)) { printf("Result underflowed\t"); } if(rt_fix_errisset(fix_3, RT_FIX_UNDEFINED)) { printf("Result undefined\t"); } } printf("exp(%f) = %f\n", rt_fix_tod(fix_1), rt_fix_tod(fix_3)); rt_fix_init_d(&fix_1, -2.785398163); if(rt_fix_errtstset(fix_3 = rt_fix_exp(fix_1))) { if(rt_fix_errisset(fix_3, RT_FIX_OV)) { printf("Result overflowed\t"); } if(rt_fix_errisset(fix_3, RT_FIX_UV)) { printf("Result underflowed\t"); } if(rt_fix_errisset(fix_3, RT_FIX_UNDEFINED)) { printf("Result undefined\t"); } } printf("exp(%f) = %f\n", rt_fix_tod(fix_1), rt_fix_tod(fix_3)); rt_fix_init_d(&fix_1, -0.5); if(rt_fix_errtstset(fix_3 = rt_fix_exp(fix_1))) { if(rt_fix_errisset(fix_3, RT_FIX_OV)) { printf("Result overflowed\t"); } if(rt_fix_errisset(fix_3, RT_FIX_UV)) { printf("Result underflowed\t"); } if(rt_fix_errisset(fix_3, RT_FIX_UNDEFINED)) { printf("Result undefined\t"); } } printf("exp(%f) = %f\n", rt_fix_tod(fix_1), rt_fix_tod(fix_3)); rt_fix_init_d(&fix_1, -3.5); if(rt_fix_errtstset(fix_3 = rt_fix_exp(fix_1))) { if(rt_fix_errisset(fix_3, RT_FIX_OV)) { printf("Result overflowed\t"); } if(rt_fix_errisset(fix_3, RT_FIX_UV)) { printf("Result underflowed\t"); } if(rt_fix_errisset(fix_3, RT_FIX_UNDEFINED)) { printf("Result undefined\t"); } } printf("exp(%f) = %f\n", rt_fix_tod(fix_1), rt_fix_tod(fix_3)); rt_fix_init_d(&fix_1, -3.6); if(rt_fix_errtstset(fix_3 = rt_fix_exp(fix_1))) { if(rt_fix_errisset(fix_3, RT_FIX_OV)) { printf("Result overflowed\t"); } if(rt_fix_errisset(fix_3, RT_FIX_UV)) { printf("Result underflowed\t"); } if(rt_fix_errisset(fix_3, RT_FIX_UNDEFINED)) { printf("Result undefined\t"); } } printf("exp(%f) = %f\n", rt_fix_tod(fix_1), rt_fix_tod(fix_3)); rt_fix_init_d(&fix_1, -19); if(rt_fix_errtstset(fix_3 = rt_fix_exp(fix_1))) { if(rt_fix_errisset(fix_3, RT_FIX_OV)) { printf("Result overflowed\t"); } if(rt_fix_errisset(fix_3, RT_FIX_UV)) { printf("Result underflowed\t"); } if(rt_fix_errisset(fix_3, RT_FIX_UNDEFINED)) { printf("Result undefined\t"); } } printf("exp(%f) = %f\n", rt_fix_tod(fix_1), rt_fix_tod(fix_3)); rt_fix_init_d(&fix_1, -20); if(rt_fix_errtstset(fix_3 = rt_fix_exp(fix_1))) { if(rt_fix_errisset(fix_3, RT_FIX_OV)) { printf("Result overflowed\t"); } if(rt_fix_errisset(fix_3, RT_FIX_UV)) { printf("Result underflowed\t"); } if(rt_fix_errisset(fix_3, RT_FIX_UNDEFINED)) { printf("Result undefined\t"); } } printf("exp(%f) = %f\n", rt_fix_tod(fix_1), rt_fix_tod(fix_3)); rt_fix_init_d(&fix_1, -21); if(rt_fix_errtstset(fix_3 = rt_fix_exp(fix_1))) { if(rt_fix_errisset(fix_3, RT_FIX_OV)) { printf("Result overflowed\t"); } if(rt_fix_errisset(fix_3, RT_FIX_UV)) { printf("Result underflowed\t"); } if(rt_fix_errisset(fix_3, RT_FIX_UNDEFINED)) { printf("Result undefined\t"); } } printf("exp(%f) = %f\n", rt_fix_tod(fix_1), rt_fix_tod(fix_3)); rt_fix_init_d(&fix_1, -22); if(rt_fix_errtstset(fix_3 = rt_fix_exp(fix_1))) { if(rt_fix_errisset(fix_3, RT_FIX_OV)) { printf("Result overflowed\t"); } if(rt_fix_errisset(fix_3, RT_FIX_UV)) { printf("Result underflowed\t"); } if(rt_fix_errisset(fix_3, RT_FIX_UNDEFINED)) { printf("Result undefined\t"); } } printf("exp(%f) = %f\n", rt_fix_tod(fix_1), rt_fix_tod(fix_3)); printf("\n"); printf("Test of y = log(fix)\n"); printf("--------------------\n"); rt_fix_init_d(&fix_1, 0.001); if(rt_fix_errtstset(fix_3 = rt_fix_log(fix_1))) { if(rt_fix_errisset(fix_3, RT_FIX_OV)) { printf("Result overflowed\t"); } if(rt_fix_errisset(fix_3, RT_FIX_UV)) { printf("Result underflowed\t"); } if(rt_fix_errisset(fix_3, RT_FIX_UNDEFINED)) { printf("Result undefined\t"); } } printf("log(%f) = %f\n", rt_fix_tod(fix_1), rt_fix_tod(fix_3)); rt_fix_init_d(&fix_1, 0.01); if(rt_fix_errtstset(fix_3 = rt_fix_log(fix_1))) { if(rt_fix_errisset(fix_3, RT_FIX_OV)) { printf("Result overflowed\t"); } if(rt_fix_errisset(fix_3, RT_FIX_UV)) { printf("Result underflowed\t"); } if(rt_fix_errisset(fix_3, RT_FIX_UNDEFINED)) { printf("Result undefined\t"); } } printf("log(%f) = %f\n", rt_fix_tod(fix_1), rt_fix_tod(fix_3)); rt_fix_init_d(&fix_1, 0.5); if(rt_fix_errtstset(fix_3 = rt_fix_log(fix_1))) { if(rt_fix_errisset(fix_3, RT_FIX_OV)) { printf("Result overflowed\t"); } if(rt_fix_errisset(fix_3, RT_FIX_UV)) { printf("Result underflowed\t"); } if(rt_fix_errisset(fix_3, RT_FIX_UNDEFINED)) { printf("Result undefined\t"); } } printf("log(%f) = %f\n", rt_fix_tod(fix_1), rt_fix_tod(fix_3)); rt_fix_init_d(&fix_1, 0.75); if(rt_fix_errtstset(fix_3 = rt_fix_log(fix_1))) { if(rt_fix_errisset(fix_3, RT_FIX_OV)) { printf("Result overflowed\t"); } if(rt_fix_errisset(fix_3, RT_FIX_UV)) { printf("Result underflowed\t"); } if(rt_fix_errisset(fix_3, RT_FIX_UNDEFINED)) { printf("Result undefined\t"); } } printf("log(%f) = %f\n", rt_fix_tod(fix_1), rt_fix_tod(fix_3)); rt_fix_init_d(&fix_1, 1); if(rt_fix_errtstset(fix_3 = rt_fix_log(fix_1))) { if(rt_fix_errisset(fix_3, RT_FIX_OV)) { printf("Result overflowed\t"); } if(rt_fix_errisset(fix_3, RT_FIX_UV)) { printf("Result underflowed\t"); } if(rt_fix_errisset(fix_3, RT_FIX_UNDEFINED)) { printf("Result undefined\t"); } } printf("log(%f) = %f\n", rt_fix_tod(fix_1), rt_fix_tod(fix_3)); rt_fix_init_d(&fix_1, 1.5); if(rt_fix_errtstset(fix_3 = rt_fix_log(fix_1))) { if(rt_fix_errisset(fix_3, RT_FIX_OV)) { printf("Result overflowed\t"); } if(rt_fix_errisset(fix_3, RT_FIX_UV)) { printf("Result underflowed\t"); } if(rt_fix_errisset(fix_3, RT_FIX_UNDEFINED)) { printf("Result undefined\t"); } } printf("log(%f) = %f\n", rt_fix_tod(fix_1), rt_fix_tod(fix_3)); rt_fix_init_d(&fix_1, 2); if(rt_fix_errtstset(fix_3 = rt_fix_log(fix_1))) { if(rt_fix_errisset(fix_3, RT_FIX_OV)) { printf("Result overflowed\t"); } if(rt_fix_errisset(fix_3, RT_FIX_UV)) { printf("Result underflowed\t"); } if(rt_fix_errisset(fix_3, RT_FIX_UNDEFINED)) { printf("Result undefined\t"); } } printf("log(%f) = %f\n", rt_fix_tod(fix_1), rt_fix_tod(fix_3)); rt_fix_init_d(&fix_1, 7); if(rt_fix_errtstset(fix_3 = rt_fix_log(fix_1))) { if(rt_fix_errisset(fix_3, RT_FIX_OV)) { printf("Result overflowed\t"); } if(rt_fix_errisset(fix_3, RT_FIX_UV)) { printf("Result underflowed\t"); } if(rt_fix_errisset(fix_3, RT_FIX_UNDEFINED)) { printf("Result undefined\t"); } } printf("log(%f) = %f\n", rt_fix_tod(fix_1), rt_fix_tod(fix_3)); rt_fix_init_d(&fix_1, 50); if(rt_fix_errtstset(fix_3 = rt_fix_log(fix_1))) { if(rt_fix_errisset(fix_3, RT_FIX_OV)) { printf("Result overflowed\t"); } if(rt_fix_errisset(fix_3, RT_FIX_UV)) { printf("Result underflowed\t"); } if(rt_fix_errisset(fix_3, RT_FIX_UNDEFINED)) { printf("Result undefined\t"); } } printf("log(%f) = %f\n", rt_fix_tod(fix_1), rt_fix_tod(fix_3)); rt_fix_init_d(&fix_1, 500); if(rt_fix_errtstset(fix_3 = rt_fix_log(fix_1))) { if(rt_fix_errisset(fix_3, RT_FIX_OV)) { printf("Result overflowed\t"); } if(rt_fix_errisset(fix_3, RT_FIX_UV)) { printf("Result underflowed\t"); } if(rt_fix_errisset(fix_3, RT_FIX_UNDEFINED)) { printf("Result undefined\t"); } } printf("log(%f) = %f\n", rt_fix_tod(fix_1), rt_fix_tod(fix_3)); rt_fix_init_d(&fix_1, 5000); if(rt_fix_errtstset(fix_3 = rt_fix_log(fix_1))) { if(rt_fix_errisset(fix_3, RT_FIX_OV)) { printf("Result overflowed\t"); } if(rt_fix_errisset(fix_3, RT_FIX_UV)) { printf("Result underflowed\t"); } if(rt_fix_errisset(fix_3, RT_FIX_UNDEFINED)) { printf("Result undefined\t"); } } printf("log(%f) = %f\n", rt_fix_tod(fix_1), rt_fix_tod(fix_3)); rt_fix_init_d(&fix_1, 65536); if(rt_fix_errtstset(fix_3 = rt_fix_log(fix_1))) { if(rt_fix_errisset(fix_3, RT_FIX_OV)) { printf("Result overflowed\t"); } if(rt_fix_errisset(fix_3, RT_FIX_UV)) { printf("Result underflowed\t"); } if(rt_fix_errisset(fix_3, RT_FIX_UNDEFINED)) { printf("Result undefined\t"); } } printf("log(%f) = %f\n", rt_fix_tod(fix_1), rt_fix_tod(fix_3)); rt_fix_init_d(&fix_1, 1048576); if(rt_fix_errtstset(fix_3 = rt_fix_log(fix_1))) { if(rt_fix_errisset(fix_3, RT_FIX_OV)) { printf("Result overflowed\t"); } if(rt_fix_errisset(fix_3, RT_FIX_UV)) { printf("Result underflowed\t"); } if(rt_fix_errisset(fix_3, RT_FIX_UNDEFINED)) { printf("Result undefined\t"); } } printf("log(%f) = %f\n", rt_fix_tod(fix_1), rt_fix_tod(fix_3)); rt_fix_init_d(&fix_1, 33554432); if(rt_fix_errtstset(fix_3 = rt_fix_log(fix_1))) { if(rt_fix_errisset(fix_3, RT_FIX_OV)) { printf("Result overflowed\t"); } if(rt_fix_errisset(fix_3, RT_FIX_UV)) { printf("Result underflowed\t"); } if(rt_fix_errisset(fix_3, RT_FIX_UNDEFINED)) { printf("Result undefined\t"); } } printf("log(%f) = %f\n", rt_fix_tod(fix_1), rt_fix_tod(fix_3)); rt_fix_init_d(&fix_1, 269167349); if(rt_fix_errtstset(fix_3 = rt_fix_log(fix_1))) { if(rt_fix_errisset(fix_3, RT_FIX_OV)) { printf("Result overflowed\t"); } if(rt_fix_errisset(fix_3, RT_FIX_UV)) { printf("Result underflowed\t"); } if(rt_fix_errisset(fix_3, RT_FIX_UNDEFINED)) { printf("Result undefined\t"); } } printf("log(%f) = %f\n", rt_fix_tod(fix_1), rt_fix_tod(fix_3)); rt_fix_init_d(&fix_1, -0.001); if(rt_fix_errtstset(fix_3 = rt_fix_log(fix_1))) { if(rt_fix_errisset(fix_3, RT_FIX_OV)) { printf("Result overflowed\t"); } if(rt_fix_errisset(fix_3, RT_FIX_UV)) { printf("Result underflowed\t"); } if(rt_fix_errisset(fix_3, RT_FIX_UNDEFINED)) { printf("Result undefined\t"); } } printf("log(%f) = %f\n", rt_fix_tod(fix_1), rt_fix_tod(fix_3)); rt_fix_init_d(&fix_1, -0.01); if(rt_fix_errtstset(fix_3 = rt_fix_log(fix_1))) { if(rt_fix_errisset(fix_3, RT_FIX_OV)) { printf("Result overflowed\t"); } if(rt_fix_errisset(fix_3, RT_FIX_UV)) { printf("Result underflowed\t"); } if(rt_fix_errisset(fix_3, RT_FIX_UNDEFINED)) { printf("Result undefined\t"); } } printf("log(%f) = %f\n", rt_fix_tod(fix_1), rt_fix_tod(fix_3)); rt_fix_init_d(&fix_1, -10); if(rt_fix_errtstset(fix_3 = rt_fix_log(fix_1))) { if(rt_fix_errisset(fix_3, RT_FIX_OV)) { printf("Result overflowed\t"); } if(rt_fix_errisset(fix_3, RT_FIX_UV)) { printf("Result underflowed\t"); } if(rt_fix_errisset(fix_3, RT_FIX_UNDEFINED)) { printf("Result undefined\t"); } } printf("log(%f) = %f\n", rt_fix_tod(fix_1), rt_fix_tod(fix_3)); rt_fix_init_d(&fix_1, -269167349); if(rt_fix_errtstset(fix_3 = rt_fix_log(fix_1))) { if(rt_fix_errisset(fix_3, RT_FIX_OV)) { printf("Result overflowed\t"); } if(rt_fix_errisset(fix_3, RT_FIX_UV)) { printf("Result underflowed\t"); } if(rt_fix_errisset(fix_3, RT_FIX_UNDEFINED)) { printf("Result undefined\t"); } } printf("log(%f) = %f\n", rt_fix_tod(fix_1), rt_fix_tod(fix_3)); printf("\n"); printf("Test of y = log2(fix)\n"); printf("--------------------\n"); rt_fix_init_d(&fix_1, 0.001); printf("log(%f) = %f\n", rt_fix_tod(fix_1), rt_fix_tod(rt_fix_log2(fix_1))); rt_fix_init_d(&fix_1, 0.01); printf("log(%f) = %f\n", rt_fix_tod(fix_1), rt_fix_tod(rt_fix_log2(fix_1))); rt_fix_init_d(&fix_1, 0.5); printf("log(%f) = %f\n", rt_fix_tod(fix_1), rt_fix_tod(rt_fix_log2(fix_1))); rt_fix_init_d(&fix_1, 0.75); printf("log(%f) = %f\n", rt_fix_tod(fix_1), rt_fix_tod(rt_fix_log2(fix_1))); rt_fix_init_d(&fix_1, 1); printf("log(%f) = %f\n", rt_fix_tod(fix_1), rt_fix_tod(rt_fix_log2(fix_1))); rt_fix_init_d(&fix_1, 1.5); printf("log(%f) = %f\n", rt_fix_tod(fix_1), rt_fix_tod(rt_fix_log2(fix_1))); rt_fix_init_d(&fix_1, 2); printf("log(%f) = %f\n", rt_fix_tod(fix_1), rt_fix_tod(rt_fix_log2(fix_1))); rt_fix_init_d(&fix_1, 7); printf("log(%f) = %f\n", rt_fix_tod(fix_1), rt_fix_tod(rt_fix_log2(fix_1))); rt_fix_init_d(&fix_1, 50); printf("log(%f) = %f\n", rt_fix_tod(fix_1), rt_fix_tod(rt_fix_log2(fix_1))); rt_fix_init_d(&fix_1, 500); printf("log(%f) = %f\n", rt_fix_tod(fix_1), rt_fix_tod(rt_fix_log2(fix_1))); rt_fix_init_d(&fix_1, 5000); printf("log(%f) = %f\n", rt_fix_tod(fix_1), rt_fix_tod(rt_fix_log2(fix_1))); rt_fix_init_d(&fix_1, -0.001); printf("log(%f) = %f\n", rt_fix_tod(fix_1), rt_fix_tod(rt_fix_log2(fix_1))); rt_fix_init_d(&fix_1, -0.01); printf("log(%f) = %f\n", rt_fix_tod(fix_1), rt_fix_tod(rt_fix_log2(fix_1))); printf("\n"); printf("Test of y = log10(fix)\n"); printf("--------------------\n"); rt_fix_init_d(&fix_1, 0.001); printf("log(%f) = %f\n", rt_fix_tod(fix_1), rt_fix_tod(rt_fix_log10(fix_1))); rt_fix_init_d(&fix_1, 0.01); printf("log(%f) = %f\n", rt_fix_tod(fix_1), rt_fix_tod(rt_fix_log10(fix_1))); rt_fix_init_d(&fix_1, 0.5); printf("log(%f) = %f\n", rt_fix_tod(fix_1), rt_fix_tod(rt_fix_log10(fix_1))); rt_fix_init_d(&fix_1, 0.75); printf("log(%f) = %f\n", rt_fix_tod(fix_1), rt_fix_tod(rt_fix_log10(fix_1))); rt_fix_init_d(&fix_1, 1); printf("log(%f) = %f\n", rt_fix_tod(fix_1), rt_fix_tod(rt_fix_log10(fix_1))); rt_fix_init_d(&fix_1, 1.5); printf("log(%f) = %f\n", rt_fix_tod(fix_1), rt_fix_tod(rt_fix_log10(fix_1))); rt_fix_init_d(&fix_1, 2); printf("log(%f) = %f\n", rt_fix_tod(fix_1), rt_fix_tod(rt_fix_log10(fix_1))); rt_fix_init_d(&fix_1, 7); printf("log(%f) = %f\n", rt_fix_tod(fix_1), rt_fix_tod(rt_fix_log10(fix_1))); rt_fix_init_d(&fix_1, 50); printf("log(%f) = %f\n", rt_fix_tod(fix_1), rt_fix_tod(rt_fix_log10(fix_1))); rt_fix_init_d(&fix_1, 500); printf("log(%f) = %f\n", rt_fix_tod(fix_1), rt_fix_tod(rt_fix_log10(fix_1))); rt_fix_init_d(&fix_1, 5000); printf("log(%f) = %f\n", rt_fix_tod(fix_1), rt_fix_tod(rt_fix_log10(fix_1))); rt_fix_init_d(&fix_1, -0.001); printf("log(%f) = %f\n", rt_fix_tod(fix_1), rt_fix_tod(rt_fix_log10(fix_1))); rt_fix_init_d(&fix_1, -0.01); printf("log(%f) = %f\n", rt_fix_tod(fix_1), rt_fix_tod(rt_fix_log10(fix_1))); printf("\n"); printf("Test of z = pow(fix, y)\n"); printf("--------------------\n"); rt_fix_init_d(&fix_1, 0.001); rt_fix_init_d(&fix_2, 3); printf("pow(%f, %f) = %f\n", rt_fix_tod(fix_1), rt_fix_tod(fix_2), rt_fix_tod(rt_fix_pow(fix_1, fix_2))); rt_fix_init_d(&fix_1, 5); rt_fix_init_d(&fix_2, 3.5); printf("pow(%f, %f) = %f\n", rt_fix_tod(fix_1), rt_fix_tod(fix_2), rt_fix_tod(rt_fix_pow(fix_1, fix_2))); rt_fix_init_d(&fix_1, -25.); rt_fix_init_d(&fix_2, 0.5); printf("pow(%f, %f) = %f\n", rt_fix_tod(fix_1), rt_fix_tod(fix_2), rt_fix_tod(rt_fix_pow(fix_1, fix_2))); printf("\n"); printf("Test of z = sinh(fix)\n"); printf("--------------------\n"); rt_fix_init_d(&fix_1, 0.1); printf("sinh(%f) = %f\n", rt_fix_tod(fix_1), rt_fix_tod(rt_fix_sinh(fix_1))); rt_fix_init_d(&fix_1, 0.5); printf("sinh(%f) = %f\n", rt_fix_tod(fix_1), rt_fix_tod(rt_fix_sinh(fix_1))); rt_fix_init_d(&fix_1, 5); printf("sinh(%f) = %f\n", rt_fix_tod(fix_1), rt_fix_tod(rt_fix_sinh(fix_1))); printf("\n"); printf("Test of z = cosh(fix)\n"); printf("--------------------\n"); rt_fix_init_d(&fix_1, 0.1); printf("cosh(%f) = %f\n", rt_fix_tod(fix_1), rt_fix_tod(rt_fix_cosh(fix_1))); rt_fix_init_d(&fix_1, 0.5); printf("cosh(%f) = %f\n", rt_fix_tod(fix_1), rt_fix_tod(rt_fix_cosh(fix_1))); rt_fix_init_d(&fix_1, 5); printf("cosh(%f) = %f\n", rt_fix_tod(fix_1), rt_fix_tod(rt_fix_cosh(fix_1))); printf("\n"); printf("Test of z = tanh(fix)\n"); printf("--------------------\n"); rt_fix_init_d(&fix_1, 0.1); printf("tanh(%f) = %f\n", rt_fix_tod(fix_1), rt_fix_tod(rt_fix_tanh(fix_1))); rt_fix_init_d(&fix_1, 1); printf("tanh(%f) = %f\n", rt_fix_tod(fix_1), rt_fix_tod(rt_fix_tanh(fix_1))); rt_fix_init_d(&fix_1, 5); printf("tanh(%f) = %f\n", rt_fix_tod(fix_1), rt_fix_tod(rt_fix_tanh(fix_1))); printf("\n"); printf("--------------------\n"); rt_fix_init_i(&fix_1, -10); rt_fix_init_i(&fix_2, 1073741824); if(rt_fix_errtstset(fix_3 = rt_fix_mul(fix_2, rt_fix_log(fix_1)))) { if(rt_fix_errisset(fix_3, RT_FIX_UNDEFINED)) { printf("Result undefined\t"); } if(rt_fix_errisset(fix_3, RT_FIX_OV)) { printf("Result overflowed\t"); } if(rt_fix_errisset(fix_3, RT_FIX_UV)) { printf("Result underflowed\t"); } } printf("%d * log(%d) = %f\n", rt_fix_toi(fix_2), rt_fix_toi(fix_1), rt_fix_tod(fix_3)); #ifdef RT_FIXMISC { char string_rep[RT_FIX_STR_REP_SIZE]; memset(string_rep, '\0', sizeof(string_rep)); printf("Testing String representation:\n"); printf("------------------------------\n"); rt_fix_init_d(&fix_1, 1.0 / 3.0); if(rt_fix_toa(fix_1, string_rep)) { printf("rt_fix_toa() failed\n"); } else { printf("rt_fix_toa(rt_fix_init_d(1.0 / 3.0)) = %s\n", string_rep); rt_fix_atofix(&fix_1, string_rep); printf("fix = 0.333333; rt_fix_atofix(&fix, rt_fix_toa(fix)) = %f\n", rt_fix_tod(fix_1)); } printf("\n"); printf("Test of assignments\n"); printf("-------------------\n"); printf("assigning rt_fix to rt_fix:\n"); rt_fix_init_mask(&fix_1, 0, 6); rt_fix_init_mask(&fix_2, 0, 3); printf("integer word length of fix_1 = %d, integer word length of fix_2 = %d.\n", 6, 3); rt_fix_assi(&fix_1, 30); rt_fix_assfix(&fix_2, fix_1); printf("fix_2 = fix_1 => %d = %d, \n", rt_fix_toi(fix_2), rt_fix_toi(fix_1)); printf("overflow because fix_2 has integer word length of 3\n"); rt_fix_init_i(&fix_1, 5); rt_fix_assfix(&fix_2, fix_1); printf("fix_2 = fix_1 => %d = %d\n", rt_fix_toi(fix_2), rt_fix_toi(fix_1)); rt_fix_init_i(&fix_1, -30); rt_fix_assfix(&fix_2, fix_1); printf("fix_2 = fix_1 => %d = %d\n", rt_fix_toi(fix_2), rt_fix_toi(fix_1)); printf("overflow because fix_2 has integer word length of 3\n"); rt_fix_init_i(&fix_1, -5); rt_fix_assfix(&fix_2, fix_1); printf("fix_2 = fix_1 => %d = %d\n", rt_fix_toi(fix_2), rt_fix_toi(fix_1)); printf("\n"); printf("assigning integer to rt_fix:\n"); rt_fix_assi(&fix_2, 40); printf("fix = %d => fix = %d\n", 40, rt_fix_toi(fix_2)); rt_fix_assi(&fix_2, 7); printf("fix = %d => fix = %d\n", 7, rt_fix_toi(fix_2)); rt_fix_assi(&fix_2, -40); printf("fix = %d => fix = %d\n", -40, rt_fix_toi(fix_2)); rt_fix_assi(&fix_2, -7); printf("fix = %d => fix = %d\n", -7, rt_fix_toi(fix_2)); printf("\n"); printf("assigning long to rt_fix:\n"); rt_fix_assl(&fix_2, 40); printf("fix = %d => fix = %ld\n", 40, rt_fix_tol(fix_2)); rt_fix_assl(&fix_2, 7); printf("fix = %d => fix = %ld\n", 7, rt_fix_tol(fix_2)); rt_fix_assl(&fix_2, -40); printf("fix = %d => fix = %ld\n", -40, rt_fix_tol(fix_2)); rt_fix_assl(&fix_2, -7); printf("fix = %d => fix = %d\n", -7, rt_fix_tol(fix_2)); printf("\n"); printf("assigning double to rt_fix:\n"); printf("---------------------------\n"); rt_fix_assd(&fix_1, 40.); printf("fix = %f => fix = %f\n", 40., rt_fix_tod(fix_1)); rt_fix_assd(&fix_1, 8.); printf("fix = %f => fix = %f\n", 8., rt_fix_tod(fix_1)); rt_fix_assd(&fix_1, -40.); printf("fix = %f => fix = %f\n", -40., rt_fix_tod(fix_1)); rt_fix_assd(&fix_1, -8.); printf("fix = %f => fix = %f\n", -8., rt_fix_tod(fix_1)); printf("\n"); } #endif /* RT_FIXMISC */ }