math.tex 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720
  1. %
  2. % $Id$
  3. % This file is part of the FPC documentation.
  4. % Copyright (C) 2000 by Florian Klaempfl
  5. %
  6. % The FPC documentation is free text; you can redistribute it and/or
  7. % modify it under the terms of the GNU Library General Public License as
  8. % published by the Free Software Foundation; either version 2 of the
  9. % License, or (at your option) any later version.
  10. %
  11. % The FPC Documentation is distributed in the hope that it will be useful,
  12. % but WITHOUT ANY WARRANTY; without even the implied warranty of
  13. % MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  14. % Library General Public License for more details.
  15. %
  16. % You should have received a copy of the GNU Library General Public
  17. % License along with the FPC documentation; see the file COPYING.LIB. If not,
  18. % write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  19. % Boston, MA 02111-1307, USA.
  20. %
  21. \chapter{The MATH unit}
  22. \FPCexampledir{mathex}
  23. This chapter describes the \file{math} unit. The \var{math} unit
  24. was initially written by Florian Klaempfl. It provides mathematical
  25. functions which aren't covered by the system unit.
  26. This chapter starts out with a definition of all types and constants
  27. that are defined, followed by a complete explanation of each function.
  28. {\em Remark} This unit is compiled in Object Pascal mode so all
  29. \var{integers} are 32 bit.
  30. \section{Constants and types}
  31. The following types are defined in the \file{math} unit:
  32. \begin{verbatim}
  33. Type
  34. Float = Extended;
  35. \end{verbatim}
  36. \begin{verbatim}
  37. Type
  38. TPaymentTime = (PTEndOfPeriod,PTStartOfPeriod);
  39. \end{verbatim}
  40. \begin{verbatim}
  41. Type
  42. EInvalidArgument = Class(EMathError);
  43. \end{verbatim}
  44. \section{Functions and Procedures}
  45. \begin{function}{arccos}
  46. \Declaration
  47. Function arccos(x : float) : float;
  48. \Description
  49. \var{Arccos} returns the inverse cosine of its argument \var{x}. The
  50. argument \var{x} should lie between -1 and 1 (borders included).
  51. \Errors
  52. If the argument \var{x} is not in the allowed range, an \var{EMathError}
  53. exception is raised.
  54. \SeeAlso
  55. \seef{arcsin}, \seef{arcosh}, \seef{arsinh}, \seef{arctanh}
  56. \end{function}
  57. \FPCexample{ex1}
  58. \begin{function}{arcosh}
  59. \Declaration
  60. Function arcosh(x : float) : float;
  61. Function arccosh(x : float) : float;
  62. \Description
  63. \var{Arcosh} returns the inverse hyperbolic cosine of its argument \var{x}.
  64. The argument \var{x} should be larger than 1.
  65. The \var{arccosh} variant of this function is supplied for \delphi
  66. compatibility.
  67. \Errors
  68. If the argument \var{x} is not in the allowed range, an \var{EMathError}
  69. exception is raised.
  70. \SeeAlso
  71. \seef{cosh}, \seef{sinh}, \seef{arcsin}, \seef{arcsinh}, \seef{arctanh},
  72. \seef{tanh}
  73. \end{function}
  74. \FPCexample{ex3}
  75. \begin{function}{arcsin}
  76. \Declaration
  77. Function arcsin(x : float) : float;
  78. \Description
  79. \var{Arcsin} returns the inverse sine of its argument \var{x}. The
  80. argument \var{x} should lie between -1 and 1.
  81. \Errors
  82. If the argument \var{x} is not in the allowed range, an \var{EMathError}
  83. exception is raised.
  84. \SeeAlso
  85. \seef{arccos}, \seef{arccosh}, \seef{arcsinh}, \seef{arctanh}
  86. \end{function}
  87. \FPCexample{ex2}
  88. \begin{function}{arctan2}
  89. \Declaration
  90. Function arctan2(x,y : float) : float;
  91. \Description
  92. \var{arctan2} calculates \var{arctan(y/x), and returns an angle in the
  93. correct quadrant. The returned angle will be in the range $-\pi$ to
  94. $\pi$ radians.
  95. The values of \var{x} and \var{y} must be between -2\^{}64 and 2\^{}64,
  96. moreover \var{x} should be different from zero.
  97. On Intel systems this function is implemented with the native intel
  98. \var{fpatan} instruction.
  99. \Errors
  100. If \var{x} is zero, an overflow error will occur.
  101. \SeeAlso
  102. \seef{arccos}, \seef{arccosh}, \seef{arcsinh}, \seef{arctanh}
  103. \end{function}
  104. \FPCexample{}
  105. \begin{function}{arctanh}
  106. \Declaration
  107. Function arctanh(x : float) : float;
  108. \Description
  109. \Errors
  110. \SeeAlso
  111. \end{function}
  112. \FPCexample{}
  113. \begin{function}{arsinh}
  114. \Declaration
  115. Function arsinh(x : float) : float;
  116. Function arcsinh(x : float) : float;
  117. \Description
  118. \var{arsinh} returns the inverse hyperbolic sine of its argument \var{x}.
  119. The \var{arscsinh} variant of this function is supplied for \delphi
  120. compatibility.
  121. \Errors
  122. None.
  123. \SeeAlso
  124. \seef{arccosh}, \seef{arccos}, \seef{arsin}, \seef{artanh}
  125. \end{function}
  126. \FPCexample{ex4}
  127. \begin{function}{artanh}
  128. \Declaration
  129. Function artanh(x : float) : float;
  130. \Description
  131. \Errors
  132. \SeeAlso
  133. \end{function}
  134. \FPCexample{}
  135. \begin{function}{ceil}
  136. \Declaration
  137. Function ceil(x : float) : longint;
  138. \Description
  139. \Errors
  140. \SeeAlso
  141. \end{function}
  142. \FPCexample{}
  143. \begin{function}{cosh}
  144. \Declaration
  145. Function cosh(x : float) : float;
  146. \Description
  147. \Errors
  148. \SeeAlso
  149. \end{function}
  150. \FPCexample{}
  151. \begin{function}{cotan}
  152. \Declaration
  153. Function cotan(x : float) : float;
  154. \Description
  155. \Errors
  156. \SeeAlso
  157. \end{function}
  158. \FPCexample{}
  159. \begin{function}{cycletorad}
  160. \Declaration
  161. Function cycletorad(cycle : float) : float;
  162. \Description
  163. \Errors
  164. \SeeAlso
  165. \end{function}
  166. \FPCexample{}
  167. \begin{function}{degtograd}
  168. \Declaration
  169. Function degtograd(deg : float) : float;
  170. \Description
  171. \Errors
  172. \SeeAlso
  173. \end{function}
  174. \FPCexample{}
  175. \begin{function}{degtorad}
  176. \Declaration
  177. Function degtorad(deg : float) : float;
  178. \Description
  179. \Errors
  180. \SeeAlso
  181. \end{function}
  182. \FPCexample{}
  183. \begin{function}{floor}
  184. \Declaration
  185. Function floor(x : float) : longint;
  186. \Description
  187. \Errors
  188. \SeeAlso
  189. \end{function}
  190. \FPCexample{}
  191. \begin{procedure}{frexp}
  192. \Declaration
  193. Procedure frexp(x : float;var mantissa,exponent : float);
  194. \Description
  195. \Errors
  196. \SeeAlso
  197. \end{procedure}
  198. \FPCexample{}
  199. \begin{function}{gradtodeg}
  200. \Declaration
  201. Function gradtodeg(grad : float) : float;
  202. \Description
  203. \Errors
  204. \SeeAlso
  205. \end{function}
  206. \FPCexample{}
  207. \begin{function}{gradtorad}
  208. \Declaration
  209. Function gradtorad(grad : float) : float;
  210. \Description
  211. \Errors
  212. \SeeAlso
  213. \end{function}
  214. \FPCexample{}
  215. \begin{function}{hypot}
  216. \Declaration
  217. Function hypot(x,y : float) : float;
  218. \Description
  219. \Errors
  220. \SeeAlso
  221. \end{function}
  222. \FPCexample{}
  223. \begin{function}{intpower}
  224. \Declaration
  225. Function intpower(base : float;exponent : longint) : float;
  226. \Description
  227. \Errors
  228. \SeeAlso
  229. \end{function}
  230. \FPCexample{}
  231. \begin{function}{ldexp}
  232. \Declaration
  233. Function ldexp(x : float;p : longint) : float;
  234. \Description
  235. \Errors
  236. \SeeAlso
  237. \end{function}
  238. \FPCexample{}
  239. \begin{function}{lnxpi}
  240. \Declaration
  241. Function lnxpi(x : float) : float;
  242. \Description
  243. \Errors
  244. \SeeAlso
  245. \end{function}
  246. \FPCexample{}
  247. \begin{function}{log10}
  248. \Declaration
  249. Function log10(x : float) : float;
  250. \Description
  251. \Errors
  252. \SeeAlso
  253. \end{function}
  254. \FPCexample{}
  255. \begin{function}{log2}
  256. \Declaration
  257. Function log2(x : float) : float;
  258. \Description
  259. \Errors
  260. \SeeAlso
  261. \end{function}
  262. \FPCexample{}
  263. \begin{function}{logn}
  264. \Declaration
  265. Function logn(n,x : float) : float;
  266. \Description
  267. \Errors
  268. \SeeAlso
  269. \end{function}
  270. \FPCexample{}
  271. var m1,m2,m3,m4,skew,kurtosis : float);
  272. \begin{function}{max}
  273. \Declaration
  274. Function max(Int1,Int2:Cardinal):Cardinal;
  275. \Description
  276. \Errors
  277. \SeeAlso
  278. \end{function}
  279. \FPCexample{}
  280. \begin{function}{max}
  281. \Declaration
  282. Function max(Int1,Int2:Integer):Integer;
  283. \Description
  284. \Errors
  285. \SeeAlso
  286. \end{function}
  287. \FPCexample{}
  288. \begin{function}{maxIntValue}
  289. \Declaration
  290. Function maxIntValue(const Data: array of Integer): Integer;
  291. \Description
  292. \Errors
  293. \SeeAlso
  294. \end{function}
  295. \FPCexample{}
  296. \begin{function}{maxvalue}
  297. \Declaration
  298. Function maxvalue(const data : array of float) : float;
  299. \Description
  300. \Errors
  301. \SeeAlso
  302. \end{function}
  303. \FPCexample{}
  304. \begin{function}{mean}
  305. \Declaration
  306. Function mean(const data : array of float) : float;
  307. \Description
  308. \Errors
  309. \SeeAlso
  310. \end{function}
  311. \FPCexample{}
  312. var mean,stddev : float);
  313. \begin{procedure}{meanandstddev}
  314. \Declaration
  315. Procedure meanandstddev(const data : array of float;
  316. \Description
  317. \Errors
  318. \SeeAlso
  319. \end{procedure}
  320. \FPCexample{}
  321. \begin{function}{min}
  322. \Declaration
  323. Function min(Int1,Int2:Cardinal):Cardinal;
  324. \Description
  325. \Errors
  326. \SeeAlso
  327. \end{function}
  328. \FPCexample{}
  329. \begin{function}{min}
  330. \Declaration
  331. Function min(Int1,Int2:Integer):Integer;
  332. \Description
  333. \Errors
  334. \SeeAlso
  335. \end{function}
  336. \FPCexample{}
  337. \begin{function}{minIntValue}
  338. \Declaration
  339. Function minIntValue(const Data: array of Integer): Integer;
  340. \Description
  341. \Errors
  342. \SeeAlso
  343. \end{function}
  344. \FPCexample{}
  345. \begin{function}{minvalue}
  346. \Declaration
  347. Function minvalue(const data : array of float) : float;
  348. \Description
  349. \Errors
  350. \SeeAlso
  351. \end{function}
  352. \FPCexample{}
  353. \begin{procedure}{momentskewkurtosis}
  354. \Declaration
  355. Procedure momentskewkurtosis(const data : array of float;
  356. \Description
  357. \Errors
  358. \SeeAlso
  359. \end{procedure}
  360. \FPCexample{}
  361. \begin{function}{norm}
  362. \Declaration
  363. Function norm(const data : array of float) : float;
  364. \Description
  365. \Errors
  366. \SeeAlso
  367. \end{function}
  368. \FPCexample{}
  369. \begin{function}{popnstddev}
  370. \Declaration
  371. Function popnstddev(const data : array of float) : float;
  372. \Description
  373. \Errors
  374. \SeeAlso
  375. \end{function}
  376. \FPCexample{}
  377. \begin{function}{popnvariance}
  378. \Declaration
  379. Function popnvariance(const data : array of float) : float;
  380. \Description
  381. \Errors
  382. \SeeAlso
  383. \end{function}
  384. \FPCexample{}
  385. \begin{function}{power}
  386. \Declaration
  387. Function power(base,exponent : float) : float;
  388. \Description
  389. \Errors
  390. \SeeAlso
  391. \end{function}
  392. \FPCexample{}
  393. \begin{function}{radtocycle}
  394. \Declaration
  395. Function radtocycle(rad : float) : float;
  396. \Description
  397. \Errors
  398. \SeeAlso
  399. \end{function}
  400. \FPCexample{}
  401. \begin{function}{radtodeg}
  402. \Declaration
  403. Function radtodeg(rad : float) : float;
  404. \Description
  405. \Errors
  406. \SeeAlso
  407. \end{function}
  408. \FPCexample{}
  409. \begin{function}{radtograd}
  410. \Declaration
  411. Function radtograd(rad : float) : float;
  412. \Description
  413. \Errors
  414. \SeeAlso
  415. \end{function}
  416. \FPCexample{}
  417. \begin{function}{randg}
  418. \Declaration
  419. Function randg(mean,stddev : float) : float;
  420. \Description
  421. \Errors
  422. \SeeAlso
  423. \end{function}
  424. \FPCexample{}
  425. \begin{procedure}{sincos}
  426. \Declaration
  427. Procedure sincos(theta : float;var sinus,cosinus : float);
  428. \Description
  429. \Errors
  430. \SeeAlso
  431. \end{procedure}
  432. \FPCexample{}
  433. \begin{function}{sinh}
  434. \Declaration
  435. Function sinh(x : float) : float;
  436. \Description
  437. \Errors
  438. \SeeAlso
  439. \end{function}
  440. \FPCexample{}
  441. \begin{function}{stddev}
  442. \Declaration
  443. Function stddev(const data : array of float) : float;
  444. \Description
  445. \Errors
  446. \SeeAlso
  447. \end{function}
  448. \FPCexample{}
  449. \begin{function}{sum}
  450. \Declaration
  451. Function sum(const data : array of float) : float;
  452. \Description
  453. \Errors
  454. \SeeAlso
  455. \end{function}
  456. \FPCexample{}
  457. var sum,sumofsquares : float);
  458. \begin{function}{sumofsquares}
  459. \Declaration
  460. Function sumofsquares(const data : array of float) : float;
  461. \Description
  462. \Errors
  463. \SeeAlso
  464. \end{function}
  465. \FPCexample{}
  466. \begin{procedure}{sumsandsquares}
  467. \Declaration
  468. Procedure sumsandsquares(const data : array of float;
  469. \Description
  470. \Errors
  471. \SeeAlso
  472. \end{procedure}
  473. \FPCexample{}
  474. \begin{function}{tan}
  475. \Declaration
  476. Function tan(x : float) : float;
  477. \Description
  478. \Errors
  479. \SeeAlso
  480. \end{function}
  481. \FPCexample{}
  482. \begin{function}{tanh}
  483. \Declaration
  484. Function tanh(x : float) : float;
  485. \Description
  486. \Errors
  487. \SeeAlso
  488. \end{function}
  489. \FPCexample{}
  490. \begin{function}{totalvariance}
  491. \Declaration
  492. Function totalvariance(const data : array of float) : float;
  493. \Description
  494. \Errors
  495. \SeeAlso
  496. \end{function}
  497. \FPCexample{}
  498. \begin{function}{variance}
  499. \Declaration
  500. Function variance(const data : array of float) : float;
  501. \Description
  502. \Errors
  503. \SeeAlso
  504. \end{function}
  505. \FPCexample{}