home *** CD-ROM | disk | FTP | other *** search
/ Programming Tool Box / SIMS_2.iso / code / math / basfun / compfun.txt < prev    next >
Text File  |  1990-11-07  |  5KB  |  109 lines

  1. To use the library of complex functions, make sure the library is in the same
  2. directory as QuickBASIC.  Then, invoke QuickBASIC with the following command
  3. line (or something similar):
  4.  
  5.      c:\qb45\qb/l compfun
  6.  
  7. where is this case, the program is in the c:\qb45 directory.  Once the library
  8. is loaded, you will need to explicitly declare each function that you wish to
  9. use.  For example, to use the 'cabs' function, put this line at the top of
  10. your program:
  11.  
  12.      DECLARE SUB cabs (x!, y!, z!)
  13.  
  14. and a similar one for any other functions you want to use from this library.
  15. The complex library includes (as FUNCTIONS) all of the real library.  A list of complex functions, their precision, and description, follows.
  16.  
  17.  
  18.           Library of Complex Functions
  19.  
  20.  
  21.  function                   precision      comments
  22.  
  23.  cabs (x!, y!, z!)           s          magnitude of (x,y), returned in z
  24.  cdabs (x#, y#, z#)          d            "
  25.  
  26.  ccart (r!, t!, x!, y!)      s          from polar to rectangular coordinates,
  27.                                              in radians
  28.  cdcart (r#, t#, x#, y#)     d            "
  29.  ccartd (r!, t!, x!, y!)     s          from polar to rectangular coordinates,
  30.                                              in degrees
  31.  cdcartd (r#, t#, x#, y#)    d            "
  32.  
  33.  cpolar (x!, y!, r!, t!)     s          from rectangular to polar coordinates,
  34.                                              in radians
  35.  cdpolar (x#, y#, r#, t#)    d            "
  36.  cpolard (x!, y!, r!, t!)    s          from rectangular to polar coordinates,
  37.                                              in degrees
  38.  cdpolard (x#, y#, r#, t#)   d            "
  39.  
  40.  cmult (x1!, y1!, x2!, y2!, x3!, y3!)
  41.                              s          multiply:  (x1,y1)*(x2,y3) = (x3,y3)
  42.  cdmult (x1#, y1#, x2#, y2#, x3#, y3#)
  43.                              d            "
  44.  cdiv (x1!, y1!, x2!, y2!, x3!, y3!)
  45.                              s          divide:  (x1,y1)/(x2,y2) = (x3,y3)
  46.  cddiv (x1#, y1#, x2#, y2#, x3#, y3#)
  47.                              d            "
  48.  
  49.  cexp (x1!, y1!, x2!, y2!)     s        (x2,y2) = exponential of (x1,y1)
  50.  cdexp (x1#, y1#, x2#, y2#)    d          "
  51.  
  52.  clog (x1!, y1!, x2!, y2!)     s        (x2,y2) = natural log of (x1,y1)
  53.  cdlog (x1#, y1#, x2#, y2#)    d          "
  54.  
  55.  csin (x1!, y1!, x2!, y2!)     s        (x2,y2) = sine of (x1,y1)
  56.  ccos (x1!, y1!, x2!, y2!)     s                  cosine
  57.  ctan (x1!, y1!, x2!, y2!)     s                  tangent
  58.  
  59.  cdsin (x1#, y1#, x2#, y2#)    d        (x2,y2) = sine of (x1,y1)
  60.  cdcos (x1#, y1#, x2#, y2#)    d                  cosine
  61.  cdtan (x1#, y1#, x2#, y2#)    d                  tangent
  62.  
  63.  casin (x1!, y1!, x2!, y2!)       s     (x2,y2) = inverse sine of (x1,y1)
  64.  cacos (x1!, y1!, x2!, y2!)       s               inverse cosine
  65.  catan (x1!, y1!, x2!, y2!)       s               inverse tangent
  66.  
  67.  cdasin (x1#, y1#, x2#, y2#)      d     (x2,y2) = inverse sine of (x1,y1)  
  68.  cdacos (x1#, y1#, x2#, y2#)      d               inverse cosine
  69.  cdatan (x1#, y1#, x2#, y2#)      d               inverse tangent
  70.  
  71.  csinh (x1!, y1!, x2!, y2!)       s     (x2,y2) = hyperbolic sine of (x1,y1)
  72.  ccosh (x1!, y1!, x2!, y2!)       s               hyperbolic cosine
  73.  ctanh (x1!, y1!, x2!, y2!)       s               hyperbolic tangent
  74.  
  75.  cdsinh (x1#, y1#, x2#, y2#)      d     (x2,y2) = hyperbolic sine of (x1,y1)
  76.  cdcosh (x1#, y1#, x2#, y2#)      d               hyperbolic cosine
  77.  cdtanh (x1#, y1#, x2#, y2#)      d               hyperbolic tangent
  78.  
  79.  casinh (x1!, y1!, x2!, y2!)      s     (x2,y2) = inv. hyp. sine of (x1,y1)
  80.  cacosh (x1!, y1!, x2!, y2!)      s               inv. hyp. cosine
  81.  catanh (x1!, y1!, x2!, y2!)      s               inv. hyp. tangent
  82.  
  83.  cdasinh (x1#, y1#, x2#, y2#)     d     (x2,y2) = inv. hyp. sine of (x1,y1)
  84.  cdacosh (x1#, y1#, x2#, y2#)     d               inv. hyp. cosine
  85.  cdatanh (x1#, y1#, x2#, y2#)     d               inv. hyp. tangent
  86.  
  87.  
  88. Key:  The precision of each routine is given by 's' (single) or 'd' (double
  89. precision).  (x,y) represents a complex number with real part x and imaginary
  90. part y.  For the polar representation, r is the radius and t (theta) is the
  91. polar angle.  Generally, the inputs are the first arguments passed to the
  92. subprogram, and the outputs are the last arguments in the list.
  93.  
  94. Note:  most of the trigonometric functions (regular and hyperbolic sine,
  95. cosine, and tangent) are not one-to-one, that is, more than one value of (x,y)
  96. will lead to the same functional value.  This makes it difficult to determine
  97. exactly which value to return with the inverse trig functions.  Only the
  98. principal value is computed in these routines, so that finding the inverse
  99. sine of the sine of (x,y) may not return you to (x,y):
  100.  
  101.      DECLARE SUB casin(x1,y1,x2,y2)
  102.      DECLARE SUB csin(x1,y1,x2,y2)
  103.         ....
  104.      CALL csin(x1,y1,u,v)
  105.      CALL casin(u,v,x2,y2)
  106.  
  107. At this point, depending on (x1,y1), the output (x2,y2) may not be the same
  108. as the input (x1,y1), because the complex sine is multi-valued.  Be warned.
  109.