EMATH.H
上传用户:sunrenlu
上传日期:2022-06-13
资源大小:1419k
文件大小:3k
源码类别:

操作系统开发

开发平台:

DOS

  1. /*
  2.  * Embedded Math Library
  3.  *
  4.  * Copyright (c) 1987, 1999 Erick Engelke
  5.  */
  6. #include <string.h>
  7. #include <stdio.h>
  8. #include <stdlib.h>
  9. #include <ctype.h>
  10. /*------------------------------------------------------------------------*/
  11. typedef long EM;
  12. #define EM_MAXINT    0x7fffffff
  13. #define EM_MAXNEGINT 0xffffffff
  14. #define EM_DEC_DIGITS 4
  15. #define EM_BDIGITS 15L
  16. #define EM_DENOMINATOR  ( 1L << EM_BDIGITS )        /* divisor throughout */
  17. #define EM_DECIMAL_DENOMINATOR      10000
  18. #define EM_SIGN_BIT  0x80000000     /* the sign bit */
  19. #define EM_HIGH_BIT  0x40000000     /* highest order bit */
  20. #define EM_ONE         (  EM_DENOMINATOR )
  21. #define EM_MINUS_ONE   ( -EM_DENOMINATOR )
  22. #define EM_POINT_5     ( EM_ONE >> 1 )
  23. #define EM_ZERO         0
  24. #define EM_INTEGERS    ( ~(EM_ONE - 1))
  25. #define EM_PI           ( 102944L )
  26. #define EM_TWO_PI       ( 205887L )
  27. #define EM_180_OVER_PI  ( 1877464L )
  28. #define EM_90_DEG_RAD   ( 51472L )  /* 1.57079... */
  29. /*------------------------------------------------------------------------*/
  30. #define EM_ADD( a, b ) ( a + b )
  31. #define EM_SUB( a, b ) ( a - b )
  32. /*------------------------------------------------------------------------*/
  33. /*------------------------------------------------------------------------*/
  34. /* Arithmetic Routines                                                    */
  35. /*------------------------------------------------------------------------*/
  36. EM EM_INT( EM x );
  37. EM EM_ROUND( EM x );
  38. EM EM_SGN( EM x );
  39. EM EM_ABS( EM x );
  40. EM EM_MUL( EM a, EM b );
  41. EM EM_DIV( EM num , EM denom );
  42. /*------------------------------------------------------------------------*/
  43. /* Conversion Routines                                                    */
  44. /*------------------------------------------------------------------------*/
  45. EM EM_ASSIGN( long numerator, long denominator);
  46. long emtol( EM em, long divisor );
  47. EM strtoem( char *s );
  48. char *emtostr( EM x, char *s );
  49. /*------------------------------------------------------------------------*/
  50. /* Mathematic Routines                                                    */
  51. /*------------------------------------------------------------------------*/
  52. EM EM_SQR( EM in );
  53. EM EM_LOG10( EM in );
  54. EM EM_POWER10( EM x );
  55. EM EM_LN( EM x );
  56. EM EM_EXP( EM x );
  57. EM EM_POWER( EM x, EM y );
  58. /*------------------------------------------------------------------------*/
  59. /* Trig Routines                                                          */
  60. /*------------------------------------------------------------------------*/
  61. EM EM_COS( EM rad );
  62. EM EM_SIN( EM rad );
  63. EM EM_TAN( EM rad );
  64. EM EM_ATAN( EM x );
  65. EM EM_ASIN( EM x );
  66. EM EM_ACOS( EM x );
  67. EM EM_DEG( EM rad );        /* rads to degrees */
  68. EM EM_RAD( EM deg );        /* degrees to rads */