X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=ETL%2Ftrunk%2Ftest%2Ffixed.cpp;h=965a8d30fde01b2206e3b2e2a3de88fe7bd69cfb;hb=9459638ad6797b8139f1e9f0715c96076dbf0890;hp=16cca250e7c21099d157d88eb26df6bdd6a2cf61;hpb=30629aa3eb4453dd8b3a36c8414b47903ff18ab5;p=synfig.git diff --git a/ETL/trunk/test/fixed.cpp b/ETL/trunk/test/fixed.cpp index 16cca25..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++; @@ -291,11 +221,6 @@ int char_test(void) int main() { - fprintf(stderr, "\n***\n"); - fprintf(stderr, "*** tests in fixed.cpp fail - see http://wiki.synfig.com/Source:ETL_make_check for an explanation ***\n"); - fprintf(stderr, "***\n\n"); - sleep(5); - int error=0; error+=basic_test(); @@ -307,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); @@ -330,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;