X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=ETL%2Ftrunk%2Ftest%2Ffixed.cpp;h=965a8d30fde01b2206e3b2e2a3de88fe7bd69cfb;hb=bd4b3d17e246ddb8c76b8aa30367b26bddee3bc1;hp=e462b8f02207d1ac0b1d67b7ae3c60632d582d09;hpb=36d01e1527fda602a9aed07d209eb34e6770bca8;p=synfig.git diff --git a/ETL/trunk/test/fixed.cpp b/ETL/trunk/test/fixed.cpp index e462b8f..965a8d3 100644 --- a/ETL/trunk/test/fixed.cpp +++ b/ETL/trunk/test/fixed.cpp @@ -4,6 +4,7 @@ ** $Id$ ** ** Copyright (c) 2002 Robert B. Quattlebaum Jr. +** Copyright (c) 2007 Chris Moore ** ** This package is free software; you can redistribute it and/or ** modify it under the terms of the GNU General Public License as @@ -35,7 +36,7 @@ #define ADD_SUB_TEST 20000000 #define MUL_TEST 10000000 -#define DIV_TEST 10000000 +#define DIV_TEST 1048573 // at 1048573, fixed point numbers wrap around to zero using namespace etl; /* === C L A S S E S ======================================================= */ @@ -53,95 +54,42 @@ struct speed_test MyTimer.reset(); for(i=0;i(0.5)); + d=value_type(1); + const value_type one_and_a_half(static_cast(1.5)); int i; etl::clock MyTimer; MyTimer.reset(); - for(i=0;i0.0005) +#else + if( d>0.0025) +#endif { fprintf(stderr,"fixed: Failed test on line %d in "__FILE__".\n",__LINE__); ret++; @@ -302,19 +232,19 @@ int main() { double flt,fix,inte; - fprintf(stderr,"Addition/subtraction test..."); + fprintf(stderr,"\nAddition/subtraction test...\n"); - fprintf(stderr,"calculating float..."); + fprintf(stderr," calculating float....."); flt=float_test.add_sub_test(); - fprintf(stderr,"float time: %fsec\n",flt); + fprintf(stderr," float time: %f sec\n",flt); - fprintf(stderr,"calculating fixed..."); + fprintf(stderr," calculating fixed....."); fix=fixed_test.add_sub_test(); - fprintf(stderr,"fixed time: %fsec\n",fix); + fprintf(stderr," fixed time: %f sec\n",fix); - fprintf(stderr,"calculating integer..."); + fprintf(stderr," calculating integer..."); inte=int_test.add_sub_test(); - fprintf(stderr,"integer time: %fsec\n",inte); + fprintf(stderr," integer time: %f sec\n",inte); if(flt>fix) fprintf(stderr,"Fixed point wins by %f seconds! (%f%% faster)\n",flt-fix,flt/fix*100.0f-100.0f); @@ -325,40 +255,39 @@ int main() { double flt,fix,inte; - fprintf(stderr,"Product test..."); - fprintf(stderr,"calculating float..."); + fprintf(stderr,"\nProduct test...\n"); + fprintf(stderr," calculating float....."); flt=float_test.mul_test(); - fprintf(stderr,"float time: %fsec\n",flt); - fprintf(stderr,"calculating fixed..."); + fprintf(stderr," float time: %f sec\n",flt); + fprintf(stderr," calculating fixed....."); fix=fixed_test.mul_test(); - fprintf(stderr,"fixed time: %fsec\n",fix); - fprintf(stderr,"calculating integer..."); + fprintf(stderr," fixed time: %f sec\n",fix); + fprintf(stderr," calculating integer..."); inte=int_test.mul_test(); - fprintf(stderr,"integer time: %fsec\n",inte); + fprintf(stderr," integer time: %f sec\n",inte); if(flt>fix) fprintf(stderr,"Fixed point wins by %f seconds! (%f%% faster)\n",flt-fix,flt/fix*100.0f-100.0f); else fprintf(stderr,"Floating point wins by %f seconds! (%f%% faster)\n",fix-flt,fix/flt*100.0f-100.0f); - } { double flt,fix,inte; - fprintf(stderr,"Division test..."); - fprintf(stderr,"calculating float..."); + fprintf(stderr,"\nDivision test...\n"); + fprintf(stderr," calculating float....."); flt=float_test.div_test(); - fprintf(stderr,"float time: %fsec\n",flt); - fprintf(stderr,"calculating fixed..."); + fprintf(stderr," float time: %f sec\n",flt); + fprintf(stderr," calculating fixed....."); fix=fixed_test.div_test(); - fprintf(stderr,"fixed time: %fsec\n",fix); - fprintf(stderr,"calculating integer..."); + fprintf(stderr," fixed time: %f sec\n",fix); + fprintf(stderr," calculating integer..."); inte=int_test.div_test(); - fprintf(stderr,"integer time: %fsec\n",inte); + fprintf(stderr," integer time: %f sec\n",inte); if(flt>fix) fprintf(stderr,"Fixed point wins by %f seconds! (%f%% faster)\n",flt-fix,flt/fix*100.0f-100.0f); else fprintf(stderr,"Floating point wins by %f seconds! (%f%% faster)\n",fix-flt,fix/flt*100.0f-100.0f); - + fprintf(stderr,"\n"); } return error;