extmath 2.3.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1 @@
1
+ See bottom of doc/documentation.txt
data/LICENSE ADDED
@@ -0,0 +1,340 @@
1
+ GNU GENERAL PUBLIC LICENSE
2
+ Version 2, June 1991
3
+
4
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
5
+ 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
6
+ Everyone is permitted to copy and distribute verbatim copies
7
+ of this license document, but changing it is not allowed.
8
+
9
+ Preamble
10
+
11
+ The licenses for most software are designed to take away your
12
+ freedom to share and change it. By contrast, the GNU General Public
13
+ License is intended to guarantee your freedom to share and change free
14
+ software--to make sure the software is free for all its users. This
15
+ General Public License applies to most of the Free Software
16
+ Foundation's software and to any other program whose authors commit to
17
+ using it. (Some other Free Software Foundation software is covered by
18
+ the GNU Library General Public License instead.) You can apply it to
19
+ your programs, too.
20
+
21
+ When we speak of free software, we are referring to freedom, not
22
+ price. Our General Public Licenses are designed to make sure that you
23
+ have the freedom to distribute copies of free software (and charge for
24
+ this service if you wish), that you receive source code or can get it
25
+ if you want it, that you can change the software or use pieces of it
26
+ in new free programs; and that you know you can do these things.
27
+
28
+ To protect your rights, we need to make restrictions that forbid
29
+ anyone to deny you these rights or to ask you to surrender the rights.
30
+ These restrictions translate to certain responsibilities for you if you
31
+ distribute copies of the software, or if you modify it.
32
+
33
+ For example, if you distribute copies of such a program, whether
34
+ gratis or for a fee, you must give the recipients all the rights that
35
+ you have. You must make sure that they, too, receive or can get the
36
+ source code. And you must show them these terms so they know their
37
+ rights.
38
+
39
+ We protect your rights with two steps: (1) copyright the software, and
40
+ (2) offer you this license which gives you legal permission to copy,
41
+ distribute and/or modify the software.
42
+
43
+ Also, for each author's protection and ours, we want to make certain
44
+ that everyone understands that there is no warranty for this free
45
+ software. If the software is modified by someone else and passed on, we
46
+ want its recipients to know that what they have is not the original, so
47
+ that any problems introduced by others will not reflect on the original
48
+ authors' reputations.
49
+
50
+ Finally, any free program is threatened constantly by software
51
+ patents. We wish to avoid the danger that redistributors of a free
52
+ program will individually obtain patent licenses, in effect making the
53
+ program proprietary. To prevent this, we have made it clear that any
54
+ patent must be licensed for everyone's free use or not licensed at all.
55
+
56
+ The precise terms and conditions for copying, distribution and
57
+ modification follow.
58
+
59
+ GNU GENERAL PUBLIC LICENSE
60
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
61
+
62
+ 0. This License applies to any program or other work which contains
63
+ a notice placed by the copyright holder saying it may be distributed
64
+ under the terms of this General Public License. The "Program", below,
65
+ refers to any such program or work, and a "work based on the Program"
66
+ means either the Program or any derivative work under copyright law:
67
+ that is to say, a work containing the Program or a portion of it,
68
+ either verbatim or with modifications and/or translated into another
69
+ language. (Hereinafter, translation is included without limitation in
70
+ the term "modification".) Each licensee is addressed as "you".
71
+
72
+ Activities other than copying, distribution and modification are not
73
+ covered by this License; they are outside its scope. The act of
74
+ running the Program is not restricted, and the output from the Program
75
+ is covered only if its contents constitute a work based on the
76
+ Program (independent of having been made by running the Program).
77
+ Whether that is true depends on what the Program does.
78
+
79
+ 1. You may copy and distribute verbatim copies of the Program's
80
+ source code as you receive it, in any medium, provided that you
81
+ conspicuously and appropriately publish on each copy an appropriate
82
+ copyright notice and disclaimer of warranty; keep intact all the
83
+ notices that refer to this License and to the absence of any warranty;
84
+ and give any other recipients of the Program a copy of this License
85
+ along with the Program.
86
+
87
+ You may charge a fee for the physical act of transferring a copy, and
88
+ you may at your option offer warranty protection in exchange for a fee.
89
+
90
+ 2. You may modify your copy or copies of the Program or any portion
91
+ of it, thus forming a work based on the Program, and copy and
92
+ distribute such modifications or work under the terms of Section 1
93
+ above, provided that you also meet all of these conditions:
94
+
95
+ a) You must cause the modified files to carry prominent notices
96
+ stating that you changed the files and the date of any change.
97
+
98
+ b) You must cause any work that you distribute or publish, that in
99
+ whole or in part contains or is derived from the Program or any
100
+ part thereof, to be licensed as a whole at no charge to all third
101
+ parties under the terms of this License.
102
+
103
+ c) If the modified program normally reads commands interactively
104
+ when run, you must cause it, when started running for such
105
+ interactive use in the most ordinary way, to print or display an
106
+ announcement including an appropriate copyright notice and a
107
+ notice that there is no warranty (or else, saying that you provide
108
+ a warranty) and that users may redistribute the program under
109
+ these conditions, and telling the user how to view a copy of this
110
+ License. (Exception: if the Program itself is interactive but
111
+ does not normally print such an announcement, your work based on
112
+ the Program is not required to print an announcement.)
113
+
114
+ These requirements apply to the modified work as a whole. If
115
+ identifiable sections of that work are not derived from the Program,
116
+ and can be reasonably considered independent and separate works in
117
+ themselves, then this License, and its terms, do not apply to those
118
+ sections when you distribute them as separate works. But when you
119
+ distribute the same sections as part of a whole which is a work based
120
+ on the Program, the distribution of the whole must be on the terms of
121
+ this License, whose permissions for other licensees extend to the
122
+ entire whole, and thus to each and every part regardless of who wrote it.
123
+
124
+ Thus, it is not the intent of this section to claim rights or contest
125
+ your rights to work written entirely by you; rather, the intent is to
126
+ exercise the right to control the distribution of derivative or
127
+ collective works based on the Program.
128
+
129
+ In addition, mere aggregation of another work not based on the Program
130
+ with the Program (or with a work based on the Program) on a volume of
131
+ a storage or distribution medium does not bring the other work under
132
+ the scope of this License.
133
+
134
+ 3. You may copy and distribute the Program (or a work based on it,
135
+ under Section 2) in object code or executable form under the terms of
136
+ Sections 1 and 2 above provided that you also do one of the following:
137
+
138
+ a) Accompany it with the complete corresponding machine-readable
139
+ source code, which must be distributed under the terms of Sections
140
+ 1 and 2 above on a medium customarily used for software interchange; or,
141
+
142
+ b) Accompany it with a written offer, valid for at least three
143
+ years, to give any third party, for a charge no more than your
144
+ cost of physically performing source distribution, a complete
145
+ machine-readable copy of the corresponding source code, to be
146
+ distributed under the terms of Sections 1 and 2 above on a medium
147
+ customarily used for software interchange; or,
148
+
149
+ c) Accompany it with the information you received as to the offer
150
+ to distribute corresponding source code. (This alternative is
151
+ allowed only for noncommercial distribution and only if you
152
+ received the program in object code or executable form with such
153
+ an offer, in accord with Subsection b above.)
154
+
155
+ The source code for a work means the preferred form of the work for
156
+ making modifications to it. For an executable work, complete source
157
+ code means all the source code for all modules it contains, plus any
158
+ associated interface definition files, plus the scripts used to
159
+ control compilation and installation of the executable. However, as a
160
+ special exception, the source code distributed need not include
161
+ anything that is normally distributed (in either source or binary
162
+ form) with the major components (compiler, kernel, and so on) of the
163
+ operating system on which the executable runs, unless that component
164
+ itself accompanies the executable.
165
+
166
+ If distribution of executable or object code is made by offering
167
+ access to copy from a designated place, then offering equivalent
168
+ access to copy the source code from the same place counts as
169
+ distribution of the source code, even though third parties are not
170
+ compelled to copy the source along with the object code.
171
+
172
+ 4. You may not copy, modify, sublicense, or distribute the Program
173
+ except as expressly provided under this License. Any attempt
174
+ otherwise to copy, modify, sublicense or distribute the Program is
175
+ void, and will automatically terminate your rights under this License.
176
+ However, parties who have received copies, or rights, from you under
177
+ this License will not have their licenses terminated so long as such
178
+ parties remain in full compliance.
179
+
180
+ 5. You are not required to accept this License, since you have not
181
+ signed it. However, nothing else grants you permission to modify or
182
+ distribute the Program or its derivative works. These actions are
183
+ prohibited by law if you do not accept this License. Therefore, by
184
+ modifying or distributing the Program (or any work based on the
185
+ Program), you indicate your acceptance of this License to do so, and
186
+ all its terms and conditions for copying, distributing or modifying
187
+ the Program or works based on it.
188
+
189
+ 6. Each time you redistribute the Program (or any work based on the
190
+ Program), the recipient automatically receives a license from the
191
+ original licensor to copy, distribute or modify the Program subject to
192
+ these terms and conditions. You may not impose any further
193
+ restrictions on the recipients' exercise of the rights granted herein.
194
+ You are not responsible for enforcing compliance by third parties to
195
+ this License.
196
+
197
+ 7. If, as a consequence of a court judgment or allegation of patent
198
+ infringement or for any other reason (not limited to patent issues),
199
+ conditions are imposed on you (whether by court order, agreement or
200
+ otherwise) that contradict the conditions of this License, they do not
201
+ excuse you from the conditions of this License. If you cannot
202
+ distribute so as to satisfy simultaneously your obligations under this
203
+ License and any other pertinent obligations, then as a consequence you
204
+ may not distribute the Program at all. For example, if a patent
205
+ license would not permit royalty-free redistribution of the Program by
206
+ all those who receive copies directly or indirectly through you, then
207
+ the only way you could satisfy both it and this License would be to
208
+ refrain entirely from distribution of the Program.
209
+
210
+ If any portion of this section is held invalid or unenforceable under
211
+ any particular circumstance, the balance of the section is intended to
212
+ apply and the section as a whole is intended to apply in other
213
+ circumstances.
214
+
215
+ It is not the purpose of this section to induce you to infringe any
216
+ patents or other property right claims or to contest validity of any
217
+ such claims; this section has the sole purpose of protecting the
218
+ integrity of the free software distribution system, which is
219
+ implemented by public license practices. Many people have made
220
+ generous contributions to the wide range of software distributed
221
+ through that system in reliance on consistent application of that
222
+ system; it is up to the author/donor to decide if he or she is willing
223
+ to distribute software through any other system and a licensee cannot
224
+ impose that choice.
225
+
226
+ This section is intended to make thoroughly clear what is believed to
227
+ be a consequence of the rest of this License.
228
+
229
+ 8. If the distribution and/or use of the Program is restricted in
230
+ certain countries either by patents or by copyrighted interfaces, the
231
+ original copyright holder who places the Program under this License
232
+ may add an explicit geographical distribution limitation excluding
233
+ those countries, so that distribution is permitted only in or among
234
+ countries not thus excluded. In such case, this License incorporates
235
+ the limitation as if written in the body of this License.
236
+
237
+ 9. The Free Software Foundation may publish revised and/or new versions
238
+ of the General Public License from time to time. Such new versions will
239
+ be similar in spirit to the present version, but may differ in detail to
240
+ address new problems or concerns.
241
+
242
+ Each version is given a distinguishing version number. If the Program
243
+ specifies a version number of this License which applies to it and "any
244
+ later version", you have the option of following the terms and conditions
245
+ either of that version or of any later version published by the Free
246
+ Software Foundation. If the Program does not specify a version number of
247
+ this License, you may choose any version ever published by the Free Software
248
+ Foundation.
249
+
250
+ 10. If you wish to incorporate parts of the Program into other free
251
+ programs whose distribution conditions are different, write to the author
252
+ to ask for permission. For software which is copyrighted by the Free
253
+ Software Foundation, write to the Free Software Foundation; we sometimes
254
+ make exceptions for this. Our decision will be guided by the two goals
255
+ of preserving the free status of all derivatives of our free software and
256
+ of promoting the sharing and reuse of software generally.
257
+
258
+ NO WARRANTY
259
+
260
+ 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
261
+ FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
262
+ OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
263
+ PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
264
+ OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
265
+ MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
266
+ TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
267
+ PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
268
+ REPAIR OR CORRECTION.
269
+
270
+ 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
271
+ WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
272
+ REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
273
+ INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
274
+ OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
275
+ TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
276
+ YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
277
+ PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
278
+ POSSIBILITY OF SUCH DAMAGES.
279
+
280
+ END OF TERMS AND CONDITIONS
281
+
282
+ How to Apply These Terms to Your New Programs
283
+
284
+ If you develop a new program, and you want it to be of the greatest
285
+ possible use to the public, the best way to achieve this is to make it
286
+ free software which everyone can redistribute and change under these terms.
287
+
288
+ To do so, attach the following notices to the program. It is safest
289
+ to attach them to the start of each source file to most effectively
290
+ convey the exclusion of warranty; and each file should have at least
291
+ the "copyright" line and a pointer to where the full notice is found.
292
+
293
+ <one line to give the program's name and a brief idea of what it does.>
294
+ Copyright (C) <year> <name of author>
295
+
296
+ This program is free software; you can redistribute it and/or modify
297
+ it under the terms of the GNU General Public License as published by
298
+ the Free Software Foundation; either version 2 of the License, or
299
+ (at your option) any later version.
300
+
301
+ This program is distributed in the hope that it will be useful,
302
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
303
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
304
+ GNU General Public License for more details.
305
+
306
+ You should have received a copy of the GNU General Public License
307
+ along with this program; if not, write to the Free Software
308
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
309
+
310
+
311
+ Also add information on how to contact you by electronic and paper mail.
312
+
313
+ If the program is interactive, make it output a short notice like this
314
+ when it starts in an interactive mode:
315
+
316
+ Gnomovision version 69, Copyright (C) year name of author
317
+ Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
318
+ This is free software, and you are welcome to redistribute it
319
+ under certain conditions; type `show c' for details.
320
+
321
+ The hypothetical commands `show w' and `show c' should show the appropriate
322
+ parts of the General Public License. Of course, the commands you use may
323
+ be called something other than `show w' and `show c'; they could even be
324
+ mouse-clicks or menu items--whatever suits your program.
325
+
326
+ You should also get your employer (if you work as a programmer) or your
327
+ school, if any, to sign a "copyright disclaimer" for the program, if
328
+ necessary. Here is a sample; alter the names:
329
+
330
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the program
331
+ `Gnomovision' (which makes passes at compilers) written by James Hacker.
332
+
333
+ <signature of Ty Coon>, 1 April 1989
334
+ Ty Coon, President of Vice
335
+
336
+ This General Public License does not permit incorporating your program into
337
+ proprietary programs. If your program is a subroutine library, you may
338
+ consider it more useful to permit linking proprietary applications with the
339
+ library. If this is what you want to do, use the GNU Library General
340
+ Public License instead of this License.
data/README ADDED
@@ -0,0 +1,12 @@
1
+ extmath is a library that extends Ruby's built-in math library.
2
+
3
+ extmath extends Ruby's built-in math capabilities by providing
4
+ additional constants and functions that a good scientific calculator
5
+ should provide.
6
+
7
+ extmath was written by Josef 'Jupp' Schugt, jupp@rubyforge.org and
8
+ is free software. See GPL.txt for details.
9
+
10
+ Installation is described in INSTALL.
11
+ Documentation is in doc directory.
12
+ Changelog is at bottom of doc/documentation.txt
@@ -0,0 +1,20 @@
1
+ Extended math library : About
2
+
3
+ extmath is a library that extends Ruby's built-in math library.
4
+
5
+ extmath extends Ruby's built-in math capabilities by providing
6
+ additional constants and functions that a good scientific calculator
7
+ should provide.
8
+
9
+ extmath was written by Josef 'Jupp' Schugt, jupp@rubyforge.net.
10
+
11
+ extmath is free software; you can redistribute it and/or modify it
12
+ under the terms of the GNU General Public License as published by the
13
+ Free Software Foundation; either version 2 of the License, or (at
14
+ your option) any later version.
15
+
16
+ -----------------------------------------------------------------
17
+
18
+ Last changed: 2003-08-29
19
+ HTML to text by ELinks 0.4.3rc1 - Text WWW browser
20
+ ELinks is vailable at http://elinks.or.cz/
@@ -0,0 +1,494 @@
1
+ Extended math library : Documentation
2
+
3
+ Extmath version 2.3
4
+
5
+ Constants
6
+
7
+ [ C | E | PI ]
8
+
9
+ Methods
10
+
11
+ Powers and roots
12
+ [ hypot | pow | root | sqr | sqrt ]
13
+
14
+ Exponential and logarithmic functions
15
+ [ exp | exp10 | exp2 | frexp | ldexp | log | log10 | log2 ]
16
+
17
+ Trigonometric functions
18
+ [ acos | acot | acsc | asec | asin | atan | atan2 | cos | cot
19
+ | csc | sec | sin | tan ]
20
+
21
+ Hyperbolic functions
22
+ [ acosh | acoth | acsch | asech | asinh | atanh | cosh | coth
23
+ | csch | sech | sinh | tanh ]
24
+
25
+ Conversion between degree, gon and radian
26
+ [ deg2gon | deg2rad | gon2deg | gon2rad | rad2deg | rad2gon ]
27
+
28
+ Special functions
29
+ [ beta | erf | erfc | lgamma | sinc | tgamma ]
30
+
31
+ Absolute value, sign and rounding
32
+ [ abs | ceil | floor | round | sign ]
33
+
34
+ Integer functions
35
+ [ delta | epsilon | factorial | gcd | lcm ]
36
+
37
+ Solver
38
+ [ linsolve | sqsolve ]
39
+
40
+ Constants
41
+
42
+ Extmath::C
43
+ Euler's constant C, Extmath.C = 0.577_2...
44
+
45
+ Extmath::E
46
+ Same as Math::E - Euler's number, Extmath.E = 2.718_182_8...
47
+
48
+ Extmath::PI
49
+ Same as Math::PI - Ludolph's number, Extmath.PI = 3.141_59...
50
+
51
+ Methods
52
+
53
+ Extmath.abs(x)
54
+ Absolute value of x
55
+
56
+ Extmath.acos(x)
57
+ Same as Math.acos(x) - arcus cotangens of x
58
+
59
+ Extmath.acosh(x)
60
+ Same as Math.acosh(x) - area cosinus hyperbolicus of x
61
+
62
+ Extmath.acot(x)
63
+ Arcus cotangens of x
64
+
65
+ Extmath.acoth(x)
66
+ Area cotangens hyperbolicus of x
67
+
68
+ Extmath.acsc(x)
69
+ Arcus cosecans of x
70
+
71
+ Extmath.acsch(x)
72
+ Area cosecans hyperbolicus of x
73
+
74
+ Extmath.asec(x)
75
+ Arcus secans of x
76
+
77
+ Extmath.asech(x)
78
+ Area secans hyperbolicus of x
79
+
80
+ Extmath.asin(x)
81
+ Same as Math.asin(x) - arcus sinus of x
82
+
83
+ Extmath.asinh(x)
84
+ Same as Math.sinh(x) - area sinus hyperbolicus of x
85
+
86
+ Extmath.atan(x)
87
+ Same as Math.atan(x) - arcus tangens of x
88
+
89
+ Extmath.atan2(x, y)
90
+ Same as Math.atan2(x, y) - arcus tangens of x over y
91
+
92
+ Extmath.atanh(x)
93
+ Same as Math.atanh(x) - area tangens hyperbolicus of x
94
+
95
+ Extmath.beta(x, y)
96
+ Beta function of x and y - beta(x, y) = tgamma(x) * tgamma(y)
97
+ / tgamma(x + y)
98
+
99
+ Extmath.ceil(x)
100
+ Smallest integer not smaller than x
101
+
102
+ Extmath.cos(x)
103
+ Same as Math.cos(x) - cosinus of x
104
+
105
+ Extmath.cosh(x)
106
+ Same as Math.cosh(x) - cosinus hyperbolicus of x
107
+
108
+ Extmath.cot(x)
109
+ Cotangens of x
110
+
111
+ Extmath.coth(x)
112
+ Cotangens hyperbolicus of x
113
+
114
+ Extmath.csc(x)
115
+ Cosecans of x
116
+
117
+ Extmath.csch(x)
118
+ Cosecans hyperbolicus of x
119
+
120
+ Extmath.deg2gon(x)
121
+ Converts x form degree to gon
122
+
123
+ Extmath.deg2rad(x)
124
+ Converts x form degree to radian
125
+
126
+ Extmath.delta(i, j)
127
+ Kronecker symbol of i and j - 1 if i and j are equal, 0
128
+ otherwise
129
+
130
+ Extmath.epsilon(i, j, k)
131
+ Levi-Civita symbol of i, j, and k - 1 if (i, j, k) is (1, 2,
132
+ 3), (2, 3, 1), or (3, 1, 2), -1 if it is (1, 3, 2), (2, 1,
133
+ 3), or (3, 2, 1), 0 as long as i, j, and k are all elements
134
+ of {1, 2, 3}, otherwise returns nil.
135
+
136
+ Extmath.erf(x)
137
+ Same as Math.erf(x) - Gau�ian error integral up to x
138
+
139
+ Extmath.erfc(x)
140
+ Same as Math.erfc(x) - complementary Gau�ian error integral
141
+ from x on
142
+
143
+ Extmath.exp(x)
144
+ Same as Math.exp(x) - e to the power x
145
+
146
+ Extmath.exp10(x)
147
+ 10 to the power x
148
+
149
+ Extmath.exp2(x)
150
+ 2 to the power x
151
+
152
+ Extmath.factorial(n)
153
+ 1 * 2 * ... * n, nil for negative numbers
154
+
155
+ Extmath.floor(x)
156
+ Largest integer not larger than x
157
+
158
+ Extmath.frexp(x)
159
+ Same as Math.frexp(x) - two-element array containing the
160
+ normalized fraction and exponent of x.
161
+
162
+ Extmath.gcd(m, n)
163
+ Greatest common divisor of m and n, nil for non-positive
164
+ numbers - gcd is computed by means of the Euklidian algorithm
165
+
166
+ Extmath.gon2deg(x)
167
+ Converts x form gon to degree
168
+
169
+ Extmath.gon2rad(x)
170
+ Converts x form gon to radian
171
+
172
+ Extmath.hypot(x, y)
173
+ Same as Math.hypot(x, y) - length of hypotenuse of a
174
+ rectangular triangle with sides x and y.
175
+
176
+ Extmath.lcm(m, n)
177
+ Least common multiple of m and n - computed by multiplying m
178
+ and n and dividing the product by the gcd of m and n, nil for
179
+ non-positive numbers.
180
+
181
+ Extmath.ldexp(x, y)
182
+ x times 2 to the power y
183
+
184
+ Extmath.lgamma(x)
185
+ Logarithmus naturalis of gamma function of x
186
+
187
+ Extmath.linsolve(a, b, c)
188
+ Returns real solution(s) of ax + b = c or nil if no or an
189
+ infinite number of solutions exist. If c is missing it is
190
+ assumed to be 0.
191
+
192
+ Extmath.log(x)
193
+ Same as Math.log(x) - logarithmus naturalis of x
194
+
195
+ Extmath.log10(x)
196
+ Same as Math.log10(x) - logarithmus decimalis of x
197
+
198
+ Extmath.log2(x)
199
+ Logarithmus dualis of x
200
+
201
+ Extmath.pow(x, y)
202
+ x to the power y
203
+
204
+ Extmath.rad2deg(x)
205
+ Converts x form radian to degree
206
+
207
+ Extmath.rad2gon(x)
208
+ Converts x form radian to gon
209
+
210
+ Extmath.root(x, y)
211
+ y-th root of x
212
+
213
+ Extmath.round(x)
214
+ x rounded to nearest integer
215
+
216
+ Extmath.sec(x)
217
+ Secans of x
218
+
219
+ Extmath.sech(x)
220
+ Secans hyperbolicus of x
221
+
222
+ Extmath.sign(x)
223
+ Sign of x - -1 for negative x, +1 for positive x and zero for
224
+ x = 0
225
+
226
+ Extmath.sin(x)
227
+ Same as Math.sin(x) - sinus of x
228
+
229
+ Extmath.sinc(x)
230
+ Sinc function of x
231
+
232
+ Extmath.sinh(x)
233
+ Same as Math.sinh(x) - sinus hyperbolicus of x
234
+
235
+ Extmath.sqr(x)
236
+ Square of x
237
+
238
+ Extmath.sqrt(x)
239
+ Square root of x
240
+
241
+ Extmath.sqsolve(a, b, c, d)
242
+ Returns array of real solution of ax**2 + bx + c = d or nil
243
+ if no or an infinite number of solutions exist. If d is
244
+ missing it is assumed to be 0. See Solving second order
245
+ equations
246
+
247
+ Extmath.tan(x)
248
+ tangens of x
249
+
250
+ Extmath.tanh(x)
251
+ tangens hyperbolicus of x
252
+
253
+ Extmath.tgamma(x)
254
+ Gamma function of x
255
+
256
+ Solving second order equations
257
+
258
+ In order to solve ax**2 + bx + c = d Extmath.sqsolve identifies
259
+ several cases:
260
+
261
+ a == 0:
262
+ The equation to be solved is the linear equation bx + c = d.
263
+ Extmath.sqsolve delegates the computation to
264
+ Extmath.linsolve. If it results in nil, nil is returned (not
265
+ [nil]!). Otherwise a one-element array containing result of
266
+ Extmath.linsolve is returned.
267
+
268
+ a != 0:
269
+ The equation to be solved actually is a second order one.
270
+
271
+ c == d
272
+ The equation to be solved is ax**2 + bx = 0. One
273
+ solution of this equation obviously is x = 0,
274
+ the second one solves ax + b = 0. The solution
275
+ of the latter is delegated to Extmath.linsolve.
276
+ An array containing both results in ascending
277
+ order is returned.
278
+
279
+ c != d
280
+ The equation cannot be separated into x times
281
+ some factor.
282
+
283
+ b == 0
284
+ The equation to be solved is ax**2
285
+ + c = d. This can be written as the
286
+ linear equation ay + c = d with y =
287
+ x ** 2. The solution of the linear
288
+ equation is delegated to
289
+ Extmath.linsolve. If the returned
290
+ value for y is nil, that becomes
291
+ the overall return value. Otherwise
292
+ an array containing the negative
293
+ and positive square root of y is
294
+ returned
295
+
296
+ b != 0
297
+ The equation cannot be reduced to
298
+ simpler cases. We now first have to
299
+ compute what is called the
300
+ discriminant x = b**2 + 4a(d - c)
301
+ (that's what we need to compute the
302
+ square root of). If the
303
+ descriminant is negative no real
304
+ solution exists and nil is
305
+ returned. The ternary operator
306
+ checking whether b is negative does
307
+ ensure better numerical stability -
308
+ only one of the two solutions is
309
+ computed using the widely know
310
+ formula for solving second order
311
+ equations. The second one is
312
+ computed from the fact that the
313
+ product of both solutions is (c -
314
+ d) / a. Take a look at a book on
315
+ numerical mathematics if you don't
316
+ understand why this should be done.
317
+
318
+ Changelog
319
+
320
+ Version 2.2 -> 2.3
321
+
322
+ Renamed Constants/Functions
323
+
324
+ * ExtMath.pwr became Extmath.pow because pow is the C name for this
325
+ function.
326
+ * ExtMath.ln_gamma became Extmath.lgamma because lgamma is the C
327
+ name for this function.
328
+ * ExtMath.gamma became Extmath.tgamma because tgamma is the C name
329
+ for this function.
330
+
331
+ New Constants/Functions
332
+
333
+ * Extmath.deg2gon (degree to gon)
334
+ * Extmath.deg2rad (degree to gon)
335
+ * Extmath.gon2deg (gon to degree)
336
+ * Extmath.gon2rad (gon to radian)
337
+ * Extmath.rad2deg (radian to degree)
338
+ * Extmath.rad2gon (radian to gon)
339
+
340
+ Version 2.1 -> 2.2
341
+
342
+ Renamed Constants/Functions
343
+
344
+ * Extmath.acosech became Extmath.acsch
345
+ * Extmath.cosec became Extmath.csc
346
+ * Extmath.cosech became Extmath.csch
347
+
348
+ New Constants/Functions
349
+
350
+ * Extmath.acsc
351
+ * Extmath.asec
352
+ * Extmath.linsolve
353
+ * Extmath.round
354
+ * Extmath.sqsolve
355
+ * Extmath::C (Euler's constant C)
356
+
357
+ Changed Implementations/Values
358
+
359
+ * Extmath.abs
360
+ * Extmath.ceil
361
+ * Extmath.floor
362
+
363
+ Misc Changes
364
+
365
+ * README accidentally was that of tldlib. Corrected.
366
+ * Embedded documentation did contain old name ExtMath, not Extmath
367
+ - 'm' and 'M' almost look the same in the font I use. Corrected.
368
+ * Numerical constants were grouped using underbars to enhance
369
+ readability.
370
+ * Changelog was cleaned up, hyperlinks were added to HTML version.
371
+ * Much work was put into documentation.
372
+
373
+ Version 2.0 -> 2.1
374
+
375
+ New constants/functions
376
+
377
+ * Extmath.acosech
378
+ * Extmath.asech
379
+ * Extmath.delta
380
+ * Extmath.epsilon
381
+
382
+ Misc Changes
383
+
384
+ * New embedded documentation was written using RDtool
385
+ * Online documentation of library is now generated from embedded
386
+ documentation.
387
+ * HTML documentation contained in zip file has been replaced by
388
+ plain text equivalent generated by Elinks which is available at
389
+ elinks.or.cz.
390
+
391
+ Version 1.7 -> 2.0
392
+
393
+ Removed Constants/Functions
394
+
395
+ * Extmath.binomial
396
+ * Extmath.gaussian
397
+ * Extmath.sqsolve
398
+
399
+ Renamed Constants/Functions
400
+
401
+ * ExtMath.lngamma became Extmath.ln_gamma
402
+
403
+ Misc Changes
404
+
405
+ * Homepage was moved to extmath.rubyforge.org
406
+ * Download page was moved to Rubyforge
407
+ * Library now assumes Ruby 1.8
408
+ * Library was renamed from ExtMath to Extmath
409
+ * Embedded documentation was removed.
410
+ * HTML documentation was added to zip file.
411
+ * Demonstration program was replaced by test unit.
412
+
413
+ Version 1.6 -> 1.7
414
+
415
+ Changed implementations
416
+
417
+ * Bugfix: Value of @@InvLn2 was Math.log(2.0), corrected to 1.0 /
418
+ Math.log(2.0). Thanks to Joseph McDonald.
419
+
420
+ Version 1.5 -> 1.6
421
+
422
+ Misc Changes
423
+
424
+ * Documentation now uses RDTool
425
+ * Changelog now generated uses RDTool
426
+
427
+ Version 1.4 -> 1.5
428
+
429
+ New Constants/Functions
430
+
431
+ * ExtMath.gcd
432
+ * ExtMath.lcm
433
+
434
+ Version 1.3 -> 1.4
435
+
436
+ New Constants/Functions
437
+
438
+ * ExtMath.binomial
439
+ * ExtMath.gaussian
440
+ * ExtMath.sqsolve
441
+
442
+ Changed Implementations/Values
443
+
444
+ * ExtMath.log2
445
+ * ExtMath.factorial
446
+
447
+ Version 1.2 -> 1.3
448
+
449
+ New Constants/Functions
450
+
451
+ * ExtMath.beta
452
+ * ExtMath.ceil
453
+ * ExtMath.factorial
454
+ * ExtMath.floor
455
+
456
+ Changed Implementations/Values
457
+
458
+ * Extmath.lngamma
459
+ * ExtMath.gamma
460
+
461
+ Version 1.1 -> 1.2
462
+
463
+ New Constants/Functions
464
+
465
+ * ExtMath.abs
466
+ * ExtMath.gamma
467
+ * ExtMath.lngamma
468
+ * ExtMath.sign
469
+ * ExtMath.sinc
470
+
471
+ Version 1.0 -> 1.1
472
+
473
+ New Constants/Functions
474
+
475
+ * ExtMath.cosec
476
+ * ExtMath.cosech
477
+ * ExtMath.sec
478
+ * ExtMath.sech
479
+
480
+ Misc Changes
481
+
482
+ * Demonstration now also uses ExtMath.cosec, ExtMath.cosech,
483
+ ExtMath.sec, and ExtMath.sech.
484
+ * Small changes of Rubydoc documentation.
485
+
486
+ Version 1.0
487
+
488
+ * First public release
489
+
490
+ -----------------------------------------------------------------
491
+
492
+ Last changed: 2003-08-29
493
+ HTML to text by ELinks 0.4.3rc1 - Text WWW browser
494
+ ELinks is vailable at http://elinks.or.cz/