home *** CD-ROM | disk | FTP | other *** search
/ Monster Media 1994 #1 / monster.zip / monster / PROG_PAS / TRIG.ZIP / TRIG1.PAS < prev    next >
Pascal/Delphi Source File  |  1994-01-19  |  5KB  |  282 lines

  1. LIBRARY TRIG1;
  2.  
  3. USES WINTYPES,WINPROCS;
  4.  
  5. FUNCTION ARCCOS(C,DEFAULT:EXTENDED):EXTENDED;EXPORT;
  6. VAR
  7. S,F:EXTENDED;
  8. BEGIN
  9. {-1=<input<=1, 0=<output<=pi};
  10. IF (ABS(C)>1) THEN
  11. BEGIN
  12. ARCCOS:=DEFAULT;
  13. END
  14. ELSE
  15. BEGIN
  16. IF (C=0) THEN
  17. BEGIN
  18. ARCCOS:=PI/2;
  19. END
  20. ELSE
  21. BEGIN
  22. IF ((ABS(C))=1) THEN
  23. BEGIN
  24. S:=0;
  25. F:=ARCTAN(S/C);
  26. END
  27. ELSE
  28. BEGIN
  29. S:=SQRT(1-SQR(C));
  30. F:=ARCTAN(S/ABS(C));
  31. END;
  32. IF (C<0) THEN
  33. BEGIN
  34. ARCCOS:=PI-F;
  35. END
  36. ELSE
  37. BEGIN
  38. ARCCOS:=F;
  39. END;
  40. END;
  41. END;
  42. END;
  43.  
  44. FUNCTION ARCSIN(S,DEFAULT:EXTENDED):EXTENDED;EXPORT;
  45. VAR
  46. C,F:EXTENDED;
  47. BEGIN
  48. {-1=<input<=1, -pi/2=<output<=pi/2};
  49. IF (ABS(S)>1) THEN
  50. BEGIN
  51. ARCSIN:=DEFAULT;
  52. END
  53. ELSE
  54. BEGIN
  55. IF ((ABS(S))=1) THEN
  56. BEGIN
  57. ARCSIN:=(INT(S/(ABS(S))))*PI/2;
  58. END
  59. ELSE
  60. BEGIN
  61. C:=SQRT(1-SQR(S));
  62. F:=ARCTAN(S/(ABS(C)));
  63. ARCSIN:=F;
  64. END;
  65. END;
  66. END;
  67.  
  68. FUNCTION TAN(THETA,LIMIT:EXTENDED):EXTENDED;EXPORT;
  69. BEGIN
  70. {-inf=<input<=inf, -inf=<output<=inf};
  71. IF (COS(THETA)=0) THEN
  72. BEGIN
  73. IF (SIN(THETA)>=0) THEN
  74. BEGIN
  75. TAN:=LIMIT;
  76. END
  77. ELSE
  78. BEGIN
  79. TAN:=-LIMIT;
  80. END;
  81. END
  82. ELSE
  83. BEGIN
  84. TAN:=(SIN(THETA))/(COS(THETA));
  85. END;
  86. END;
  87.  
  88. FUNCTION SINH(U:EXTENDED):EXTENDED;EXPORT;
  89. BEGIN
  90. {-inf=<input<=inf, -inf=<output<=inf};
  91. SINH:=(1/2)*(EXP(U)-EXP(-U));
  92. END;
  93.  
  94. FUNCTION COSH(U:EXTENDED):EXTENDED;EXPORT;
  95. BEGIN
  96. {-inf=<input<=inf, +1=<output<=inf};
  97. COSH:=(1/2)*(EXP(U)+EXP(-U));
  98. END;
  99.  
  100. FUNCTION TANH(U:EXTENDED):EXTENDED;EXPORT;
  101. BEGIN
  102. {-inf=<input<=inf, -1<output<1};
  103. TANH:=(EXP(U)-EXP(-U))/(EXP(U)+EXP(-U));
  104. END;
  105.  
  106. FUNCTION COTH(U,DEFAULT:EXTENDED):EXTENDED;EXPORT;
  107. BEGIN
  108. {all input except 0, (-inf=<output<-1)and(1<output<=inf)};
  109. IF (U=0) THEN
  110. COTH:=DEFAULT
  111. ELSE
  112. COTH:=(EXP(U)+EXP(-U))/(EXP(U)-EXP(-U));
  113. END;
  114.  
  115. FUNCTION SECH(U:EXTENDED):EXTENDED;EXPORT;
  116. BEGIN
  117. {-inf=<input<=inf, 0<output<=1};
  118. SECH:=2/(EXP(U)+EXP(-U));
  119. END;
  120.  
  121. FUNCTION CSCH(U,DEFAULT:EXTENDED):EXTENDED;EXPORT;
  122. BEGIN
  123. {all input except 0, all output except 0};
  124. IF (U=0) THEN
  125. CSCH:=DEFAULT
  126. ELSE
  127. CSCH:=2/(EXP(U)-EXP(-U));
  128. END;
  129.  
  130. FUNCTION ARCTANH(U,DEFAULT:EXTENDED):EXTENDED;EXPORT;
  131. BEGIN
  132. {-1<input<1, -inf=<output<=inf};
  133. IF (ABS(U)>=1) THEN
  134. ARCTANH:=DEFAULT
  135. ELSE
  136. ARCTANH:=(1/2)*LN((1+U)/(1-U));
  137. END;
  138.  
  139. FUNCTION ARCCOSH(U,DEFAULT:EXTENDED):EXTENDED;EXPORT;
  140. VAR
  141. S8:EXTENDED;
  142. BEGIN
  143. {input>=1, output>=0};
  144. IF (U<1) THEN
  145. BEGIN
  146. ARCCOSH:=DEFAULT;
  147. END
  148. ELSE
  149. BEGIN
  150. S8:=SQRT(SQR(U)-1);
  151. ARCCOSH:=ARCTANH(S8/U,0);
  152. END;
  153. END;
  154.  
  155. FUNCTION ARCSINH(U:EXTENDED):EXTENDED;EXPORT;
  156. VAR
  157. C8:EXTENDED;
  158. BEGIN
  159. {-inf=<input<=inf, -inf=<output<=inf};
  160. C8:=SQRT(1+SQR(U));
  161. ARCSINH:=ARCTANH(U/C8,0);
  162. END;
  163.  
  164. FUNCTION ARCCSCH(U,DEFAULT:EXTENDED):EXTENDED;EXPORT;
  165. VAR
  166. S8,C8:EXTENDED;
  167. BEGIN
  168. {all input except 0, all output except 0};
  169. IF (U=0) THEN
  170. BEGIN
  171. ARCCSCH:=DEFAULT;
  172. END
  173. ELSE
  174. BEGIN
  175. S8:=1/U;
  176. C8:=SQRT(SQR(S8)+1);
  177. ARCCSCH:=ARCTANH(S8/C8,0);
  178. END;
  179. END;
  180.  
  181. FUNCTION ARCSECH(U,DEFAULT:EXTENDED):EXTENDED;EXPORT;
  182. VAR
  183. S8,C8:EXTENDED;
  184. BEGIN
  185. {0<input<=1, 0=<output<=inf};
  186. IF ((U<=0)OR(U>1)) THEN
  187. BEGIN
  188. ARCSECH:=DEFAULT;
  189. END
  190. ELSE
  191. BEGIN
  192. C8:=1/U;
  193. S8:=SQRT(SQR(C8)-1);
  194. ARCSECH:=ARCTANH(S8/C8,0);
  195. END;
  196. END;
  197.  
  198. FUNCTION ARCCOTH(U,DEFAULT:EXTENDED):EXTENDED;EXPORT;
  199. BEGIN
  200. {(-inf=<input<-1)and(1<input<=inf), all output except 0};
  201. IF (ABS(U)<=1) THEN
  202. ARCCOTH:=DEFAULT
  203. ELSE
  204. ARCCOTH:=ARCTANH(1/U,0);
  205. END;
  206.  
  207. FUNCTION SEC(U,DEFAULT:EXTENDED):EXTENDED;EXPORT;
  208. BEGIN
  209. {-inf=<input<=inf, (-inf=<output<=-1)and(1=<output<=inf)};
  210. IF (COS(U)=0) THEN
  211. SEC:=DEFAULT
  212. ELSE
  213. SEC:=1/(COS(U));
  214. END;
  215.  
  216. FUNCTION  CSC(U,DEFAULT:EXTENDED):EXTENDED;EXPORT;
  217. BEGIN
  218. {-inf=<input<=inf, (-inf=<output<=-1)and(1=<output<=inf)};
  219. IF (SIN(U)=0) THEN
  220. CSC:=DEFAULT
  221. ELSE
  222. CSC:=1/(SIN(U));
  223. END;
  224.  
  225. FUNCTION COT(U,DEFAULT:EXTENDED):EXTENDED;EXPORT;
  226. BEGIN
  227. {-inf=<input<=inf, -inf=<output<=inf};
  228. IF (SIN(U)=0) THEN
  229. COT:=DEFAULT
  230. ELSE
  231. COT:=(COS(U))/(SIN(U));
  232. END;
  233.  
  234. FUNCTION ARCSEC(U,DEFAULT:EXTENDED):EXTENDED;EXPORT;
  235. BEGIN
  236. {(-inf=<input<=-1)and(1=<input<=inf),0=<output<=pi};
  237. IF ((ABS(U))<1) THEN
  238. ARCSEC:=DEFAULT
  239. ELSE
  240. ARCSEC:=ARCCOS(1/U,DEFAULT);
  241. END;
  242.  
  243. FUNCTION ARCCSC(U,DEFAULT:EXTENDED):EXTENDED;EXPORT;
  244. BEGIN
  245. {(-inf=<input<=-1)and(1=<input<=inf), -pi/2=<output<=pi/2};
  246. IF ((ABS(U))<1) THEN
  247. ARCCSC:=DEFAULT
  248. ELSE
  249. ARCCSC:=ARCSIN(1/U,DEFAULT);
  250. END;
  251.  
  252. FUNCTION ARCCOT(U:EXTENDED):EXTENDED;EXPORT;
  253. BEGIN
  254. {-inf=<input<=inf, 0=<output<=pi};
  255. ARCCOT:=(PI/2)-ARCTAN(U);
  256. END;
  257.  
  258.  
  259. EXPORTS ARCCOS        INDEX 1;
  260. EXPORTS ARCSIN        INDEX 2;
  261. EXPORTS TAN        INDEX 3;
  262. EXPORTS SINH        INDEX 4;
  263. EXPORTS COSH        INDEX 5;
  264. EXPORTS TANH        INDEX 6;
  265. EXPORTS COTH        INDEX 7;
  266. EXPORTS SECH        INDEX 8;
  267. EXPORTS CSCH        INDEX 9;
  268. EXPORTS ARCTANH        INDEX 10;
  269. EXPORTS ARCCOSH        INDEX 11;
  270. EXPORTS ARCSINH        INDEX 12;
  271. EXPORTS ARCCSCH        INDEX 13;
  272. EXPORTS ARCSECH        INDEX 14;
  273. EXPORTS ARCCOTH        INDEX 15;
  274. EXPORTS SEC        INDEX 16;
  275. EXPORTS CSC        INDEX 17;
  276. EXPORTS COT        INDEX 18;
  277. EXPORTS ARCSEC        INDEX 19;
  278. EXPORTS ARCCSC        INDEX 20;
  279. EXPORTS ARCCOT         INDEX 21;
  280. BEGIN
  281. END.
  282.