home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 1995 November / PCWK1195.iso / inne / dos / fraktale / frasr192.exe / BIGFLT.H < prev    next >
Encoding:
C/C++ Source or Header  |  1995-01-16  |  4.5 KB  |  133 lines

  1. /* bigflt.h */
  2. /* Wesley Loewer's Big Numbers.        (C) 1994, Wesley B. Loewer */
  3.  
  4. #ifndef _BIGFLT_H
  5. #define _BIGFLT_H
  6.  
  7. #ifndef PORT_H
  8. #include "port.h"
  9. #endif
  10.  
  11. #define CALCULATING_BIG_PI 0  /* change to 1 for generating big_pi[] table */
  12.  
  13. #if 0
  14. #define bf_t bn_t  /* for clarity in identifying one or the other */
  15. #endif
  16.  
  17. typedef bn_t bf_t;  /* for clarity in identifying one or the other */
  18.  
  19. extern int bflength, rbflength, bfshiftfactor, bfdecimals;
  20.  
  21. extern bf_t bftmp1, bftmp2, bftmp3, bftmp4, bftmp5, bftmp6;  /* rbflength+2 */
  22. extern bf_t bftest1, bftest2, bftest3;                       /* rbflength+2 */
  23. extern bf_t bftmpcpy1, bftmpcpy2;                            /* bflength+2  */
  24. extern bf_t bfxmin, bfxmax, bfymin, bfymax, bfx3rd, bfy3rd;  /* bflength+2 */
  25. extern bf_t bfsxmin,bfsxmax,bfsymin,bfsymax,bfsx3rd,bfsy3rd; /* bflength+2 */
  26. extern bf_t bfxdel, bfydel, bfxdel2, bfydel2;                /* bflength+2 */
  27. extern bf_t bfparms[];                                  /* (bflength+2)*10 */
  28. extern bf_t bf_pi;
  29.  
  30.  
  31. extern bf_t bfxdel, bfydel, bfxdel2, bfydel2, bfclosenuff;      /* rbflength+2 */
  32. extern bf_t bftmpsqrx, bftmpsqry;                               /* rbflength+2 */
  33. extern _BFCMPLX bfold, /* bfnew, */ bfparm, bfsaved;             /* bflength+2 */
  34. extern _BFCMPLX bfnew;                                          /* rbflength+2 */
  35.  
  36.  
  37.  
  38. /* bigfltc.c */
  39. bf_t norm_bf(bf_t r);
  40. void norm_sign_bf(bf_t r, int positive);
  41. S16 adjust_bf_add(bf_t n1, bf_t n2);
  42. bf_t clear_bf(bf_t r);
  43. bf_t max_bf(bf_t r);
  44. bf_t copy_bf(bf_t r, bf_t n);
  45. int cmp_bf(bf_t n1, bf_t n2);
  46. int is_bf_neg(bf_t n);
  47. int is_bf_not_zero(bf_t n);
  48. bf_t unsafe_add_bf(bf_t r, bf_t n1, bf_t n2);
  49. bf_t unsafe_add_a_bf(bf_t r, bf_t n);
  50. bf_t unsafe_sub_bf(bf_t r, bf_t n1, bf_t n2);
  51. bf_t unsafe_sub_a_bf(bf_t r, bf_t n);
  52. bf_t neg_bf(bf_t r, bf_t n);
  53. bf_t neg_a_bf(bf_t r);
  54. bf_t double_bf(bf_t r, bf_t n);
  55. bf_t double_a_bf(bf_t r);
  56. bf_t half_bf(bf_t r, bf_t n);
  57. bf_t half_a_bf(bf_t r);
  58. bf_t unsafe_full_mult_bf(bf_t r, bf_t n1, bf_t n2);
  59. bf_t unsafe_mult_bf(bf_t r, bf_t n1, bf_t n2);
  60. bf_t unsafe_full_square_bf(bf_t r, bf_t n);
  61. bf_t unsafe_square_bf(bf_t r, bf_t n);
  62. bf_t unsafe_mult_bf_int(bf_t r, bf_t n, U16 u);
  63. bf_t mult_a_bf_int(bf_t r, U16 u);
  64. bf_t unsafe_div_bf_int(bf_t r, bf_t n,  U16 u);
  65. bf_t div_a_bf_int(bf_t r, U16 u);
  66.  
  67. /************/
  68. /* bigflt.c */
  69. void bf_hexdump(bf_t r);
  70. bf_t strtobf(bf_t r, char *s);
  71. int strlen_needed_bf();
  72. char *unsafe_bftostr(char *s, int dec, bf_t r);
  73. char *unsafe_bftostr_e(char *s, int dec, bf_t r);
  74. char *unsafe_bftostr_f(char *s, int dec, bf_t r);
  75. bn_t bftobn(bn_t n, bf_t f);
  76. bn_t bntobf(bf_t f, bn_t n);
  77. long bftoint(bf_t f);
  78. bf_t inttobf(bf_t r, long longval);
  79. bf_t floattobf(bf_t r, LDBL f);
  80.  
  81. int sign_bf(bf_t n);
  82. bf_t abs_bf(bf_t r, bf_t n);
  83. bf_t abs_a_bf(bf_t r);
  84. bf_t unsafe_inv_bf(bf_t r, bf_t n);
  85. bf_t unsafe_div_bf(bf_t r, bf_t n1, bf_t n2);
  86. bf_t unsafe_sqrt_bf(bf_t r, bf_t n);
  87. bf_t exp_bf(bf_t r, bf_t n);
  88. bf_t unsafe_ln_bf(bf_t r, bf_t n);
  89. bf_t unsafe_sincos_bf(bf_t s, bf_t c, bf_t n);
  90. bf_t unsafe_atan_bf(bf_t r, bf_t n);
  91. bf_t unsafe_atan2_bf(bf_t r, bf_t ny, bf_t nx);
  92.  
  93. bf_t add_bf(bf_t r, bf_t n1, bf_t n2);
  94. bf_t add_a_bf(bf_t r, bf_t n);
  95. bf_t sub_bf(bf_t r, bf_t n1, bf_t n2);
  96. bf_t sub_a_bf(bf_t r, bf_t n);
  97. bf_t full_mult_bf(bf_t r, bf_t n1, bf_t n2);
  98. bf_t mult_bf(bf_t r, bf_t n1, bf_t n2);
  99. bf_t full_square_bf(bf_t r, bf_t n);
  100. bf_t square_bf(bf_t r, bf_t n);
  101. bf_t mult_bf_int(bf_t r, bf_t n, U16 u);
  102. bf_t div_bf_int(bf_t r, bf_t n,  U16 u);
  103.  
  104. char *bftostr(char *s, int dec, bf_t r);
  105. char *bftostr_e(char *s, int dec, bf_t r);
  106. char *bftostr_f(char *s, int dec, bf_t r);
  107. LDBL bftofloat(bf_t n);
  108. bf_t inv_bf(bf_t r, bf_t n);
  109. bf_t div_bf(bf_t r, bf_t n1, bf_t n2);
  110. bf_t sqrt_bf(bf_t r, bf_t n);
  111. bf_t ln_bf(bf_t r, bf_t n);
  112. bf_t sincos_bf(bf_t s, bf_t c, bf_t n);
  113. bf_t atan_bf(bf_t r, bf_t n);
  114. bf_t atan2_bf(bf_t r, bf_t ny, bf_t nx);
  115. int is_bf_zero(bf_t n);
  116. int convert_bf(bf_t new, bf_t old, int newbflength, int oldbflength);
  117.  
  118. /****************************/
  119. /* bigflta.asm or bigfltc.c */
  120. LDBL extract_10(LDBL f, int *exp_ptr);
  121. LDBL scale_10( LDBL f, int n );
  122. LDBL extract_256(LDBL f, int *exp_ptr);
  123. LDBL scale_256( LDBL f, int n );
  124.  
  125. #define bf10_t bn_t  /* use this for dynamic allocation */
  126.  
  127. extern bf10_t unsafe_bftobf10(bf10_t s, int dec, bf_t n);
  128. extern bf10_t mult_a_bf10_int(bf10_t s, int dec, U16 n);
  129. extern bf10_t div_a_bf10_int (bf10_t s, int dec, U16 n);
  130. extern char  *bf10tostr_e(char *s, int dec, bf10_t n);
  131. extern char  *bf10tostr_f(char *s, int dec, bf10_t n);
  132. #endif
  133.