home *** CD-ROM | disk | FTP | other *** search
/ Visual Basic Source Code / Visual Basic Source Code.iso / vbsource / optivc16 / vdmath.h < prev    next >
Encoding:
C/C++ Source or Header  |  1999-03-06  |  25.1 KB  |  463 lines

  1. /*  VDmath.h
  2.  
  3.   vector management functions:
  4.   math functions performed on each individual element of an
  5.   array or vector of the data type "double";   real numbers
  6.  
  7.   Copyright (c) 1996-1999 by Martin Sander
  8.   All Rights Reserved.
  9. */
  10.  
  11. #ifndef __VDMATH_H
  12. #define __VDMATH_H
  13.  
  14. #ifndef __VDSTD_H 
  15. #include <VDstd.h>
  16. #endif
  17.  
  18. #ifdef __cplusplus
  19. extern "C" {
  20. #endif
  21.  
  22.  
  23.  
  24. /**************************  Rounding **********************************/
  25.  
  26. int  __vf   VD_round(  dVector  Y, dVector X, ui size );
  27. int  __vf   VD_roundtoBI( biVector Y, dVector X, ui size );
  28. int  __vf   VD_roundtoSI( siVector Y, dVector X, ui size );
  29. int  __vf   VD_roundtoI(  iVector  Y, dVector X, ui size );
  30. int  __vf   VD_roundtoLI( liVector Y, dVector X, ui size );
  31. int  __vf   VD_roundtoQI( qiVector Y, dVector X, ui size );
  32. int  __vf   VD_roundtoUB( ubVector Y, dVector X, ui size );
  33. int  __vf   VD_roundtoUS( usVector Y, dVector X, ui size );
  34. int  __vf   VD_roundtoU(  uVector  Y, dVector X, ui size );
  35. int  __vf   VD_roundtoUL( ulVector Y, dVector X, ui size );
  36.  
  37. int  __vf   VD_floor(  dVector  Y, dVector X, ui size );
  38. int  __vf   VD_floortoBI( biVector Y, dVector X, ui size );
  39. int  __vf   VD_floortoSI( siVector Y, dVector X, ui size );
  40. int  __vf   VD_floortoI(  iVector  Y, dVector X, ui size );
  41. int  __vf   VD_floortoLI( liVector Y, dVector X, ui size );
  42. int  __vf   VD_floortoQI( qiVector Y, dVector X, ui size );
  43. int  __vf   VD_floortoUB( ubVector Y, dVector X, ui size );
  44. int  __vf   VD_floortoUS( usVector Y, dVector X, ui size );
  45. int  __vf   VD_floortoU(  uVector  Y, dVector X, ui size );
  46. int  __vf   VD_floortoUL( ulVector Y, dVector X, ui size );
  47.  
  48. int  __vf   VD_ceil(  dVector  Y, dVector X, ui size );
  49. int  __vf   VD_ceiltoBI( biVector Y, dVector X, ui size );
  50. int  __vf   VD_ceiltoSI( siVector Y, dVector X, ui size );
  51. int  __vf   VD_ceiltoI(  iVector  Y, dVector X, ui size );
  52. int  __vf   VD_ceiltoLI( liVector Y, dVector X, ui size );
  53. int  __vf   VD_ceiltoQI( qiVector Y, dVector X, ui size );
  54. int  __vf   VD_ceiltoUB( ubVector Y, dVector X, ui size );
  55. int  __vf   VD_ceiltoUS( usVector Y, dVector X, ui size );
  56. int  __vf   VD_ceiltoU(  uVector  Y, dVector X, ui size );
  57. int  __vf   VD_ceiltoUL( ulVector Y, dVector X, ui size );
  58.  
  59. int  __vf   VD_chop(  dVector  Y, dVector X, ui size );
  60. int  __vf   VD_choptoBI( biVector Y, dVector X, ui size );
  61. int  __vf   VD_choptoSI( siVector Y, dVector X, ui size );
  62. int  __vf   VD_choptoI(  iVector  Y, dVector X, ui size );
  63. int  __vf   VD_choptoLI( liVector Y, dVector X, ui size );
  64. int  __vf   VD_choptoQI( qiVector Y, dVector X, ui size );
  65. int  __vf   VD_choptoUB( ubVector Y, dVector X, ui size );
  66. int  __vf   VD_choptoUS( usVector Y, dVector X, ui size );
  67. int  __vf   VD_choptoU(  uVector  Y, dVector X, ui size );
  68. int  __vf   VD_choptoUL( ulVector Y, dVector X, ui size );
  69.  
  70. #define     VD_trunc      VD_chop
  71. #define     VD_trunctoBI  VD_choptoBI
  72. #define     VD_trunctoSI  VD_choptoSI
  73. #define     VD_trunctoI   VD_choptoI
  74. #define     VD_trunctoLI  VD_choptoLI
  75. #define     VD_trunctoQI  VD_choptoQI
  76. #define     VD_trunctoUB  VD_choptoUB
  77. #define     VD_trunctoUS  VD_choptoUS
  78. #define     VD_trunctoU   VD_choptoU
  79. #define     VD_trunctoUL  VD_choptoUL
  80.  
  81. #if defined V_HUGE
  82.       #define   VD_roundtoUI   VD_roundtoUL
  83.       #define   VD_floortoUI   VD_floortoUL
  84.       #define   VD_ceiltoUI    VD_ceiltoUL
  85.       #define   VD_choptoUI    VD_choptoUL
  86.       #define   VD_trunctoUI   VD_trunctoUL
  87. #else
  88.       #define   VD_roundtoUI   VD_roundtoU
  89.       #define   VD_floortoUI   VD_floortoU
  90.       #define   VD_ceiltoUI    VD_ceiltoU
  91.       #define   VD_choptoUI    VD_choptoU
  92.       #define   VD_trunctoUI   VD_trunctoU
  93. #endif
  94.  
  95. /************************  Comparisons   ***************************/
  96.  
  97. void __vf   VD_cmp0(    dVector Y, dVector X, ui size );
  98. ui   __vf   VD_cmp_eq0( dVector Y, dVector X, ui size );
  99. ui   __vf   VD_cmp_ne0( dVector Y, dVector X, ui size );
  100. ui   __vf   VD_cmp_le0( dVector Y, dVector X, ui size );
  101. ui   __vf   VD_cmp_lt0( dVector Y, dVector X, ui size );
  102. ui   __vf   VD_cmp_ge0( dVector Y, dVector X, ui size );
  103. ui   __vf   VD_cmp_gt0( dVector Y, dVector X, ui size );
  104.  
  105. ui   __vf   VD_cmp_eq0ind( uiVector Ind, dVector X, ui size );
  106. ui   __vf   VD_cmp_ne0ind( uiVector Ind, dVector X, ui size );
  107. ui   __vf   VD_cmp_le0ind( uiVector Ind, dVector X, ui size );
  108. ui   __vf   VD_cmp_lt0ind( uiVector Ind, dVector X, ui size );
  109. ui   __vf   VD_cmp_ge0ind( uiVector Ind, dVector X, ui size );
  110. ui   __vf   VD_cmp_gt0ind( uiVector Ind, dVector X, ui size );
  111.  
  112. void __vf   VD_cmpC(    dVector Y, dVector X, ui size, double C );
  113. ui   __vf   VD_cmp_eqC( dVector Y, dVector X, ui size, double C );
  114. ui   __vf   VD_cmp_neC( dVector Y, dVector X, ui size, double C );
  115. ui   __vf   VD_cmp_leC( dVector Y, dVector X, ui size, double C );
  116. ui   __vf   VD_cmp_ltC( dVector Y, dVector X, ui size, double C );
  117. ui   __vf   VD_cmp_geC( dVector Y, dVector X, ui size, double C );
  118. ui   __vf   VD_cmp_gtC( dVector Y, dVector X, ui size, double C );
  119.  
  120. ui   __vf   VD_cmp_eqCind( uiVector Ind, dVector X, ui size, double C );
  121. ui   __vf   VD_cmp_neCind( uiVector Ind, dVector X, ui size, double C );
  122. ui   __vf   VD_cmp_leCind( uiVector Ind, dVector X, ui size, double C );
  123. ui   __vf   VD_cmp_ltCind( uiVector Ind, dVector X, ui size, double C );
  124. ui   __vf   VD_cmp_geCind( uiVector Ind, dVector X, ui size, double C );
  125. ui   __vf   VD_cmp_gtCind( uiVector Ind, dVector X, ui size, double C );
  126.  
  127. void __vf   VD_cmpV(    dVector Z, dVector X, dVector Y, ui size );
  128. ui   __vf   VD_cmp_eqV( dVector Z, dVector X, dVector Y, ui size );
  129. ui   __vf   VD_cmp_neV( dVector Z, dVector X, dVector Y, ui size );
  130. ui   __vf   VD_cmp_leV( dVector Z, dVector X, dVector Y, ui size );
  131. ui   __vf   VD_cmp_ltV( dVector Z, dVector X, dVector Y, ui size );
  132. ui   __vf   VD_cmp_geV( dVector Z, dVector X, dVector Y, ui size );
  133. ui   __vf   VD_cmp_gtV( dVector Z, dVector X, dVector Y, ui size );
  134.  
  135. ui   __vf   VD_cmp_eqVind( uiVector Ind, dVector X, dVector Y, ui size );
  136. ui   __vf   VD_cmp_neVind( uiVector Ind, dVector X, dVector Y, ui size );
  137. ui   __vf   VD_cmp_leVind( uiVector Ind, dVector X, dVector Y, ui size );
  138. ui   __vf   VD_cmp_ltVind( uiVector Ind, dVector X, dVector Y, ui size );
  139. ui   __vf   VD_cmp_geVind( uiVector Ind, dVector X, dVector Y, ui size );
  140. ui   __vf   VD_cmp_gtVind( uiVector Ind, dVector X, dVector Y, ui size );
  141.  
  142. ui   __vf   VD_cmp_inclrange0C( dVector Y, dVector X, ui size, double C );
  143. ui   __vf   VD_cmp_exclrange0C( dVector Y, dVector X, ui size, double C );
  144. ui   __vf   VD_cmp_inclrangeCC( dVector Y, dVector X, ui size, double CLo, double CHi );
  145. ui   __vf   VD_cmp_exclrangeCC( dVector Y, dVector X, ui size, double CLo, double CHi );
  146.  
  147. ui   __vf   VD_cmp_inclrange0Cind( uiVector Ind, dVector X, ui size, double C );
  148. ui   __vf   VD_cmp_exclrange0Cind( uiVector Ind, dVector X, ui size, double C );
  149. ui   __vf   VD_cmp_inclrangeCCind( uiVector Ind, dVector X, ui size, double CLo, double CHi );
  150. ui   __vf   VD_cmp_exclrangeCCind( uiVector Ind, dVector X, ui size, double CLo, double CHi );
  151.  
  152.  
  153. /********************  Standard Arithmetics   ***************************/
  154.  
  155. void  __vf  VD_equC( dVector X, ui size, double C );
  156. void  __vf  VD_equV( dVector Y, dVector X, ui size );
  157. void  __vf  VDx_equV( dVector Y, dVector X, ui size, double A, double B );
  158.  
  159. void  __vf  VD_addC(  dVector Y, dVector X, ui size, double C );
  160. void  __vf  VD_subC(  dVector Y, dVector X, ui size, double C );
  161. void  __vf  VD_subrC( dVector Y, dVector X, ui size, double C );
  162. void  __vf  VD_mulC(  dVector Y, dVector X, ui size, double C );
  163. void  __vf  VD_divC(  dVector Y, dVector X, ui size, double C );
  164. void  __vf  VD_divrC( dVector Y, dVector X, ui size, double C );
  165. void  __vf  VDx_divrC( dVector Y, dVector X, ui size, double A, double B, double C );
  166.  
  167. void  __vf  VD_addV(  dVector Z, dVector X, dVector Y, ui size );
  168. void  __vf  VD_subV(  dVector Z, dVector X, dVector Y, ui size );
  169. void  __vf  VD_subrV( dVector Z, dVector X, dVector Y, ui size );
  170. void  __vf  VD_mulV(  dVector Z, dVector X, dVector Y, ui size );
  171. void  __vf  VD_divV(  dVector Z, dVector X, dVector Y, ui size );
  172. void  __vf  VD_divrV( dVector Z, dVector X, dVector Y, ui size );
  173.  
  174. void  __vf  VDx_addV(  dVector Z, dVector X, dVector Y, ui size, double A, double B );
  175.                                   /* Z = (A*X+B) + Y */
  176. void  __vf  VDx_subV(  dVector Z, dVector X, dVector Y, ui size, double A, double B );
  177. void  __vf  VDx_subrV( dVector Z, dVector X, dVector Y, ui size, double A, double B );
  178. void  __vf  VDx_mulV(  dVector Z, dVector X, dVector Y, ui size, double A, double B );
  179. void  __vf  VDx_divV(  dVector Z, dVector X, dVector Y, ui size, double A, double B );
  180. void  __vf  VDx_divrV( dVector Z, dVector X, dVector Y, ui size, double A, double B );
  181.  
  182. void  __vf  VDs_addV(  dVector Z, dVector X, dVector Y, ui size, double C ); /* Z=C*(X+Y) */
  183. void  __vf  VDs_subV(  dVector Z, dVector X, dVector Y, ui size, double C );
  184. void  __vf  VDs_subrV( dVector Z, dVector X, dVector Y, ui size, double C );
  185. void  __vf  VDs_mulV(  dVector Z, dVector X, dVector Y, ui size, double C );
  186. void  __vf  VDs_divV(  dVector Z, dVector X, dVector Y, ui size, double C );
  187. void  __vf  VDs_divrV( dVector Z, dVector X, dVector Y, ui size, double C );
  188.  
  189. void  __vf  VD_maxC(   dVector Y, dVector X, ui size, double C );
  190. void  __vf  VD_minC(   dVector Y, dVector X, ui size, double C );
  191. void  __vf  VD_limit(  dVector Y, dVector X, ui size, double Min, double Max );
  192. void  __vf  VD_flush0( dVector Y, dVector X, ui size, double AbsMin );
  193. void  __vf  VD_maxV(   dVector Z, dVector X, dVector Y, ui size );
  194. void  __vf  VD_minV(   dVector Z, dVector X, dVector Y, ui size );
  195. void  __vf  VD_modC(   dVector Y, dVector X, ui size, double C );
  196. void  __vf  VD_modV(   dVector Z, dVector X, dVector Y, ui size );
  197. void  __vf  VDx_modV(  dVector Z, dVector X, dVector Y, ui size, double A, double B );
  198. #define     VD_fmodC    VD_modC
  199. #define     VD_fmodV    VD_modV
  200. #define     VDx_fmodV   VDx_modV
  201.  
  202. void __vf  VD_redC(  dVector Y, dVector X, ui size, double C );
  203. void __vf  VD_redV(  dVector Z, dVector X, dVector Y, ui size );
  204. void __vf  VDx_redV( dVector Z, dVector X, dVector Y, ui size, double A, double B );
  205. void __vf  VD_visC(  dVector Y, dVector X, ui size, double C );
  206. void __vf  VD_visV(  dVector Z, dVector X, dVector Y, ui size );
  207. void __vf  VDx_visV( dVector Z, dVector X, dVector Y, ui size, double A, double B );
  208. void __vf  VD_hypC(  dVector Y, dVector X, ui size, double C );
  209. void __vf  VD_hypV(  dVector Z, dVector X, dVector Y, ui size );
  210. void __vf  VDx_hypV( dVector Z, dVector X, dVector Y, ui size, double A, double B );
  211.  
  212. void __vf VD_lincomb( dVector Z, dVector X, dVector Y, ui size,
  213.                       double CX, double CY );  /* Z[i]=CX*X[i]+CY*Y[i] */
  214. #define    VD_sgn    VD_cmp0
  215.  
  216. /******************** Accumulation (Y += X) ******************************/
  217.  
  218. void __vf VD_accV(   dVector Y, dVector  X, ui size );
  219. void __vf VD_accVF(  dVector Y, fVector  X, ui size );
  220. void __vf VD_accVBI( dVector Y, biVector X, ui size );
  221. void __vf VD_accVSI( dVector Y, siVector X, ui size );
  222. void __vf VD_accVI(  dVector Y, iVector  X, ui size );
  223. void __vf VD_accVLI( dVector Y, liVector X, ui size );
  224. void __vf VD_accVQI( dVector Y, qiVector X, ui size );
  225. void __vf VD_accVUB( dVector Y, ubVector X, ui size );
  226. void __vf VD_accVUS( dVector Y, usVector X, ui size );
  227. void __vf VD_accVU(  dVector Y, uVector  X, ui size );
  228. void __vf VD_accVUL( dVector Y, ulVector X, ui size );
  229. #if defined V_HUGE
  230.     #define VD_accVUI  VD_accVUL
  231. #else
  232.     #define VD_accVUI  VD_accVU
  233. #endif
  234.  
  235. /***************** Functions of a sub-set of elements  ********************/
  236.  
  237. void  __vf  VD_subvector_equC(  dVector Y, ui subsiz, unsigned samp, double C );
  238. void  __vf  VD_subvector_equV(  dVector Y, ui subsiz, unsigned samp, dVector X );
  239.  
  240. void  __vf  VD_subvector_addC(  dVector Y, ui subsiz, unsigned samp, double C );
  241. void  __vf  VD_subvector_subC(  dVector Y, ui subsiz, unsigned samp, double C );
  242. void  __vf  VD_subvector_subrC( dVector Y, ui subsiz, unsigned samp, double C );
  243. void  __vf  VD_subvector_mulC(  dVector Y, ui subsiz, unsigned samp, double C );
  244. void  __vf  VD_subvector_divC(  dVector Y, ui subsiz, unsigned samp, double C );
  245. void  __vf  VD_subvector_divrC( dVector Y, ui subsiz, unsigned samp, double C );
  246.  
  247. void  __vf  VD_subvector_addV(  dVector Y, ui subsiz, unsigned samp, dVector X );
  248. void  __vf  VD_subvector_subV(  dVector Y, ui subsiz, unsigned samp, dVector X );
  249. void  __vf  VD_subvector_subrV( dVector Y, ui subsiz, unsigned samp, dVector X );
  250. void  __vf  VD_subvector_mulV(  dVector Y, ui subsiz, unsigned samp, dVector X );
  251. void  __vf  VD_subvector_divV(  dVector Y, ui subsiz, unsigned samp, dVector X );
  252. void  __vf  VD_subvector_divrV( dVector Y, ui subsiz, unsigned samp, dVector X );
  253.  
  254.  
  255. /********************  Mathematical Functions **************************/
  256.  
  257. int   __vf   VD_abs( dVector Y, dVector X, ui size );
  258. int   __vf   VD_neg( dVector Y, dVector X, ui size );
  259. int   __vf   VD_inv( dVector Y, dVector X, ui size );
  260. int   __vf   VDx_inv( dVector Y, dVector X, ui size, double A, double B );
  261. int   __vf   VD_intfrac( dVector Int, dVector Frac, dVector X, ui size );
  262. #define      VD_modf    VD_intfrac
  263. int   __vf   VD_mantexp( dVector Mant, iVector Exp, dVector X, ui size );
  264. #define      VD_frexp   VD_mantexp
  265.  
  266. int  __vf    VD_hypotC( dVector Y, dVector X, ui size, double C );
  267. int  __vf    VD_hypotV( dVector Z, dVector X, dVector Y, ui size );
  268. int  __vf    VDx_hypotV( dVector Z, dVector X, dVector Y, ui size, double A, double B );
  269.  
  270. int  __vf    VD_scale2( dVector Y, dVector X, ui size, int expo );
  271. int  __vf    VD_scale10( dVector Y, dVector X, ui size, int expo );
  272. #define      VD_ldexp    VD_scale2
  273.  
  274. int  __vf    VD_square( dVector Y, dVector X, ui size );
  275. int  __vf    VDx_square( dVector Y, dVector X, ui size, double A, double B );
  276. int  __vf    VD_cubic( dVector Y, dVector X, ui size );
  277. int  __vf    VDx_cubic( dVector Y, dVector X, ui size, double A, double B );
  278. int  __vf    VD_quartic( dVector Y, dVector X, ui size );
  279. int  __vf    VDx_quartic( dVector Y, dVector X, ui size, double A, double B );
  280. int  __vf    VD_poly( dVector Y, dVector X, ui size, dVector Coeff, unsigned deg );
  281. int  __vf    VDx_poly( dVector Y, dVector X, ui size, dVector Coeff, unsigned deg, double A, double B );
  282. int  __vf    VD_ipow( dVector Y, dVector X, ui size, int ipow );
  283. int  __vf    VDx_ipow( dVector Y, dVector X, ui size, int ipow, double A, double B, double C );
  284.                           /* ipow: integer powers of x */
  285.         /* extra fast integer powers: "unprotected", without error handling: */
  286. int  __vf    VDu_square( dVector Y, dVector X, ui size ); /* fast, unprotected version */
  287. int  __vf    VDux_square( dVector Y, dVector X, ui size, double A, double B );
  288. int  __vf    VDu_cubic( dVector Y, dVector X, ui size );
  289. int  __vf    VDux_cubic( dVector Y, dVector X, ui size, double A, double B );
  290. int  __vf    VDu_quartic( dVector Y, dVector X, ui size );
  291. int  __vf    VDux_quartic( dVector Y, dVector X, ui size, double A, double B );
  292. int  __vf    VDu_poly( dVector Y, dVector X, ui size, dVector Coeff, unsigned deg );
  293. int  __vf    VDux_poly( dVector Y, dVector X, ui size, dVector Coeff, unsigned deg, double A, double B );
  294. int  __vf    VDu_ipow( dVector Y, dVector X, ui size, int ipow );
  295. int  __vf    VDux_ipow( dVector Y, dVector X, ui size, int ipow, double A, double B, double C );
  296.  
  297. int  __vf    VD_ipow2(  dVector Y, iVector X, ui size );
  298. int  __vf    VD_ipow10( dVector Y, iVector X, ui size );
  299.                           /* ipow2 and ipow10: integer powers of 2 and 10 */
  300.  
  301. int  __vf   VD_pow(    dVector Y, dVector X, ui size, double expo );
  302. int  __vf   VDx_pow(   dVector Y, dVector X, ui size, double expo, double A, double B, double C );
  303. int  __vf   VD_pow2(   dVector Y, dVector X, ui size );
  304. int  __vf   VDx_pow2(  dVector Y, dVector X, ui size, double A, double B, double C );
  305. int  __vf   VD_pow10(  dVector Y, dVector X, ui size );
  306. int  __vf   VDx_pow10( dVector Y, dVector X, ui size, double A, double B, double C );
  307.                           /* pow2 and pow10: basis 2 or 10 raised to power x */
  308.  
  309. int  __vf   VD_sqrt(  dVector Y, dVector X, ui size );
  310. int  __vf   VDx_sqrt( dVector Y, dVector X, ui size, double A, double B, double C );
  311.  
  312. int  __vf   VD_log(    dVector Y, dVector X, ui size );
  313. int  __vf   VD_log2(   dVector Y, dVector X, ui size );
  314. int  __vf   VD_log10(  dVector Y, dVector X, ui size );
  315. #define     VD_ln    VD_log
  316. int  __vf   VDx_log(   dVector Y, dVector X, ui size, double A, double B, double C );
  317. int  __vf   VDx_log2(  dVector Y, dVector X, ui size, double A, double B, double C );
  318. int  __vf   VDx_log10( dVector Y, dVector X, ui size, double A, double B, double C );
  319. #define     VDx_ln   VDx_log
  320.  
  321. int  __vf   VD_OD( dVector OD, dVector X, dVector X0, ui size );  /* OD = log10( X0/X ) */
  322. int  __vf   VD_ODwDark( dVector OD, dVector X, dVector XDark,
  323.                         dVector X0, dVector X0Dark, ui size );
  324. void __vf   VD_setODThresh( double minX, double minX0 );
  325.  
  326. int  __vf   VD_exp(   dVector Y, dVector X, ui size );
  327. int  __vf   VDx_exp(  dVector Y, dVector X, ui size, double A, double B, double C );
  328. int  __vf   VD_expArbBase(  dVector Y, dVector X, ui size, double Base );
  329. int  __vf   VDx_expArbBase( dVector Y, dVector X, ui size, double Base,
  330.                             double A, double B, double C );
  331. int  __vf   VD_expc(  dVector Y, dVector X, ui size );
  332. int  __vf   VDx_expc( dVector Y, dVector X, ui size, double A, double B, double C );
  333.                          /* expc(x) = 1 - exp(x) */
  334. int  __vf   VD_exp2(  dVector Y, dVector X, ui size );
  335. int  __vf   VDx_exp2( dVector Y, dVector X, ui size, double A, double B, double C );
  336. int  __vf   VD_exp10(  dVector Y, dVector X, ui size );
  337. int  __vf   VDx_exp10( dVector Y, dVector X, ui size, double A, double B, double C );
  338.                        /* exp2 and exp10 used as synonyms for pow2 and pow10 */
  339. int  __vf   VD_expmx2(  dVector Y, dVector X, ui size );
  340. int  __vf   VDx_expmx2( dVector Y, dVector X, ui size, double A, double B, double C );
  341.                         /* expmx2(x) = exp( -x**2 ) */
  342.  
  343. int  __vf   VD_erf(     dVector Y, dVector X, ui size );
  344. int  __vf   VDx_erf(    dVector Y, dVector X, ui size, double A, double B, double C );
  345. int  __vf   VD_erfc(    dVector Y, dVector X, ui size );
  346. int  __vf   VDx_erfc(   dVector Y, dVector X, ui size, double A, double B, double C );
  347. int  __vf   VD_Gauss(   dVector Y, dVector X, ui size, double Wid, double Cent, double C );
  348. #define VD_gauss  VD_Gauss
  349. int  __vf   VD_Lorentz( dVector Y, dVector X, ui size, double Wid, double Cent, double C );
  350. #define VD_lorentz VD_Lorentz
  351.  
  352. int  __vf   VD_sin(     dVector Y, dVector X, ui size );
  353. int  __vf   VDx_sin(    dVector Y, dVector X, ui size, double A, double B, double C );
  354. int  __vf   VD_cos(     dVector Y, dVector X, ui size );
  355. int  __vf   VDx_cos(    dVector Y, dVector X, ui size, double A, double B, double C );
  356. int  __vf   VD_sincos(  dVector Sin, dVector Cos, dVector X, ui size );
  357. int  __vf   VDx_sincos( dVector Sin, dVector Cos, dVector X, ui size, double A, double B, double C );
  358.  
  359. int  __vf   VD_tan(     dVector Y, dVector X, ui size );
  360. int  __vf   VDx_tan(    dVector Y, dVector X, ui size, double A, double B, double C );
  361. int  __vf   VD_cot(     dVector Y, dVector X, ui size );
  362. int  __vf   VDx_cot(    dVector Y, dVector X, ui size, double A, double B, double C );
  363.  
  364. int  __vf   VD_sec(     dVector Y, dVector X, ui size );
  365. int  __vf   VDx_sec(    dVector Y, dVector X, ui size, double A, double B, double C );
  366. int  __vf   VD_cosec(   dVector Y, dVector X, ui size );
  367. int  __vf   VDx_cosec(  dVector Y, dVector X, ui size, double A, double B, double C );
  368.  
  369. int  __vf   VD_sin2(    dVector Y, dVector X, ui size );
  370. int  __vf   VDx_sin2(   dVector Y, dVector X, ui size, double A, double B, double C );
  371. int  __vf   VD_cos2(    dVector Y, dVector X, ui size );
  372. int  __vf   VDx_cos2(   dVector Y, dVector X, ui size, double A, double B, double C );
  373. int  __vf   VD_sincos2( dVector Sin, dVector Cos, dVector X, ui size );
  374. int  __vf   VDx_sincos2( dVector Sin, dVector Cos, dVector X, ui size, double A, double B, double C );
  375.  
  376. int  __vf   VD_tan2(     dVector Y, dVector X, ui size );
  377. int  __vf   VDx_tan2(    dVector Y, dVector X, ui size, double A, double B, double C );
  378. int  __vf   VD_cot2(     dVector Y, dVector X, ui size );
  379. int  __vf   VDx_cot2(    dVector Y, dVector X, ui size, double A, double B, double C );
  380. int  __vf   VD_sec2(     dVector Y, dVector X, ui size );
  381. int  __vf   VDx_sec2(    dVector Y, dVector X, ui size, double A, double B, double C );
  382. int  __vf   VD_cosec2(   dVector Y, dVector X, ui size );
  383. int  __vf   VDx_cosec2(  dVector Y, dVector X, ui size, double A, double B, double C );
  384.  
  385.  /*  reduced-range sine and cosine for -2Pi <= x <= +2Pi */
  386. int  __vf   VDr_sin(     dVector Y, dVector X, ui size );
  387. int  __vf   VDrx_sin(    dVector Y, dVector X, ui size, double A, double B, double C );
  388. int  __vf   VDr_cos(     dVector Y, dVector X, ui size );
  389. int  __vf   VDrx_cos(    dVector Y, dVector X, ui size, double A, double B, double C );
  390. int  __vf   VDr_sincos(  dVector Sin, dVector Cos, dVector X, ui size );
  391. int  __vf   VDrx_sincos( dVector Sin, dVector Cos, dVector X, ui size, double A, double B, double C );
  392. int  __vf   VDr_sin2(     dVector Y, dVector X, ui size );
  393. int  __vf   VDrx_sin2(    dVector Y, dVector X, ui size, double A, double B, double C );
  394. int  __vf   VDr_cos2(     dVector Y, dVector X, ui size );
  395. int  __vf   VDrx_cos2(    dVector Y, dVector X, ui size, double A, double B, double C );
  396. int  __vf   VDr_sincos2(  dVector Sin, dVector Cos, dVector X, ui size );
  397. int  __vf   VDrx_sincos2( dVector Sin, dVector Cos, dVector X, ui size, double A, double B, double C );
  398.  
  399. /* trigonometric functions of rational multiples of Pi: x = p/q * Pi */
  400. int  __vf   VD_sinrpi(   dVector Y, iVector P, ui size, int q );
  401. int  __vf   VD_cosrpi(   dVector Y, iVector P, ui size, int q );
  402. int  __vf   VD_sincosrpi( dVector Sin, dVector Cos, iVector P, ui size, int q );
  403. int  __vf   VD_tanrpi(   dVector Y, iVector P, ui size, int q );
  404. int  __vf   VD_cotrpi(   dVector Y, iVector P, ui size, int q );
  405. int  __vf   VD_secrpi(   dVector Y, iVector P, ui size, int q );
  406. int  __vf   VD_cosecrpi( dVector Y, iVector P, ui size, int q );
  407.  
  408. int  __vf   VD_sinrpi2(  dVector Y, iVector P, ui size, int q );
  409. int  __vf   VD_cosrpi2(  dVector Y, iVector P, ui size, int q );
  410. int  __vf   VD_sincosrpi2( dVector Sin, dVector Cos, iVector P, ui size, int q );
  411. int  __vf   VD_tanrpi2(  dVector Y, iVector P, ui size, int q );
  412. int  __vf   VD_cotrpi2(  dVector Y, iVector P, ui size, int q );
  413. int  __vf   VD_secrpi2(  dVector Y, iVector P, ui size, int q );
  414. int  __vf   VD_cosecrpi2( dVector Y, iVector P, ui size, int q );
  415.  
  416. int  __vf   VD_sinrpi3(  dVector Y, iVector P, ui size, int q );
  417. int  __vf   VD_cosrpi3(  dVector Y, iVector P, ui size, int q );
  418. int  __vf   VD_sincosrpi3( dVector Sin, dVector Cos, iVector P, ui size, int q );
  419. int  __vf   VD_tanrpi3(  dVector Y, iVector P, ui size, int q );
  420. int  __vf   VD_cotrpi3(  dVector Y, iVector P, ui size, int q );
  421. int  __vf   VD_secrpi3(  dVector Y, iVector P, ui size, int q );
  422. int  __vf   VD_cosecrpi3( dVector Y, iVector P, ui size, int q );
  423.  
  424. int  __vf   VD_sinc(     dVector Y, dVector X, ui size );
  425. int  __vf   VDx_sinc(    dVector Y, dVector X, ui size, double A, double B, double C );
  426. int  __vf   VD_Kepler(   dVector Y, dVector X, ui size, double T, double e );
  427. int  __vf   VDx_Kepler(  dVector Y, dVector X, ui size, double T, double e,
  428.                          double A, double B );
  429. #define VD_kepler  VD_Kepler
  430. #define VDx_kepler VDx_Kepler
  431.  
  432. int  __vf   VD_asin(    dVector Y, dVector X, ui size );
  433. int  __vf   VDx_asin(   dVector Y, dVector X, ui size, double A, double B, double C );
  434. int  __vf   VD_acos(    dVector Y, dVector X, ui size );
  435. int  __vf   VDx_acos(   dVector Y, dVector X, ui size, double A, double B, double C );
  436. int  __vf   VD_atan(    dVector Y, dVector X, ui size );
  437. int  __vf   VDx_atan(   dVector Y, dVector X, ui size, double A, double B, double C );
  438. int  __vf   VD_atan2(   dVector Z, dVector X, dVector Y, ui size );
  439. int  __vf   VDx_atan2(  dVector Z, dVector X, dVector Y, ui size, double A, double B, double C );
  440.  
  441. int  __vf   VD_sinh(    dVector Y, dVector X, ui size );
  442. int  __vf   VDx_sinh(   dVector Y, dVector X, ui size, double A, double B, double C );
  443. int  __vf   VD_cosh(    dVector Y, dVector X, ui size );
  444. int  __vf   VDx_cosh(   dVector Y, dVector X, ui size, double A, double B, double C );
  445. int  __vf   VD_tanh(    dVector Y, dVector X, ui size );
  446. int  __vf   VDx_tanh(   dVector Y, dVector X, ui size, double A, double B, double C );
  447. int  __vf   VD_coth(    dVector Y, dVector X, ui size );
  448. int  __vf   VDx_coth(   dVector Y, dVector X, ui size, double A, double B, double C );
  449. int  __vf   VD_sech(    dVector Y, dVector X, ui size );
  450. int  __vf   VDx_sech(   dVector Y, dVector X, ui size, double A, double B, double C );
  451. int  __vf   VD_cosech(  dVector Y, dVector X, ui size );
  452. int  __vf   VDx_cosech( dVector Y, dVector X, ui size, double A, double B, double C );
  453. int  __vf   VD_sech2(   dVector Y, dVector X, ui size );
  454. int  __vf   VDx_sech2(  dVector Y, dVector X, ui size, double A, double B, double C );
  455.  
  456.  
  457. #ifdef __cplusplus
  458. }
  459. #endif
  460.  
  461.  
  462. #endif /* __VDMATH_H */
  463.