home *** CD-ROM | disk | FTP | other *** search
/ DP Tool Club 19 / CD_ASCQ_19_010295.iso / vrac / pmw100.zip / EXAMPLE2.C < prev    next >
C/C++ Source or Header  |  1994-11-21  |  2KB  |  75 lines

  1. /*****************************************************************************
  2. The original purpose of this test program was to show that floating point
  3. calculations do in fact work under PMODE/W. However, during development we
  4. found that floating point under DOS/4GW was EXTREMELY slow. Run this on a
  5. PC without an FPU or disable the FPU on your 486. Try it under DOS/4GW and
  6. under PMODE/W and notice the speed difference. If the timing values are too
  7. close to be able to tell, try changing the variable "count" to something
  8. larger.
  9. *****************************************************************************/
  10.  
  11. #include <conio.h>
  12. #include <math.h>
  13. #include <time.h>
  14. #include <dos.h>
  15.  
  16. unsigned int count=10000;
  17.  
  18. #define M_PI 3.141592654
  19. double dtemp;
  20.  
  21. int x,line;
  22.  
  23. clock_t tstart,tend;
  24.  
  25. union REGS r;
  26. #pragma aux mode3="mov ax,3","int 10h",modify [ax];
  27.  
  28. main(void)
  29. {
  30. mode3();
  31.  
  32. printf("This program will test several Watcom C floating point functions\n");
  33. printf("for speed. Each function will be executed %d times. Depending\n",count);
  34. printf("on the speed of your system, this may take a while. This test is\n");
  35. printf("only of use on systems WITHOUT a floating point unit.\n");
  36.  
  37. line=6;
  38. gotoxy(0,line);
  39.  
  40. tstart=clock();
  41. cprintf("pow() Test");
  42. for(x=0;x<count;x++) {gotoxy(30,line); dtemp=pow(1234,56); cprintf("%-6u",x);}
  43. tend=clock();
  44. gotoxy(40,line);
  45. cprintf("%.4f Seconds\r\n",(float)(tend-tstart)/(float)CLOCKS_PER_SEC);
  46. line++;
  47.  
  48. tstart=clock();
  49. cprintf("sin() Test");
  50. for(x=0;x<count;x++) {gotoxy(30,line); dtemp=sin(123456789); cprintf("%-6u",x);}
  51. tend=clock();
  52. gotoxy(40,line);
  53. cprintf("%.4f Seconds\r\n",(float)(tend-tstart)/(float)CLOCKS_PER_SEC);
  54. line++;
  55.  
  56. tstart=clock();
  57. cprintf("sqrt() Test");
  58. for(x=0;x<count;x++) {gotoxy(30,line); dtemp=sqrt(123456789); cprintf("%-6u",x);}
  59. tend=clock();
  60. gotoxy(40,line);
  61. cprintf("%.4f Seconds\r\n",(float)(tend-tstart)/(float)CLOCKS_PER_SEC);
  62.  
  63. exit(0);
  64. }
  65.  
  66. void gotoxy(unsigned char gx,unsigned char gy){
  67.     r.h.ah=2;
  68.     r.h.bh=0;
  69.     r.h.dl=gx;
  70.     r.h.dh=gy;
  71.     int386(0x10,&r,&r);
  72.     return;
  73. }
  74.  
  75.